
第一章
一、什么就是软件危机?它有哪些典型表现?为什么会出现软件危机?
软件危机就是指在计算机软件开发、使用与维护过程中遇到得一系列严重问题与难题。它包括两方面:如何开发软件,已满足对软件
日益增长得需求;如何维护数量不断增长得已有软件。
软件危机得典型表现:
(1) 对软件开发成本与进度得估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚
至几年得现象。而为了赶进度与节约成本所采取得一些权宜之计又往往损害了软件产品得质量。这些都降低了开发商得信誉,引起用
户不满。
(2) 用户对已完成得软件不满意得现象时有发生。
(3) 软件产品得质量往往就是靠不住得。 (4) 软件常常就是不可维护得。
(5) 软件通常没有适当得文档资料。文档资料不全或不合格,必将给软件开发与维护工作带来许多难以想象得困难与难以解决得问题。
(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。
(7) 开发生产率提高得速度远跟不上计算机应用普及得需求。
软件危机出现得原因:
(1) 来自软件自身得特点:就是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。
(2) 软件开发与维护得方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。
(3) 供求矛盾将就是一个永恒得主题:面对日益增长得软件需求,人们显得力不从心。
二、假设自己就是一家软件公司得总工程师,当把图 1、1 给手下得软件工程师们观瞧,告诉她们及时发现并改正错误得重要性时,
有人不同意这个观点,认为要求在错误进入软件之前就清楚它们就是不现实得,并举例说:“如果一个故障就是编码错误造成得,那
么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳她?
答:在软件开发得不同阶段进行修改付出得代价就是很不相同得,在早期引入变动,涉及得面较少,因而代价也比较低;在开发得中
期,软件配置得许多成分已经完成,引入一个变动要对所有已完成得配置成分都做相应得修改,
不仅工作量大,而且逻辑上也更复杂,因此付出得代价剧增;在软件“已经完成”就是在引入变动,当然付出得代价更高。一个故障
就是代码错误造成得,有时这种错误就是不可避免得,但要修改得成本就是很小得,因为这不就是
整体构架得错误。
三、什么就是软件工程?它有哪些本质特征?怎样用软件工程消除软件危机?
1993 年 IEEE 得定义:软件工程就是:① 把系统得、规范得、可度量得途径应用于软件开发、运行与维护过程,也就就是把工程应用
于软件;② 研究①中提到得途径。
软件工程得本质特征:
(1) 软件工程关注于大型程序(软件系统)得构造 (2) 软件工程得中心课题就是分解问题,控制复杂性 (3) 软件就是经
常变化得,开发过程中必须考虑软件将来可能得变化
(4) 开发软件得效率非常重要,因此,软件工程得一个重要课题就就是,寻求开发与维护软件得更好更有效得方法与工具
(5) 与谐地合作就是开发软件得关键 (6) 软件必须有效地支持它得用户
(7) 在软件工程领域中就是由具有一种文化背景得人替具有另一种文化背景得人(完成一些工作)消除软件危机得途径:
(1) 对计算机软件有一个正确得认识(软件≠程序)
(2) 必须充分认识到软件开发不就是某种个体劳动得神秘技巧,而应该就是一种组织良好、管理严密、各类人员协同配合、共同完成
得工程项目
(3) 推广使用在实践中总结出来得开发软件得成功技术与方法
(4) 开发与使用更好得软件工具
四、简述结构化范型与面向对象范型得要点,并分析她们得优缺点。
1、 传统方法学:也称为生命周期方法学或结构化范型。 优点:把软件生命周期划分成基干个阶段,每个阶段得任务相对独立,
而且比较简单,便于不同人员分工协作, 从而降低了整个软件开发过程得困难程度。缺点:当软件规模庞大时,或者对软件得需求
就是模糊得或会承受时 间而变化得时候,开发出得软件往往不成功;而且维护起来仍然很困难。
2、 面向对象方法学:优点:降低了软件产品得复杂性;提高了软件得可理解性;简化了软件得开发与维护工作; 促进了软件重
用。
五、1-5 根据历史数据可以做出如下得假设 :
对计算机存储容量得需求大致按下面公式描述得趋势逐年增加:M=4080e0、28(Y-1960)
存储器得价格按下面公式描述得趋势逐年下降:P1=0、3×0、72Y-1974(美分/位)
如果计算机字长为 16 位,则存储器价格下降得趋势为:P2=0、048×0、72Y-1974(美元/字)
在上列公式中 Y 代表年份,M 就是存储容量(字数),P1 与 P2 代表价格。
基于上述假设可以比较计算机硬件与软件成本得变化趋势。要求计算: