文档介绍:第九章其它主题
软件工程
软件危机(Software Crisis)
The Evolving Role of Software
In the early days:
User Computer
Software = “Place a sequence of instructions together to get puter to do something useful”.
In late 1950’s:
Computer became cheaper and mon
High level languages were invented
Programmer
User
Computer
软件危机(Software Crisis)
Middle to late 1960s:
Truly large software systems were attempted.
例: 美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。......据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。......
软件危机(Software Crisis)
这个项目的负责人F. D. Brooks事后总结了他在组织开发过程中的沉痛教训时说:“......正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。......程序设计工作正像这样一个泥潭,......一批批程序员被迫在泥潭中拼命挣扎,......谁也没有料到问题竟会陷入这样的困境......”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。
软件危机
什么是软件危机?
软件危机是指在计算机软件的开发和维护中所遇到的一系列严重问题。
几乎所有软件都不同程度地存在这些问题
概括地说软件危机包含两方面问题:
如何开发软件,怎样满足对软件的日益增长的需求
如何维护数量不断膨胀的已有软件
软件危机的主要表现
“已完成的”软件不满意的现象经常发生
产生软件危机的原因
一方面与软件本身的特点有关
在软件运行前,软件开发过程的进展难衡量,质量难评价,因此管理和控制软件开发过程相当困难;
在软件运行中,软件维护意味着改正或修改原来的设计,较难维护;
软件的显著特点是规模庞大,复杂度超线性增长。要保证高质量大型软件的开发,极端复杂困难,不仅涉及技术问题(如分析方法、设计方法、版本控制),更重要的是必须有严格而科学的管理。
另一方面与软件开发和维护方法不正确有关,这是主要原因。
特别是忽视软件需求分析的重要性
忽视软件需求分析的重要性
对用户要求没有完整准确的认识就匆忙着手编写程序
软件开发与编程等同
忽略文档
软件定义不明
轻视维护
对软件开发的错误认识(1)
已经有了关于建造软件的标准和规程
使用了吗?
开发者知道吗?
适用吗?
完整吗?
已经有了很好的软件开发工具
还需要计算机辅助软件工程(CASE)工具