导图社区 软件工程导论期末复习大纲
软件工程期末复习大纲思维导图,包括软件过程模型、软件开发环境、系统工程的基本任务、需求工程、设计工程等。
编辑于2021-12-09 12:03:56软件工程
第1章
软件
概念:计算机系统中的程序及其文档
软件工程
概念:软件工程是应用计算机科学理论和技术以及工程管理原则和方法,开发软件的工程
软件工程框架
概念:概括为活动、目标、原则
软件工程原则
4条:选择合适开发风范(开发模型)、采用合适的设计方法、提供高质量工程支持、有效的软件工程管理
软件生存周期
6阶段:计算机系统工程、需求分析、设计、编码、测试、运行与维护
软件过程
概念:生产一个达到工程目标的软件产品所需要的步骤,或者说软件生存周期中的一系列相关的过程
软件过程模型
概念:软件开发的全部过程、活动和任务的结构框架,也称软件开发模型
瀑布模型
原理
上一阶段的活动完成后向下一阶段活动过滤,也称为软件生存周期模型
特征
接收上阶段活动的结果作为本阶段的活动的输入
根据上一阶段活动的结果实施本阶段应完成的活动
对本阶段的活动进行评审
将本阶段的活动结果作为输出,传递给下一阶段
演化模型
概念:根据用户需求,不断对原型进行改造,获得新的原型,重复这一过程直到得到用户满意的软件产品
增量模型
原理:将软件开发过程分成若干个日程时间交错的线性序列,每个线性序列产生一个可发布的增量版本,后一个版本是对前一个版本的修改和补充,重复增量发布的过程直至最终的完善产品。
特征
每一次增量都发布一个可运行的产品
特别适用于需求经常变化的产品
在增量中逐渐加入非核心和原不确定的需求,根据用户使用对前一版本的反馈意见,修改扩充下一版本,经过多次迭代,产生最终的产品
能有计划地控制技术风险
原型模型
原理
从软件工程师和客户交流开始,定义总体目标,标识需求;快速制定原型开发计划,确定原型的目标和范围,用快速设计建模,构建原型;用户使用原型,收集反馈意见,在下一轮迭代中对原型改进;前一原型进入改进或扩展时,启动下一轮原型的迭代开发
特征
快速原型是获取用户需求或是试探设计是否有效的,一旦需求或设计确定下来了,原型就将被抛弃
快速原型是暂时适用适用的,并不要求完整。它往往是针对某个局部问题建立专门原型,如界面原型、工作流模型等
快速原型不能贯穿软件的整个生命周期,它需要和其他的过程模型结合才能产生作用。
螺旋模型
喷泉模型
CASE(计算机辅助软件工程)
概念:是指使用计算机及其相关的软件工具辅助软件开发、维护、管理等过程中各项活动的实施,以确保这些活动能高效率、高质量地进行。
软件工具
概念:用来辅助软件开发、运行、维护、管理、支持等过程活动的软件
软件开发环境
概念:指支持软件开发的软件系统,它由软件工具集和环境集成机制构成
第2章
系统工程的基本任务
识别用户需求
系统建模和模拟
成本估算及进度安排
可行性分析
生成系统规格说明
可行性分析
经济可行性
包括:成本、效益、货币的时间价值、投资回收期、纯收入
技术可行性
包括:风险分析、资源分析、技术分析
法律可行性
包括:系统开发过程中可能涉及到的合同、侵权、责任以及各种与法律相抵触的问题
第3章
需求工程
概念:应用已证实有效的技术与方法展开需求分析,确定客户需求,帮助分析人员理解问题,评估可行性,协商解决问题,无歧义地规约方案,确认规约以及将规约转换到可运行系统时的需求管理。
阶段
需求获取
需求分析与协商
系统建模
需求规约
需求验证
概念:需求验证是对功能的正确性、完整性和清晰性以及其他需求予以评价
需求管理
概念:一组用于帮助项目组在项目进展中的任何时候去标识、控制和跟踪需求的活动
软件需求
包括:功能需求、性能需求、用户或人的因素、环境需求、界面需求、文档需求、数据需求、资源使用需求、安全保密需求、可靠性需求、软件成本消耗和开发进度需求、其他非功能性需求
第4章
设计工程
主要任务
数据/类设计
体系结构设计
接口设计
部件级设计
原则
抽象与逐步求精
模块化
概念:把软件按照规定规则,划分为一个个较小的、相互独立的但又互相关联的部件
优点
使程序错误通常局限在有关的模块及他们之间的接口中,模块化使软件容易调试和测试,有助提高程软件的可靠性
同是变动往往只涉及少数几个模块,从而提高软件的可修改性
使软件结构清晰,这样使得每个模块不仅容易设计而且容易阅读和理解
信息隐藏
功能独立
衡量指标
内聚度
概念:是一个模块内部各个元素彼此结合的紧密程度的度量
耦合度
概念:是模块之间的相对独立性(相互联系的紧密程度)的度量
软件体系结构的风格
以数据为中心的体系结构
数据流风格的体系结构
调用和返回风格的体系结构
面向对象风格的体系结构
层次式风格的体系结构
部件级设计(模块设计)
结构化程序设计
基本原理
如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行联结,并且每个代码块只有一个入口和一个出口,则称这个程序是结构的
结构化程序设计的实质并不是无goto语句的编程方法,而是一种使程序代码容易阅读、容易理解的编程方法
通常结构化程序设计也采用自顶向下、逐步求精的设计方法,这种方法符合抽象和分解的原则,是人们解决复杂问题的常用方法
采用先整体后局部、先抽象后具体的步骤开发的软件一般都具有较清晰的层次结构
单入口单出口的控制结构使得程序有良好的结构特征,结构化程序方法能提高程序的可读性、可维护性和可验证性,从而提高软件生产率
采用结构化程序设计方法可能会多占用一定的时间和空间资源这是反对从高级语言中剔除goto语句的主要原因,但随着硬件技术的发展,这点时间和空间的消耗与软件维护带来的成本相比已经显得微不足道了
图形表示法
包括:程序流程图、N-S图(盒图)、PAD、判定表
第5章
结构化分析
基本原理:结构化分析方法采用自顶向下逐层分解(将大而复杂的问题分解为若干个较小的问题,每个较小的问题又可分解为若干更小的问题)的思想进行分析建模的。自顶向下逐层分解充分体现了分解与抽象(忽略一个问题中与当前目标无关的那些方面,以便充分地关注与当前目标有关的方面)的原则。随着分层次的增加,抽象的级别也越来越低,即越来越接近问题的解。并用数据流图、加工说明、数据字典作为表达工具对问题进行分析
数据流图
作用:描述输入数据流到输出数据流的变换(即加工)用于对系统功能建模
基本元素:数据流、加工、文件、源或宿
基本加工
概念:在整套分层数据流图中,凡是不再分解为子图的加工为基本加工
数据字典
作用:对数据流图的说明
构成:数据流、数据项(组成数据流和文件的数据)、文件、加工、源或宿
小说明:基本加工规约(了解)
加工逻辑的描述方法:结构化语言、判定表、判定树
软件结构图的几个概念:深度、宽度、扇入、扇出
结构化设计
启发式设计策略
改造程序结构图,降低耦合度、提高内聚度
避免高扇出,并随着深度的增加,力求高扇入
模块的影响范围应限制在该模块的控制范围内
降低模块接口的复杂程度和冗余程度,提高一致性
模块的功能应是可预测的,避免对模块施加过多的限制
尽可能设计单入口单出口的模块
结构化设计步骤
建立初始结构图
对结构图改进
书写设计文档
设计评审
变换分析
概念:将变换型的DFD(数据流图)映射为初始的结构图
步骤
划定输入流和输出流的边界,确定变换中心
进行一级分解
进行二级分解
标注输入输出信息
事务分析
概念:将事务型数据流图映射为初始的结构图
由数据流图得到结构图
复审和精化数据流图
确定数据流图的类型
第6章(了解)
JSP(Jackson系统开发方法)的设计原则
使程序结构和问题结构(数据结构)相对应
JSP的分析和设计步骤
分析确并确定输入输出数据的逻辑结构,并用Jackson图画出
找出输入数据结构和输出数据结构中有对应关系的数据元素
从数据结构的Jackson图导出描述程序结构的Jackson图
列出所有操作和条件,并将它们分配到程序结构图中适当的位置
用伪码表示
第7章
面向对象方法
要点
认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象通过某种方式组合而成。
把所有对象都化分成各种对象类,每个对象类都定义了一组数据和一组方法。
按照子类与父类的关系,把若干个对象类组成一个层次结构的系统
对象彼此之间仅能通过传递消息互相联系
特点
与人类习惯的思维方法一致,稳定性好、可重用性好、较易开发大型软件产品、可维护性好
面向对象分析
基本过程
获取客户对系统的要求
标识类和对象
定义类的结构和层次
建造对象——关系模型
建立对象——行为模型
利用场景/用况来复审分析模型
面向对象设计
设计过程
系统设计
主要任务
将分析模型化分成子系统
标识问题本身的并发性,并为子系统分配处理器
任务管理设计
数据管理设计
子主题
人机界面设计
子系统之间的通信
对象设计
主要任务
对象描述
设计数据结构和算法
消息设计
复审
三大模型
对象模型
描述系统中对象的静态结构、对象间的关系,对象的属性、对象的操作。对象模型表示静态的、结构上的系统的“数据”特征。对象模型为动态模型和功能模型提供了基本的框架,对象模型用包含对象和类的对象图来表示
行为模型
行为模型描述与时间和操作顺序有关的系统特征——激发事件、事件序列、确定事件的先后关系以及事件和状态的组织。动态模型表示瞬时的、行为上的、系统的“控制”特征。动态模型用状态图来表示。
功能模型
功能模型描述与值的变换有关的系统特征——功能、映射、约束和函数依赖,功能模型用数据流图来表示
第11章
人机界面设计
基本问题
系统响应时间
用户求助设施
错误信息处理
命令标记
黄金原则
让用户拥有控制权
减少用户的学习成本
保持界面一致
第12章
程序设计语言和编码
程序设计风格
源程序文档化:标识符的命名、程序的注释、视觉组织
数据说明:数据说明次序规范化、说明语句中变量安排有序化、使用注释说明复杂的数据结构
语句结构
输入和输出
第13章
软件测试
概念:在规定条件下对软件进行操作,以发现程序错误,衡量软件质量,并对其能否满足设计要求进行评估的过程
第15章
软件维护
概念:软件系统交付使用以后,为了改正错误或者满足新的需要而修改软件的过程
类型:纠错性维护、适应性维护、改善性维护、预防性维护
结构性维护和非结构性维护
定义
若采用软件工程方法来进行软件开发,保证每个阶段都有完整且详细的文档,这样维护起来会相对容易,被称为结构性维护
如果不采用软件工程的方法开发软件,软件只有程序而缺少文档做维护工作,维护起来将十分困难,被称为非结构化维护
区别:软件配置的完整性