【软考】系统架构设计师-软件工程基础

发布于:2024-11-28 ⋅ 阅读:(8) ⋅ 点赞:(0)

1、软件工程

包括4个基本工程活动:PDCA

P(Plan):软件规格说明。规定软件的功能及运行时的限制。

D(Do):软件开发,开发出满足规格说明的软件。

C(Check):软件确认,确认开发的软件能够满足用户的需求。

A(Action):软件演进,软件在运行过程中不断改进以满足客户新的需求。

2、软件开发方法

结构化方法:需求明确、按一定的步骤(面向过程,功能模块)

面向对象的开发方法:普适型的,对现实世界的抽象(类、对象)

原型法

面向服务的开发:粒度更粗

3、软件过程模型

瀑布模型:采用结构化开发方法,需求明确的情况。

按照:需求分析、系统设计、程序设计、编码实现、单元测试、集成测试、系统测试、运行维护逐步进行。

原型模型:需求不明确的情况,快速构建原型。迭代思想,但不适超大项目。

有两个阶段:原型开发阶段;目标软件开发阶段。

原型开发3种途径:利用模拟软件系统的人机界面和人机交互方式;真正开发一个原型;找来一个或几个正在运行的类似软件进行对比。

螺旋模型: 增加了风险分析(多种模式的混合),适合大型项目,尤其是高风险项目。

4阶段:目标设定、风险分析、开发和有效性验证、评审

V模型:测试与开发并行

基于构件的模型:增强了复用性

敏捷模型:两个特点:敏捷型方法是“适应性”而非“预设性”的;是“面向人”的而非“面向过程“”的

适应性和预设性,面向人而非过程,强调以人为本,拥抱变化。

敏捷方法的核心思想:适应型而非可预测型;以人为本,而非以过程为本;迭代增量式的开发过程。

主要敏捷方法:极限编程XP,水晶系列方法,Scrum,特征驱动开发方法FDD。

RUP统一过程模型:重量级,面向过程的;

核心概念:角色、活动、制品、工作流

3大特点:用例驱动、以体系结构为中心、迭代与增量

4个阶段:初始、细化、构建、移交

9大核心工作流(6+2+1):业务建模、需求、分析与设计、实现、测试、部署,配置与变更管理、项目管理,环境。

RUP的特点:用例驱动、以体系结构为中心、迭代和增量

RUP采用4+1视图描述软件系统的体系结构:逻辑视图、实现视图、进程视图、部署视图、用例视图

4、软件能力成熟度模型CMM(软件能力成熟度模型集成CMMI)

CMM:初始级、可重复级、已定义级、已管理级、优化级

CMMI:初始级、已管理级、已定义级、量化管理级、优化级

5、需求工程

业务需求、用户需求、系统需求(功能需求、非功能需求、设计约束)

需求获取方法:用户面谈,需求专题讨论会,问卷调查(采样),现场观察,原型化方法,头脑风暴法

需求定义:软件需求规格说明书 SRS

需求管理:定义需求基线、需求变更和风险管理、需求跟踪、变更控制委员会CCB

需求验证:需求评审,需求测试(设计概念测试用例))—验证通过后请用户签字确认作为验收标准之一

需求变更:确保仔细评估已建议的变更;挑选合适的人选对变更做出判定;变更应及时通知所有现相关人员;项目要按一定的程序来采纳需求变更,对变更的过程和状态进行管控。

变更控制过程:问题分析和变更描述 -> 变更分析和成本计算 -> 变更实现

变更控制委员会CCB:项目所有者权益代表,负责裁定接受哪些变更。

过程和操作步骤:制定决策、交流情况、重新协商约定

需求追踪:正向跟踪、逆向跟踪

6、系统分析与设计:结构化方法

结构化需求分析:自顶向下,逐步分解,面向数据

3大模型:功能模型(数据流图)、行为模型(状态转换图)、数据模型(ER图)

数据流图DFD

4个基本元素:外部实体、加工、数据存储、数据流

分层数据流图:

数据字典DD各部分:数据项、数据结构、数据流、数据存储、处理过程

结构化设计:

系统设计:处理流程设计、系统设计、人际界面设计

程序流程图DFD:数据流图的流向必须经过加工

加工的三种错误:有输入没有输出(黑洞),有输出但没输入(奇迹),输入不足以产生输出(灰洞)

顶层图只展示与外部的关系,0层图分级第一层的加工。

IPO图,输入输出和数据加工

N-S图:盒图

问题分析图:PAD

业务流程重组BPR

基本原则:以流程为中心的原则、团队管理原则(以人为本)、以客户为导向的原则

战略规划 -> 流程规划 -> 数据规划 -> 功能规划 -> 系统实施

项目的启动 -> 拟定变革计划 -> 建立项目团队 -> 分析目标流程 -> 重新设计目标流程 -> 实施新的设计 -> 持续改进 -> 重新开始

业务流程管理BPM:规范流程、优化流程、再造流程

系统设计原则(6大原则):模块大小适中、减少调用深度、多扇入少扇出、单入口单出口、模块作用域在模块内、功能应是可预测

高内聚低耦合

偶然内聚 -> 逻辑内聚 -> 时间内聚 -> 过程内聚 -> 通信内聚  -> 顺序内聚

无直接耦合 -> 数据耦合 -> 标记耦合 -> 控制耦合 -> 外部耦合 -> 公共耦合 -> 内容耦合

人机界面设计3原则:置于用户控制之下,减少用户记忆负担,界面一致性

7、系统分析与设计:面向对象方法

面向对象分析OOA

OOA模型5个层次:主题层、对象类层、结构层、属性层和服务层

OOA模型5个活动:标识对象类、标识结构、定义主题、定义属性和定义服务

OOA原则:抽象、封装、集成、分类、聚合、关联、消息通信、粒度控制、行为分析

OOA基本5步骤:确定对象和类、确定结构、确定主题、确定属性、确定方法

面向对象设计OOD

基本思想:抽象、封装、多态,可扩展性主要通过继承和多态来实现

OOD 3种类:实体类、控制类、边界类

UML统一建模语言

常见10种类型图:用例图、类图、对象图、状态图、活动图、序列图、协作图、部署图、包图、剖面图

面向对象编程OOP

基本特点:封装、集成和多态

数据持久化和数据库,主流持久化技术框架:Hibernate、iBatis(MyBatis)和JDO.

8、软件测试

测试方法

动态测试:黑盒测试、白盒测试、灰盒测试

白盒测试:结构测试

黑盒测试:功能测试,方法:等价类划分、边界值分析、错误推测、因果分析等

灰盒测试:白+黑

覆盖率(白盒测试覆盖率):语句覆盖 -> 判定覆盖 -> 条件覆盖 -> 条件判定组合覆盖 -> 路径覆盖

静态测试:桌前检查、代码审查、代码走查

测试阶段:

单元测试、集成测试、确认测试(Alpha测试/Beta测试/验收测试)、系统测试、配置测试、回归测试

人工测试/自动化测试

新型测试:A/B测试,Web测试,链接测试,表单测试

测试模型:

W模型:V模型的改进,尽早开展测试;目标:发现缺陷->保证质量;从需求分析开始与开发每个阶段活动同步进行

H模型 :改进W和V模型,测试活动独立出来;只要测试条件满足即开展测试,测试流程是并行的,兼顾测试的效果和灵活性

敏捷测试模型:保持紧密协作,时刻关注需求变化并实时测试,体现时效性和适应性,能力要求高。

9、净室软件工程CSE

技术手段:统计过程控制下的增量式开发,基于函数的规范与设计,正确性验证(CSE的核心),统计测试与软件认证

CSE的缺点:太理论化,需要更多的数据知识;CSE开发小组不进行传统的模块测试,不现实;源自传统软件工程,有传统软件工程的弊端

10、基于构件的软件工程CBSE

特征:可组合型、可部署性、文档化、独立性、标准化

构件模型(要素):接口、使用信息、部署

构件模型提供的通用服务包括:平台服务、支持服务

CBSE过程(6步骤):系统需求概览;识别候选构件;根据发现的构建修改需求;体系结构设计;构建定制与适配;组装构建,创建系统。

构件组装:顺序组装、层次组装、叠加组装

接口不兼容的3类情况:参数不兼容、操作不兼容、操作不完备

11、软件项目管理

软件进度管理:工作分解结构、任务活动图

软件配置管理:版本控制、变更管理

软件质量管理:产品运行质量(正确性、健壮性、效率、完整性、可用性、风险),产品修改质量(可理解性、可维修性、灵活性、可测试性),产品转移质量(可移植性、可再用性、互运行性)

软件风险管理等。