《-原理、方法及应用课后习题(2)》由会员分享,可在线阅读,更多相关《-原理、方法及应用课后习题(2)(10页珍藏版)》请在金锄头文库上搜索。
1、软件工程原理、方法与应用绪论1.什么是软件危机?为什么会产生软件危机?答:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。(1).软件维护费用急剧上升,直接威胁计算机应用的夸大。(2).软件生产技术进步缓慢5.什么是软件工程环境?谈谈你对环境重要性的认识。答:方法与工具相结合,再加上配套的软、硬件支持就形成环境。例如在批处理时代,用户开发的程序是分批送入计算机中心的计算机的,有了错误,就得下机修改。程序员对自己写的程序只能继续地跟踪,思路经常被迫中断,效率难于提高。分时系统的使用,使开发人员从此能在自己的终端上跟踪程序的开发,仅此一点,就明显提高了开发的效率。6. 何谓面向对象
2、软件工程?简述它与传统软件工程在各型软件开发中的作用。答:以面向对象程序设计为基础。7. 软件按规模大小可分成哪几类?简述软件工程中各型软件开发中的作用。答:按规模分为极小、小、中、大、甚大、极大。(1 )中小型软件:软件工程对改进软件质量,提高程序员生产率和满足用户的需求,有很大的作用。(2 )大型软件:这类软件必须从头至尾坚持软件工程的方法,严格遵守标准文档格式和正规的复审制度,才能避免或减少混乱,真正开发出大型的软件。什么是软件?软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据以及有关描述程序操作和使用的文档,简而言之“软件=程序加文档” 。什么是软件工程
3、?软件工程师一种用科学知识和技术原理来定义开发和维护计算机的一门学科。目标:能用较低的成本来开发软件且软件的性能。软件生存周期与软件过程1什么是软件生存周期?把生存周期划分为阶段的目的是什么?答:软件生存周期划分为计划、开发和运行 3 个时期;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得交易控制和管理。2传统的瀑布模型把生存周期分为哪些阶段?瀑布模型软件开发有哪些特点?答:瀑布模型在编码以前安排了分析阶段和设计阶段;阶段间具有顺序性和依赖性。4什么是快速原型法?其快速表现在哪里?答: 首先建立一个能够
4、反映用户主要需求的原型,让用户实际看一看未来系统的概貌,以便判断哪些功能是符合需要的,哪些方面还需要改进。然后将原型改进,最终建立完全符合用户要求的新系统。它的快速表现在能够缩短开发周期的语言和工具,能在短时间内提供出成品,但不包括成品中的细节,然后让客户进行对比。6比较增量模型和螺旋模型的特点,有什么不同和相似的地方?答:增量模型是瀑布模型的顺序特征与快速原型法的迭代特征相结合的产物。螺旋模型是一种迭代模型,每迭代一次,螺旋线就前进一周。增量模型每个增量具有高内聚低耦合,高度的独立性。而螺旋模型它在结合瀑布模型与快速原型的基础上还增加了风险分析。11可行性研究包含哪些内容?答:经济可行性,技
5、术可行性,运行可行性,法律可行性。12.为什么要进行风险分析?软件的风险具有不确定性,可能发生也可能不发生,但一旦风险变成现实就会造成损失或者严重后果,风险分析的任务就是尽可能的量化不确定性的程序及每个风险导致的损失的程序,为软件开发的实施计划提供参考。如果在可行性研究阶段就进行风险分析,重视风险,就可以更大限度减少风险的发生与损失。风险分析包括:风险识别,风险预测,风险驾驭(风险管理)软件生存周期的主要活动:需求分析,软件分析,软件设计,编码,软件测试,运行维护。开发模型 特点 场合瀑布模型 线性模型,每个阶段必须完成固定文档需求明确的中小型软件开发快速原型模型 用户介入早,通过迭代完善用户
6、需求,应用快速开发工具需求模糊的小型软件开发增量模型 每次迭代完成一个增量,可用于 OO 开发容易分块的大型软件开发螺旋模型 典型迭代模型,重视风险分析,可用于 OO 开发具有不确定性的大型软件开发构件集成模型 软件开发与构件开发平行进行,主要用于 OO 开发领域工程,行业的中型软件开发转换模型 形式化的需求规格说明书,自动的程序变换系统理想化的模型,尚无成熟工具支持净室模型 形式化的增量开发模型,在洁净状态下实现软件的制作开发团队熟悉形式化方法,中小型软件开发结构化分析与设计1需求分析的任务是什么?怎样理解分析阶段的任务是决定“做什么” ,而不是“怎么做”?答:需求分析主要有两个任务:第一是
7、通过对问题及其环境的理解、分析和综合建立分析模型;第二是在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求表达出来。需求分析的任务就是为了明确要开发的是一个什么样的系统,而不是去怎么去实现这个系统。2需求分析要经过哪些步骤?答:需求获取、需求提炼、需求描述、需求验证。4. 需求说明(或需求规格说明书)由哪些部分组成?各部分的主要内容是什么?答:引言、信息描述、功能描述、行为描述、质量描述、接口描述、其他描述。引言:主要叙述在文体定义阶段确定的关于软件的目标与范围,简要介绍系统背景、盖帽、软件项目约束和按考资料等。信息描述:给出对软件所含信息的详细描述,包括信息的内
8、容、关系、数据流向、控制流向和结构等。功能描述:对软件功能要求的说明,包括系统功能划分、每个功能的处理说明、限制和控制描述等。行为描述:包括对系统状态变化及事件和动作的描述,据此可以检查外部事件和软件内部的控制特征。质量描述:阐明在软件交付使用前需要进行的共更能测试和性能测试,并且规定源程序和文档应该遵守的各种标准。接口描述:包括系统的用户界面、硬件接口、软件接口和通信接口等的说明。其他描述:阐述系统设计和实现上的限制,系统的假设和依赖等其他需要说明的内容。5. DFD 和 CFD 有什么区别?答:DFD 是数据流图,CFD 是控制流图。CFD 主要表示程序的控制结构,DFD 主要表示程序的数
9、据结构。结构化分析(工具:DFD,PSPEC) 分析模型(分层 DFD 图)+SRS结构化设计(工具:SC 图) 映射 初始设计模型(初始 SC 图)初始设计模型(初始 SC 图)优化 最终设计模型(最终 SC 图)SA 的两项基本任务:建立系统分析模型和编写软件需求规格说明书。SD 阶段把分析模型中的 DFD 图转为最终的 SC 图。初始 SC 图总体设计软件设计 最终 SC 图详细设计:完成模块说明分解和细化历来是重要的软件设计策略,细化的实质是分解。SA 模型的组成:数据字典处于模型的核心,他是系统涉及的各种数据对象的总和。从 DD 出发可构建的三种图:a 实体联系图(E-R 图)用于描
10、述数据对象间的关系,它代表软件的数据模型,在实体联系图中出现的每个数据对象的属性,均可用数据对象说明来描述。b 数据流图(DFD)主要作用是指明系统中的数据时如何流动和变换的,以及描述使数据流进行变换的功能。在 DFD 图中出现的每个功能,则可在加工规格说明中剪下描述,他们一起构成软件的功能模型。c 状态变换图(STD)用于指明系统在外部事件的作用下将如何动作,表明系统的各种状态以及状态间的变换(变迁)从而构成行为模型的基础.DD 的作用:对软件中的每个数据规定一个定义条目。包括数据流,数据文件,数据项。加工规格说明书包括结构化语言,判定树或者判定表。模块划分的原则:模块的总行数应控制在 10
11、100 行的范围内,最好为 3060 行;模块位置应否变更,应视对计算机处理是否方便而定。高扇入/低扇出原则要会判断:扇入高则上级模块多,能够增加模块的利用率;扇出低表示下层模块少,可以减少模块调用和控制的复杂度。传统的软件工程将软件技术分成两步走:总体(或结构)设计-用最终 SC 图表示;模块设计-用逐步细化的方法来实现。伪代码和 PDL 语言:伪代码属于文字形式的表达工具,他形式上与代码相似,但并非真正的代码,也不能在计算机上执行。 4.面向对象与 UML1.面向对象有哪些特征?封装,继承,抽象,多态3.UML 中提供了哪 9 种图?试述每种图所描述的内容?1、用例图 描述角色以及角色与用
12、例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示了这些元素之间的各种关系,如泛化、关联和依赖。2、类图 类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。3、对象图 与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。4、活动图 描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。能够演示出系统中哪些地方存在功能,以及这
13、些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。5、状态图 描述类的对象所有可能的状态,以及事件发生时状态的转移条件。可以捕获对象、子系统和系统的生命周期。他们可以告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。6、序列图(顺序图) 序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对
14、象之间是如何进行交互的。顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。7、协作图 和序列图相似,显示对象间的动态合作关系。可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图。8、构件图 (组件图)描述代码构件的物理结构以及各种构建之间的依赖关系。用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件时软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。9、部署图 (配置图)是用来建模系统的物理部
15、署。例如计算机和设备,以及它们之间是如何连接的。部署图的使用者是开发人员、系统集成人员和测试人员。几种图的区别: 一:这九种模型图各有侧重,1:用例图侧重描述用户需求,2:类图侧重描述系统具体实现;二:描述的方面都不相同,1:类图描述的是系统的结构,2:序列图描述的是系统的行为;三:抽象的层次也不同,1:构件图描述系统的模块结构,抽象层次较高,2:类图是描述具体模块的结构,抽象层次一般,3:对象图描述了具体的模块实现,抽象层次较低。什么是面向对象?面向对象=对象+ 分类+继承+消息通信。5.需求工程与需求分析3有哪两种主要的需求模型?它们各由哪些部分组成?1结构化需求模型该模型主要由 3 部分
16、组成:即包括数据流图和加工规格说明书的功能模型;主要由数据字典和 E-R图组成的数据模型;由状态转换图,控制图和控制规格说明书等组成的行为模型。2.面向对象需求模型由三部分组成:用例模型,补充规约和术语表。其中用例模型包括用例图跟用例规约。4 基于用例的面向对象的需求建模包括哪些步骤?1. 画用例图 a.确定参与者 b.确定用例 c.绘制和检查用例图2. 写用例规约 a.用例规约的内容 b.用例规约示例 c.用例模型的检查3. 描述补充规约 4.编写术语表 5.调整用例模型5.建立用例模型时,如何确定参与者用例?参与者泛指所有存在于系统外部并与系统进行交互的人,硬件或其他系统。通俗地讲,参与者主要是待开发系统的使用者,寻找参与者可从以下问题入手:a. 系统开发完成后,有那些人会使用这个系统?b. 系统需要从那些人或其他系统中获取数据?c. 系统会为纳西尔或者其他系统提供数据?d. 系统会与哪些其他系统相关联?e. 系统是由谁来维护和管理?6需求规格说明书由哪些