软件危机
软件危机的产生 <br>
20世纪60年代中期以后,一些开发大型软件系统的要求提了出来。 <br>
然而软件技术的进步一直未能满足形势发展的需要,在大型软件的开发过程中出现了复杂程度高、研制周期长、正确性难以保证的三大难题。 <br>
遇到的问题找不到解决办法,致使问题堆积起来,形成了人们难以控制的局面,出现了所谓的“软件危机”。 <br>
软件危机的定义 <br>
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 <br>
主要是两个问题: <br>
如何开发软件,怎样满足对软件的日益增长的需求。 <br>
如何维护数量不断膨胀的已有软件。
软件危机的主要表现 <br>
对软件开发成本和进度的估计不准确,甚至开发过程就夭折。<br>
不满足需求,用户不满意的现象经常发生。<br>
软件质量不高、可靠性差。
缺乏适当的文档资料,软件常常不可维护、错误难以改正。 <br>
软件成本占系统总成本的比例逐年上升。<br>
软件开发速度跟不上计算机发展速度,软件生产率低,不能满足需要。
产生软件危机的原因<br>
与软件本身的特点有关,软件是逻辑产品,开发进度、成本难以估计。<br>
缺乏或不完整、不一致的<font color="#c41230">文档</font>给维护带来困难。<br>
用户对软件<font color="#c41230">需求</font>的描述往往不够精确,有遗漏,有二义。<br>
软件开发人员<font color="#c41230">对需求的理解</font>与用户的本来愿望有差异,在软件开发过程中,或多或少地采用了错误的方法和技术。
大型软件项目需多人协同完成,缺乏管理经验。<br>
缺乏有力的方法学和工具的支持。<br>
软件项目的特殊性和人类智力的局限性。<br>
解决软件危机的途径<br>
技术措施<br>
消除错误的概念和做法<br>
使用更好的软件开发方法和开发工具<br>
组织管理措施<br>
软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的<font color="#0076b3">工程</font>项目。
软件工程
什么是软件工程 <br>
软件工程(Software Engineering)是在克服60年代末所出现的“软件危机”的过程中逐渐形成与发展的。<br>
软件工程是指导计算机软件<font color="#c41230">开发</font>和<font color="#c41230">维护</font>的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。 <br>
软件工程的目标
软件工程的目标是在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件产品。
软件工程研究的范畴
软件开发技术
软件开发方法、软件开发过程、工具及环境。
软件管理技术
包括计划、组织、控制、领导和激励等。
软件工程的本质特性
关注大型程序的构造<br>
中心课题是控制软件固有的复杂性<br>
应对需求变更<br>
提高软件开发和维护的效率<br>
提倡有纪律的过程<br>
最终目的是使客户满意<br>
难点是对问题域的认识和描述<br>
软件工程的基本原理<br>
用分阶段的生命周期计划严格管理<br>
坚持进行阶段评审<br>
实行严格的产品控制<br>
采用现代程序设计技术<br>
结果应能清楚地审查<br>
开发小组的人员应该少而精<br>
承认不断改进软件工程实践的必要性<br>
软件工程的基本原则<br>
选取适宜的开发模型。
采用合适的设计方法。
提供高质量的工程支撑。
重视软件工程的管理。
软件开发模型
软件开发模型是描述软件开发过程中各种活动如何执行的模型。因此又称为软件过程模型或软件生存周期模型。 <br>
软件开发方法
软件开发的目标是要在规定的投资和时间内,开发出符合用户的需求,高质量的软件,为此需要有成功的开发方法。
软件开发方法
面向过程的开发方法<br>
结构化开发方法<br>
面向对象的开发方法<br>
软件开发工具与环境
为支持软件开发、维护、管理而研制的计算机程序系统称为软件工具。