华南理工大学软件工程复习提纲
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章软件工程概述
1.什么是软件?
软件是一系列按照特定顺序组织的计算机数据和指令的集合,包括程序、数据和文档
2.什么是软件危机,其内容主要是指什么?
(1)软件危机指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列问题的现象。
(2)主要表现
①开发进度难以预测
②开发成本难以控制
③用户对产品功能难以满足
④产品质量无法保证,难以维护
⑤缺少适当的文档资料
3.什么是软件工程?
软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以达到提高软件质量,降低开发成本的目的。
4.软件工程的目标及其组成部分
(1)目标:在给定成本、进度的前提下,开发出具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性、可互操作性和满足用户需求的软件产品。
(2)组成部分
①方法: 是指产生某些结果的形式化过程。
②工具: 是用更好的方式完成某件事情的设备或自动化系统,如各种集成开发环境、编译工具、测试工具等。
③过程: 生产特定产品的工具和技术的结合
5.软件开发方法的定义
软件开发方法是一种使用早已定义好的技术集及符号表示习惯组织软件生产过程的方法。主要有:结构化方法、可视化开发方法和面向对象的开发方法等
6. 好的软件的一些主要衡量指标。例如McCall 的质量模型。
第二章过程和生命周期建模
1. 什么是软件生命周期?主要分为哪些阶段?各个阶段的主要任务及产生的主要制品?(1)软件生命周期是指软件的产生直到报废或停止使用的过程。
(2)阶段、任务及制品
①问题定义:弄清“用户需要计算机解决什么问题”,提出关于“系统目标与范围的说明”,提交用户审查和确认。
②可行性研究:了解用户要求和现实环境,从技术、经济、市场等方面研究并论证开发该软件系统的可行性。
③需求分析:确定用户对待开发软件系统的需求,包括功能、性能、运行环境约束。编写需求规格说明书和初步的用户手册。
④概要(总体)设计:根据SRS建立目标软件系统总体结构、设计全局数据库和数据结构,规定设计约束,制定集成测试计划
⑤详细设计:细化概要设计生成的各个模块,详细描述模块的内部细节(算法、数据结构等),形成可编程的程序模块,制定单元测试计划
⑥程序编码:根据详细设计规格说明书编写源程序
⑦集成测试:根据概要设计规格说明书,将经过单元测试的模块逐步进行集成和测试
⑧确认测试:根据软件需求规格说明书,测试软件系统是否满足用户的需求
⑨运行维护:对使用后的软件进行维护,包括修正错误,增加功能,搬迁新环境等性能维护。
2.需求分析的定义。
在软件工程中,需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。即确定要计算机“做什么”,要达到什么样的效果。
3.典型的软件开发过程模型的特点(优缺点)及要求,特别是原型法、瀑布模型、螺旋模型、增量和迭代等。
一、瀑布模型
需求分析→系统分析→程序设计→编码→单元测试和集成测试→系统测试→验收测试→运行和维护
(1)要求:
①一个开发阶段必须在另一个开发阶段开始之前完成。
②当客户引发的所有需求都已经过完整性和一致性分析,并形成需求文档之后,开发团队才能够开始进行系统设计活动。
③每一个过程活动都有与其相关联的里程碑和可交付产品。
(2)特点:
优点:采用规范的结构化方法;严格规定每个阶段提交的文档;要求每个阶段交出的产品必须经过验证
缺点:对如何处理开发中产品和活动的变化没有提供相关指导;将软件开发视为制造而不是创造;创造一个产品没有迭代的活动;需要等待很长的时间
二、原型法
原型法是指在获取一组基本的需求定义后,利用高级软件工具可视化的开发环境,快速地建立一个目标系统的最初版本,并把它交给用户试用、补充和修改,再进行新的版本开发。反复进行这个过程,直到得出系统的“精确解”,即用户满意为止。
(1)要求(过程)
确定用户的基本需求;构造初始原形;运行、评价、修改原形;形成最终的管理信息系统(2)特点
优点:符合人们认识事物的规律,系统开发循序渐进,反复修改,减少开发中的风险和不确定性;开发周期短,成本相对少。
缺点:忽略软件的总体质量和长期的可维护性;开发过程要经过多次反复修改评价,不便于管理;开发人员易将原型取代系统分析;缺乏规范化的文档资料
适用范围:处理过程明确、简单系统;涉及面窄的小型系统
三、阶段化开发:增量和迭代
增量开发:需求文档中指定的系统按功能划分为子系统。定义发布时首先定义一个小的功能子系统,然后在每一个新的发布中增加新功能。
迭代开发:一开始就提交一个完整的系统,然后在每一个新的发布中改变每个子系统的功能。特点:缩短循环周期,客户可以提前获得一部分系统功能
四、螺旋模型
螺旋模型的每个迭代都围绕4个主要活动:计划;确定目标、可选方案及约束;评估可选方案及风险;开发与测试
特点:
优点:有利于软件重用,重视软件质量;减少过多测试
缺点:风险驱动,需要丰富的风险评估经验;主要适用于内部开发的大规模软件项目;
随着迭代次数增加,工作量加大,开发成本增加
4. 原型法的特点以及分类:探索型(递增型)原型、实验型(抛弃型)原型和演化型原型。
5.敏捷开发方法和极限编程的特点。
(1)敏捷方法
强调灵活性在快速、有效开发在软件中的作用
相对于过程和工具,更强调个人和交互的价值
更喜欢在生产运行的软件上投入时间,而不是在文档的编写上
注重客户的合作,而不是合同谈判
专注于对变化的反应,而不是创建一个计划而后遵循这个计划
(2)极限编程
具有强沟通、简化设计和迅速反馈等特点,一般只适合于规模小、进度紧、需求不稳定、开发小项目的小团队。极限编程的核心有4个要点:交流、简单、反馈和勇气。
第三章计划和项目管理
1.了解项目计划和管理的主要内容和常用方法
(1)项目计划要列出软件开发要做的主要工作和任务清单,要回答“软件工程项目做什么”。强调可调性创造性分析性响应性,用于协调项目编制、指导项目执行。
(2)项目管理,就是项目的管理者,在有限的资源约束下,运用系统的观点、方法和理论,对项目涉及的全部工作进行有效地管理。即从项目的投资决策开始到项目结束的全过程进行计划、组织、指挥、协调、控制和评价,以实现项目的目标。
主要有:阶段化管理、量化管理和优化管理三个方面。
2. 软件可行性研究的内容。
了解用户要求和现实环境,从技术、经济、市场等方面研究并论证开发该软件系统的可行性。
第四章获取需求
1.了解需求的重要性及需求分析阶段的目标及主要产物。
(1)重要性
①需求在软件开发起到了决策的作用,提供了开发的方向,指明了开发策略
②缺少需求或需求错误会导致项目开发失败
(2)目标及产物
①了解客户要求②分析系统的数据要求③需求规格说明书
2. 需求工程包括哪些方面?
需求工程包括需求开发和管理,而需求开发又包括:需求获取,需求分析,需求规格说明和需求验证。
3.需求的类型:功能需求、非功能需求或质量需求、设计约束、过程约束。
4. 两种需求文档:需求定义文档和需求规格说明书。
5. 需求规格说明书的主要内容。略
6. 常用的需求建模表示方法:ER图、事件跟踪、状态机、Petri网、数据流图、用例图和原型法。