文章目录
前言
本文是本人在软考复习阶段的写的只有重点摘要的笔记(纯属个人观点),相信大家在网上已经看到很多有详细介绍的关于系统开发基础的文章,所以大部分我只是提出,没有详细解释,只是为了更好复习(知识点太多,只写了一半)。^ O ^
一、软件工程概述
软件生存周期
- 可行性分析与项目开发计划
- 需求分析
- 概要设计
- 详细设计
- 编码
- 测试
- 维护
能力成熟度模型(CMM)
- 初始级:个人努力,核心任务作用
- 可重复级:已建立基本项目管理过程和实践
- 已定义级:软件过程标准化、文档化
- 已管理级:项目管理实现数字化,更高稳定,高精度
- 优化级:预防次品,主动改善流程,优化流程
能力成熟度模型集成(CMMI)
- CL0(未完成的):未执行
- CL1(已执行的):可标识的输入工作产品转换成可标识的输出工作产品
- CL2(已管理的):已管理的过程的自动化
- CL3(已定义的):已定义的过程的制度化
- CL4(定量管理的):可定量管理的过程的制度化
- CL5(优化的):量化(统计学)手段改变和优化过程域
二、软件开发方法
- 结构化方法
- 原型法
- 面向对象方法
- 面向服务方法
- 看板方法
- 精益开发
三、软件开发模型
3.1瀑布模型
特点
阶段划分明确,易管理,但不适应需求突然变化
适合项目
已有完整文档,需求明确不易变更
3.2V模型
特点
开发阶段和测试阶段一一对应
适合项目
需求不易变更,开发与测试紧密度高,可尽快发现问题
3.3敏捷开发模型
特点
强调快速响应需求变化,采用迭代和增量的方式进行开发
适合项目
需求不明,可持续改动
核心价值观
- 个体沟通
- 可工作软件
- 客户反馈
- 灵活变化
原则
- 快速制定计划
- 系统快速交付
- 信息传达合理
- 简单设计
- 反思行为
- 集体工作
- 持续开发
- 编码标准
- 信任伙伴
- 学习他人
- 软件持续迭代
- 用户为中心
3.4增量模型
特点
软件模块化,软件递增式开发,分批交付
适合项目
软件产品可分批交付,系统可被模块化
注意:第一个增量为核心产品
3.5喷泉模型
特点
连续迭代无间隙,面向对象
适合项目
已用户需求为动力,以面向对象为中心
3.6螺旋模型
特点
融合瀑布模型,演化模型,加入风险分析
适合项目
庞大、复杂、高风险
3.7统一过程
特点
迭代增量开发,以风险为驱动
四、系统分析
4.1需求分析相关概念
需求分析的定义
需求分析是指开发人员通过细致的调查分析,准确理解用户或客户的要求,将非形式化的需求陈述转化为完整的需求定义,并进一步转化为需求规格说明的过程。
需求分析任务:系统要实现什么功能
基本任务
- 需求获取
- 需求分析
- 需求确定
- 需求管理
- 需求确认
4.2需求的分类
- 业务需求(整体全局)
- 用户需求(用户视角)
- 系统需求(计算机化)
4.3需求分析的工具
- 数据流图
- 数据字典
- 判定表
- 判定树
五、系统设计
5.1系统设计概述
概要设计
- 模块划分
- 数据库设计
- 数据结构设计
- 系统架构设计
- 接口设计
详细设计
- 算法设计
- 逻辑设计
- 物理设计
- 接口物理定义
5.2模块设计
目的
- 提高系统的可维护性
- 提高开发效率
- 增强系统的可扩展性
- 降低系统复杂性
设计原则
- 高内聚和低耦合
- 模块的作用域在模块之内
- 接口明确
- 可重用
- 可扩展
内聚性
- 顺序内聚:处理元素相关,必须顺序执行
- 过程内聚:要按特定的次序执行
- 瞬时内聚:所包含的任务必须在同一时间执行
- 时间内聚:模块的动作没有关系=或松散关系==
- 功能内聚:指模块内所有元素共同完成一个功能,联系紧密,缺一不可。
- 通信内聚:模块内各元素之间通过同一数据结构进行通信。
耦合性
- 内容耦合:一个模块需要涉及另一个模块的内部信息
- 公共耦合:两个模块之间通过一个公共的数据区域传递信息
- 控制耦合:两个模块彼此间传递的信息中有控制信息
- 标记耦合:几个模块共享一个复杂的数据结构
- 消息耦合:模块间通过消息传递进行通信
- 数据耦合:一组模块借助参数表传递简单数据