1、软件工程期末考试复习精第一章软件工程的概述软件工程的三要素:过程: 为建造高质量的软件所需完成的任务框架方法: 为软件开发提供了“如何做”的技术工具: 为软件工程方法提供了自动的或半自动的软件支撑环境软件生命周期的概念:软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程称为软件生存周期.软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生命周期生命周期阶段的划分原则: 各阶段的任务相对独立;同一阶段任务的性质相同;软件的生存期划分的几个阶段:1、软件定义:问题定义可行性研究(软件计划需求分析2、软件开发:系统设计软件实现软件测试3、软件使用、维护和退役软
2、件工程的过程模型(4 个瀑布模型(生存周期模型就是传统的生命周期方法学(既自顶向下结构化开发模型方法。优点:奠定了软件工程方法的基础;流水依赖;便于分工协作;推迟实现;文档易修改;有复审质量保证。缺点:用户需求明确困难;用户见面晚;纠错慢;难于克服系统分析员不懂专业领域的知识,用户不懂计算机的困难,成功率低。适合于系统要求明确的小系统。原型模型(rapid prototype model是为了确定需求而提出的实际模型。打破传统的自顶向下结构化开发模型方法,在计划和需求分析后,把系统主要功能接口做为设计依据,快速开发出软件样机,及时征求用户意见,正确确定系统需求,然后再进一步准确地进行系统设计与
3、实现。优点:与用户见面快;开发成功率高,适合于需求不确定的大系统。缺点:周期长,开发成本高。螺旋模型(spiral model沿着螺线旋转(一个螺旋式周期,在四个象限上分别表达四个方面的活动制定计划:确定软件目标,选定实施方案,弄清项目开发的限制,选定完成目标的策略风险分析分析所选方案,考虑如何识别和消除风险,风险角度分析该策略实施工程实施软件开发,启动一个开发阶段客户评估评价前一步开发工作,提出修正建议,计划下一轮的工作特点:瀑布模型+快速原型+风险分析迭代过程统一过程过程模型RUP 的特点:用例驱动基于用例模型,开发人员可以创建一系列实现这些用例的设计和实现模型。开发人员可以审查每个后续建
4、立的模型是否与用例模型一致。测试人员测试实现以确保实现模型的构件正确实现了用例。因此用例不仅开启了开发过程,而且使其结合成一体。以构架为中心以构架为中心的含义是指,从主要用例入手,先建立一个粗略的框架,然后处理已确定的重要用例子集,并通过子系统、类和构件来实现;最后随着用例的不断完善使框架的更多部分显示出来,直到获得一个稳定的构架为止。第二章需求工程确定系统做什么数据流图(需求分析的一种结构化的分析方法【20 分】数据流图的基本原则:自外向内,自顶向下,逐层细化,完善求精。步骤:先找出外部实现的输出数据流和输入数据流。找出系统的数据源点与终点。从外部实体的输入数据流(系统的源点出发,按照系统的
5、逻辑需要,逐步画出一系列逻辑加工,直到找出外部实体所需要的输出数据流(既系统的汇点,形成数据流的封闭。进行检查和修改再逐个分解细化处理过程,画出所需要的子图。需求类型:用户需求:用户使用该软件要完成的任务系统需求:容易被忽视的要求通常是为了保证整个系统能够正常运行的辅助功能,用户一般不会意识到。功能性需求:描述系统所应提供的功能和服务,包括系统应该提供的服务、对输入如何响应及特定条件下系统行为的描述。非功能性需求:作为功能需求的补充,非功能需求是指那些不直接与系统的具体功能相关的一类需求,但它们与系统的总体特性相关,如可靠性、响应时间、存储空间等。需求建模的类型:1,功能模型2,行为模型3,数
6、据模型需求的建模分析方法:1,面向功能分析2,面向对象分析3,面向数据分析第三章设计设计的内容:数据设计:将分析时创建的数据模型变换成实现软件所需的数据结构。在实体关系图中定义的数据对象和关系以及数据字典中描述的详细数据内容提供了数据设计活动的基础。详细的数据结构设计将在过程设计中进行。体系结构设计:是建立系统的体系结构框架、详细设计必须符合的组建结构以及组件之间相互通信的规范。体系结构设计的表示是从分析阶段的系统模型中导出。接口设计:描述了软件内部、软件和需要协作的系统之间以及软件和人之间如何进行交互。数据和数据流图提供了接口设计所需要的信息。构件级设计:也称为过程设计,将软件体系结构的结构
7、性元素变换成为对软件构件的过程性描述,也就是模块的数据结构与算法的设计。设计步骤分为:概要设计、详细设计;程序结构:它代表了程序构件(模块的组织并暗示控制的层次结构。一般用四个特征来描述:深度、宽度、扇入和扇出。设计原则:7种内聚:偶然内聚,逻辑内聚,时间内聚,过程内聚,通信内聚,信息内聚,功能内聚;(从左到右逐渐增强7种偶合:内容耦合,公共耦合,外部耦合,控制耦合,标记耦合,数据耦合,非直接耦合;(从左到右逐渐增强如何降低模块间耦合度?如模块必须存在耦合,选择适当的耦合类型原则:尽量使用数据耦合少用控制耦合限制公共耦合的范围坚决避免使用内容耦合降低模块间接口的复杂性变换型:无分支或有分支不进
8、行选择两块事务型:有分支是或者关系三块程序流程图详细设计的表达工具给伪代码画程序流程图(和图不考4.实现测试:原则目的意义出选择程序流程图给出测试用例5种出1到2种大题第五章测试测试的目的:测试是为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;成功的测试是发现了至今为止尚未发现的错误的测试;软件测试原则:(所有的测试都应追溯到用户需求最严重的错误(从用户角度是那些导致软件无法满足需求的错误。程序中的问题根源可能在开发前期的各阶段解决、纠正错误也必须追溯到前期工作。测试与软件开发个阶段之间的关系可用V模型描述;步骤:测试方法:白盒测试、黑盒测试;白
9、盒中的逻辑覆盖(5 种逻辑覆盖:是设计白盒测试方案的一种技术,是对一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试。逻辑覆盖方法:(1语句覆盖:使程序中每个语句至少执行一次语句覆盖是最弱的逻辑覆盖;(2判定覆盖:使每个判定的真假分支都至少执行一次。判定覆盖仍是弱的逻辑覆盖(3条件覆盖:使每个判定的每个条件的可能取值至少执行一次。(4判定/条件覆盖:选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次.。条件覆盖不一定包含判定覆盖;判定覆盖也不一定包含条件覆盖。(5条件组合覆盖:条件组合覆盖是更强的逻辑覆盖标准,它要求选
10、取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。条件组合覆盖是前述几种覆盖标准中最强的,但是不一定能够执行到程序中的每条路径。第六章维护维护的分类:改正性维护:产品或项目中存在缺陷或错误,在测试和验收时未发现,到了使用过程中逐步暴露出来,需要改正。适应性维护:为了产品适应变化了的硬件、系统软件的运行环境,如系统升级;完善性维护:为了给系统增加新的功能,使产品或项目的功能更加完善和合理,又不至于对系统进行大的改造,这类活动占维护活动的大部分预防性维护:为了提高产品或项目的可靠性和可维护性,有利于系统的进一步改造或升级换代第七章项目管理什么是软件项目管理:为了使软件项目能
11、够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。软件项目管理的对象是软件工程项目,它所涉及的范围覆盖了整个软件工程过程。甘特图的作用:形象地描绘了任务的分解,及每个作业的开始和结束时间,优点是直观简明、容易掌握和绘制;线段的水平线表示完成任务所需的时间;质量要求:产品运行时的属性:正确性、健壮性、效率、完整性、可用性、风险产品修改时的质量属性:可理解性、可维护性、适应性、可测试性产品转移时的质量属性:可移植性、可重用性、互运行性、轻便性软件工程基本原理:用分阶段生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性