【备战软考架构师系列笔记 · 001】软件工程篇 —— 软件开发方法的主要分类 ⭐

简介: # 软件开发方法### 分类- 按功能 - 水平原型(针对界面) - 垂直原型(针对复杂算法)


软件开发方法的主要分类笔记

 

# 软件开发方法

 

## 原型图的方法


### 分类


- 按功能


   - 水平原型(针对界面)

   - 垂直原型(针对复杂算法)


- 按最终结果


   - 抛弃型[Throw Away Prototype]


       - 此类原型在系统真正实现以后就弃用了


   - 演化型/进化型[Evolutionary Prototype]


       - 此类原型的构造,从目标系统的一个或几个基本需求出发,通过修改和追加功能的过程逐渐丰富,演化为最终的系统


### 特点


- 适用于需求不明确的开发

- 对用户需求是动态响应的、逐步纳入的

- 系统分析、设计、实现随着工作模型的不断修改而同时完成,互相没有明显的界限,没有明确的分工

- 系统开发计划是一个反复修改的过程

- 适用于需求刚开始定义不清晰、管理决策方法结构化程度不高

- 如果用户配合不好,随意修改,会拖延开发过程

 

## 结构化的方法

 

### 特点


- 自顶向下

- 用户至上

- 逐步分解或求解

- 严格区分工作阶段,每阶段有任务和成果

- 强调系统开发的整体性、全局性

- 系统开发过程工程化

- 文档资料标准化


### 优点


- 理论基础严密

- 用户需求在系统建立之前可以充分被理解

- 注重开发过程的整体性、全局性


### 缺点


- 开发周期长

- 文档、设计说明繁琐

- 工作效率低

- 开发阶段初期就要全面认识系统的需求、预料各种可能情况,不太现实

- 如果开发人员不稳定,可能造成系统交接不顺畅,系统运行和维护管理难度加大

- 阶段固化,不利于变化。适用于需求明确的场景

 

## 面向对象的方法


### 特点


- 系统的描述和信息模型的表示与客观实体相对应

- 符合人们的思维习惯

- 有利于开发过程中,用户和开发人员的交流与沟通,缩短开发周期

- 提高系统开发的准确性和效率

- 具有更好的复用性

- 关键在于建立一个全面、合理、统一的模型

- 分析、设计、实现三个阶段界限不明确


### 面向对象方法的三种模型


- 对象模型(描述系统数据结构)


   - 表示静态的、结构化的系统的“数据性质”

   - 是对模型客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构


- 动态模型(描述系统控制结构)


   - 表示瞬时的、行为化的系统的“控制性质”,规定了对象模型中对象的合法变化序列(对象的动态行为)

   - 用状态图来描绘对象的状态、触发状态转换的事件、以及对象的行为/对事件的响应

   - 每个类的动态行为用一张状态图来描绘,各个类的状态图通过共享事件合并起来,从而构成系统的动态模型


- 功能模型(描述系统功能)


   - 表示变化的系统的“功能性质”,指明了系统应该“做什么”,更直接反映了用户对目标系统的需求

   - 通常也由一组数据流程图表示


       - 面向对象方法中,数据流程图没有在结构化分析中重要,有时候可以省略


## 面向服务的方法


### 特点


- 以粗粒度、松耦合的系统功能为核心

- 强调系统功能的标准化和构件化

- 加强了系统的灵活性、可复用性和可演化性


### 概念上,划分3个抽象级别


- 操作(低)


   - 代表单个逻辑工作单元(LUW)的事务

   - 执行操作通常会导致读、写或修改一个或多个持久性的数据

   - SOA操作可以直接与OO方法相比:都有特定的结构化接口,并且返回结构化的响应。

   - 完全同方法一样,特定操作的执行可能涉及调用附加的操作。

   - 操作位于最底层


- 服务(中)


   - 代表操作的逻辑分组


- 业务流程(高)


   - 为实现特定业务目标而执行的一组长期运行的动作或活动

   - 通常包括多个业务调用


### 面向服务的分析和设计(SAOD)的三个层次


- 基础设计层(底层服务构件)

- 应用结构层(服务之间的接口和服务级协定)

- 业务组织层(业务流程建模和服务流程编排)


### 服务建模,分为三个阶段


-  服务发现

- 服务规约

- 服务实现

 

## 其他开发方法

### 形式化方法

- 特点:数学模型化;所有东西均可证明/验证,而不是测试

### 统一过程方法

### 敏捷开发方法

### 基于架构的开发方法 ABSD


1995789-20220109202953101-1095047979.png

目录
相关文章
|
1月前
|
存储 数据采集 监控
信息系统架构开发方法ADM
信息系统架构开发方法ADM
82 5
|
1月前
|
监控 负载均衡 Dubbo
|
1月前
|
架构师 测试技术 Linux
嵌入式软件架构中抽象层设计方法
嵌入式软件架构中抽象层设计方法
141 0
|
1月前
|
中间件 编译器 调度
嵌入式软件架构基础设施设计方法
嵌入式软件架构基础设施设计方法
103 0
|
1月前
|
运维 Oracle 容灾
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
|
23天前
|
运维 安全 网络架构
【计算巢】网络模拟工具:设计与测试网络架构的有效方法
【6月更文挑战第1天】成为网络世界的超级英雄,利用网络模拟工具解决复杂架构难题!此工具提供安全的虚拟环境,允许自由设计和测试网络拓扑,进行性能挑战和压力测试。简单示例代码展示了创建网络拓扑的便捷性,它是网络设计和故障排查的“魔法棒”。无论新手还是专家,都能借助它探索网络的无限可能,开启精彩冒险!快行动起来,你会发现网络世界前所未有的乐趣!
【计算巢】网络模拟工具:设计与测试网络架构的有效方法
|
8天前
|
NoSQL 架构师 Java
2024软考架构师考试---分布式锁的实现方式有那些以及优缺点
【6月更文挑战第16天】在分布式系统中,分布式锁是一种用于控制对共享资源访问的机制,以确保多进程、多线程环境下的数据一致性。分布式锁有多种实现方式,本文将介绍几种常见的分布式锁及其优缺点。
27 1
|
19天前
|
存储 算法 Linux
|
19天前
|
架构师
|
19天前
|
存储 数据采集 SQL