软考架构-软件工程
软考架构-软件工程
本章节每年会考12-15分,重点
软件开发生命周期:
- 软件的定义
- 可行性研究,详细需求分析过程,确定软件开发工程必须完成的总目标
- 开发时期
- 就是软件的设计与实现,分为概要设计,详细设计,编码,测试
- 运行与维护
- 把软件移交给用户使用
软件工程过程指为获得软件产品包括四个方面
P(Plan):软件规格说明
D(Do):软件开发
C(Check):软件确认
A(Action):软件演进(进化)
软件系统工具通常可以按照软件过程活动将工具分为:
软件开发工具:需求分析工具,设计工具,编码与排错工具,测试工具
软件维护工具:版本控制工具,文档分析工具,开发信息库工具,逆向工程工具,再开发工具
软件管理和软件支持工具:项目管理工具,配置管理工具,软件评价工具,软件开发工具的评价和选择
软件设计四个活动
设计,架构(体系结构)设计,人机界面(接口)设计,过程设计
能力成熟度模型CMM
初始级
可重复级
已定义级
已管理级
优化级
能力成熟度模型集成CMMI
定义:是若干过程模型的综合和改进,不仅仅是软件,而是支持多个工程学科和领域。
两种表示方法:
阶段式模型
类似CMM-> 初始级,已管理级,已定义级,定量管理,优化级
连续式模型
瀑布模型,原型模型,螺旋模型,增量模型,喷泉模型,基于构件的开发模型CBSD,形式化方法模型
瀑布:自上而下,要有清晰的需求
原型:需求不清晰
螺旋:风险驱动
增量:先开发核心功能
喷泉:面向对象,迭代性,无间隙性
CBSD:复用性,构件
形式化:严格数学基础
软件过程模型
敏捷模型
个体和交互胜过过程和工具,可以工作的软件胜过面面俱到的文档,客户合作生活合同谈判,响应变化胜过遵循计划
敏捷开发区别于其他方法的两个特点
1、是适应性而非预设性
2、是面向人的而非面向过程的
敏捷方法核心思想:
1、适应性
2、以人为本
3、迭代增量式
主要敏捷开发方法
极限编程XP
近螺旋式的开发方法,将负责的开发或称分解为一个个相对比较的小周期
XP提倡测试先行
水晶系列方法
以人为中心,提倡机动性方法,每个都含有独特的角色,过程模式,工作产品和实践
并列争球法(Scrum):迭代的增量化过程,把每段时间一次的迭代称为一个冲刺,按需求的优先级实现产品
特性驱动开发方法(FDD)
三个要素:人,过程,技术
五个核心过程:开发整体对象模型,构造特征列表,计划特征开发,特征设计和特征构建
统一过程模型(RUP)
RUP描述了如何有效的利用商业的,可靠的方法开发和部署软件,是一种重量级过程,类型一个在线的指导者,它可以为所有方面和层次的程序开发提供知道方针,模板以及事例支持
RUP软件开发生命周期是一个二维的软件开发模型,RUP中有9个核心工作流:
业务建模,需求,分析于设计,实现,测试,部署,配置于变更管理,项目管理,环境
RUP把软件开发生命周期划分为等多个循环,每个循环生成产品的一个新的版本,每个循环依次由四个连续的阶段组成,每个阶段完成确定的任务,阶段如下:
- 初始阶段:定义最终产品试图喝业务模型,确定系统范围
- 细化阶段:设计及确定系统的体系结构,指定工作计划及资源要求
- 构造阶段:构造产品并继续演进需求
- 移交阶段:把产品提交给用户使用
RUP特点
- 用例驱动
- 以体系结构为中心
- 分析人员和测试人员,关心的是系统的行为,会侧重于用例视图
- 最终用户关心的是系统的功能,侧重于逻辑视图
- 程序员关心的是系统配置,装配,侧重于实现视图
- 系统集成人员关心的是系统的性能,可伸缩性,吞吐率,侧重进程视图
- 系统工程师,侧重部署视图
五大视图:逻辑视图,实现视图,进程视图,部署视图,用例视图
逆向工程
软件的逆向工程是分析程序,在比源代码更高的抽象层次上建立程序的表示过程,逆向工程是设计的回复过程
逆向工程的四个级别
实现级:程序的抽象语法树,符号表,过程的设计表示
结构级:反应程序分量之间互相依赖关系的信息,如,用例图,结构图,程序和数据结构
功能级:反应程序功能及程序之间关系信息,如数据和控制流
领域级:包括反应程序分量或程序,实体与应用领域概念之间对应关系的信息,如ER模型
其中,领域级抽象级别最高,完备性最低,实现级抽象级别最低,完备性最高

浙公网安备 33010602011771号