【数据库系统工程师】第10章 系统开发和运行知识


思维导图

在这里插入图片描述

10.1 软件工程基础知识

1.软件生命周期

○ 可行性分析与项目开发计划
○ 需求分析
○ 概要设计
○ 详细设计
○ 编码和单元测试
○ 综合测试
○ 维护

2.软件生命周期模型

○ 瀑布模型
在这里插入图片描述

○ 增量模型
在这里插入图片描述

○ 演化模型
■ 演化模型主要针对事先不能完整定义需求的软件开发,是在快速开发一个原型的基础上, 根据用户在使用原型的过程中提出的意见和建议对原型进行改进,获得原型的新版本。重复这 一过程,最终可得到令用户满意的软件产品。
○ 螺旋模型
在这里插入图片描述

○ 喷泉模型
在这里插入图片描述

3.典型的软件开发方法

○ 结构化开发方法
○ 原型化开发方法
○ 面向对象开发方法
○ 敏捷方法
■ 极限编程(XP)
● XP的5个原则:快速反馈、简单性假设、逐步修改、提倡更改和优质工作。
● XP的12个最佳实践:计划游戏(快速制订计划、随着细节的不断变化而完善)、小型发 布(系统的设计要能够尽可能早地交付)、隐喻(找到合适的比喻传达信息)、简单设计(只 处理当前的需求,使设计保持简单)、测试先行(先写测试代码,然后再编写程序)、重构(重 新审视需求和设计,重新明确地描述它们以符合新的和现有的需求)、结队编程、集体代码所 有制、持续集成(可以按日甚至按小时为客户提供可运行的版本)、每周工作40个小时、现 场客户和编码标准。
■ 水晶法(Crystal)
● 该方法认为每一个不同的项目都需要一套不同的策略、约定和方法论。
■ 并列争求法(Scrum)
● 该方法使用迭代的方法,其中把每30天一次的迭代称为一个“冲刺”,并按需求的优先 级别来实现产品。多个自组织和自治的小组并行地递增实现产品。协调是通过简短的日常情况 会议来进行的,就像橄榄球中的“并列争球”。
■ 自适应软件开发(ASD)
● 该方法有6个基本的原则:有一个使命作为指导;特征被视为客户价值的关键点;过程中 的等待是很重要的,因此“重做”与“做”同样关键;变化不被视为改正,而是被视为对软件 开发实际情况的调整;确定的交付时间迫使开发人员认真考虑每一个生产的版本的关键需求; 风险也包含其中。

4.软件项目管理

○ 成本估算
■ 成本估算方法
● 自顶而下估算方法
● 自底向上估算方法
● 差别估算方法
● 其他估算方法
○ 专家估算法
○ 类推估算法
○ 算式估算法
■ 成本估算模型
● Putnam
● COCOMO
○ 风险分析
■ 风险识别
■ 风险预测
■ 风险评估
■ 风险控制
○ 进度管理
■ Gantt图
■ PERT图
○ 人员管理
■ 程序设计小组
● 主程序员组
● 无主程序组
● 层次型程序员组

10.2 系统分析基础知识

1.系统分析概述

○ 系统分析的任务
■ 系统分析的主要任务是对现行系统进一步详细调查,将调查中所得到的文档资料集中,对组织内部整体管理状况和信息处理过程进行分析,为系统开发提供所需资料,并提交系统方案说明书。
○ 系统分析的主要阶段
■ 范围定义(计划阶段)
■ 问题分析
■ 需求分析
■ 逻辑设计
■ 决策分析

2.需求分析

○ 需求分析的任务
■ 确定软件系统的综合要求
■ 分析软件系统的数据要求
■ 导出系统的逻辑模型
■ 修正项目开发计划
■ 如有必要,开发一个原型系统
○ 需求的分类
■ 功能需求
■ 非功能需求
■ 设计约束

3.结构化分析方法(SA)

○ 数据流图
○ 数据字典(DD)
○ 加工逻辑的描述
■ 结构化语言
■ 判断表
■ 判定树

4.面向对象分析方法

○ 面向对象的基本概念
■ 对象
■ 消息
■ 类
■ 继承
■ 多态
■ 动态绑定
○ 统一建模语言(UML)概述
■ UML的结构
● 构造块
● 规则
● 公共机制
■ 事物
● 结构事物
● 行为事物
● 分组事物
● 注释事物
■ 关系
● 依赖
● 关联
● 泛化
● 实现
○ UML中的图
■ 类图
■ 对象图
■ 用例图
■ 交互图
● 序列图
● 通信图
■ 状态图
■ 活动图
■ 构件图
■ 部署图
○ 面向对象分析
■ 认定对象
■ 组织对象
■ 对象间的相互作用
■ 基于对象的操作

10.3 系统设计基础知识

1.系统设计的内容和步骤

○ 概要设计的基本任务
■ 设计软件系统总体结构
■ 数据结构及数据库设计
■ 编写概要设计文档
■ 评审
○ 详细设计得基本任务
■ 对每个模块进行详细的算法设计
■ 对模块的数据结构进行设计
■ 对数据库进行物理设计,即确定数据库的物理结构
■ 其他设计
● 代码设计
● 输入输出设计
● 用户界面设计
■ 编写详细设计说明书
■ 评审

2.系统设计的基本原理

○ 抽象
○ 模块化
○ 信息隐蔽
○ 模块独立
■ 耦合
● 无直接耦合
● 数据耦合
● 标记耦合
● 控制耦合
● 公共耦合
● 内容耦合
■ 内聚
● 偶然内聚
● 逻辑内聚
● 时间内聚
● 通信内聚
● 顺序内聚
● 功能内聚

3.结构化设计方法(SD)

○ 信息流类型
■ 变换流
■ 事务流
○ 变换分析
■ 确定输入流和输出流
■ 第一级分解
■ 第二级分解
○ 事务分析
■ 确定事务中心和每条活动流的流特性
■ 将事务流型DFD映射成高层的程序结构
■ 进一步分解
○ SD方法的设计步骤
■ (1)复查并精化数据流图。 (2)确定DFD的信息流类型(变换流或事务流)。 (3)根据流类型分别实施变换分析或事务分析。 (4)根据系统设计的原则对程序结构图进行优化。

4.面向对象设计方法(OOD)

○ 设计软件类
■ 实体类
■ 边界类
■ 控制类
○ 面向对象设计过程
■ 对用例模型加以精炼以反映实现环境
■ 建模支持用例情景的对象交互、行为和状态
■ 修改对象模型以反映实现环境

10.4 系统测试基础知识

1.系统测试的概念

○ 系统测试的意义、目的及原则
■ 目的就是希望能以最少的人力和时间发现潜在的各种错误和缺陷
■ 基本原则
● 尽早并不断测试
● 测试工作应避免由原开发人员或小组承担
● 设计测试方案,不仅要确定输入,还要根据系统功能确定预期输出结果
● 不仅包含有效合理的输入条件,也要包含失效、不合理的输入条件
● 不仅检验程序是否做了该做的事,还要检验是否做了不该做的事
● 严格按计划,避免测试的随意性
● 妥善保存测试计划、测试用例,作为软件文档的组成部分,为维护提供方便
● 测试例子都是精心设计出来的,可以为重新测试或追加测试提供方便
○ 测试过程
■ 制定测试计划
■ 编写测试大纲
■ 根据测试大纲编写测试用例,产生测试设计说明文档,其内容主要有被测项目、输入数据、测试过程和预期输出结果等
■ 实施测试
■ 生成测试报告

2.软件测试策略

○ 单元测试
○ 集成测试
○ 确认测试
○ 系统测试

3.软件测试方法

○ 黑盒测试法
■ 等价类划分
■ 边界值分析
■ 错误推测
■ 因果图
○ 白盒测试法
■ 逻辑覆盖
■ 循环覆盖
■ 基本路径测试

10.5 系统运行与维护基础知识

1.系统维护概述

○ 系统可维护性概念
■ 系统可维护性的评价指标
● 可理解性
● 可测试性
● 可修改性
■ 维护与软件文档
■ 软件文档的修改
○ 系统维护的内容及类型
■ 硬件维护
■ 软件维护
● 正确性维护
● 适应性维护
● 完善性维护
● 预防性维护
■ 数据维护

2.系统评价

○ 立项评价
○ 中期评价
○ 结项评价

10.6 软件开发方法新进展

1.面向方面的方法(AOP)

2.软件复用与构件化方法

○ 基于构件的软件开发和复用
○ 基于开源软件的软件开发和复用
○ 知识驱动的软件开发和复用

3.服务化方法

○ 软件服务
○ 服务化方法的主要角色和开发过程
■ 服务提供者、服务使用者、服务代理
○ 微服务

猜你喜欢

转载自blog.csdn.net/u012069313/article/details/124757206