软件工程导论第四章
- 格式:docx
- 大小:63.13 KB
- 文档页数:4
《软件工程导论》课后习题详细答案第一章软件工程概论1.什么是软件危机?软件危机是指在运算机软件的开发和爱护过程中所遇到的一系列严峻咨询题。
这些咨询题表现在以下几个方面:(1)用户对开发出的软件专门难中意。
(2)软件产品的质量往往靠不住。
(3)一样软件专门难爱护。
(4)软件生产效率专门低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估量。
(7)软件技术的进展远远满足不了运算机应用的普及与深入的需要。
2.什么缘故会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正明白得软件产品是一个完整的配置组成。
造成开发中制定打算盲目、编程草率,不考虑爱护工作的必要性。
(2) 软件本身方面,关于运算机系统来讲,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件爱护困难。
(3) 专门是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估量、爱护困难等一系列咨询题更为突出,技术的进展差不多远远不能适应社会需求。
3.如何样克服软件危机?(1) 充分吸取和借鉴人类长期以来从事各种工程项目中积存的行之有效的有效原理、概念、技术与方法,专门是吸取几十年来人类从事运算机硬件研究和开发的体会教训。
在开发软件的过程中努力作到良好的组织,严格的治理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在运算机系统早期进展时期形成的一些错误概念和作法。
(3) 按照不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个时期使用的软件工具集合成一个整体,形成一个专门好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织治理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、爱护到剔除的全过程。
第1章软件工程学概述1.1 软件危机1.1.1 软件危机旳简介软件危机(软件萧条、软件困扰): 是指在计算机软件旳开发和维护过程中所碰到旳一系列严重问题。
软件危机包括下述两方面旳问题:怎样开发软件, 满足对软件日益增长旳需求;怎样维护数量不停膨胀旳已经有软件。
软件危机旳经典体现:(1)对软件开发成本和进度旳估计常常很不精确;(2)顾客对“已完毕旳”软件系统不满意旳现象常常发生;(3)软件产品旳质量往往靠不住;(4)软件常常是不可维护旳;(5)软件一般没有合适旳文档资料;(6)软件成本在计算机系统总成本中所占旳比例逐年上升;(7)软件开发生产率提高旳速度, 远远跟不上计算机应用迅速普及深入旳趋势。
1.1.2 产生软件危机旳原因(1)与软件自身旳特点有关(2)与软件开发与维护旳措施不对旳有关1.1.3 消除软件危机旳途径对计算机软件有对旳旳认识。
认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完毕旳工程项目。
应当推广使用在实践中总结出来旳开发软件旳成功技术和措施, 并继续研究探索。
应当开发和使用更好旳软件工具。
总之, 为了处理软件危机, 既要有技术措施(措施和工具), 又要有必要旳组织管理措施。
1.21.2.1 软件工程旳简介软件工程: 是指导计算机软件开发和维护旳一门工程学科。
采用工程旳概念、原理、技术和措施来开发与维护软件, 把通过时间考验而证明对旳旳管理技术和目前可以得到旳最佳旳技术措施结合起来, 以经济地开发出高质量旳软件并有效地维护它, 这就是软件工程。
(期中考)软件工程旳本质特性:软件工程关注于大型程序旳构造软件工程旳中心课题是控制复杂性软件常常变化开发软件旳效率非常重要友好地合作是开发软件旳关键软件必须有效地支持它旳顾客在软件工程领域中是由具有一种文化背景旳人替具有另一种文化背景旳人发明产品1.2.2 软件工程旳基本原理用分阶段旳生命周期计划严格管理坚持进行阶段评审实行严格旳产品控制采用现代程序设计技术成果应能清晰地审查开发小组旳人员应当少而精承认不停改善软件工程实践旳必要性1.2.3 软件工程措施学软件工程包括技术和管理两方面旳内容。
第一章、软件工程学概述软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机包含下述两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。
2.如何维护数量不断膨胀的已有软件。
具体的说,软件危机主要有以下一些典型表现:1.对软件开发成本的进度的估计常常很不准确。
2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住。
4.软件常常是不可维护的。
5.软件通常没有适当的文档材料。
6.软件成本在计算机系统总成本中所占的比例逐年上升。
7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
软件生命周期:一个软件从定义、开发、使用和维护,知道最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期。
软件配置:程序、文档和数据。
软件工程学的一个重要的目标:就是提高软件的可维护性,减少软件维护的代价。
软件:是程序、数据及相关文档的集合。
程序:是能够完成预定功能和性能的可执行的指令序列。
数据:是使程序能够适当地处理信息的数据结构。
文档:是开发、使用和维护程序所需要的图文资料。
软件工程:指导计算机软件开发和维护的一门工程学科。
软件工程具有下属的本质特性:1.软件工程关注于大型程序的构造。
2.软件工程的中心课题是控制复杂性。
3.软件经常变化。
4.开发软件的效率非常重要。
5.和谐地合作是开发软件的关键。
6.软件必须有效地支持它的用户。
7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
软件工程的7条基本原理:1.用分阶段的生命周期计划严格管理。
2.坚持进行阶段评审。
3.实行严格的产品控制4.采用现代程序设计技术。
5.结构应能清楚的审查。
6.开发小组的人员应该少而精。
7.承认不断改进软件工程实践的必要性。
软件工程:包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为泛型。
《软件工程导论》教学大纲安徽大学计算机科学与技术学院2017 年 3 月《软件工程导论》教学大纲课程编号:ZJ36047课程名称:软件工程导论英文名称:Introduction to Software Engineering 学分/学时:2/34 课程性质:学科平台课程适用专业:软件工程先修课程:计算机导论开课单位:计算机科学与技术学院一、课程的教学目标与任务《软件工程导论》课程是软件工程专业高等教育的专业基础课程和学科平台课程,是“科研训练计划”教育课程。
《软件工程导论》以科学技术方法论为逻辑起点,结合部分管理方面的基本理论,讲授软件工程与方法论的联系,从而提高软件的质量和生产率。
本课程以软件工程专业本科二年级学生为讲授对象,是集理论性与应用性为一体的学科。
设置本课程的目的是:使学习者在全面了解软件工程发展历史、基本理论的基础上,系统掌握软件开发过程中的现代方法和管理手段,具备用工程化方法设计和构建规范软件的思想,从而为后续软件工程开发方法的系列课程奠定理论基础。
学习本课程的要求是:学习者应深刻认识软件危机产生的原因,纠正对软件开发的错误认识,掌握软件工程科学方法论的基本概念和基本原理,初步具备作为专业人员组织软件开发和设计工作的能力。
为检验掌握软件开发应遵循的原则和编写文档的基本方法的程度,最后的考核是通过考试进行,同时以加深对课程内容的理解。
二、课程具体内容及基本要求第一章软件工程的范畴 ( 2学时)基本内容包括:第一节历史方面一、定义软件(1)介绍软件的形式化定义。
结合经典教科书中关于软件的定义,介绍软件中所包含的三个要素:①指令的集合;②数据结构;③软件描述信息。
(2)阐述非形式化定义中软件具有的特性。
对比其他人工产品的特性,总结软件所具有的三个特性。
二、软件工程的发展历程和应用领域第二节经济方面结合例子阐述经济学原则在软件生产方面的重要性。
第三节维护性方面介绍软件生命周期模型和步骤,阐述维护工作在生命周期模型中的重要性和具体分类。
第一章测试1【单选题】(2分)下列哪个时期不是软件生存期三个时期中的内容()。
A.维护时期B.定义时期C.开发时期D.计划时期2【单选题】(2分)软件生存周期包括可行性分析的项目开发计划、需求分析、概要设计、详细设计、编码、()、维护等活动。
A.应用B.检测C.其他答案均不正确D.测试3【单选题】(2分)软件是一种()产品。
A.消耗B.有形C.逻辑D.物质4【单选题】(2分)面向对象技术特别强调的是()。
A.结构化编程B.程序结构C.对象的使用方式D.对象的数据结构5【单选题】(2分)螺旋模型最大的优点是()。
A.与用户沟通方便B.风险驱动C.快速建立模型D.需求灵活变动6【单选题】(2分)RUP中的软件开发生命周期在时间上被分解为四个顺序的阶段,分别是()。
A.初始、分析、构造、维护B.初始、细化、构造、维护C.初始、细化、构造、交付D.分析、细化、构造、交付7【单选题】(2分)软件开发过程模型不包括()。
A.对象模型B.增量模型C.瀑布模型D.喷泉模型8【判断题】(1分)一个成功的项目唯一提交的就是运行程序。
()A.错B.。
《软件工程导论》课后习题答案第三章需求分析习题答案1.需求分析的描述工具有哪些?有数据流图、数据字典、判定表、判定树、结构化自然语言、层次方框图、Warnier 图、IPO图和需求描述语言等。
2.需求分析的基本任务是什么?准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么。
3.怎样建立目标系统的逻辑模型?要经过哪些步骤?建立目标系统的逻辑模型的过程也就是数据流图的分解过程。
它的导出过程如图:10.某单位拟开发一个计算机房产管理系统,要求系统具有分房、调房、退房和查询统计等功能。
房产科将用户申请表输入系统后,系统首先检查申请表的合法性,对不合法的申请表,系统拒绝接收;对合法的申请表根据类型分别进行处理。
(1) 如果是分房申请,则根据申请者的情况(年龄、工龄、职称、职务、家庭人口等)计算其分数,当分数高于阀值分数时,按分数高低将申请单插到分房队列的适当位置。
在进行分房时,从空房文件中读出空房信息,如房号、面积、等级、单位面积房租等,把好房优先分给排在分房队列前面的符合该等级房条件的申请者;从空房文件中删掉这个房号的信息,并从分房队列中删掉该申请单,再把此房号的信息和住户信息一起写到住房文件中,输出住房分配单给住户,同时计算房租,并将算出的房租写到房租文件中。
(2) 如果是退房申请,则从住房文件和房租文件中删除有关信息,再把此房号的信息写到空房文件中。
(3) 如果是调房申请,则根据申请者的情况确定其住房等级,然后在空房文件中查找属于该等级的空房,退掉原住房,再进行与分房类似的处理。
(4) 住户可以向系统查询目前分房的阀值分数,居住某类房屋的条件,某房号的单位面积及房租等信息。
房产科可以要求系统打印住房情况的统计表,或更改某类房屋的居住条件、单位面积和房租等。
用数据流图描绘该系统的功能需求;在数据字典中给出主要的数据流、文件和加工说明。
第四章总体设计习题答案9. 比较层次方框图与结构图是的异同?(1) 层次方框图描绘数据的层次结构, 结构图描绘的是软件结构。
1:软件工程思想决定了软件工程的策略和方法
2:管理学的佐证: 管理中心从物本管理到人本管理,经济人(物质) 社会人(人有社会
需求,需要和睦相处,需要完全)
3:由智力活动所决定: 尊重软件团队的每一个人,调动每一个人的工作激情和创造能力,
发挥每个人的潜力
4:软件工程是知识工程:知识工程的管理就是一种人性化的管理和全员参与的管理,组织
的价值需要每个人的价值体现出来
5:软件危机:软件是高科技的智力产品,需要很高的创造性,但还是不能抹去其工业性软件质量问题直接危害到人们的生命财产、会造成国家经济的严重损失,企
业会为此付出很大的代价
艺术可以定义为“人类以创造美为主要目的的技术及其产品”
6:向传统工业学习: 客户为导向需求分析是基础过程决定结果持续改进过程
缺陷预防围绕项目开展工作验证和确认缺一不可以架构设计
为中心
7:客户为导向:客户为导向就是以客户为中心,将客户的需求、期望和关心作为组织管理
的活动原则和价值准则,充分体现了“以客户为关注焦点”的原则客户为导向是一种文化,也是一种策略和方针。
(1)满足客户的期望
(2)超越客户的期望
(3)一切从客户出发:站在客户角度思考
(4)体现在具体过程中:分析,设计,编程
(5)让客户参与到公司的质量管理中:参与到评审;测试中;一起设计;反馈不管反面
还是正面,开发公司一定要认真考虑;听取客户业务流程
8:需求分析是基础:在传统的制造业,产品的每个新特性都是经过仔细推敲后才确定下来
表现如下:以客户为导向,最直接体现在客户需求工作之上
对需求不重视,导致软件开发的返工率很高、成本高、质量低等一系列
问题
在项目的最后阶段修正需求错误比在需求阶段修正它要多花费200倍的
代价
9:过程决定结果:质量不是检验出来的,而是构建出来的
(1)有什么流程,就有什么结果,流程决定了结果
(2)产品是构建于过程之中
(3)自动化生产线就是一个很好的例子:各个环节注重质量多年来的工业经验总结;。
10:
11:持续改进过程:PDCA IDEAL QIP
12:缺陷预防: 1软件的劣质成本占开发的总成本在40%以上
2如果第一次就把事情做对了,就消除了劣质成本
3相比软件测试/质量检验,更有效的方法是开展预防缺陷的活动(一旦发现
缺陷,就不能降低太多成本)
4在开发的每个阶段实施根本原因分析,为有效开展缺陷预防活动提供依据13:围绕项目开展工作:(1)项目管理已经很成熟,形成比较完整的体系
(2)不管大大小小的事情,都可以看作一个项目
(3)把一个个项目做好了,就把整个工程做好了
(4)围绕项目开展各项工作
14:验证和确认缺一不可:
15:以架构设计为中心:(1)软件架构设计决定了软件系统的性能、可靠性、扩充性和维护
性等
(2)良好的架构设计能适应用户不同的需求、支持用户需求的改变
(3)RUP也提倡“以架构设计为中心”的理念
16:为什么选择迭代:(1)市场的压力和竞争策略的需要(较早占有市场)
(2)产品开发的资金、周期和资源是有限的
(3)软件的复杂程度不断提高,增加了项目失败的可能性,将一个产
品进行分阶段处理,可以尽早发现产品的市场问题或方向错误,
降低风险。
(4)对于越来越复杂、庞大的系统,多数情况下不容易一次性整体实
现,而是通过分解逐步实现。
(5)软件比较容易修改或扩充,在技术上可以保证软件迭代的可行性。
17:XP-eXtreme Programming极限编程:最简单的可能就是最有效的
18:极限编程适合:小团队(2-10 programmers)
“高风险”
快速变化或不稳定的需求
强调可测试性
19:XP Lifecycle -生命周期:。
20:持续构建和测试: (1)系统的集成从写代码的第一天就开始,而且持续集成
(2)借助于持续集成,绝大多数缺陷在其引入的同一天就可以被发现
(3)每日验证,包含了持续的集成验证,可以配合每日构建和持续集成的工作
(5)良好的开发环境和自动化测试可以保证持续构建和测试的实现
21:永远的Beta:“永远的Beta”正在成为互联网软件开发的主流思想之一,创造一个更
为灵活、发展更为迅速的软件工程环境
22:面向对象是一种思想:(1)封装、继承性和多态性(知道语言,操作系统)
(2)从具体到抽象,再从抽象到具体(对象)
(3)需求定义更彻底
(4)改善软件的稳定性和可维护性
❖23:软件工程是一种智力活动,应归为知识工作和管理,是因为其符合知识工作的特点:需要同化和集成的概念:同化就是把用户需求转换为软件本身的需求。
集
成:就是把用松散的用户需求集成一个可以操作的软件系统。
❖工作是和人打交道
❖能产生无形的智力产品
24:知识管理的原则:(1)工作人员了解自己的工作(开发人员更了解如何做开发),或者
说比其他人员(如管理人员)更理解自己的工作
(2)对于开发人员不能完全靠工作成果的量化来完成绩效考核,不
能实施计件工资等,所以必须让知识工作人员管理自己,这样
才能真正发挥他们的潜力
(3)需要不断激励他们,不断指导和帮助他们,培养他们的领导力25:知识管理体系: (1)个体知识组织化
(2)隐性知识显性化(个人别人不善于表达,肚里有东西,表达不出。
)
(3)零散知识系统化(一个人知识是片面的,所有人的这些经验合起来,
再进行分析与总结,零散知识就能系统化)
26: 软件工厂思想:模块化思想
面向构件思想
软件复用
中间件
自动化无处不在
27:模块化思想:“化繁为简”朴素思想的一种表现
将复杂的系统分解为相对简单的模块,对单一模块容易各个击破新产品(系统)= 通用模块(不变的部分)+ 专用模块(变动的部分)
模块能标准化和通用化
28:面向构件思想: (1)面向构件的思想体现在需求和设计的层次上
(2)构件是可独立配置的单元
(3)构件的实现是严格封装的
(4)构件可以在适当的环境中被复合使用
(5)面向构件思想还强调程序在动态运行时构件的自动装载,和“软
件工厂”的概念已非常接近
29:软件复用:软件复用就是设法使用已有的软件组成元素来构成新的系统,以减少软件开发所需的费用和时间,提高软件的可维护性和可靠性
基于软件函数库的软件复用(软件本身会提供很多函数库直接使用)
生成方式,即对模式的复用(工具能帮助我们生成软件成份)
组装方式(子程序技术,共享接口)
30:中间件:中间件(middleware)可以看作是面向构件的开发思想的一个实例,或者说是软件复用思想的延伸
中间件可以为不同领域内的应用提供系统结构上的支持和标准的服务组件等
中间件已成为许多标准化工作的主要部分
31:自动化无处不在:
❖软件开发的自动化思想可以说是来源于现代工业的自动化生产线,也可以说来源于计算机本身
❖软件开发的自动化思想应该无处不在,从自动构建软件包开始,到自动传递软件包、自动部署、自动验证和测试、自动生成报告、自动发出邮件通知等,形成一个自动化的开发环境。