软件工程导论答案(第三章)
- 格式:doc
- 大小:171.00 KB
- 文档页数:2
第一章一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。
它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。
软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。
常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。
而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。
这些都降低了开发商的信誉,引起用户不满。
(2) 用户对已完成的软件不满意的现象时有发生。
(3) 软件产品的质量往往是靠不住的。
(4) 软件常常是不可维护的。
(5) 软件通常没有适当的文档资料。
文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。
(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。
(7) 开发生产率提高的速度远跟不上计算机应用普及的需求。
软件危机出现的原因:(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。
(2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。
(3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。
二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。
《软件工程导论》课后习题详细答案第一章软件工程概论1.什么是软件危机?软件危机是指在运算机软件的开发和爱护过程中所遇到的一系列严峻咨询题。
这些咨询题表现在以下几个方面:(1)用户对开发出的软件专门难中意。
(2)软件产品的质量往往靠不住。
(3)一样软件专门难爱护。
(4)软件生产效率专门低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估量。
(7)软件技术的进展远远满足不了运算机应用的普及与深入的需要。
2.什么缘故会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正明白得软件产品是一个完整的配置组成。
造成开发中制定打算盲目、编程草率,不考虑爱护工作的必要性。
(2) 软件本身方面,关于运算机系统来讲,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件爱护困难。
(3) 专门是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估量、爱护困难等一系列咨询题更为突出,技术的进展差不多远远不能适应社会需求。
3.如何样克服软件危机?(1) 充分吸取和借鉴人类长期以来从事各种工程项目中积存的行之有效的有效原理、概念、技术与方法,专门是吸取几十年来人类从事运算机硬件研究和开发的体会教训。
在开发软件的过程中努力作到良好的组织,严格的治理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在运算机系统早期进展时期形成的一些错误概念和作法。
(3) 按照不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个时期使用的软件工具集合成一个整体,形成一个专门好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织治理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、爱护到剔除的全过程。
第一章一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。
它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。
软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。
常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。
而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。
这些都降低了开发商的信誉,引起用户不满。
(2) 用户对已完成的软件不满意的现象时有发生。
(3) 软件产品的质量往往是靠不住的。
(4) 软件常常是不可维护的。
(5) 软件通常没有适当的文档资料。
文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。
(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。
(7) 开发生产率提高的速度远跟不上计算机应用普及的需求。
软件危机出现的原因:(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。
(2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。
(3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。
二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。
第三章习题及参考答案1.用逐步求精方法解决下述的更新顺序主文件的问题。
美国某杂志社需要一个软件,以更新存有该杂志订户姓名、地址等数据的顺序主文件。
共有插入、修改和删除等3种类型的事务,分别对应于事务代码1、2和3。
也就是说,事务类型如下:类型1:INSERT(插入一个新订户到主文件中)类型2:MODIFY(修改一个已有的订户记录)类型3:DELETE(删除一个已有的订户记录)事务是按订户名字的字母顺序排序的。
如果对一个订户既有修改事务又有删除事务,则已对那个订户的事务排好次序了,以便使修改发生在删除之前。
2.分析图3.1所示的层次图,确定每个模块的内聚类型。
3.分析图3.2,确定模块之间的耦合类型。
在图3.2中已经给模块之间的接口编了号码,表3.1描述了模块间的接口。
4. 假设你在一所职业高中工作,负责该校信息系统的建设与维护。
财务科长请你研究用学校拥有的微型计算机生成工资明细表和各种财务报表的可能性。
请详细描述你用结构化分析方法分析上述问题的过程。
用面向数据流方法设计工资支付系统的软件结构。
5.用3种方法计算图3.3所示流图的环形复杂度。
6. 图3.4是用程序流程图描绘的程序算法,请把它改画为等价的盒图。
7. 某交易所规定给经纪人的手续费计算方法如下:总手续费等于基本手续费加上与交易中的每股价格和股数有关的附加手续费。
如果交易总金额少于1000元,则基本手续费为交易金额的8.4%;如果交易总金额在1000元到10000元之间,则基本手续费为交易金额的5%,再加34元;如果交易总金额超过10000元,则基本手续费为交易金额的4%加上134元。
当每股售价低于14元时,附加手续费为基本手续费的5%,除非买进、卖出的股数不是100的倍数,在这种情况下附加手续费为基本手续费的9%。
当每股售价在14元到25元之间时,附加手续费为基本手续费的2%,除非交易的股数不是100的倍数,在这种情况下附加手续费为基本手续费的6%。
《软件工程导论》课后习题答案第一章软件工程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2.为什么会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.怎样克服软件危机?(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
软件工程导论课后习题答案《软件工程导论》课后习题答案第一章软件工程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2.为什么会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.怎样克服软件危机?(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
软件⼯程导论_习题及答案第⼀章软件⼯程概论1.什么是软件⽣存周期?软件⽣存周期是指从软件定义、开发、使⽤、维护到淘汰的全过程。
2.软件⽣存周期为什么划分成阶段?(1) 任何⼀个阶段的具体任务不仅独⽴,⽽且简单,便于不同⼈员分⼯协作,从⽽降低整个软件开发⼯作的困难程度。
(2) 可以降低每个阶段任务的复杂程度,简化不同阶段的联系,有利于⼯程的组织管理,也便于采⽤良好的技术⽅法。
(3) 使软件开发的全过程以⼀种有条不紊的⽅式进⾏,保证软件的质量,特别是提⾼了软件的可维护性。
3.应该怎样来划分阶段?(1)每⼀个阶段的任务尽可能独⽴;(2)同⼀阶段内的任务性质尽可能相同;(3)每⼀个阶段任务的开始和结束有严格的标准。
4.软件开发模型有⼏种?它们的开发⽅法有可特点?软件开发模型有瀑布型、渐增型和变换型。
瀑布型开发⽅法是按照软件⽣存周期的划分依次实施,每⼀个阶段有明确规定的任务。
它的特点:(1)各个阶段的顺序性和依赖性;(2)划分逻辑设计与物理设计,尽可能推迟程序的物理实现;(3)每个阶段必须完成规定的⽂档,对其中问题通过复审及早发现,及早解决。
渐增型开发⽅法及特点:(1) 从部分需求出发,先建⽴⼀个不完全的系统,通过测试运⾏该系统取得经验和信息反馈,加深对软件需求的理解,进⼀步使系统扩充和完善。
如此反复,直⾄软件⼈员和⽤户对所设计完成的软件系统满意为⽌。
(2) 在渐增型开发下的软件是随软件开发的过程⽽逐渐形成的。
(3) 渐增型开发⽅法适合于知识型软件的开发,设计系统时对⽤户需求的认识开始不是很清楚的,需要在开发过程中不断认识、不断获得新的知识去丰富和完善系统。
多数研究性质的试验软件,⼀般采⽤此⽅法。
变换型开发⽅法及特点:(1)从软件需求的形式化规格说明出发,经过⼀系列的程序变换,得到最终的程序系统。
(2)该⽅法必须有严格的数学理论和形式化技术的⽀持。
5.什么是软件⼯程?软件⼯程是指导计算机软件开发和维护的⼯程学科。
《软件工程导论》课后习题答案第三章需求分析习题答案1.需求分析的描述工具有哪些?有数据流图、数据字典、判定表、判定树、结构化自然语言、层次方框图、Warnier 图、IPO图和需求描述语言等。
2.需求分析的基本任务是什么?准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么。
3.怎样建立目标系统的逻辑模型?要经过哪些步骤?建立目标系统的逻辑模型的过程也就是数据流图的分解过程。
它的导出过程如图:10.某单位拟开发一个计算机房产管理系统,要求系统具有分房、调房、退房和查询统计等功能。
房产科将用户申请表输入系统后,系统首先检查申请表的合法性,对不合法的申请表,系统拒绝接收;对合法的申请表根据类型分别进行处理。
(1) 如果是分房申请,则根据申请者的情况(年龄、工龄、职称、职务、家庭人口等)计算其分数,当分数高于阀值分数时,按分数高低将申请单插到分房队列的适当位置。
在进行分房时,从空房文件中读出空房信息,如房号、面积、等级、单位面积房租等,把好房优先分给排在分房队列前面的符合该等级房条件的申请者;从空房文件中删掉这个房号的信息,并从分房队列中删掉该申请单,再把此房号的信息和住户信息一起写到住房文件中,输出住房分配单给住户,同时计算房租,并将算出的房租写到房租文件中。
(2) 如果是退房申请,则从住房文件和房租文件中删除有关信息,再把此房号的信息写到空房文件中。
(3) 如果是调房申请,则根据申请者的情况确定其住房等级,然后在空房文件中查找属于该等级的空房,退掉原住房,再进行与分房类似的处理。
(4) 住户可以向系统查询目前分房的阀值分数,居住某类房屋的条件,某房号的单位面积及房租等信息。
房产科可以要求系统打印住房情况的统计表,或更改某类房屋的居住条件、单位面积和房租等。
用数据流图描绘该系统的功能需求;在数据字典中给出主要的数据流、文件和加工说明。
第四章总体设计习题答案9. 比较层次方框图与结构图是的异同?(1) 层次方框图描绘数据的层次结构, 结构图描绘的是软件结构。
第三章1.为什么要进行需求分析?通常对软件系统有哪些需求?为了开发真正满足用户需求的软件产品,需求分析是软件开发工作获得成功的前提条件,不能满足用户需求的程序只会令用户失望,给开发者带来烦恼。
功能需求、性能需求、可靠性和可用性需求、出错处理、借口需求、约束、逆向需求、将来可能提出的要求。
2.怎样与用户有效地沟通以获取用户的真是需求?访谈是最早开始使用的获取用户需求的技术,也是目前广泛使用的需求分析技术,访谈有两种形式,分别是正式的和非正式的访谈。
正式访谈时,系统分析员将提出一些事先准备好的具体问题。
在非正式访谈中,分析员将提出一些用户可以自由回答的开放性问题,以鼓励被访问人员说出自己的想法。
其中情景分析技术往往非常有效。
3.银行计算机储蓄系统的工作过程大致如下:储户填写的存单或取款单由业务员输入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码等信息。
并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。
用数据流图描绘本系统的功能,并用实体-联系图描绘系统中的数据对象。
流程图上一章节已有4.分析习题2第3题所述的机票预订系统。
试用实体-联系图描绘本系统中的数据对象并用数据流图描绘本系统的功能流程图上一章节已有5.分析习题2第4题所述的患者监护系统。
试用实体-联系图描绘本系统中的数据对象并用数据流图描绘本系统的功能,画出本系统的顶层IPO图。
流程图上一章节已有6.复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没有纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印室发生卡纸故障,则进入卡纸状态,发出警告,等待维修人员来排除故障,故障排除后回到闲置状态。
第一章一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。
它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。
软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。
常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。
而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。
这些都降低了开发商的信誉,引起用户不满。
(2) 用户对已完成的软件不满意的现象时有发生。
(3) 软件产品的质量往往是靠不住的。
(4) 软件常常是不可维护的。
(5) 软件通常没有适当的文档资料。
文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。
(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。
(7) 开发生产率提高的速度远跟不上计算机应用普及的需求。
软件危机出现的原因:(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。
(2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。
(3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。
二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。
软件工程导论(东北林业大学)智慧树知到课后章节答案2023年下东北林业大学东北林业大学第一章测试1.软件的主要特性是()。
答案:无形性;高成本;包括程序和文档2.包含风险分析的软件工程模型是()。
答案:螺旋模型3.下列属于面向对象开发方法的是()。
答案:UML;Coad;Booch;OMT4.软件危机的主要表现是()。
答案:软件产品的质量低劣;软件生产率低下5.从事物的组成部件及每个部件的属性、功能来认识事物。
这种方法被称为()的方法。
答案:面向对象6.面向数据的设计方法就是根据问题的数据结构定义一组映射,把问题的数据结构转换为问题解的()结构。
答案:程序7.增量模型是非整体开发的模型,软件的开发是用增量开发和增量提交。
()答案:对8.统一迭代过程在不同阶段,各个核心工作流的工作重心相同。
()答案:错9.喷泉模型是一种面向对象模型。
()答案:对10.螺旋模型不适用于大型内部软件开发。
()答案:错第二章测试1.面向对象的分析方法主要是建立三类模型,即()。
答案:对象模型、动态模型、功能模型2.SA法的主要描述手段有()。
答案:DFD图、数据词典、加工说明3.画分层DFD图的基本原则有()。
答案:子、父图平衡的原则;数据守恒原则;数据流封闭的原则4.数据字典是数据流图中所有元素的定义的集合,一般由以下4类条目组成()。
答案:数据流条目、数据文件条目、数据池条目、加工条目5.执行者(Actor)与用例之间的关系是()。
答案:关联关系6.在进行了可行性分析后,需求分析就只需要解决目标系统的设计方案。
()答案:错7.SA法是面向数据流,建立在数据封闭原则上的需求分析方法。
()答案:对8.HIPO法既是需求分析方法又是软件设计方法。
()答案:对9.对象模型表示了静态的,结构化的,系统数据性质,描述了系统的静态结构,她是从客观世界实体的对象关系角度来描述,表现了对象的相互关系。
()答案:对10.面向对象的分析是用面向对象的方法对目标系统的问题空间进行理解,分析和反映。
第一章一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。
它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。
软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。
常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。
而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。
这些都降低了开发商的信誉,引起用户不满。
(2) 用户对已完成的软件不满意的现象时有发生。
(3) 软件产品的质量往往是靠不住的。
(4) 软件常常是不可维护的。
(5) 软件通常没有适当的文档资料。
文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。
(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。
(7) 开发生产率提高的速度远跟不上计算机应用普及的需求。
软件危机出现的原因:(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。
(2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。
(3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。
二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。
第一章一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。
它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。
软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。
常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。
而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。
这些都降低了开发商的信誉,引起用户不满。
(2) 用户对已完成的软件不满意的现象时有发生。
(3) 软件产品的质量往往是靠不住的。
(4) 软件常常是不可维护的。
(5) 软件通常没有适当的文档资料。
文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。
(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。
(7) 开发生产率提高的速度远跟不上计算机应用普及的需求。
软件危机出现的原因:(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。
(2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。
(3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。
二、什么是软件工程?它有哪些本质特征?怎样用软件工程消除软件危机?1993年IEEE的定义:软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。
软件工程的本质特征:(1) 软件工程关注于大型程序(软件系统)的构造(2) 软件工程的中心课题是分解问题,控制复杂性(3) 软件是经常变化的,开发过程中必须考虑软件将来可能的变化(4) 开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具(5) 和谐地合作是开发软件的关键(6) 软件必须有效地支持它的用户(7) 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)消除软件危机的途径:(1) 对计算机软件有一个正确的认识(软件≠程序)(2) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目(3) 推广使用在实践中总结出来的开发软件的成功技术和方法(4) 开发和使用更好的软件工具三、简述结构化范型和面向对象范型的要点,并分析他们的优缺点。
{管理信息化信息化知识}软件工程导论课后习题详细答案●在1995年一名程序员每天可开发出30条指令,每月可开发出600条指令,为了开发出可装满整个存储器的程序,需要的工作量为开发上述程序的成本为6.软件生存周期为什么划分成阶段?(1)任何一个阶段的具体任务不仅独立,而且简单,便于不同人员分工协作,从而降低整个软件开发工作的困难程度。
(2)可以降低每个阶段任务的复杂程度,简化不同阶段的联系,有利于工程的组织管理,也便于采用良好的技术方法。
(3)使软件开发的全过程以一种有条不紊的方式进行,保证软件的质量,特别是提高了软件的可维护性。
●6-1..开发上述程序的成本为:◆1-6什么是软件过程?它与软件工程方法学有何关系?✓软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
✓软件过程定义了运用技术方法的顺序、应该交付的文档资料、为保证软件质量和协调软件变化必须采取的管理措施,以及标志完成了相应开发活动的里程碑。
软件过程是软件工程方法学的3个重要组成部分之一。
7.应该怎样来划分阶段?(1)每一个阶段的任务尽可能独立;(2)同一阶段内的任务性质尽可能相同;(3)每一个阶段任务的开始和结束有严格的标准。
8.软件开发模型有几种?它们的开发方法有可特点?软件开发模型有瀑布型、渐增型和变换型。
瀑布型开发方法是按照软件生存周期的划分依次实施,每一个阶段有明确规定的任务。
它的特点:(1)各个阶段的顺序性和依赖性;(2)划分逻辑设计与物理设计,尽可能推迟程序的物理实现;(3)每个阶段必须完成规定的文档,对其中问题通过复审及早发现,及早解决。
渐增型开发方法及特点:(1)从部分需求出发,先建立一个不完全的系统,通过测试运行该系统取得经验和信息反馈,加深对软件需求的理解,进一步使系统扩充和完善。
如此反复,直至软件人员和用户对所设计完成的软件系统满意为止。
(2)在渐增型开发下的软件是随软件开发的过程而逐渐形成的。
第三章
1.为什么要进行需求分析?通常对软件系统有哪些需求?
为了开发真正满足用户需求的软件产品,需求分析是软件开发工作获得成功的前提条件,不能满足用户需求的程序只会令用户失望,给开发者带来烦恼。
功能需求、性能需求、可靠性和可用性需求、出错处理、借口需求、约束、逆向需求、将来可能提出的要求。
2.怎样与用户有效地沟通以获取用户的真是需求?
访谈是最早开始使用的获取用户需求的技术,也是目前广泛使用的需求分析技术,访谈有两种形式,分别是正式的和非正式的访谈。
正式访谈时,系统分析员将提出一些事先准备好的具体问题。
在非正式访谈中,分析员将提出一些用户可以自由回答的开放性问题,以鼓励被访问人员说出自己的想法。
其中情景分析技术往往非常有效。
3.银行计算机储蓄系统的工作过程大致如下:储户填写的存单或取款单由业务员输入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码等信息。
并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。
用数据流图描绘本系统的功能,并用实体-联系图描绘系统中的数据对象。
流程图上一章节已有
4.分析习题2第3题所述的机票预订系统。
试用实体-联系图描绘本系统中的数据对象并用数据流图描绘本系统的功能
流程图上一章节已有
5.分析习题2第4题所述的患者监护系统。
试用实体-联系图描绘本系统中的数据对象并用数据流图描绘本系统的功能,画出本系统的顶层IPO图。
流程图上一章节已有
6.复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没有纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印室发生卡纸故障,则进入卡纸状态,发出警告,等待维修人员来排除故障,故障排除后回到闲置状态。
试用状态装换图描绘复印机的行为。