软件工程课后参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章
1.1什么是计算机软件?软件的特点是什么?
计算机软件是指计算机系统中的程序及其文档
软件的特点:
●软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算。
●软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,
但其维护的工作量大。
●软件的使用没有硬件那样的机械磨损和老化问题。
1.2简述软件的分类,并举例说明
1.系统软件
系统软件居于计算机系统中最接近硬件的一层,其他软件一般都通过系统软件发挥作用。例如:编译软件、操作系统。
2.支撑软件
支撑软件是支撑软件的开发和维护的软件。例如:数据库管理系统、网络软件、软件工具、软件开发环境。
3.应用软件
应用软件是特定应用领域专用的软件。例如:工程/科学计算机软件、嵌入式软件、产品线软件、Web应用软件、人工智能软件。
1.3简述软件语言的分类,并举例说明。
1.需求定义语言
是用于书写软件需求定义的语言。例如:PSL/PSA。
2.功能性语言
是用于书写软件功能规约的语言,通常又称为功能规约语言。例如:广谱语言、Z 语言。
3.设计性语言
是用于书写软件设计规约的语言。例如:PDL。
4.实现性语言
也称为程序设计语言,是用于书写计算机程序的语言。例如:C、java、PROLOG、FORTRAN、COBOL、Modula。
5.文档语言
是用于书写软件文档的语言。通常用自然语言或半形式化语言书写。
1.4什么是软件工程?
软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本为目的。
1.5简述软件工程的基本原则。
软件工程原则包括围绕工程设计、工程支持和工程管理所提出的以下4条基本原则。
1.选取适宜的开发模型
必须认识需求定义的易变性,采用适宜的开发模型,保证软件产品满足用户的要求。
2.采用合适的设计方法
合适的设计方法有助于这些特征的实现,以达到软件工程的目标。
3.提供高质量的工程支撑
软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。
4.重视软件工程的管理
仅当软件过程予以有效管理时,才能实现有效的软件工程。
1.6软件工程生存周期分哪几个阶段?分别简述各个阶段的任务。
1. 计算机系统工程
计算机系统工程的任务是确定待开发软件的总体要求和范围,以及该软件与其他计算机系统元素之间的关系,进行成本估算,作出进度安排,并进行可行性分析。
2. 需求分析
需求分析主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界面等要求,生成软件需求规约(也称软件需求规格说明)。
3. 设计
系统设计的任务是设计软件系统的体系结构,详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法。
4. 编码
编码阶段的任务是用某种程序设计语言,将设计的结果转换为可执行的程序代码。
5.测试
测试阶段的任务是发现并纠正软件中的错误和缺陷。
1.7简述CMM的5个等级。
1. 初始级
2. 可重复级
3. 已定义级
4. 已管理级
5. 优化级
1.8简述CMMI的连续式模型和阶段式模型。
1.阶段式模型的结构类同于软件CMM,它关注组织的成熟度,CMMI-SE/SW/IPPD 1.1版中有5个成熟度等级:初始的、已管理的、已定义的、定量管理的、优化的。
2.连续式模型关注每个过程域的能力,CMMI中包括6个过程域能力等级:未完成的、已执行的、已管理的、已定义的、定量管理的、优化的。
1.9简述各类软件过程模型的特点。
1. 瀑布模型:上一阶段的活动完成并经过评审才能开始下一阶段的活动,接受上一阶
段活动的结果作为本阶段活动的输入,依据上一阶段活动的结果实施本阶段应完成的活动,对本阶段的活动进行评审。
2. 演化模型:从结构初始的原型出发,逐步将其演化成最终软件产品的过程。演化模
型特别适用于对软件需求缺乏准确认识的情况。
3. 增量模型:将软件的开发过程分为若干个日程时间交错的线性序列,融合了瀑布模
型的基本成分(重复地应用)和演化模型的迭代特征,特别适用于需求经常发生变化的软件开发。
4. 原型模型:开发人员和用户在“原型”上达成一致,缩短了开发周期,加快了工程进
度,降低成本。
5. 螺旋模型:将原型实现的迭代特征与瀑布模型中控制的和系统化的方面结合起来,
不仅体现了这两种模型的优点,而且增加了风险分析。
6. 喷泉模型:各个阶段没有明显的界限,开发人员可以同步进行开发,可以提高软件
项目开发效率,节省开发时间,适应于面向对象的软件开发过程。
7. 基于构件的开发模型:利用预先包装的构件来构造应用系统。
8. 形式化方法模型:易于发现需求的歧义性、不完整性和不一致性,易于对分析模型、
设计模型和程序进行验证。
1.10敏捷软件开发的特点是什么?
1. 个体和交互胜过过程和工具
2. 可以工作的软件胜过面面俱到的文档
3. 客户合作胜过合同谈判
4. 响应变化胜过遵循计划
1.11简述敏捷软件开发的价值观。
1.个人和交互高于过程和工具
2.可运行软件高于详尽的文档
3.与客户协作高于合同(契约)谈判
4.对变更及时作出反应高于遵循计划
1.12简述敏捷软件开发的原则。
1.最优先的是通过尽早地和不断地交有价值的软件来使客户满意。
2.即使到了开发的后期,也欢迎改变需求。
3.以几周到几个月为周期,尽快、不断地发布可运行软件。
4.在整个项目过程中,业务人员和开发人员必须天天一起工作。
5.以积极向上的员工为中心建立项目组,给予他们所需要的环境和支持,对他们的工作予以充分的信任。
6.项目组内效率最高、最有效的信息传递方式是面对面的交谈。
7.测量项目进展的首要依据是可运行的软件。
8.敏捷过程提倡可持续的开发,项目发起者、开发者和用户应能长期保持恒定的速度。
9.应时刻关注技术上的精益求精和好的设计,以增强敏捷性。
10.简单化是必不可少的,这是尽可能减少不必要工作的艺术。
11.最好的构架、需求和设计出自于自我组织的团队。
12.团队要定期反思怎样才能更有效,并据此调整自己的行为。
1.13通过本章学习,请对敏捷软件开发作简要评价。
(略)
1.14简述CASE工具和环境的重要性。
CASE已被证明可以加快开发速度,提高应用软件生产率并保证应用软件的可靠品