【软件工程】宏观理解

软件工程的来源&&要解决的问题

来源:首先要提到著名的软件危机的概念 
1970年代和1980年代的软件危机。在那个时代,许多软件最后都得到了一个悲惨的结局,软件项目开发时间大大超出了规划的时间表。一些项目导致了财产的流失,甚至某些软件导致了人员伤亡。同时软件开发人员也发现软件开发的难度越来越大。
简单的说就是,当软件项目过于庞大的时候,传统的软件开发管理办法已经很难准确的对项目的时间、金钱、代码、质量等进行很好的控制,这就导致了很多大型软件开发的时候,最后不能按时交付或者是消耗的金钱大大超出了预算,导致项目最后的失败。
典型的案例:美国银行1982年进入信托商业领域,并规划发展信托软件系统。项目原订预算2千万美元,开发时程9个月,预计于1984年12月31日以前完成,后来至1987年3月都未能完成该系统,期间已投入6千万美元。美国银行最终因为此系统不稳定而不得不放弃,并将340亿美元的信托账户转移出去,并失去了6亿美元的信托生意商机。
在这样的软件危机下,北大西洋公约组织在1968年提出了软件工程的概念。

解决的问题:知道了软件工程的来源之后,他要解决的问题也就显而易见了,就是利用工程化的方法,在软件开发和软件项目管理中来更好的帮助项目的按期、按质量的交付。软件工程如何解决那些问题主要是在项目中运用软件工程的一系列方法论,来更好的控制项目的开发过程。这里列举出常见的开发模型:图中是快速原型模型,用很短的时间给出一个可以运行的原型。轻量级方法:敏捷开发(Agile Processes),极限编程(XP)重量级的方法:瀑布模型,迭代开发,增量模型,螺旋开发模型各种模型的特点和优缺点这里就不写了,书上都有。软件工程的定义对软件工程的定义,不同的学者组织有很多的版本,但是主要的意思都是一样的,就是通过工程化的方法来进行软件开发和完成一个软件项目。这里使用维基百科的定义,有很多种说法:1. 创立与使用健全的工程原则,以便经济地获得可靠且高效率的软件。2. 应用系统化,遵从原则,可被计量的方法来发展、操作及维护软件;也就是把工程应用到软件上。3. 与开发、管理及更新软件产品有关的理论、方法及工具。4. 一种知识或学科,目标是生产质量良好、准时交货、匹配预算,并满足用户所需的软件。5. 实际应用科学知识在设计、建构计算机程序,与相伴而来所产生的文件,以及后续的操作和维护上。6. 使用与系统化生产和维护软件产品有关之技术与管理的知识,使软件开发与修改可在有限的时间与费用下进行。7. 建造由工程师团队所开发之大型软件系统有关的知识学科。8. 对软件分析、设计、实施及维护的一种系统化方法。9. 系统化地应用工具和技术于开发以计算机为主的应用。10. 软件工程是关于设计和开发优质软件软件工程的两个方面软件开发:软件开发方法学、软件工具和软件工程环境软件项目管理:软件度量、项目估算、进度控制、人员组织、配置管理、项目项目等软件工程与计算机科学的关系这里给出一个维基百科的截图:按照一般的理解,软件工程就是比较偏工程,侧重点就是在如何实现一个工程性的应用,所以就涉及到如何完成一个工程,引出了一系列的相关知识,比如需求的获取和分析,极限编程等各种开发模型,测试技术等等。而计算机科学就是侧重研究一个方法一个理论,如何提高一个算法的性能等等。但是实际上我们可以发现,不管是国内还是我们这边,其实并没有很明显的界限。首先培养方式上,国内很多的高校的软件工程和计算机科学的学生都是一样的培养方式,学的东西也都差不多;其次软工的学生在学习工作中也需要计算机科学的知识来帮助研究,计算机科学的学生如果想要实现某个技术,往往也需要软件工程的思路。所以有很大的相关性。

不过就是我们这边现在研究生一般软件工程会有一年的实习机会,而计算机科学的就是做研究。希望遇见你~

长按扫码关注~

时间: 2024-09-30 18:56:16

【软件工程】宏观理解的相关文章

8th 对软件工程的理解(读构建之法有感)

对于任何一个学计算机的人来说,软件都不陌生,甚至于一个普通的朝九晚五的上班族,他的每日生活工作也都与软件有着密不可分的关系.然而,程序又是如何从一行行指尖留下的代码,机器存储的数据变成快捷高效的软件的呢?这中间我们所经历的一系列过程的总和,我们称之为软件工程. 从本科开始学习计算机,我们就不可避免的接触了形形色色的软件,了解大量的软件开发工具,我那个时候甚至没有软件工程这个概念,只认为,我们所用的软件就是开发工具编译.执行.包装.发布的产物.后来,开设了软件工程这门课程,才开始系统地接受软件工程

对IT行业的看法和对软件工程的理解

现在社会上IT行业的人才需求越来越大,而作为一个学软件工程的大学生,我认为IT行业是一个前景十分强大的发展方向,而且现在的社会越来越信息化,未来的生活中,电脑肯定是不可缺少的,所以我认为IT行业这是一个发展越来越好的一个行业.而我在将来会从事这个行业.当然,现在的我还是一个大学生,所依我认为我应该在此期间掌握,提升和强化自己的职业技能.如编程能力等,毕竟有实力,有一技之长的人在以后的工作生活中能够过得很好. 而对于软件工程,我认为是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过

对软件工程的理解和疑问

这个学期,我们新开了软件工程这么课程.对于这们课程,我感觉有一点陌生,但又有点熟悉.熟悉的原因是我们以前编写过一些程序,对软件有一些理解,而且老师们也经常给我们讲解一些知识,我们也稍微了解那么一点点.最重要的是,我们对于这门课有着更多的未知,首先,我觉的软件和软件工程师两个概念,软件也许只是单纯的一些程序,而软件工程可能是一件很复杂的软件构造,他需要考虑许许多多的更方面的内容,并不只是实现一个功能而已,围绕这程序,要做许许多多方面的事.这对于我们来说是一个完全陌生的领域,需要老师的多加指导,我希

对于软件工程的理解和困惑

在学习软件工程这门课之前,我对于软件工程的了解还不是太多,从字面意思理解是用工程化的方法管理和开发软件,但我并不知道是,如何一步步实现软件的开发.对于一个软件而言,最重要的是要有使用者,虽然我是计算机专业的学生,但我并不是太了解如何从客户需求开始,到一步步实现开发的完成和后期的维护的过程.对于现在的我来说我只会编写一些不太长的代码和做过C语言课设.数据结构课设等.对于市场上一些app我并不知道它们是如何开发出来的,但我听老师说了,其实代码量并不大,需要团队合作完成,在学习软件工程这门课后我们要自

对软件工程的理解随笔

我认为要想学好一门课程就要对这门课程有自己的理解与认识.我认为软件工程中最重要的两个点 一个是技术,一个是设计理念.这两点是我们在开发软件的重中之重.提到技术我想到的是要想做一个软件工程师所需要掌握的技术,有软件工程,数据库,数据结构,编译原理等计算机科学方面的知识.而设计理念更偏重的是开发软件的目标,为什么要设计这个软件,软件可以解决那些生活中的问题,这些都是一个好的软件工程师应该考虑到的,生产具有正确性,可用性以及开销合宜的产品就是我们的目标与设计理念.学好软件工程所需要的知识与技能,平时多

谈谈我对软件工程的理解和对它的问题

理解: 软件工程是计算机方面的一门基础课,我认为是软件知识,但又不止止是软件,应该是理论和实践相结合,注重实践,它对于培养我们的软件素质,提高学生的软件开发能力与软件项目管理能力具有重要的意义. 问题: 1.在学习软件工程之前,需要有哪些准备? 2.软件工程对我们以后的工作学习有什么现实意义? 3.软件工程能帮助我们解决哪一些问题? 4.软件工程是理论多还是实践更多? 5.学好软件工程需要付出哪些努力? 6.软件工程主要需要什么语言来编译?

软件工程中期理解

软件工程,就我的理解其实就是一种方法指导论:指导软件工程人员按照一种约定的规则来实现软件,目的是为了保证软件的质量和工程进度以及软件的"通用性"(易于被其他人阅读.理解和实现,易维护等等类似于换了一组成员之后,该组成员能够根据文档也能迅速的对软件进行扩展和操作) 从最近的小项目来看,除了一些文档和处理过程之外,我几乎没有感觉到我们在用软件工程的方法来指导我们的项目,大部分时间我们则是花费在代码的实现上,也许是我并没有懂得软件工程作为一种方法的含义和精妙之处,在具体的操作中可能在用,但是

多线程和虚拟机的宏观理解

作者:贺拔达奚链接:https://www.zhihu.com/question/59725713/answer/168709945来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. ###多线程和虚拟机.实际工作中,大部分程序员可能几乎不用,但这两项技能是你面试所谓高级工程师的敲门砖,也是你在机会到来的时候能否顶上去的弹药库.很多人,把这两部看的太高深,望而却步,我觉得一个重要原因就是大部分博客和书籍写的太差,只讲结果不谈背景.比如,讲到虚拟机,上来就以hotspo

软件工程作业2.1:阐述对软件工程的理解,学完这门课自己能学到什么,学完后能做什么

对软件工程这门课的理解 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.在软件工程中,远远不止很多人以为的只是单纯地进行软件开发,其实真正的软件开发的时间只是软件工程中的一部分而已.软件工程还包括了需求分析,绘制各种软件模型图,架构软件模型,从整体上来考虑如何架构好整个软件体系,既要考虑软件的性能和稳定,可靠,还要考虑用户体验,考虑后续的可维护性等方方面面,可以说是一个重大的工程.软件开发阶段前还要确定好实现的各种数据结构和算法才能去真正地进行编码.同时在开发过程中