软件工程课程复习 2_生存周期
软件工程复习资料
第一章绪论什么是软件工程?软件=程序+数据+文档什么是软件危机?软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件,从而导致软件开发与维护过程中出现一系列严重问题的现象。
什么是软件工程?采用工程化的原理和方法对软件进行计划开发和维护。
软件工程三范型:1.过程式编程范型2.面向对象编程范型3.基于构件技术的编程范型软件工程的发展时期:(1)传统软件工程或者经典软件工程:开发过程:结构化分析一>结构化设计一>面向过程的编码一>软件测试(2)面向对象软件工程开发过程:OO分析与对象抽取一》对象详细设计一》面向对象编码与测试(3)基于构件的软件工程:以软件复用为目标、领域工程为基础,其开发过程一般包括包括以下阶段:领域分析和测试计划定制一一》领域设计一一》建立可复用构件库一一》按“构件集成模型,,查找与集成构件第二章生存周期什么是软件生存周期?计划阶段:需求分析,软件分析开发阶段:软件设计,编码(测试)软件测试维护阶段:运行维护模型特点和使用场合可行性研究1.经济可行性2.技术可行性3.运行可行性4.法律可行性第三章结构化分析与设计结构化程序设计的特点以及论述(1)整个程序的模块化(2)每个模块只有一个入口和出口(3)每个模块都应能单独执行,且无死循环(4)采用自顶向下,逐步细化的方法SA结构化分析设计(结构化)从内容分:1.系统结构设计2.接口设计3.数据设计4.过程设计按照步骤分:1.概要设计2.详细设计第四章OO与面向对象+UML OO的特征1.抽象2.封装3.继承4.多态为什么用面向对象1.符合人类习惯的思维方式2.提高软件系统的可复用性3.提高软件系统的可扩展性4.提高软件系统的可维护性UML相关知识静态图1.用例图:描述系统功能2.类图:描述系统的静态结构3.对象图:描述系统在某个时期的静态结构4.构件图:描述实现系统的元素的组织5.部署图:描述系统环境元素的配置动态图1.状态图:描述系统元素的状态条件和相应2.时序图:按照时间顺序描述系统元素间的交互3.协作图:按照连接关系描述系统元素间的交互4.活动图:描述系统元素的活动流程第五章需求建模需求分析的步骤1.需求获取2.需求建模3.需求描述4.需求验证面向对象需求建模1.画用例图2.写用例规约3.描述补充规约4.编写术语表第六章需求分析面向对象的需求分析1.边界类:边界类提供了对参与者或外部系统交互协议的接口。
软件工程第2章软件生存周期与软件过程
用例驱动 ─ Concise, simple, and understandable
以体系结构为中心 ─ Effective basis for large-scale reuse
增量和迭代开发 ─ 基于风险前驱的原则,渐进地展开分析、设 计及其相关活动,每个迭代都会提供一次验 证和调整模型机会,推动软件质量的提升。
增量模型也存在以下缺陷 (1)由于各个构件是逐渐并入已有的软件体系
结构中的,所以加入构件必须不破坏已构造好 的系统部分,这需要软件具备开放式的体系结 构。 (2)在开发过程中,需求的变化是不可避免的。 增量模型的灵活性可以使其适应这种变化的能 力大大优于瀑布模型和快速原型模型,但也很 容易退化为边做边改模型,从而是软件过程的 控制失去整体性。
各阶段结束前都要对所完成的文档进 行评审,以便及时发现问题,改正错 误。
软件工程第2章软件生存周期与软件 过程
瀑布模型的缺点
(1) 各个阶段的划分完全固定,阶段之间产 生大量的文档,极大地增加了工作量。
(2) 由于开发模型是线性的,用户只有等到 整个过程的末期才能见到开发成果,从而增 加了开发的风险。
在增量模型中,软件被作为一系列的增量构件 来设计、实现、集成和测试,每一个构件是由 多种相互作用的模块所形成的提供特定功能的 代码片段构成 。
增量模型在各个阶段并不交付一个可运行的完 整产品,而是交付满足客户需求的一个子集的 可运行产品。整个产品被分解成若干个构件, 开发人员逐个构件地交付产品,这样做的好处 是软件开发可以较好地适应变化,客户可以不 断地看到所开发的软件,从而降低开发风险。
软件工程第2章软件生存周期与软件 过程
迭代式开发 容纳需求变更/减少风险。 管理需求 使用用例和脚本。 使用基于构件的体系结构。 可视化建模。 验证软件质量 质量评估内建在贯穿于整个
软件工程复习试题及答案
一、填空题在下划线上填写正确的答案,每题2分,共20分1.等价划分是一种黑盒测试技术,这种技术把程序的输入域划分为若干个数;2.数据流图和数据字典共同构成了系统的逻辑模型;3.盒图也称为 N-S图 ;这种表达方式取消了流程线,它强迫程序员以结构化方式思考和解决问题;4.软件有效性,指软件系统的时间和空间效率;6.数据流图有四种基本成分:源、终点,处理,存储,数据流 ;7其中数据项是组成数据流和数据存储的最小元素;8.软件工程中的结构化分析SA是一种面向数据流的分析方法;9.软件开发是一个自顶向下逐步细化和求精的过程,而软件测试是一个由下而上的过程; 10.耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚、低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础;1.常用的软件开发模型有瀑布模型、原型模型、增量模型、螺旋模型、喷泉模型 ;2.软件生存周期一般可分为问题定义、可行性研究、需求分析、设计、编码、单元测试、运行与维护阶段;3.软件测试的步骤:单元、集成、系统、验收 ;4.数据流图的基本符号包括加工、数据流、数据存储文件、汇点 ;5.IPO图由输入、处理和输出三个框组成;这个图的特点是能够直观的显示三者之间的关系;6.面向对象方法是一种运用类、实例、属性、重载、消息传送、多态性等概念来构造系统的软件开发方法;7.分析已有的程序,寻求比源代码更高级的抽象表现形式,这就是软件的逆向工程 ;8.程序测试是对编码阶段的语法错、语义错和运行错进行查找的编码执行活动;9.为了获得较高的模块独立性,尽量设计出具有高内聚和低藕合性能的模块;10.常用的测试方法有黑盒测试和白盒测试 ;1.可行性研究,应从技术可行性、经济可行性、运行可行性和法律和社会效益可行性等方面研究;2.构化程序设计中程序主要的3种基本控制结构是顺序结构、选择结构、循环结构;3.软件生存周期中时间最长、花费精力和费用最多的一个阶段是维护阶段;4.需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是功能需求 ;7.分析已有的程序,寻求比源代码更高级的抽象表现形式,这就是软件的逆向工程 ;8.程序测试是对编码阶段的语法错、语义错和运行错进行查找的编码执行活动进行查找的编码执行活动;9.为了获得较高的模块独立性,尽量设计出具有低耦合和高内聚性能的模块;1.若年利率为i,n年后可得钱数为F则现在的价值 F/1+Ni ;2.在结构化分析中用来描述加工逻辑的主要工具是结构化语言、判定表、判定树 ;3.软件测试的步骤:制定、设计、实施测试、测试后调试、做4.自顶向下结合的渐增测试法,在组合模块时有两种组合策略:7;1;2;3.HIPO图是由一组IPO图和一张H 图组成;4.在前期需求明确、资料完整的情况下尽量采用瀑布模型;5.用例图中,如果在完成某个功能时,偶而会执行另一个功能,则用扩展关系来表示;6.UML;7.类是类图的主要的主要部件,由类名、属性、操作3部分组成;8.UML中的泛化关系就是通常所说的继承关系;9;10Rose中对应图形的分类;1.软件危机具有下列表现 D ;1、对软件开发成本估计不准确2、软件产品的质量往往靠不住3、软件常常不可维护4、软件成本逐年上升A、 1、2和3B、 1、3 和4C、 2、3和4D、以上都正确2.软件生命周期一般都被划分为若干个独立的阶段,其中占用精力和费用最多的阶段往往是 A ;A 运行和维护阶段 B、设计阶段 C、代码实现阶段 D、测试阶段3.下列属于软件的特点的是 D ;A、软件是一种逻辑实体,具有抽象性B、软件在使用过程中没有磨损、老化C、软件不同于一般程序,它的一个显着特点是规模庞大,复杂程度高D、以上都正确4.软件开发技术不包含 D ;A、软件开发方法学B、软件工程环境C、软件工具D、软件质量度度量5.需求分析阶段最重要的技术文档是 B ;A、设计说明书B、需求规格说明书C、可行性分析报告D、用户手册6.数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是 CA、数据库设计B、数据通信C、数据定义D、数据维护7.需求分析阶段的研究对象是 C ;A、系统分析员要求B、用户要求C、软硬件要求D、系统要求8.结构化方法的基本原则是B ;A 、模块化B、抽象与分解 C、信息隐藏 D、逐步求精9.耦合度最高的是B 耦合;A、环境耦合B、内容耦合C、控制耦合D、数据耦合10.画软件结构图时应注意调用关系只能是 BA、从下到上B、从上到下C、从左到右D、从右到左11.软件设计中划分模块的一个准则是CA、低内聚低耦合B、低内聚高耦合C、高内聚低耦合 D高内聚高耦合12.Jackson设计方法是由英国的提出的,它是一种面向C的软件设计方法;A、对象B、数据流C、数据结构D、控制结构13.使用白盒测试方法时,确定测试数据应根据A和指定的覆盖标准;A、程序内部逻辑B、程序的复杂程度C、该软件的编辑人员D、程序的功能14.软件维护工作的最主要的部分是A;A、校正性维护B、适应性维护C、完善性维护D、预防性维护15.PDL是B语言;A、高级程序设计语言B、伪码式C、中级程序设计语言D、低级程序设计语言16.下列哪个阶段不属于软件生存期的三大阶段 C ;A、定义阶段B、开发阶段C、编码阶段D、维护阶段17.可维护性的特性中相互促进的是 AA、可理解性和可测试性B、效率和可移植性C、效率和可修改性D、效率和结构好18.软件测试的目标是BA、证明软件是正确的B、发现错误、降低错误带来的风险C、排除软件中所有的错误D、与软件调试相同19.软件生命周期中所花费用最多的阶段是 DA、详细设计B、软件编码C、软件测试D、软件维护20.详细设计的基本任务是确定每个模块的D设计;A、功能B、调用关系C、输入输出数据D、算法22.下列哪个图不是N-S图的构件 C ;23.对于下列各图,有关描述中正确的是 A ;A、数据A和B同时输入变成CB、数据A变换成B和CC、数据A或数据B不能同时输入,变换成CD、数据A变换成B和C24.下列哪种方法不是度量效益的方法 B ;A、货币的时间价值B、算法模型估计C、投资回收期D、纯收入25.下列描述错误的是 D ;A、数据流图将各种信息流抽象成数据流的形式B、数据流图不反映控制关系、调用关系C、数据流图不反映处理逻辑的先后顺序D、数据流图不反映数据的流向26.软件是CA、处理对象和处理规则的描述B、程序C、程序及文档D、计算机系统27.软件需求规格说明的不应包括B;A、主要功能B算法的详细描述C、用户界面及运行环境D、软件性能28.程序的三种基本控制结构是B;A、过程、子程序和分程序B、顺序、选择和循环C、递归、迭代和回溯D、调用、返回和转移29.面向对象的分析方法主要是建立三类模型, 即D;A、系统模型、ER模型、应用模型B、对象模型、动态模型、应用模型B、ER模型、对象模型、功能模型D、动态模型、功能模型、对象模型30.ER模型中,包含以下基本成分C;A、数据、对象、实体B、控制、联系、对象C、实体、联系、属性D、实体、属性、操作1.快速原型模型的主要特点之一是 B A.开发完毕才见到产品B.及早提供工作软件C.及早提供全部完整软件 D.开发完毕才见到工作软件2.软件工程学的一个重要目标是 D A.提高程序的执行效率 B.降低程序对存储空间的要求C.定义各种软件开发过程模型D.提高软件的可维护性3.需求分析最终结果是产生 B A.项目开发计划B.需求规格说明书C.设计说明书 D.可行性分析报告4.数据存储和数据流都是处于不同状态的 D A.分析结果 B.事件 C.动作D.数据5.数据字典是对数据定义信息的集合,它所定义的对象都包含于 A A.数据流图 B.程序框图 C.软件结构 D.方框图6、结构化设计是一种面向 A 的设计方法;A.数据流B.数据库C.数据结构 D.程序7.下列可哪个组件不是用例图的基本组件 D A.参与者 B.用例C.系统D.文档8.用例图中用例之间存在各种关系,但不包括 BA.包含B.关联 C.泛化 D.扩展9.常用动词或动词词组来表示 C A.对象B.类 C.关联D.属性10.组件图中通常不包括下列哪个元素 A A.对象 B.组件C.接口 D.依赖11.好的软件结构应该是 B A.高耦合、高内聚B.低耦合、高内聚C.高耦合、低内聚 D.低耦合、低内聚12.静态模型不包括 C A.类图 B.组件图C.状态图 D.部署图13.动态模型不包括 D A.交组图B.活动图C.状态图D.部署图14.Rose模型文件的扩展名为 AA.mdl B.vsd C.pdf D.swf15.逆向工程是什么过程 CA.模型到代码B.设计到实现C.代码到模型 D.类图到包图三、判断题正确的在括号内打上“√”,错误的打上“×”;每小题2分,共20分1软件开发的主要任务是写程序; F2测试只能证明程序有错误,不能证明程序没有错误; T3模块化程序设计中,模块越小,模块化的优点越明显;一般来说,模块的大小都在10行以下; F4在编制程序时,首先应该对程序的结构充分考虑,不要急于开始编码,而要写软件文档那样,很好地琢磨程序具有什么样的功能,这些功能如何安排等等; F5程序设计风格指导原则提出,尽量多使用临时变量; F6用黑盒法测试时,测试用例是根据程序内部逻辑设计的; F7发现错误多的程序模块,残留在模块中的错误也多; T8为了加快软件维护作业的进度,应尽可能增加维护人员的数目; F9软件维护就是改正软件中的错误; F10质量保证是为了保证产品和服务充分满足消费者要求的质量而进行的有计划,有组织的活动; T11螺旋模型是利用笛卡尔坐标的四个象限分别代表四个方面的活动来表示; F12模块越多,开发成本越小; F13内聚是指一个软件结构内各个模块之间互连程序的度量; F14结构化设计属于面向数据流的设计方法; T15详细设计是在概要设计之后进行的;它利用概要设计的结果,对系统中的每个模块给出足够的过程性描述; T16程序运行过程中出现错误叫做容错; F17软件测试的目的是证明程序没有错误; F18白盒测试法是将程序看成一个透明的盒子,不需要了解程序的内部结构和处理过程;F19 PAD图在设置了五种基本的控制结构后,还允许递归调用; T20独立编译是指一个大程序的不同程序单元分别编译,然后重新连接整个程序段;T31开发软件就是编写程序F32 系统测试的主要方法是白盒测试法,主要进行功能、性能测试、安全性测试及可靠性测试等F33编程时应尽可能利用硬件特点以提高程序效率F;34软件需求分析的任务是建立软件模块结构图F;35尽可能使用高级语言编写程序T;36以结构化方法建立的系统模型就是数据流图F;37进行总体设计时加强模块间的联系F;38编码时尽量多用全局变量F;39用CASE环境或程序自动化生成工具来自动生成一部分程序T40软件测试是要发现软件中所有错误FT 41、软件开发、设计几乎都是从头开始,成本和进度很难估计;F 42、VG值越高的程序往往是越不复杂、越不容易出问题的程序;F 43、适应性维护是改进软件未来的可维护性和可靠性;F 44、软件是逻辑产品,软件质量较容易直接度量;T 45、随着软件复杂性的不断提高,软件的维护难度越来越大;F 46、软件也会磨损和老化;F 47、用穷举法测试是较现实的测试方法;T 48、面向数据设计方法一般都包括下列任务:确定数据结构特征;用顺序、选择和循环三种基本形式表示数据等步骤;F 49、测试计划、测试用例,出错统计和有关的分析报告一般不用长期保存;F 50、McCabe建议模块规模应满足:VG≤20;T 61.总体设计阶段要设计软件体系结构;F 62、软件即程序;T 63.采用对象设计系统时,首先建立系统的物理模型;T 64.用例图中,扩展关系表示为虚线箭头加“extend”;T 65.实现关系指定两个实体之间的一个合同;T 66.状态图通常作为对类图的补充;F 67.聚集关系是关联的一种形式,表示两个类之间的一般与特殊关系;T 68.一个完整的模型必然描述系统的静态和动态两个方面;F 69.状态图是对多个对象建模;T 70.在UML中,组件是指系统中可替换的物理部分;四简述题每小题5分,共10分1.测试用例测试用例Test Case是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个路径或核实是否满足某个特定需求;2.模块化模块化是指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程,有多种属性,分别反映其内部特性;3.对象指行动或思考时作为目标的事物4.软件生命周期各阶段的任务是什么答:软件生命期分为7个阶段:1、问题定义:要解决的问题是什么2、可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性3、需求分析:系统必须做什么4、总体设计:系统如何实现,包括系统设计和结构设计5、详细设计:具体实现设计的系统6、实现:编码和测试7、运行维护:保证软件正常运行;5.软件重用的效益是什么答:1、软件重用可以显着地改善软件的质量和可靠性;2、软件重用可以极大地提高软件开发的效率;3、节省软件开发的成本,避免不必要的重复劳动和人力、财力的浪费;6.结构化程序设计方法的基本要点;1.采用自顶向下、逐步求精的程序设计方法:在需求分析、概要设计中,都采用了自定向下、逐层细化的方法;2.使用三种基本控制结构构造程序,分别是顺序、选择和循环,这三种基本结构的共同点是、单入口、单出口,为自顶向下、逐步求精的设计方法提供了具体的实施手段;3.采用主程序员的组织形式:指开发程序的人员组织方式应用由一个主程序员、一个后备程序员和一个程序管理员三人为核心,再加上一些专家、其他技术人员组成小组;7.什么是软件生命周期8.简述什么是回归测试回归测试-----在集成测试过程中每当一个新模块结合进来时,程序就发生了变化:建立了新的数据流路径,可能出现新的I/O操作,激活新的控制逻辑;这样变化有可能使原来正常的功能出现了问题;所谓回归测试是指重新执行已经做过的测试的某个子集,以保证上述变化没有带来非预期的错误;9.简述软件危机有哪几种表现软件开发和维护的过程中常遇到的问题1对于软件开发的成本和进度的估计很不准确;2开发的软件产品不能完全满足用户要求;3开发的软件可靠性差,软件产品质量差;4软件通常没有适当的文档资料;5软件的可维护性差;6软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势,效率低;7软件价格昂贵;10.什么是软件工程Software Engineering,简称为SE是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科;它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面;11.简述需求分析的任务需求分析的任务就是:确定待开发的软件系统“做什么”;具体任务包括确定软件系统的功能需求、性能需求和运行环境约束,编制软件需求规格说明书、软件系统的验收测试准则和初步的用户手册12.详细设计的主要任务是什么答:详细设计的基本任务包括:1、为每个模块进行详细的算法设计2、为模块内的数据结构进行设计3、对数据库进行物理设计4、其他设计5、编写详细设计说明书6、评审13.自顶而下渐增测试与自底向上渐增测试各有何优缺点答:①自顶而下渐增测试优点:不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能够尽早发现上层模块的接口错误;缺点:需要存根程序,底层错误发现较晚;②自底而上渐增测试优点与缺点和自顶而下渐增测试相反;14.软件生存期各阶段的主要任务;15.简述需求分析工作可以分成哪四个方面软件需求分析有三个基本原则需求分析阶段的基本过程包括四个方面:对问题的识别,分析与综合,制定规格说明以及评审;1问题识别,系统分析人员要研究计划阶段产生的可行性分析报告和软件项目实施计划;然后进行功能需求、性能需求、环境需求、可靠性需求安全保密需求、用户界面需求、资源使用需求等方面的工作;2分析与综合,分析员需从数据流和数据结构出发,逐步细化所有的软件功能,找出系统各元素之间的联系、接口特性和设计上的限制,分析他们是否满足功能需求,是否合理;3制定规格说明,编写需求分析的文档;4需求分析评审;为保证软件需求定义的质量,评审应以专门指定的人员负责,并按规程严格执行;需求分析的原则1.必须能够传达和理解问题的数据域和功能域2.必须按自顶向下、逐层分解的方式对问顺进行分解和不断细化3.给出系统的逻辑模型和物理模型161、为了发现错误而执行程序的过程2、一个好的用例能够发现至今尚未发现的错误的测试3、一个成功的测试是发现至今尚未发现的错误的测试17.在面向对象的系统开发过程中,每个阶段需要建造的模型各有什么作用1、在面向对象的系统开发过程中,每个阶段要建造不同的模型2、需求分析阶段建造的模型用来捕获系统需求分析3、设计阶段的模型是分析模型的扩充,为实现阶段作指导性和技术性的解决方案4、实现阶段的模型是真正的源代码及编译后的组件5、发布阶段是描述系统物理上的架构18 .软件工程的原则是什么软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则;五、应用题20分1.某厂对部分职工重新分配工作的政策是:年龄有20岁以下者,初中文化程度脱产学习,高中文化程度当电工;年龄有20岁至40岁之间者,中学文化程度男性当钳工,女性当车工,大学文化程度者当技术员;年龄有40岁以上者,中学文化程度当材料员,大学文化程度当技术员;请用结构化语言,判定树或判定表描述上述问题的加工逻辑;职工重新分配工作的政策可描述为:若年龄在20岁以下则初中文化程度脱产学习高中文化程度当电工若年龄在20-40岁之间则中学文化程度男性当钳工女性当车工大学文化程度都当技术员若年龄在40岁以上者则中学文化当材料员大学文化当技术员初中脱产学习年龄<20 高中电工男钳工中学女车工工作分配规则年龄20-40高中技术员年龄>40 中学村料员高中技术员2.假设某航空公司规定,乘客可以免费托运重量不超过30kg的行李;当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的乘客超重部分每公斤收费6元,对国外乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半;用判定表表示每种条件组合相对应的计算行李费的算法;用判定树表示计算行李费的算法用判定树表示计算行李费的算法3.以自己开发软件可以是C、C++、VC++、VF、甚至是汇编、等其他语言的一个自选项目为背景,应用软件工程方法进行策划,要求必须给出项目描述,主要的软件工程过程的描述以及各阶段的主要内容。
软件生命周期
由于瀑布模型的特点(文档是主体),很多的问题在最后才会暴露出来,为了解决这些问题的风险是巨大的。 "在迭代式生命周期中,您需要根据主要风险列表选择要在迭代中开发的新的增量内容。每次迭代完成时都会生成 一个经过测试的可执行文件,这样就可以核实是否已经降低了目标风险。"
软件测试阶段:在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。
软件运行和维护阶段:是软件生命周期中持续时间最长的阶段,包括类
瀑布模型 迭代式模型
快速原型模型 螺旋模型
(Waterfall Model)首先由Royce提出。该模型由于酷似瀑布闻名。在该模型中,首先确定需求,并接受 客户和SQA小组的验证。然后拟定规格说明,同样通过验证后,进入计划阶段…可以看出,瀑布模型中至关重要 的一点是只有当一个阶段的文档已经编制好并获得SQA小组的认可才可以进入下一个阶段。这样,瀑布模型通过 强制性的要求提供规约文档来确保每个阶段都能很好的完成任务。但是实际上往往难以办到,因为整个的模型几 乎都是以文档驱动的,这对于非专业的用户来说是难以阅读和理解的。想象一下,你去买衣服的时候,售货员给 你出示的是一本厚厚的服装规格说明,你会有什么样的感触。虽然瀑布模型有很多很好的思想可以借鉴,但是在 过程能力上有天生的缺陷。
阶段
可行性研究阶段:同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶 段,一般称为软件生存周期(软件生命周期)。把整个软件生存周期划分为若干阶段,使得每个阶段有明确的任 务,使规模大,结构复杂和管理复杂的软件开发变的容易控制和管理。可以将软件生命周期概括为软件计划与可 行性研究阶段(问题定义、可行性研究)、需求分析阶段、软件设计阶段(概要设计和详细设计)、软件编码阶 段、软件测试阶段和软件运行与维护阶段。软件计划与可行性研究阶段(问题定义、可行性研究):此阶段是软 件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。
软件工程复习提纲(20160615)
软件工程复习提纲Chapter11.开发文档都有哪些?用图来表示它们之间的关系。
2.说明软件工程研究的内容.3.软件工程的7条基本原理有何现实意义。
4.怎样理解ISO9000的文档体系?质量手册、程序文件、质量记录三者有何联系和区别?5.怎样理解CMMI,如何用CMMI去管理软件企业?6.是否存在这一种现象:搞系统软件的公司不需要采用CMMI和ISO9000模式?CMMI和ISO9000模式只适用于搞应用软件的企业?如果是,为什么,如果不是,又为什么?7.软件工程与信息系统工程有何异同?8.怎样理解元数据?Chapter21.为什么要选择软件开发模型?软件开发模型与软件生存周期有什么关系?2.简述瀑布模型、增量模型、迭代模型、原型模型的优缺点。
3.软件公司的ISO9000或CMM管理体系与软件开发模型有关吗,为什么?4.你对“生存周期模型裁剪指南"有什么看法?5.“图书馆信息系统”的开发选用什么开发模型合适?Chapter31.立项的具体表现形式是什么?2.立项建议书的编制者为什么主要是软件公司的市场销售人员,而不是开发人员?3.什么叫风险分析,技能风险与技术风险有何区别?3.合同、任务书、立项建议书三者有何异同?有何关系?4.对软件项目和产品的“功能、性能、接口"三项指标如何理解?Chapter41.需求分析的目的是什么,需求分析的难点在哪里?2.需求分析的理论基础有哪几条?3.为什么说需求分析是面向流程的?4.解释术语:元数据、实体、中间数据.5.用户需求报告与需求规格书有何差异?6.需求描述有哪几种工具?你喜欢哪一种,为什么?1.简述软件策划的步骤.2.简述软件策划的方法。
3.简述对软件工作产品规模进行量化估计的方法。
4.软件工作产品和软件产品有何异同?5.名称解释:直接人工、直接费用、间接成本、制造费用、管理费用、不可预见费用。
6.怎样理解软件中的度量,它有何作用?Chapter61.概要设计说明书和详细设计说明书有何区别?2.怎么理解“软件概要设计是系统总体结构设计或系统架构设计”?3.模块实现设计包括哪些内容?4.为什么软件设计要遵守“抽象、分解与模块化、低耦合高内聚、封装、接口和实现分离”的设计原理?Chapter71.简述UML的优缺点。
《软件工程实用教程》第2章软件生存周期及开发模型
本章學習內容: 1.掌握軟體的生存(生命)週期的概念 2.明確學習軟體過程模型的意義 3.掌握各種過程模型的特點與適用範圍 4.掌握面向對象軟體過程模型的內容與過 程
第2章軟體生存週期及開發模型
2. 1 軟體過程概述
2.1.1 軟體生存週期
軟體的生存週期指軟體產品從功能確 定、設計、開發成功、投入使用,並 在使用中不斷修改、完善,直至被新 的軟體所替代而停止該軟體的使用的 全過程。
第2章軟體生存週期及開發模型
2.2.4 螺旋模型
第2章軟體生存週期及開發模型
改進的瀑布模型
第2章軟體生存週期及開發模型
2.2.2 原型模型
1.快速原型方法 快速原型方法是原型模型在軟體分析、設計 階段的應用,用來解決用戶對軟體系統在需 求分析上的模糊認識。 快速原型法的特點: 快速原型是用來獲取用戶需求的,或是用來 試探某種設計是否有效。一旦需求或設計確 定下來,原型就將被拋棄。
第2章軟體生存週期及開發模型
瀑布模型的缺點 階段與階段劃分固定,階段間產生大量的文檔, 極大地增加了工作量; 由於開發模型呈線性,當開發成果尚未經過測試 時,用戶無法看到軟體的效果,這些問題往往會 導致開發出來的軟體不是用戶真正需要的軟體; 無法通過開發活動澄清本來不夠確切的軟體需求, 因此,需要返工或者不得不在維護中糾正需求的 偏差; 由於固定順序,前期工作中造成的差錯越到後期 階段所造成的損失越大,為了糾正偏差,需要付 出高昂的代價。
第2章軟體生存週期及開發模型
2.2 典型的軟體過程模型
軟體過程模型 把軟體生存週期中各項開發活動的流程用一 個合理的框架——開發模型來規範描述,這 就是軟體過程模型 。 軟體過程模型是從一個特定的角度表現一個 過程,主要根據軟體的類型、規模,特別是 軟體的開發方法、開發環境等多種因素確立 過程模型。
软件工程复习资料整理
《软件工程》试题参考答案(1)卷一、单向选择题(四选一、每小题3分,共18分)1、需求分析的任务不包括(B)。
A.问题分析B.系统设计C.需求描述D.需求评审。
2、当模块中包含复杂的条件组合,只有( A)能够清晰地表达出各种动作之间的对应关系。
0802A.判定表和判定树C.流程图3、以下不属于逻辑覆盖的是(D)。
1402A.语句覆盖C.条件覆盖B.盒图D 关系图B.判定覆盖D.基本路径4、为适应软件运行环境的变化而修改软件的活动称为( B)。
1501A.纠错性维护B.适应性维护C.改善性维护 D 预防性维护二、填空题(每空2分,共18分)1. 软件可靠性是指在给定的时间间隔内,程序成功运行的(概率)。
01012. 高级语言:独立于机器,面向过程或面向(对象)01013. 软件项目管理的范围主要集中于 3 个P 上,即:People 人员、Problem 问题和(过程)。
02014. 由于维护或在维护过程中其他一些不期望的行为引入的错误称为维护的(副作用)。
15045. 在公式V(G) = E – N + 2 中: E 为程序图G 中边的总数;N 为程序图中结点的总数。
V(G)又称为图 G 的环形(复杂度)0204。
6. 任何一个基于计算机系统都可以用输入-处理-输出(IPO)图来描述,它将该系统转换成一个信息变换模型。
03037. 为提高可交互性一般对所有可能造成损害的用户操作动作,应坚持要求用户(确认),例如,提问“你确实要删除…?”。
12048. 文档是一种数据媒体和其上所记录的(数据)。
0101三、判断题(每小题2分,共24分,错误打X、正确打√)1. 用户对软件需求的描述不准确,往往是产生软件危机的原因之一。
(√)01022. 一个好的开发人员应具备的素质和能力包括善于与周围人员团结协作,建立良好的人际关系,善于听取别人的意见。
(√)02063. 目前的绝大多数软件都不适合于快速原型技术。
(完整版)2、软件工程复习题及答案
中南大学现代远程教育课程考试(专科)复习题及参考答案软件工程一、单项选择题1、下列哪个阶段不是软件生存期三个阶段中的内容()。
A、计划阶段B、开发阶段C、编码阶段D、维护阶段2、软件按照设计的要求,在规定时间和条件下达到不出故障,持续运行的要求的质量特性称为 ( )A、可用性B、可靠性C、正确性D、完整性3、需求分析阶段结束后,应交出的文档中不包括()。
A、数据流图B、数据字典C、简明的算法描述D、项目的经费预算4、关于数据流图不正确的描述是()。
A、数据流图是结构化系统分析的主要工具。
B、在数据流图中,*号标识相邻的数据流只取其一。
C、加工是以数据结构或数据内容作为加工对象的。
D、数据流图的主图中必须包括全部四种基本元素。
5、瀑布模型的存在问题是()A、用户容易参与开发B、缺乏灵活性C、用户与开发者易沟通D、适用可变需求6、软件调试技术包括()A、边界值分析B、演绎法C、循环覆盖D、集成测试7、软件维护产生的副作用,是指()A、开发时的错误B、隐含的错误C、因修改软件而造成的错误D、运行时误操作8、软件测试不包括()方面的差错和纠错。
A、软件计划B、软件设计C、软件编码D、软件价格9、在快速原型模型的开发过程中,仅作为需求说明的补充形式的原型是()A、探索型模型B、演化型模型C、实验型模型D、提交型模型10、数据字典是软件需求分析阶段的最重要的工具之一,其最基本的功能是()A、数据控制B、数据定义C、数据操纵D、数据约束11、软件文档是软件工程实施中的重要成分,它不仅是软件开发各阶段的重要依据而且也影响软件的()A、可使用性B、可操作性C、可维护性D、可开发性12、在瀑布模型中,将软件开发划分为若干个时期,软件项目的可行性研究一般被归属于()A、定义时期B、分析论证时期C、调研时期D、初始阶段13、结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的()A、数据流B、数据元素C、数据结构D、数据约束14、软件维护是软件得以正常运行的重要环节,按照软件工程方法的理解,一般软件维护应该开始于()A、修改源代码B、阅读设计文档C、阅读源代码D、修改设计文档15、以实体、联系和属性等基本概念为基础的实体联系图是基本实体联系图。
软件工程(概论)生存期和开发模型-作业2
2.3 软件开发模型
4.模型的优点 开发阶段清晰,便于评审、审计、跟踪、管理和控制。
5.模型的缺点 传统的项目组织方法是按顺序完成每个工作流程,即瀑布式生命周期。瀑布
只能一个个台阶地往下流,不可能倒着往上流,这就是它致命的缺点。 瀑布式生命周期通常会导致在项目后期,出现“问题堆积”,更可怕的是,错
一阶段(活3)动用的户输使入用,环继境续很进稳行定下;一阶段的活动,否则返回上一阶段修改。 (4)用户除提出需求以外,很少参与开发工作。
2.模瀑型布的模特型点认为:项目经理或软件管理人员,只要控制好每级台阶的高度 (和1宽)度里,程在碑每或个基台线阶驱处动设,立或里者程说碑文或档基驱线动,;并组织好对基线的评审与审 (计2,)就过可程以逆控转制性好很项差目或的者开说发不成可本逆、转进,度因和为质根量据。上游的错误会在下游进行
误的传递会采取发散扩大的方式。
瀑布模型反馈环
CMM/CMMI采取阶段评审和不符合项(Noncompliance Items)的动态跟踪制度, 只有前一阶段不符合项全部改正,才允许开发人员进入后一阶段工作。
不符合项,就是在评审中发现的问题项,它不同于Bug。对于这些不符合项,软 件管理部门要列出表格,记录在案,确定责任人,限定改正时间,动态跟踪到底 。
可行性研究的结果是负责人作出是否继续进行这项工程的决定的重要依据。 可行性研究以后的各个阶段,将需要投入多少相应的人力物力。 及时终止不值得投资的工程项目,可以避免更大的浪费。
2.2 软件工程过程
3. 需求分析
这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须 具备哪些功能。产生《需求规格说明书》。
软件工程复习题及答案
软件工程复习题及答案选择题1.在结构化设计SD方法中全面指导模块划分的最重要的原则是( D )A.程序模块化B.模块高内聚C.模块低耦合D.模块独立性2.软件维护产生的副作用,是指( C )A.开发时的错误B.隐含的错误C.因修改软件而带来的错误D.运行时误操作3.软件详细设计的主要任务是确定每个模块的( A )A.算法和使用的数据结构 B.外部接口 C.功能 D.编程4.为了提高模块的独立性,模块内部最好是( C )A.逻辑内聚B.时间内聚C.功能内聚D.通信内聚5.软件是一种( C )A.程序B.数据C.逻辑产品D.物理产品6.下列那个模型不是面向对象的分析中建立的模型( B )A.对象模型B.瀑布模型C.动态模型D.功能模型7.确认软件的功能是否与需求规格说明书中所要求的功能相符的测试属于A.集成测试B.恢复测试C.验收测试D.单元测试8.采用Gantt图表示软件项目进度安排,下列说法中正确的是( D )A.能够反映多个任务之间的复杂关系B.能够直观表示任务之间相互依赖制约关系C.能够表示哪些任务是关键任务D.能够表示子任务之间的并行和串行关系9.程序的三种基本控制结构是( B )A.过程、子过程和分过程B.顺序、选择和重复C.递归、堆栈和队列D.调用、返回和转移10.软件生存周期中时间最长的是( D )阶段A.总体设计B.需求分析C.软件测试D.软件维护11.为使得开发人员对软件产品的各个阶段工作都进行周密的思考,所以( C )的编制是很重要的。
A.需求说明B.概要设计C.软件文档D.测试计划12.软件部件的内部实现和外部可访问性的分离,是指软件的( C )。
A.继承性B.共享性C.封装性D.抽象性13.单元测试是发现编码错误,集成测试时发现模块的接口错误,确认测试是为了发现功能错误,那么系统测试是为了发现( C )错误。
A.接口错误B.编码错误C.性能、质量不合要求D.功能测试14.软件工程管理对软件项目的开发管理,即对整个软件( B )的一切活动的管理。
大学_软件工程第二部分(软件项目管理)复习试题及答案
软件工程第二部分(软件项目管理)复习试题及答案软件工程第二部分(软件项目管理)复习试题及答案(一)一单项选择1、软件生命周期一般包括:软件开发期和软件运行期,下述(D )不是软件开发期所应包含的内容。
A需求分析 B 结构设计 C程序编制 D软件维护2、软件是一种逻辑产品,它的开发主要是(A )。
A研制 B拷贝 C再生产 D复制3、以文档作为驱动,适合于软件需求很明确的软件项目的生存周期模型是( C )。
A喷泉模型 B 增量模型 C瀑布模型 D螺旋模型4、在软件生存周期中,( B )阶段必须要回答的问题是“要解决的问题是做什么?”。
A详细设计 B 可行性分析和项目开发计划 C概要设计 D软件测试5、软件产品与物质产品有很大区别,软件产品是一种(C )产品A有形 B 消耗 C逻辑 D文档6、 ( C )把瀑布模型和专家系统结合在一起,在开发的各个阶段上都利用相应的专家系统来帮助软件人员完成开发工作。
A 原型模型B 螺旋模型C 基于知识的智能模型D 喷泉模型7、 ( B )阶段是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。
A概要设计 B 详细设计 C 编码 D 测试8、下列软件开发模型中,适合于那些不能预先确切定义需求的软件系统的开发的模型是( A )。
A 原型模型B 瀑布模型C 基于知识的智能模型D 变换模型9、下列软件开发模型中,以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型是( C )。
A 原型模型B 瀑布模型C 喷泉模型D 螺旋模型10、下列软件开发模型中,支持需求不明确,特别是大型软件系统的开发,并支持多种软件开发方法的模型是( D )。
A 原型模型B 瀑布模型C 喷泉模型D 螺旋模型11、软件特性中,使软件在不同的系统约束条件下,使用户需求得到满足的难易程度称为( C )。
A可修改性 B可靠性 C可适应性 D 可重用性12、软件特性中,一个软件能再次用于其他相关应用的程度称为( B )。
软件工程复习题
软件工程课程复习题一、单选题1、软件生存周期模型有多种,下列选项中,(C)不是软件生存周期模型。
A.螺旋模型B.增量模型C.功能模型D.瀑布模型2、检查软件产品是否符合需求定义的过程称为(D)。
A.集成测试B.确认测试C.验证测试D.验收测试3、黑盒测试是从(C )观点出发的测试,白盒测试是从(A )观点出发的测试。
A.开发人员B.管理人员C.用户4、可行性研究要进行一次(D)需求分析。
A.深入的B.详尽的C.彻底的D.简化的、压缩了的5、回归测试是( A )中最常用的方法。
A.校正性维护B.适应性维护C.完善性维护D.预防性维护6、与选择编程语言无关的因素是( C ) 。
A.软件开发的方法B.软件执行的环境C.程序设计风格 D. 软件开发人员的知识7、面向对象程序设计将数据与( A )放在一起,作为一个相互依存、不可分割的整体来处理。
A.对数据的操作B.信息C.数据隐藏D.数据抽象8、软件生存周期的( D )工作和软件可维护性有密切的关系。
A.编码阶段B.设计阶段C.测试阶段 D. 每个阶段9、好的软件结构应该是( C ) 。
A.高耦合,高内聚B.高耦合,低内聚C.低耦合,高内聚 D. 低耦合,低内聚10、在快速原型模型的开发过程中,仅作为需求说明的补充形式的原型是(A)A.探索型模型 B.演化型模型 C.实验型模型 D.提交型模型11、软件结构图的形态特征能反映程序重用率的是(C)A.深度 B.宽度C.扇入 D.扇出12、需求分析最终结果是产生(B)A.项目开发计划 B.需求规格说明书 C.设计说明书 D.可行性分析报告13、分层数据流图是一种比较严格又易于理解的描述方式,它的顶层描绘了系统的( C )。
A.总体B.细节C.抽象D.分解14.可行性研究要进行一次需求分析。
答案为:DA.深入的 B.详尽的 C.彻底的 D.简化的、压缩了的2.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作 B 。
软件工程实用教程(2版)-第2章-习题与参考答案-2012-3-15
《软件工程实用教程》习题与参考答案第2章软件生存周期及开发模型1.简述什么是软件生存周期?根据国家标准《计算机软件开发规范》,软件生存周期主要包括哪几个阶段?答案要点:软件生存周期是指软件产品从功能确定、设计、开发成功、投入使用,并在使用中不断修改、完善,直至被新的软件所替代,而停止该软件使用的全过程。
国家标准GB8566-1988《计算机软件开发规范》将软件生命周期划分为几个阶段:可行性研究、项目计划、需求分析、总体设计、详细设计、编码实现(包括单元测试)、集成测试、确认测试、系统运行和维护。
这几个阶段又可以归纳为3个大的阶段,即软件定义阶段,软件开发阶段和软件运行维护阶段。
2.瀑布模型有哪些特点?对于里程碑,你有哪些认识?答案要点:瀑布模型是一种基于里程碑的阶段过程模型,它所提供的里程碑式的工作流程,为软件项目按规程管理提供了便利。
例如,按阶段制定项目计划,分阶段进行成本核算,进行阶段性的评审等。
这为提高软件产品质量提供了有效保证。
瀑布模型的特点:•阶段性:前一阶段工作完成以后,后一阶段工作才能开始,前一阶段的输出文档是后一阶段的输入文档。
•阶段评审:在每一阶段工作完成后都要进行评审,以便尽早发现问题,避免后期的返工,如果评审不合格,则不开始下一阶段的工作。
•文档管理:在每阶段都规定了要完成的文档,没有完成文档,就认为没有完成该阶段的任务。
3.试说明原型模型的两种实现方案各有什么特点?各适用于什么情况?答案要点:原型模型在软件分析、设计阶段的应用,用来解决用户对软件系统在需求分析上的模糊认识。
将模拟的手段引入需求分析的初期阶段,通过建立原型缩短用户与分析人员之间的距离。
快速原型方法具有以下一些特点。
•快速原型是用来获取用户需求的,或是用来试探某种设计是否有效。
一旦需求或设计确定下来,原型就将被抛弃。
因此快速原型要求快速构建、容易修改,以节约原型创建成本,加速开发速度。
快速原型往往采用软件生成工具来创建,例如,4GL语言。
软件生存周期及其模型
技术审查和管理复审
• 技术审查是从技术角度进行审查,是保证软件质量和 降低软件成本的重要措施。 • 技术审查通常由专家组成的审查小组来承担审查工作。 • 管理复审的主要任务实在软件生存周期的每个重要里 程碑,对工程项目的成本、实际花费的经费、投资回 收的前景、项目的进度等经济因素从管理角度进行审 查。
瀑布模型的优点
• 软件生命周期模型,使软件开发过程可以在 分析、设计、编码、测试和维护的框架下 进行;
2.1 软件工程过程与软件生存期
为了克服软件危机,人们从其他产业的工业化
生产得到启示,于是在68年北大西洋公约的软件可 靠性会议( NATO )上,首次提出了“软件工程”
的概念。提出了在软件生产中采用工程化的方法,
采用一系列科学的、现代化的方法技术来开发软件。 这种工程化的思想贯穿到软件开发和维护的全过程。
软件工程过程
(Software engineering process)
规程与方法
有技能经过培 训的开发人员
过程
工具和设备
软件工程三要素
软件工程
工具
过程 方法
软件工程釆用层次化的方法,每个层次都包括过程、 方法、工具三要素。
软件生存周期
• 软件的生存周期是指一个软件从提出开发要求直 到该软件报废为止的整个时期。 • 软件的生存周期一次划分为若干阶段,生存阶段 划分时应遵循的基本原则是各阶段的任务尽可能 相对独立,同一阶段各项任务的性质尽可能相同, 每一阶段都有明确的任务。
基本任务:为保证软件的质量, 在设计测试用例的基础上检验 软件的各个组成部分,是否达 到预定要求。 结束标准:软件合格,能交付 用户使用。
典型的软件生存周期包括以下阶段:
5. 编码 6. 测试 7. 软件维护
软件工程期末复习资料二
软件工程期末复习资料二模拟试题心之所向,所向披靡一、填空题1.软件开发模型有()、()、第四代技术模型、()、构件组装模型、混合模型。
2.可行性研究一般可以从()可行性、()可行性、运行可行性、法律可行性和开发可行性等方面来研究。
3.现在向银行存款,年利率为i,若希望在n年后从银行得到F元,现在应该存入的钱数为()。
4.数据流图从数据传输和()角度,以()方式描述数据流从输入到输出的传输变换过程。
5.Jackson图除了可以表达程序结构外,还可以表达(),它首先要分析(),并用适当的工具来描述。
6.HIPO图是由一组()图加上一张()图组成。
7.把程序从一个硬件或软件环境中转移到另一种配置环境称为软件的()。
8.如果一个模块完成一组任务,这些任务彼此之间的关系是很松散的,这种內聚称为()。
9.白盒法的具体设计程序测试方法有语句覆盖、()、()、和路径覆盖。
10.组成UML的三种基本建筑块是()、关系和()。
11.面向对象的软件工程方法包括面向对象的分析、()、()、()和面向对象的软件维护等主要内容。
12.保证软件质量的措施主要有()、复查和管理复审、()。
13.提高软件质量和可靠性的技术大致分为两类,即()和()。
二、单项选择题1.下列()属于系统软件。
A.WINDOWS 2000B.WordC.FlashD.3D MAX2.下列哪个图是N-S图的构件()。
A.B.C. D.3.对于螺旋模型,下列()不是利用笛卡尔坐标表达的活动。
A. 制定计划B. 实施工程C. 风险分析D. 程序编码4.某次程序调试没有出现预计的结果,下列()不可能是导致出错的原因。
A.变量没有初始化B.编写的语句书写格式不规范C.循环控制出错D.代码输入有误5.下列关于程序效率的描述错误的是()。
A.提高程序的执行速度可以提高程序的效率B.降低程序占用的存储空间可以提高程序的效率C.源程序的效率与详细设计阶段确定的算法的效率无关D.好的程序设计可以提高效率三、多项选择题1.软件危机可以表现为()。
软件工程复习题及答案
一、单项选择题1.软件可行性研究实质上是要进行一次需求分析、设计过程。
A.简化、压缩的B.详细的C.彻底的D.深入的2.以下哪个软件生存周期模型是一种风险驱动的模型。
A.瀑布模型B.增量模型C.螺旋模型D.喷泉模型3.可行性分析中,系统流程图用于描述。
A.当前运行系统B.当前逻辑模型C.目标系统D.新系统4.结构化分析建立功能模型的工具是。
A.DFDB.判定树/判定表C.SCD.结构化语言5.检查软件产品是否符合需求定义的过程称为。
A.确认测试B.集成测试C.系统测试D.单元测试6.在整个软件维护阶段所花费的全部工作中,所占比例最大的是。
A.校正性维护B.适应性维护C.完善性维护D.预防性维护7.通信内聚是指。
A.把需要同时执行的动作组合在一起形成的模块B.各处理使用相同的输入数据或者产生相同的输出数据C.一个模块中各个处理元素都密切相关于同一功能且必须顺序执行D.模块内所有元素共同完成一个功能,缺一不可8.一个只有顺序结构的程序,其环形复杂度是。
A.0B.1C.3D.59.下述四个能力成熟度等级,级别最高的是。
A.已定义级B.优化级C.可重复级D.已管理级10.结构化程序设计,主要强调的是。
A.程序的执行效率B.模块大小C.程序的可理解性D.模块关系11.软件调试技术包括。
A.边界值分析B.演绎法C.循环覆盖D.集成测试12.需求分析中开发人员要从用户那里了解。
A.软件做什么B.用户使用界面C.输入的信息D.软件的规模13.数据字典是对数据定义信息的集合,它所定义的对象都包含于。
A.数据流图B.程序框图C.软件结构D.方框图14.面向对象的主要特征除唯一性、继承性、多态性外,还具有。
A.封装性B.移植性C.完整性D.兼容性15.关于软件维护的说法错误的是。
A.软件维护是软件生命周期中占用时间最长的一个阶段B.软件维护不只是修改软件中的错误C.软件维护对于开发商来说是无利可图的D.在编码过程中添加适当的注释,可以降低软件维护的难度16.应用执行对象的操作可以改变该对象的。
《软件工程》第2课 软件生存周期与软件过程
代码生成 与检查
测试计划
盒结构 形式化 正确性 规约 设计 证明
统计性使 认证 用测试
增量2 需求
收集
代码生成 与检查
测试计划
统计性使 认证 用测试
增量n 需求
收集
盒结构 形式化 正确性 规约 设计 证明
测试计划
代码生成 与检查
统计性使 认证 用测试
软件过程模型的特点汇总
开发模型 特 点 适用场合 瀑布模型 线性模型,每一阶段必须完成规 需求明确的中小型软件开发 定的文档 快速原型 用户介入早,通过迭代完善用户 需求模糊的小型软件开发 模型 需求,原型废弃不用
• 敏捷过程
–Agile Development是一种以人为核心、迭 代、循序渐进的开发方法,其软件开发过程称 为“敏捷过程”。
RUP
Rational Unified Process 将软件开发分为四个阶段: –初始 – 定义整个项目的范围,是否可行。 –细化 – 制定项目计划、描述功能、建立体系架构框架。 –构造 – 构造软件产品。 –迁移 – 将软件产品移交到最终用户手中。
变换n
形式化 规格说明
变换2
变换1
测试
系统需求
目标系统
净室模型
• 净室思想
–在分析和设计阶段消除错误。 –在“洁净”状态下实现软件制作。
• 增量模型
–把软件看成一系列的增量。
• 形式化
–每一个增量用形式化表示—盒,表示分析和 设计。 –正确性验证。
净室模型
增量1 需求
收集
盒结构 形式化 正确性 规约 设计 证明
用户要求 需求分析 需求规格说明 软件分析 与总体设计 确认测试 系统测试
软件结构图
软件工程考试复习名词解释整理
1.软件生存期:一个软件从定义到开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。
软件生存周期就是从提出软件产品开始,直到该软件产品被淘汰的全过程。
2. 什么是软件危机?为什么会产生软件危机?软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重的问题,主要包含二方面的问题,一是如何开发利用软件,二是如何维护数量不断膨胀的已有软件。
产生软件危机的原因,一方面与软件本身的特点有关,另一方面和软件开发与维护的方法不正确有关。
3.快速原型模型:所谓快速原型模型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。
瀑布模型:是将软件生命周期的各项活动规定为依线性顺序连接的若干阶段的模型,适合于软件需求很明确的软件项目。
增量模型(渐增模型):瀑布模型的顺序特征和快速原型模型的迭代特征相结合的产物。
螺旋模型:对于大型软件,只开发一个原型往往达不到要求。
螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。
喷泉模型:以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型。
4.结构化分析方法(SA)是E.Yourdon提出,是使用数据流图DFD与数据字典DD,用来描述面向数据流问题的需求分析,适合于数据处理型的软件的需求描述。
核心思想是分解化简问题,将物理表示与逻辑表示分开,对系统进行数据与结构的抽象。
优点是表达方式比文字清晰、简明,易于交流与掌握。
缺点是不能表达复合逻辑的需求分析问题,不能详细描述加工。
5.结构化设计(SD)是使用最广泛的一种设计方法,该方法适合于软件系统的总体设计和详细设计,特别是将一个复杂的系统转换成模块化结构系统,该方法具有它优势。
(相对独立,功能单一的模块结构;块内联系大,块间联系小的模块性能标准;采用模块结构图的描述方式)以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块。
软件生存周期和软件生存周期过程
软件生存周期和软件生存周期过程
• 《软件工程术语》(GB/T11457-2006) 定义了软件生存周期,即:从设计软件产 品开始到产品不能再使用时为止的时间周期。亦即:一个计算机软件,从出现 一个构思之日起,经过开发成功投入使用,在使用中不断增补修订,直到最后 决定停止使用,并被另一项软件代替之时止,被认为是该软件的一个生存周期 (或称生命周期、生存期,life cycle) 。
软件生存周期和软件生存周期过程
• 一个软件产品的生存周期可以划分成若干个互相区别而又有联系的阶段,每个 阶段中的工作均以上一阶段工作的结果为依据,并为下一阶段的工作提供了前 提。经验表明,失误造成的差错越是发生在生存周期的前期,在系统交付使用 时造成的影响和损失就越大,要纠正它所花费的代价也越高。因而在前一阶段 工作没有做好之前,决不要草率地进入下一阶段。
• 软件生存周期的每个阶段都要产生一定规格的软件文件移交给 下一阶段,使下一阶段在所提供的软件文件的基础上继续开展 工作。《计算机软件产品开发文件编制指南》(GB/T8567-1988, 已升级为GB/T8567-2006《计算机软件文档编制规范》) 建议在 软件的开发过程中编制的文件有14种。而《计算机软件需求规 格说明规范》(GB/T9385-2008)、《计算机软件测试文档编制规 范》(GB/T9386-2008) 等有关软件工程的国家标准对软件文件 的编制提出了更为详尽的要求,《软件文档管理指南》 (GB/T16680-1996) 则明确了对软件文件的管理要求。
软件生存周期和软件生存周期过程
• 软件生存周期过程中阶段的划分,有助于软件研制管理人员借用传统工程的管 理方法 (重视工程性文件的编制,采用专业化分工方法,在不同阶段使用不同 的人员等) ,从而有利于明显提高软件质量、降低成本、合理使用人才、进而 提高软件开发的劳动生产率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
掌握
1) 瀑布模型的本意、特点、选用条件 2) 增量模型的本意、特点、选用条件 3) 原型模型的本意、特点、选用条件
3
2.1
软件生存周期概论
概述:任何有生命的动物、植物和人,都 有一个生存周期(Life Cycle)。 例如,人的生存周期。
4
表2-2
周期 序号 周期划分 周期 名称
人的生存周期
以文档形式驱动的,上 一阶段的结果作为本阶 段的输入 ;
24
瀑布模型特点
是一个理想化过程。会掩饰项目中真正的风 险,当你太晚发现它们时已无济于事。 过程逆转性很差,因为上游的错误会在下游 进行发散性传播。所以逆转会造成很大损失。
缺乏灵活性;特别是无法解决软件需求不明确 或不准确的问题后期错误,修正代价高 。 适用于:功能和性能明确、完整、无重大变 化的软件开发,并且分析设计人员对应用领 域很熟悉,项目风险低,用户很少参与开发 工作的项目。
12
技术审查和管理复审
技术审查是从技术角度进行的审查,是保证软件质量和降
低软件成本的重要措施。在每一阶段结束前进行,对于持
续时间很长的开发阶段,在阶段中间还要根据需要进行多
次正式的或非正式的技术审查。技术审查通常由技术专家 组成的审查小组来承担审查工作。审查过程包括:准备和
阅读被审文档、开审查会、返工、复查。
25
优点:
1) 阶段间具有顺序性和依赖性 2) 推迟实现的观点 3) 质量保证的观点。 缺点:
1)各个阶段的划分完全固定,阶段之间产生大量的文 档,极大增加了工作量
2)由于开发模型是线性的,用户只有等到最后才能看
到开发成果,中间提出的变更要求很难响应,增加风险 3)早期错误可能要到开发后期或测试阶段才发现,从 而带来严重后果
30
增量模型
第一增量 第二增量 第三增量
……
核心功能
核心功能
核心功能
1 1
1 1
2 2
1 1
2 2
3 3
31
增量模型
◆遵循递增方式进行软件开发。开发一部分,向
用户展示一部分。
◆增量模型是一种非整体开发的模型。
◆适用条件:
1)使用面向对象语言或第四代语言。 2)需求可能发生变化,客户接受分阶段交付; 3)分析设计人员对应用领域不熟悉,难以一步到 位;用户可以参与到整个软件开发过程。
分析员
系统的逻辑模型 (数据流图+数据字典+简要算 法)
详细设计
编码与单元测试
写出正确的容易理解和 容易维护的程序模块
综合测试 如何具体地实现系统:每个模块的流程 图(程序的详细规格说明)
通过各种类型的测试, 使软件达到预定要求
软件维护
通过各种必要的维护活动使 19 系统持久地满足用户的需要
开发团队中的角色
周期的主要活动
1
2
胚胎至分娩 胎儿 定期到妇幼保健院或妇产科医院检查
0~3岁 婴儿 请保姆看护,上婴儿室或托儿所
3
4 5 6 7 8
3~6岁
6~12岁 12~18岁 18~30岁 30~60岁 60岁以上
幼儿 上幼儿园
儿童 上小学,好好学习,天天向上 少年 上中学,参加中考、高考,自古英雄出少年 青年 上大学,攻读硕士、博士学位,应聘就业 中年 上班,追求事业上的成就、成功、贡献 老年 退休,老有所乐,写回忆录,立遗嘱
模型、变换模型和基于知识的模型等。
16
立项(或签合同)、下达任务书
需求分析
概要设计 详细设计 编码实现 软件测试
统一建模过程(UML)
软件发布与实施 软件维护 版本更新或退役
17
生命周期各阶段的基本任务
生命周期的8各阶段:
问题定义→可行性研究→需求分析→总体设计
(概要设计)→详细设计→编码和单元测试→综
8
软件开发时期—系统设计
概要设计
基本任务:回答 “概括地说,应如何解决这个问 题”。把确定的各项功能需求转换成需要的体系 结构。设计软件的结构,确定程序由哪些模块组 成及模块间的关系,同时设计该项目的应用系统 的总体数据结构和数据库结构。 结束标准:给出概要设计文档。
详细设计
基本任务:回答 “应怎样具体地实现这个系统”。 为每个模块完成的功能进行具体描述,把功能描 述转变为精确的、结构化的过程描述。 结束标准:设计出程序的详细规格说明。
4)项目风险高。
5)软件公司自己已有较好的类库和构件库。
32
优点: 1)将整个产品分解为若干个构件进行逐步交付,因 此软件开发可以很好的适应需求的变化。 2)用户可以看到所开发软件的可运行中间版本降低 风险 缺点: 1)由于各个构件的逐渐并入已有的软件体系中,所 以加人构件必须不破坏已构造好的系统,这需要系统 具备开放式体系结构。
管理复审的主要任务是在软件生存周期的每个重要的里程
碑,对工程项目的成本、实际花费的经费、投资回收的前 景、项目的进度等经济因素从管理角度进行审查。从管理 角度对软件开发工程进行复审,是对工程进行管理和控制 的主要手段,对发现的问题可以及时采取措施加以解决, 必要时甚至可以取消开发工程以避免更大的损失。
9 因故因病去世 死亡 丧事从简,长眠于地下
5
软件生存周期(Life cycle)
• 软件有一个孕育、诞生、成长、成
熟、衰亡的生存过程。
• 软件生存周期通常包括可行性研
究和项目开发计划、需求分析、概
要设计、详细设计、编码、测试、
维护等活动(GB8567中规定)。
6
实现
定义 分析
产品
设计
蓝图、图表、库 存、采购单等
基本任务:通过各种必要的维护活动使系统 持久地满足用户需要。
11
交互设计
美国的Alan Cooper提出,交互设计应 该作为软件生存周期的一个重要阶段考虑进 去(具体可参看《软件开发的创新思维》, 刘瑞挺等译,电子工业出版社出版)。
可行性研究和项目开发计划、 需求分析、交互设计、 概要设计、详细设计、编码、 测试、维护
公司的财务系统 库存管理系统 短期项目
27
增量模型
1
2 5 6 3 4 7 10 设计 8 11 编码
9 需求分析
第1次集成 第1块
第2次集成 第3次集成 第4次集成 第N次集成
第1块 第1块 第1块 第1块
第2块 第2块 第2块 第2块
12 测试
第3块 第3块
第4块
第3块
第4块
第N块
增量模型示意图
15
软件产品
基线 检查点 里程碑 评审 审计 顾客>客 户>用户 现有系统 目标系统
软件生存周期模型概念
软件生存周期模型是描述软件开发过程中各种
活动如何执行的模型。它确立了软件开发和演绎
中各阶段的次序以及各阶段活动的准则,确立开
发过程所必须遵守的规定和限制等。
目前有瀑布模型、增量模型、螺旋模型、喷泉
9
软件开发时期—系统实现
编码
基本任务:把每个模块的控制结构转换成计算机可 接受的程序代码。写出的程序应是结构好,清晰易 读,并且与设计一致。 结束标准:以某种程序设计语言表示的源程序清单。
测试
基本任务:通过各种类型的测试使软件达到预定的 要求。 结束标准:软件合格,能交付用户使用。
10
软件维护时期
需求分析和定义
分析员 设计人员 程序员
系统设计
软 件 开 发
程序设计 程序实现 单元测试 集成测试
测试人员
步
骤
系统测试
交付系统 维护
20
培训人员
瀑布模型
瀑布模型(Waterfall Model)又称流水 式过程模型。它可以形象地用阶梯瀑布描 述,水由上向下一个阶梯接着一个阶梯地 倾泻下来,最后进入一个风平浪静的大湖, 即软件企业的产品库,如图2-1所示。
26
适合的软件:
软件的需求在项目开始前很明确,在开发时期内没有或很 少有需求变化; 解决方案在软件开始前也很明确,开发者对应用领域很熟 低风险项目,如开发者对目标和开发环境很熟悉; 除了在早期阶段,用户对开发工作参与很少;
系统编程要求使用面向过程的程序设计语言
类似的软件如:
合测试→软件维护
各阶段的基本任务如下图。
18
问题定义
要解决的问 题是什么?
问题性质、工程目标 和规模的报告
分析员:实际用户+负责人
可行性研究
为了解决的问题,目 标系统必须做什么? 准确确定系统的功能
是否有解决办法? 高层逻辑模型,准确具 体的工程规模和目标, 成本/效益分析等可行 需求分析 性报告 总体设计 如何解决 这些问题 模块划分 软件结构
29
增量模型
定义 基本需求
将需求赋予 增量构件
开发 增量构件
设计系统 体系结构
确认 增量构件
集成 增量构件
确认系统
把软件产品分解成一系列的增量构件,在增量开发迭代 中逐步加入。 每个构件由多个相互作用的模块构成,并且能够完成特 定的功能。 增量开发方法的新演进版本叫做 “极限程序设计 (Extreme Programming)”。
2)开发过程中,需求的变化使得软件过程的控制失 去整体性
33
模型适合的项目:
项目开始,明确了需求的大部分,但是需
在CMM中软件产品是最终用户使用的软件。它是软件工作产品的一部分。 它是软件工作产品。它是要经内部和外部评审过的,并且是下一阶段工 作的基础,一根基线是一个里程碑或一个检查点。 它是由时间、计划、事件驱动的检查工作进度和质量的一个记号,一个 检查点不一定是基线或里程碑。 它是一个记号,只需经过内部评审。它是一个检查点,但不一定是基线。 是对软件工作产品质量的一次开会或汇签活动。 是复查评审活动程序的合法性,是否按程序与规范进行。 客户是顾客的一部分,顾客包括潜在的客户。用户是软件产品的最终使 用者,用户是客户的一部分。 现有系统是用户当前正在使用的系统(可能是手工系统);目标系统是 将要实现的系统。