PS:蓝色部分 大题
软件工程方法学 | 优点 | 缺点 |
---|---|---|
生命周期方法学/传统/结构化范型 | 分阶段——降低了整个开发过程的难度;每阶段结束前严格审查保证了软件质量,提高可维护性 | 软件规模庞大、对软件需求模糊、软件需求随时间变化;切割了数据和操作 |
面向对象方法学 | 降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用 |
面向对象方法学的要点(4)
对象(数据和操作);所有对象划分成类;父类和子类的关系类层次处理——继承;对象之间只能互发消息联系
软件生命周期(3个时期) :软件定义、软件开发、运行维护
软件定义时期(问题定义阶段——界定问题;可行性研究阶段——是否值得解、有哪些可行解;需求分析阶段——功能需求;制订工程进度表)
软件开发时期(总体设计阶段;详细设计阶段;编码和单元测试阶段;综合测试阶段)
运行维护时期/软件维护时期(改正性维护;适应性维护——适应环境的变化;完善性维护——根据用户需要扩充功能;预防性维护)
软件开发团队中的各种角色(8:需求分析师;设计师;程序员;测试员;培训人员;维护人员;文档库管理人员;配置管理小组)
改变软件工程实践的7大因素
(1)用分阶段的生命周期计划严格管理
(2)坚持进行阶段评审
(3)实行严格的产品控制
(4)采用现代程序设计技术
(5)结果应能清楚地审查
(6)开发小组的成员要少而精
(7)承认不断改进软件工程实践的必要性
(1)过程规定了所有主要过程活动
(2)过程使用资源、服从于一组约束(比如进度约束),产生中间结果和最终产品
(3)可由子过程组成,这些子过程用某种方式链接起来;过程可以定义为分层的过程等级结构,以便每个子过程具有自己的过程模型
(4)每个过程活动具有有入口和出口标准,这样可以知道活动何时开始及何时结束
(5)活动以一定顺序组织,因此,一个活动相对于其他活动何时完成是很清楚的
(6)每个活动具有一系列的指导原则,以解释每个活动的目标
(7)约束和控制可以应用到任何活动、资源或产品中
软件过程模型 | 瀑布模型 | V模型 | 原型模型 | 增量模型 | 螺旋模型 | 喷泉模型 |
---|---|---|---|---|---|---|
特点 | 1. 阶段间具有顺序性和依赖性;2. 推迟实现的观点(逻辑和物理区分);3. 质量保证(前一阶段ok下一阶段继续) | 强调测试活动与分析和设计之间的关联:1. 单元测试和集成测试——校验程序设计;2. 系统测试——校验系统设计;3. 验收测试——确认需求 | 1. 不带反馈环;快速分析先不考虑质量 | 第一个增量构建实现软件的基本需求,提供最核心的功能,再补充其他产品特征 | 使用原型及其他方法来尽量降低风险;每个阶段之前增加了风险分析过程的快速原型模型 | 开发软件时开发过程过于无序,应该把一个线形过程作为总目标 |
优点 | 1. 强迫开发人员 采用规范方法 ;2. 严格规定每个阶段必须提交的文档;每个阶段交出的所有产品必须经过质量保证小组的仔细验证 | 1. 把瀑布模型中一些隐含的迭代过程明确出来;2. 使抽象等级的概念也更明显 | 1. 软件开发过程基本上是顺序进行的;2. 能够统一客户和开发人员的对软件项目需求的理解,有助于需求的定义和确认 | 1. 使用人员不充裕、不能在期限前完成的项目;2. 有计划地管理技术风险;每个增量都发不来一个高质量版本,用户能在较短时间内使用;3. 逐步增加产品功能可以使用户有比较充裕的时间学习和使用新产品 | 1. 对于保证软件产品十分有利;2. 测试活动的确定性增强了;3. 使维护得到与开发同样的重视 | |
缺点 | 1. 不经实践提出完整准确要求,不切实际;2. 静态规格说明,难以认识动态软件产品;3. 非线性软件开发过程线性化;4. 开发耗时长,付出代价大 | 1. 和瀑布模型一样,都是对软件开发过程过分简单和理想化的抽象 | 1. 不可能面面俱到;2. 不能当作正式运行版本;3. 牢记没有考虑质量因素 | 1. 无缝集成到现有软件体系结构中;2. 软件体系结构必须开放的;3. 本身具有矛盾性——要求开发人员把软件看成一个整体又要求把软件看作构建序列且构建间彼此独立 | 1. 主要适合内部开发;2. 只适合大型软件项目的开发;对开发人员风险分析能力是很大的考验 | 本身要求经常对开发活动进行迭代或求精 |
驱动 | 文档驱动模型 | 活动驱动模型 | 原型只是模型而已;可以考虑结合瀑布模型,快速模型作为需求额分析的技术,然后把客户满意的 原型再作为瀑布模型的输入,从而达到优势互补 | 以用户要求为动力,以对象为驱动,适用于面向对象开发方法 |
现代软件过程模型 | RUP软件过程模型 | 敏捷过程 | 微软过程 |
---|
P(Plan):软件规格说明。规定软件的功能及其运行的限制
D(Do):软件开发。产生满足规格说明的软件
C(Check):软件确认。确认软件能够完成客户提出的要求
A(Action):软件演进。为满足客户的变更要求,软件必须在使用过程中演进。
(1)用户的观点:质量是恰好达到目的
(2)制造的观点:质量是和需求说明的一致
(3)产品的观点:质量是与产品的内在特性相联系的
(4)基于价值的观点:质量取决于顾客愿意支付的金额
(5)超越的观点:质量是可以定义
(1)软件项目计划(工作范围、风险分析、资源、成本和进度、项目可行性)
(2)软件需求分析和定义(正式的信息域分析;软件原型化方法)
(3)软件设计(概要设计;详细设计)
(4)程序编码
(5)软件测试
(6)软件维护
4.与用户沟通获取需求的方法(4点)
(1)访谈
(2)面向数据流自顶向下求精
(3)简易的应用规格说明技术(起草完整的软件需求规格说明书)
(4)快速建立软件原型(构建和修改原型的方法和工具——第四代技术;可重用的软件构件;形式化规格说明和原型环境)
5.概念性数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。它描述了从用户角度看到的数据,它反映了用户的现实环境,而且与在软件系统中的实现方法无关。
6.数据模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系
7.数据对象只封装了数据而没有对施加于数据上的操作
8. 联系也可能有属性
9. 联系的3种类型(一对一;一对多;多对多)
10. 数据规范化的目的:减少数据冗余;避免出现插入异常或删除异常;简化数据修改的过程
11. 1NF:原子性
12. 2NF:每个非关键字由整个关键字决定(part不行)
13. 3NF:不存在函数依赖
14. 状态转换图的绘制方法
15. 状态:状态是任何可以被观察到的事物的行为模式,规定了系统对事件的相应方式。
16. 事件:在某个特定时刻发生的事情,它是对引起系统做动作或从一个状态转换到另一个状态的外界事件的抽象
17. 状态迁移图/层次方框图/Warnier图/IPO图/时序图(描述事件、状态等的一些图形工具)
18. 扩充时序图——表示进程间的通信流,用于分析几个事件的交错现象
19.Petri图绘制方法
20.从哪些方面验证软件的正确性(4个——一致性;完整性;现实性;有效性)
耦合种类 | 非直接耦合 | 数据耦合 | 标记耦合 | 控制耦合 | 外部耦合 | 公共耦合 | 内容耦合 |
---|---|---|---|---|---|---|---|
特点 | 两模块️直接联系,通过主模块联系 | 通过简单参数交换IO | 通过参数表传递记录信息,记录是一个数据结构 | 一个模块通过开关、标志、名字等控制信息明显控制另一模块的功能,需要指导被控制模块的内部逻辑信息 | 一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递这一参数信息 extern | 访问同一公共数据环境(全局数据结构、共享的通信区、内存的公共覆盖区)Fortran语言中的common区 | 4️情况:直接访问;不正常转入;代码重叠(只可能出现在汇编中);一个模块多个入口 |
设计指导原则 | 尽量使用 | 少用 | 少用 | 限制 | 限制 | 完全不用 |
降低耦合度的方法
(1)根据问题特点,选择适当的耦合类型
(2)降低模块接口的复杂性(信息数量;联系方式;信息结构)
(3)把模块的通信信息放在缓冲区中
各种内聚的比较
弱---->强
内聚类型 | 偶然内聚 | 逻辑内聚 | 时间内聚 | 过程内聚 | 通信内聚 | 顺序内聚 | 功能内聚 |
---|---|---|---|---|---|---|---|
特点 | 模块内各部分之间联系不大 | 单接口多功能模块,由参数决定使用哪个功能 | 大多为多功能模块,这些功能需要在同一时间段内执行 | 程序流程图的一部分 | 通过数据流图来定义的,各功能使用了相同的输入或产生了相同的输出 | 一个模块内的处理元素和同一个功能相关且顺序执行 | 只做一件事:一个模块中的各个部分就是为了完成某一具体功能且均必不可少 |
实例 | eg:初始化和终止模块 | eg:程序流程图中的循环部分、判定部分、计算部分分成3个模块 | eg:根据数据流图划分模块时,通常得到顺序内聚模块 |
#define error1 1
;定义出错具体信息char* ermsg[]={"No error","Open file error",...,};
;声明表示错误代码的全局变量long error = 0;
;catch和throw错误信息)图形工具、表格工具、语言工具
function point
技术——交付软件的总功能有多少,功能点和对象点是常用指标)分析条目 | 需求分析 | 设计 | 编码 | 测试 |
---|---|---|---|---|
投入工作量 | 15 | 30 | 15 | 40 |
技术人员水平 | 初级 | 高级 | 高级 | 高级 |
管理人员数量 | 多 | 中 | 少 | 中 |