您现在的位置是:首页 >技术教程 >软件工程复习网站首页技术教程
软件工程复习
面向对象分析的答题顺序——填空7分
软件工程评分标准 1:期末考试
复习范围 涵盖AB卷
01章 软件工程学概述
软件定义=软件包括三个组成部分
程序+数据+文档
软件特点
- 软件是被工程化的逻辑系统
- 软件一般不会磨损
- 软件具有不同于一般实物系统的复杂性
软件危机定义
在软件开发和维护过程中遇到的一系列严重问题,这些问题不是在解决具体问题时遇到的问题,而是面临的一些具有普适性的问题
软件工程方法学三要素
方法:完成软件开发各项任务的技术方法,为软件开发提供如何做的技术。
工具:运用方法而提供的 一些半自动化或是自动化的工程支持环境
过程:为了获得高质量的软件所需要完成的一系列任务框架,它规定了完成各项任务的工作步骤
软件生命周期各阶段定义
软件定义阶段:完成需求分析和而可行性研究
软件开发阶段:完成概要设计,详细设计,编码和测试以及综合测试
软件维护
Scrum 模型的框架图
Scrum 三大特点
- 可能性的艺术:可能性的规划来执行项目,最大限度适应需求变化和不确定性。
- 团队自组织,自管理:不由统一的管理者管理,团队自行组织
- 面对面沟通:提倡面对面交流,增加沟通,更好的管理风险和变化
Scrum 团队模型的三种角色
- scrum master:保证团队不受外部因素影响,保证之间的协作,不要管理团队
- 开发负责人:必须一个人担任,负责管理产品待办事项列表并根据轻重缓急排序
- 项目团队:5-9人,自我管理,团队全职员参与开发,
02章 可行性研究
可行性分析定义
可行性分析(Feasibility Analysis)是指在计划或项目开始之前,对计划或项目进行可行性的评估和分析,确定项目的可行性和实施的可行性。通过对潜在的机会和风险进行评估,从技术、经济、社会、政治等多个角度综合分析,得出是否继续实施该计划或项目的结论。
可行性分析三个方面
技术可行性:现有技术能否实现
经济可行性:获取的收入能否超过投入
操作可行性:面向的用户组织内操作方式能否行得通
03章 需求分析
需求分析的定义
开发人员对用户和项目的功能,性能,可靠性等具体要求进行深入细致的调研和分析,将用户的非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程
需求分析(面向过程)需要建立的三类模型
数据模型:软件系统中用到的数据类型,数据结构,数据关系与约束。
功能模型:将系统划分为模块与组件,每个模块与组件之间的功能和接口。
行为模型:指的是系统在不同情况下的行为和响应的模型
实体联系图定义
也称之为ER图,是一种描述实体,实体间的关系和其属性的图形化工具,它可以清晰地展示不同实体之间的关系和属性信息,是一种用来描述现实世界的概念模型。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lnpj0adN-1684248433002)(…/…/…/OTHERS/software/Typora/Typora/images/1684153855819.png)]
数据流图定义
也称DFD图,描述数据的来源,去向,处理,存储等信息,通过这类图可以清晰的表达各种数据流动和处理操作。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LYavErRL-1684248433005)(…/…/…/OTHERS/software/Typora/Typora/images/1684154496186.png)]
加油站/数据流图【ppt】
登录/状态转换图【ppt】
05章 总体设计
总体设计定义
总体设计的基本目的是回答“系统应该如何实现”,因此,总体设计又称为概要设计或初步设计。
总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。
模块的三个基本要素
功能:模块应该实现什么功能
逻辑:描述模块内部怎么做
状态:该模块使用的环境和条件
信息隐藏
应该这样设计和确定模块,使得一个模块内包含的信息,数据和过程对于不需要这些信息的模块来说是不可访问的。
模块独立性,耦合,内聚
- 模块独立性:指的是软件系统中每个模块只需要完成要求的功能,而和软件系统中其他模块之间的接口是简单的
- 耦合:指软件系统中模块之间的联系密切程度
- 内聚:指模块内部的各个元素的彼此结合的紧密程度
作用域、控制域
作用域:受该模块内一个判定影响的所有模块的集合
控制域:模块本身及所有直接或间接从属于它的模块的集合
总体设计原则
- 模块功能的完善
- 消除重复功能,改善软件结构
- 模块的大小要适中
- 模块的作用范围应该在其控制范围之内
- 尽可能减少高扇出结构,随着深度增大扇入
- 避免或减少使用病态联接
- 设计 功能可预测的模块, 但要避免过分受限制的模块
- 软件包应满足设计约束性和可移植性
- 力争降低模块接口间的复杂程度
变换流,事务流定义
信息沿输入通路进入系统,由外部形式变为内部形式,进入系统的信息通过变换中心, 经过加工处理再沿输出通路变换成外部形式离开软件系统。当数据流图具有这些特征时,这种信息流就叫作变换流。
数据沿着输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这类数据流应该划为一类特殊的数据流,称为事务流。
格式化123/软件结构图【ppt】
???
06章 详细设计
详细设计定义
详细设计的目的是为了具体地实现所要求的系统,但其任务并不是编写出具体的程序,而是要设计出程序的蓝图,它决定了软件最终程序代码的质量。
结构化程序的三种基本控制结构
- 顺序
- 选择
- 循环
07章 实现
软件测试的原则
- 测试应该包括输入数据和预期结果
- 测试应该由第三方来完成
- 测试可以包括合法和不合法的数据作为输入
- 应将pareto原理运用在软件测试中
- 应该尽早地制定测试计划(在测试开始之前就制定测试计划)
- 对于测试结果应该妥善保存,方便后续生成报告妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便;
- 应该对每一个测试结果进行全面检查
- 穷举测试是不可能的
- 所有测试应该都能追溯到用户需求
- 应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭;
- 应该从小规模测试开始,并逐步进行大规模的测试
单元测试定义
单元测试又称为模块测试,是对软件测试的的最小开发单元进行正确性检验的测试工作
驱动程序
为了测试某个程序,需要驱动程序作为环境,提供该被测模块所需的输入
驱动程序是一个“主程序”, 它接受测试数据,并把这些数据传送给被测试的模块,并且打印出有关的结果
白盒测试定义/类型/步骤
定义:把测试对象看成一个透明的盒子,允许测试人员利用被测对象中内部的逻辑结构与有关信息,设计或选择测试用例,来对程序的所有逻辑路径进行测试。通过在不同点检查程序的状态,来看实际的状态是否和预期的一致。
【因此白盒测试又称为结构测试或逻辑驱动测试。】
类型:
- 代码检查法
- 静态结构分析法
- 静态质量度量法
- 逻辑覆盖法
- 判定覆盖
- 条件覆盖
- 判定条件覆盖
- 语句覆盖
- 条件覆盖
- 点覆盖
- 边覆盖和路径覆盖
- 基本路径测试法【基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。】
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z13tvMug-1684248433007)(…/…/…/OTHERS/software/Typora/Typora/images/1684238572333.png)]
域测试
符号测试
Z路径覆盖
程序变异。
其中运用最为广泛的是基本路径测试法。
基本路径测试步骤:
- 画出程序的程序流图
- 根据流图计算环路的复杂性【环形复杂度。】
- 确定线性独立路径的基本集合
- 设计可强制执行基本集合中所有路径的测试用例
黑盒测试方法
- 等价类划分:通过将程序的输入域 划分成若干个数据类,据此导出测试用例
- 边界值分析:根据程序的输入域的边界值设计测试用例,一般可采用五点法或七点法,五点法指五个值
- 错误推测法:该方法在很大程度上依赖于直觉和经验进行。它的基本思想是列举出程序中可能有的错误或者很大概率会发生的错误的特殊情况,据此来来选择测试方案。
软件调试定义/步骤
定义:也称为纠错,作为成功测试的后果出现,即调试是在测试发现错误后排除错误的过程
步骤:调试不是测试,它从执行一个测试用例开始,评估测试结果,如果发现实际结果与预期结果不一致,则这种不一致就是一种症状,说明软件中存在隐藏的问题。而调试过程就试图找到产生症状的原因,以便改正错误
08章 维护
软件维护定义/类型
定义:软件维护指在软件成功交付使用后,需要对软件修正错误或是满足新的需求而修改软件的过程。
类型:四种类型
- 改正性维护:软件刚交付有一些错误肯定还没被发现font>,此类型维护就是解决这些错误而对程序修改的过程。
- 适应性维护:为了适应新的变化了的环境配合font>而对程序进行一定的改动
- 完善性维护:占大部分,对于用户提出新的需求,如增加新的功能或者修改已有的功能的建议font>,或一般的改进意见,为了满足这类需求,从而需要对程序进行改动。
- 预防性维护:为了改进系统的 可维护性和可靠性,或者为了给未来的改进奠定更好的基础从而修改软件,较少
软件再工程定义/步骤
定义:对现有软件系统进行分析,重构和改进的过程。它旨在改进软件系统的质量,可维护性,可扩展性等以适应新的需求,技术或者环境变化。【预防性维护实质上是软件再工程】
步骤:典型的软件再工程过程模型定义了库存目录分析、文档重构、逆向工程、代码重构、数据重构和正向工程6类活动。
库存目录分析: 每个软件组织都应该保存其拥有的所有应用系统的库存目录。该目录包含关于每个应用系统的基本信息。 应该仔细分析库存目录,按照业务重要程度、寿命、当前可维护性、预期的修改次数等标准,把库中的应用系统排序,从中选出再工程的候选者,然后明智地分配再工程所需要的资源。
文档重构: 老程序固有的特点是缺乏文档,为了便于今后的维护,必须更新文档,但是由于资源有限,应采用“使用时建文档”的方法。
代码重构:某些老程序具有比较完整、合理的体系结构,但是,个体模块的编码方式却是难于理解、测试和维护的。在这种情况下,可以重构可疑模块的代码。【
Ø用重构工具分析源代码,标注出和结构化程序设计概念相违背的部分。
Ø重构有问题的代码(此项工作可自动进行)。
Ø复审和测试生成的重构代码(以保证没有引入异常)并更新代码文档。】
数据重构: 与代码重构不同,数据重构发生在相当低的抽象层次上,它是一种全范围的再工程活动——对数据的修改必然会导致体系结构或代码层的改变。在大多数情况下,数据重构始于逆向工程活动,分解当前使用的数据体系结构,必要时定义数据模型,标识数据对象和属性,并从软件质量的角度复审现存的数据结构。 当数据结构较差时(例如在关系型方法可大大简化处理的情况下却使用平坦文件实现),应该对数据进行再工程。
正向工程:正向工程也称为革新或改造,这项活动不仅从现有程序中恢复设计信息,而且使用该信息去改变或重构现有系统,以提高其整体质量。
逆向工程:软件的逆向工程是分析程序以便在比源代码更高的抽象层次上创建出程序的某种表示的过程,也就是说,逆向工程是一个恢复设计结果的过程,逆向工程工具从现存的程序代码中抽取有关数据、体系结构和处理过程的设计信息。
09章 面向对象方法学引论
面向对象的统一软件开发过程的各阶段 里程碑
- 初始阶段:生命周期目标里程碑
- 细化阶段:生命周期结构里程碑
- 构造阶段:初始运行能力
- 交付阶段:产品发布里程碑
关联,两种聚集关联定义
关联:两个类的对象之间存在某种语义上的联系
聚集:表示类与类之间的关系是整体与部分的关系,也称为聚合,是关联的特例。聚集表示类与类之间的关系是整体与部分的关系。使用的“包含”、“组成”、“分为……部分”等字句,意味着存在聚集关系。有共享聚集和组合聚集两种特殊的聚集关系。
共享聚集:在聚集关系中处于部分方的对象可参与多个整体方的对象的构成
【一般聚集和共享聚集的关联关系用空心菱形表示。】
组合聚集:部分类完全隶属于整体类,部分与整体共存,整体方消失部分方也消失
【组合聚集的组成关系用实心菱形表示】
用例图
用例图一般由
- 系统
- 行为者
- 用例(也就是实现的功能)
- 用例之间的关系
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4rti1AHf-1684248433008)(…/…/…/OTHERS/software/Typora/Typora/images/1684246875182.png)]
类图
描述类及类与类之间的静态关系。类图是一种静态模型,它是创建其它UML类图的基础。一个系统可以由多张类图来表示,一个类也可以出现在多张类图中。
10章 面向对象分析
面向对象需要建立的三类模型
对象模型:从系统的静态结构上描述系统的需求
动态模型:描述系统的交互行为的需求
功能模型:表明的是系统中数据之间的依赖关系,以及有关的数据处理功能,一般采用数据流图表示
对象模型(静态结构)、动态模型(交互结构)和功能模型(数据变换)
对象模型 表示静态的结构化的系统的“数据”性质。他是对客观世界实体的对象以及对象之间关系的映射,描述了系统的静态结构。是三种模型中最重要的模型。
动态模型 表示瞬时的行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。
功能模型 表示变化的系统的“功能”性质,它表明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。
对象模型的5个层次
主题层,类与对象层,结构层,属性层,服务层
软件重用定义
软件重用,是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。