《自己整理】软件工程复习提纲资料》由会员分享,可在线阅读,更多相关《自己整理】软件工程复习提纲资料(23页珍藏版)》请在金锄头文库上搜索。
1、软件工程复习提纲(年糕整理,不一定全)软件工程复习提纲(年糕整理,不一定全) 目录目录 第一章 概述 .1 第二章 可行性研究 .4 第三章 需求分析 .6 第五章 总体设计 .8 第六章 详细设计 .11 第七章 实现 .13 第八章 维护 .17 第十三章 软件项目管理 .19 第一章第一章 概述概述 概念概念 软件危机软件危机:在计算机软件的开发和维护过程中遇到的一系列严重的问题。包含 如何开发软件,如何维护已有软件。 软件:软件:计算机程序、方法、规则、相关文档资料以及在计算机上运行时必需的 数据。 软件工程:软件工程:把系统的、规范的、可度量的途径应用到软件开发、运行和维护 过程;研
2、究 中提到的途径。 软件工程方法学(范型)软件工程方法学(范型):软件生命周期全过程中使用的一套技术方法的集 合。最广泛的有传统方法学、面向对象方法学。 传统方法学(生命周期方法学、结构化范型):传统方法学(生命周期方法学、结构化范型):采用结构化计数来完成软件开 发的各项任务,使用适当的软件工具据或软件工程环境来支持结构化技术运 用。 软件生命周期:软件生命周期:从提出软件产品(项目)开始,直到该软件被淘汰的全过程。 软件过程:软件过程:为了获得高质量软件所需要完成的一系列任务的框架,它规定了完 成各项任务的工作步骤。 软件生命周期模型软件生命周期模型:跨越整个生存期的系统开发、运作和维护所
3、实施的全部过 程、活动和任务的结构框架。 简答简答 软件危机的软件危机的 7 个典型表现?个典型表现? 1. 成本进度估计不足。 2. 客户需求经常变更或无法满足。 3. 软件质量无法保证或不可靠。 4. 软件维护无法进行或不可维护。 5. 软件文档缺少或不合要求。 6. 软件成本在总成本中占比逐年提升。 7. 开发生产率的提高速度比计算机应用普及深入速度慢。 软件危机出现的原因?软件危机出现的原因? (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、 维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写; 轻视软件维护。 (3) 供求矛
4、盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从 心。 软件工程的软件工程的 7 个本质特性?个本质特性? 1. 关注大型程序。 2. 中心课题是控制复杂性。 3. 软件经常变化。 4. 效率非常重要。 5. 和谐合作是关键。 6. 有效地支持用户工作。 7. 为其他领域和文化背景创造产品。 记忆记忆软件工程的软件工程的 7 条基本原理?条基本原理? 1. 按生命周期计划严格管理。 2. 坚持进行阶段评审。 3. 实行严格的产品控制。 4. 采用现代程序设计技术。 5. 结果应能清楚地审查。 6. 开发小组成员少而精。 7. 不断改进软件工程实践。 分析结构化范型和面向对象范型它们
5、的优缺点?分析结构化范型和面向对象范型它们的优缺点? 传统方法学:也称为生命周期方法学或结构化范型。 优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比 较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。 缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时 间而变化的 时候,开发出的软件往往不成功;而且维护起来仍然很困难。 2. 面向对象方法学: 优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发 和维护工作; 促进了软件重用。 记忆记忆软件生命周期的软件生命周期的 3 个时期、个时期、8 个阶段?个阶段? 三个时期:软件定义、设计
6、实现、运行维护。 八个阶段: 1. 问题定义 2. 可行性研究 3. 需求分析 4. 总体设计 5. 详细设计 6. 编码和单元测试 7. 综合测试 8. 软件维护 举例生命周期模型?举例生命周期模型? 瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。 比较各个生命周期模型的优缺点比较各个生命周期模型的优缺点 瀑布模型 优点:提供了一个使得分析、设计、编码、测试和支持的方法有共同指导的模 板。缺点:(1)实际的项目大部分情况难以按照该模型给出的顺序进行,而且这 种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。 (2)经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模
7、型是 不欢迎具有二义性问题存在的。 (3)客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大 的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。 快速原型模型 优点:使用户能够感受到实际的系统,使开发者能够快速地构造出系统的框 架。缺点:产品的先天性不足,因为开发者常常需要做实现上的折中,可能采 用不合适的操作系统或程序设计语言,以使原型能够尽快工作。 增量模型 优点:(1)人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎 时,可增加人力实现下一个增量。 (2)当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产 品的途径,这样就可以先发布部分功能
8、给客户,对客户起到镇静剂的作用。 缺点:(1)至始至终开发者和客户纠缠在一起,直到完全版本出来。(2)适合于软 件需求不明确、设计方案有一定风险的软件项目。该模型具有一定的市场。 螺旋模型 优点:对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客 户能够较好地对待和理解每一个演化级别上的风险。缺点:(1)需要相当的风险 分析评估的专门技术,且成功依赖于这种技术。 (2)很明显一个大的没有被发现的风险问题,将会导致问题的发生,可能导致演 化的方法失去控制。(3)这种模型相对比较新,应用不广泛,其功效需要进一步 的验证。该模型适合于大型软件的开发。 第二章第二章 可行性研究可行性研究
9、概念概念 可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否 能够开发,是否值得去开发。 系统流程图(系统流程图(SDT):):概括地描绘物理系统的传统工具,表达数据在系统各部 件之间流动的情况。 数据流图(数据流图(DTD):):描述信息流和数据从输入移动到输出的过程中所经受变换 的图形化技术。 数据字典(数据字典(DD):关于数据的信息的集合,对数据流图中包含的所有元素的定 义的集合。 数据流图的 4 个基本符号:数据的源点/终点,变换数据的处理,数据存储,数 据流。 简答简答 可行性研究的三个方面?可行性研究的三个方面? (1)技术可能性 (2)经济可行性 (3)操作可
10、行性 (有时候还有法律、社会效应方面) 可行性研究的可行性研究的 8 个过程?个过程? 1. 复查系统规模与目标 2. 研究现有的系统 3. 导出逻辑模型 4. 进一步定义问题 5. 导出和评价供选择的解法 6. 推荐行动方针 7. 草拟开发计划 8. 书写文档提交审查 数据字典的组成内容?数据字典的组成内容? (1) 数据流 (2)数据流分量 (3)数据储存 (4)处理 举例三种成本估计技术?举例三种成本估计技术? (1)代码行技术 (2)任务分解技术 (3)自动估计成本技术 成本成本/效益分析的方法有哪些?效益分析的方法有哪些? (1)货币的时间价值 (2)投资回收期 (3)纯收入 (4)
11、投资回收率 在软件开发的早期阶段为什么要进行可行性研究在软件开发的早期阶段为什么要进行可行性研究? 开发一个软件时,需要判断原定的系统模型和目标是否现实,系统完成后所能 带来的效益是否大到值得投资开发这个系统的程度,如果做不到这些,那么花 费在这些工程上的任何时间、人力、软硬件资源和经费,都是无谓的浪费。可 行性研究的实质是要进行一次大大压缩简化了的系统分析和设计过程,就是在 较高层次上以较抽象的方式进行的系统分析和设计的过程。可行性研究的目的 就是用最小的代价在尽可能短的时间内确定问题是否能够解决。 第三章第三章 需求分析需求分析 概念概念 软件需求规格说明:软件需求规格说明:需求分析阶段得
12、出的最主要文档。 数据对象:数据对象:对软件必须理解的符合信息的抽象。 属性:属性:定义了数据对象的性质。 联系:联系:数据对象彼此之间相互连接的方式。 模型:为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面 描述。 (通常用图形符号和组织这些符号的规则组成) 实体实体-联系图(联系图(ER 图)图):包含实体、关系和属性三种基本成分的数据模型。 状态转化图(状态图):状态转化图(状态图):描绘系统的状态及引起系统状态转换的事件的模型。 规范化:规范化:通过关系模式的分解与合并,可以转换不规范的模式为满足更高一级 范式的关系模式 Warnier 图:图:J.D.Warnier 提
13、出的表示信息层次结构的图形工具,可以表示信息 或元素的重复。 IPO 图:图:输入、处理、输出图的简称。该图结合 IPO 表,可以简略地描述系统 的输出/输出及主要的处理算法。 简答简答 为什么要进行需求分析?为什么要进行需求分析? 为了开发出真正满足用户需求的软件产品,准确定义未来系统的目标,确定为 了满足用户的需要系统必须做什么,就必须要进行准确的需求分析。 需求分析的任务有哪些?需求分析的任务有哪些? 1. 综合要求(及需求分类) 。 2. 数据要求(常用工具:Warnier 图,层次方框图) 。 3. 逻辑模型(数据流图,实体联系图,状态转换图,数据字典) 。 4. 修正计划。 需求分
14、析的要求分为功能需求和非功能需求,举例需求分析的要求分为功能需求和非功能需求,举例 7 个非功能需?个非功能需? 1. 性能需求 2. 可靠性和可用性需求 3. 出错处理需求 4. 接口需求 5. 约束 6. 逆向需求 7. 将来可能提出的要求 与用户沟通获得的方法?与用户沟通获得的方法? 1. 访谈 2. 面向数据流自顶向下求精 3. 简单的应用规格说明技术 4. 快速建立软件原型 记忆记忆应从哪些方面验证软件需求的正确性?应从哪些方面验证软件需求的正确性? (1)一致性:概念和内容必须一致和无歧义的,不能相互矛盾 (2)完整性:必须完整,包含用户的全部功能和性能需求,以及其它的需求 (可靠
15、可用、出错容错、接口、约束) (3)现实性:需求在现有硬件和软件技术条件下是可以基本上实现的。 (4)有效性:需求必须是正确的、合理的、可以解决用户的问题。 如何理解软件项目的需求不确定性如何理解软件项目的需求不确定性? 1. 对项目需求的理解上,用户和开发者可能存在分歧。客户不了解计算系统, 从而描述需求不全面,特别是一些隐性需求描述不够。开发者也可能不熟悉用 户的业务规则、运作模式等。这样,在某些问题上,用户和开发者经常存在理 解上的偏差,或只看到问题的某些方面。 2. 软件项目实施过程,也是客户和开发者相互了解的过程。随着项目的进展, 用户对所构建应用系统理解的不断深入,对原来模糊的或非
16、明示的需求有了新 的认识,随时会提出需求的变更,造成需求的变更具有不可预测性。同样,随 着项目的进展,开发者对用户的需求理解也更加深入和全面,从而修正自己原 先对需求的认识。 3. 用户的业务需求改变,也是软件项目需求不确定性的重要原因。计算机项目 实施过程比较长,期间可能碰到用户改变业务规则的情况,并且为适应新的计 算辅助管理的运行模式,用户可能主动调整自己的业务规则 。 4. 需求分析方法论和分析工具的缺乏,及其应用范围的局限性,也影响着需求 的准确性和需求变更的可控制性 。 第五章第五章 总体设计总体设计 概念概念 总体设计过程:总体设计过程:由系统设计阶段(确定系统的具体实现方案)和结构设计阶段 (确定软件的结构)组成。概要确定系统如何实现,确定最佳方案和最合理的 软件结构,也称概要设计。 模块:模块:一个由标识符代表的、由边界符限定的程序元素序列,是程序的基本构 件。常见模块:函数、过程、子程序、宏。 模块化:模块化:把程序分解为独立命名且可独立访问的单元,每个模块完成一个(或 一组)子功能,整体上满足用户指定的功能需求。 逐步求精:逐步求精:为