【2024软考备考】架构师自修指南:软件工程基础

发表时间: 2024-05-19 11:40

5.1 软件工程

1.软件工程基本概念

是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则和方法,以提高质量、降低成本和改进算法。

2.软件危机

软件开发进度难以预测。

软件开发成本难以控制。

软件功能难以满足用户期望。

软件质量无法保证。

软件难以维护。

缺少文档资料。

3.软件工程过程

P(Plan)——软件规格说明。

D ( Do) ——软件开发。

C(Check)——软件确认。

A(Action)——软件演进。

4.软件设计四个活动

数据设计、架构设计、人机界面设计、过程设计(功能等)。

5.软件生命周期

需求分析、软件设计、软件开发、运行维护、淘汰。

6.软件过程模型(软件生命周期模型)

1)瀑布模型(Waterfall Model)

阶段:需求分析、系统设计、程序设计、编码实现、单元测试、集成测试、系统测试、运行维护。

特点:前一阶段工作输出成果是下一阶段的输入。(是结构化开发方法使用的过程模型)

缺点:需求难以一次确定、变更代价高、结果难以预测、各阶段工作不能并行。

2)原型模型

特点:解决了瀑布模型的问题,根据需求快速开发出原型,用于需求沟通确认,迭代最终实现软件产品。

分为:抛弃型和演化型。(是原型开发方法使用的软件过程模型)

3)螺旋模型

特点:由瀑布模型和原型模型结合而来,将每个阶段都由:目标设定、风险分析、开发和有效性验证、评审4部分组成。

强调“风险分析”。(适合于面向规格说明、面向过程、面向对象开发方法)

4)敏捷模型

极限编程XP:高效、低风险、测试先行(先编测试代码再编写程序)。

水晶系列方法:不同项目采取不同策略。

并列争球法:将开发过程分成短的迭代周期,挑选最高优先级的。

5)特征驱动开发方法:将开发人员分类。

6)软件统一过程模型RUP

特点:用例驱动、以架构为中心、迭代和增量的软件开发过程。使用4+1视图描述架构:用例视图(中心)、逻辑视图(用户)、实现视图(开发视图,程序员)、进程视图(系统集成人员)、部署视图(系统工程师)。

7.软件能力成熟度模型CMM、CMMI

成熟度等级:初始级、已管理级、已定义级、量化管理级、优化级。

5.2 需求工程

1.需求的3个层次:

业务需求:组织机构角度对系统产品高层次的目标要求。

用户需求:用户角度对系统产品的期望。业务需求和用户需求构成用户原始需求文档。

功能需求:从系统操作的角度定义了开发者必须实现的功能。

2.需求工程的5个阶段:

需求获取、需求分析、形成需求规格、需求确认与验证、需求管理

3.需求获取的基本步骤:

开发高层的业务模型、定义项目范围和高层需求、识别用户角色和用户代表、获取具体需求、确定目标系统的业务工作流、需求整理与总结

4.需求获取的方法:

用户面谈、需求专题讨论会、问卷调查、现场观察、原型化方法、头脑风暴法

5.软件需求规格说明书SRS

包括:功能需求、非功能需求和约束,约束包括设计约束和过程约束,是需求开发和需求管理之间的桥梁。

6.需求管理

包括:变更控制、版本控制、需求跟踪等活动。

过程:需求变更、识别问题、问题分析和变更描述、变更分析和成本计算、变更实现

7.变更控制委员会CCB

主要工作:通过评审的手段来决定是否能变更,但不提出变更方案。

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

8.需求跟踪

目标:建立与维护 “需求—设计—编程—测试” 之间的一致性,确保工作成果符合用户需求。

5.3 系统分析与设计

结构化方法 SASD

又称面向功能或面向数据流的软件开发方法,针对软件不同生命周期可分为:1.结构化分析、2.结构化设计、3.结构化编程。

1.结构化分析

用图形表示用户需求中的功能需求,使用的手段主要有:数据流图DFD、数据字典、结构化语言、判定表、判定树。

结构化分析建模过程:

明确目标、确定系统范围、建立顶层DFD图、构建第一层DFD分解图、开发DFD层次结构图、检查确认DFD图。

数据流图的4个基本元素:

数据流、处理加工、数据存储、外部项。

数据流图需要满足的规则:

1)父图数据流必须在子图中出现。

2)一个处理至少有一个输入流和输出流。

3)一个存储必定有流入和流出。

4)一个数据流至少有一端是处理端。

5)模型表达信息是全面的、完整的、正确的、一致的。

数据字典

2.结构化设计 SD

是一种面向数据流的设计方法,以SRS和SD阶段产生的数据流图和数据字典等文档为基础,是一个自顶向下、逐步求精、模块化的过程。

SD分为:

1)概要设计

主要任务是:确定软件系统的结构,对系统进行模块划分,确定模块的功能、接口和模块之间的调用关系。

概要设计使用系统结构图SC(模块结构图)来反映系统总体结构。

2)详细设计

主要任务是:为每个模块设计实现细节。

详细设计使用图有:业务流图、程序流程图、问题分析图PAD、NS流程图等。

模块

模块是实现功能的基本单位,具有功能、逻辑、状态3个属性。

模块遵循:高内聚、低耦合原则。

3. 结构化编程

通过顺序、分支、循环构造。强调自顶而下逐步,清晰第一、效率第二、书写规范。原则:程序=算法+数据结构,以算法为主。

面向对象的方法 OO

面向对象的分析方法可分为:面向对象分析、面向对象设计面向对象编程

面向对象分析方法 OOA