第一章1-1什么是软件危机?它有哪些典型表现?为什么会出现软件危机?答:(1)软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。(2)软件危机包括开发和维护两方面的问题,有以下一些典型表现:对软件开发成本和进度的估计常常很不准确;用户对“已完成的”软件系统不满意的现象经常发生软件产品的质量往往靠不住软件常常是不可维护的软件通常没有适当的额文档资料软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势(3)软件危机一方面与软件本身特点有关,另一方面与软件开发和维护的方法不正确有关:软件缺乏“可见性”,而且规模庞大,复杂性高,修改、维护困难开发和维护过程中采用了错误的方法和技术忽视软件需求分析和软件维护的重要性供求矛盾将是一个永恒的主题1-2如果有人以“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”来反驳早发现并改正错误的重要性,应该如何反驳?答:1-3什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?答:(1)概括的说,软件工程是指导计算机软件开发和维护的一门工程学科。1993年IEEE的定义:○1把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;○2研究○1中提到的途径(2)软件工程有如下本质特性:软件工程关注大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开发软件的效率非常重要和谐地合作是开发软件的基础软件必须有效地支持它的用户在软件工程领域中通常由具有一种文化背景的人替另一种文化背景的人创造产品(3)消除软件危机的途径:对计算机软件有一个正确的认识(软件程序)充分认识到软件开发不是某种个体劳动的神秘技巧,而是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目推广和使用在实践中总结出来的陈宫的技术和方法开发和使用更好的软件工具1-4简述结构化范型和面向对象范型的要点,并分析他们的优缺点。答:(1)结构化范型:也称生命周期方法学或传统方法学。采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用优点:通过划分软件生命周期,便于不同人员分工协作,降低了整个软件开发工程的困难程度,保证了软件的质量缺点:维护困难;不便于开发规模庞大,或者需求模糊的软件(2)面向对象范型:面向对象方法=对象+类+继承+消息通信优点:降低了软件产品的复杂性,提高了软件的可理解性,简化了软件开发和维护工作;促进了软件重用1-5计算机存储容量的需求:0.28(1960)M4080Ye存储器的价格:197410.30.72(/)YP美分位如果计算机字长为16位,存储器价格:197420.0480.72(/)YP美元字(1)在1985年对计算机存储容量的需求估计是多少?如果字长为16位,这个存储器的价格是多少?解:容量估计:0.28(19851960)6M40804.4710e字存储器价格:19851974620.0480.724.47105783.71PPM美元(2)假设1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4000美元。如果一条指令为一个字长,计算使存储器装满程序所需的成本。解:由(1)可知,存取器最多可装64.4710条指令,假设每月有20个工作日,则总工作量为644.47102.235101020人月所以总成本为:472.2351040008.9410美元(3)假设1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员每月平均工资为6000美元,重复(1)、(2)题。解:存储器容量:0.28(19951960)7M40807.3610e字存储器价格:199519747132320.0030.727.36107130.69PPM美元总工作量:737.36101.23103020人月总成本:381.231060007.3610美元1-6什么是软件过程?它与软件工程方法学有何关系?答:(1)软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤(2)软件过程是软件工程方法学3个重要组成部分之一1-7什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种该模型的适用范围。答:软件生命周期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架优点缺点适用范围瀑布模型1.强迫开发人员采用规范的方法2.严格地规定了每个阶段必须提交的文档3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细检查1.几乎完全依赖于书面的规格说明,难以真正满足用户的需求2.用户在软件交付前,只能通过文档来了解产品客户需求稳定快速原型模型用户在早期便能试用系统并提出意见,客服了瀑布模型的缺点,减少由于软件需求不明确带来的开发风险为了使原型能够快速工作,开发者常常需要做现实上的折中,造成产品质量低下需求不明确时常用的一种方法增量模型1.能在较短时间内向用户提交可完成部分工作的产品2.可以使永不有较充裕的实践学习和适应新产品软件必须具有开放结构1.产品升级或新版本开发2.严格要求完成期限的产品螺旋模型1.对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标2.减少了过多测试或测试不足带来的风险对风险管理技术水平要求高内部开发的大规模软件项目1-8为什么说喷泉模型较好地体现了面向对象软件开发过程无缝和迭代的特性?答:由于各阶段都使用统一的概念和表示符号,因此整个开发过程都是吻合一致的,或者说是“无缝”连接的,这自然就很容易实现各个开发步骤的多次反复迭代,达到认识的逐步深化。每次反复都会增加或明确一些目标系统的性质,但却不是对先前工作结果的本质性改动,这样就减少了不一致性,降低了出错的可能性。1-9试讨论Rational统一过程的优缺点。答:(1)优点:提高了团队生产力;在迭代的开发过程、需求管理、基于组件的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面,针对所有关键的开发活动,为每个开发成员提供了必要的准则、模板和工具指导,并确保全体成员共享相同的知识基础。(2)缺点:RUP只是一个开发过程,并没有涵盖软件过程的全部内容。没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。1-10Rational统一过程主要适用于何种项目?答:大型的需求不断变化的复杂软件系统项目1-11说明敏捷过程的适用范围答:适用于商业竞争环境下小型项目提出的有限资源和有限开发时间约束的项目1-12说明微软过程的适用范围答:适用于商业环境下具有有限资源和有限开发时间约束的项目