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

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


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

 

# 软件开发方法

 

## 原型图的方法


### 分类


- 按功能


   - 水平原型(针对界面)

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


- 按最终结果


   - 抛弃型[Throw Away Prototype]


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


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


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


### 特点


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

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

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

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

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

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

 

## 结构化的方法

 

### 特点


- 自顶向下

- 用户至上

- 逐步分解或求解

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

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

- 系统开发过程工程化

- 文档资料标准化


### 优点


- 理论基础严密

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

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


### 缺点


- 开发周期长

- 文档、设计说明繁琐

- 工作效率低

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

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

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

 

## 面向对象的方法


### 特点


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

- 符合人们的思维习惯

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

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

- 具有更好的复用性

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

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


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


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


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

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


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


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

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

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


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


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

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


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


## 面向服务的方法


### 特点


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

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

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


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


- 操作(低)


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

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

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

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

   - 操作位于最底层


- 服务(中)


   - 代表操作的逻辑分组


- 业务流程(高)


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

   - 通常包括多个业务调用


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


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

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

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


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


-  服务发现

- 服务规约

- 服务实现

 

## 其他开发方法

### 形式化方法

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

### 统一过程方法

### 敏捷开发方法

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


1995789-20220109202953101-1095047979.png

目录
相关文章
|
2月前
|
前端开发 测试技术 数据处理
Kotlin教程笔记 - MVP与MVVM架构设计的对比
Kotlin教程笔记 - MVP与MVVM架构设计的对比
67 4
|
2月前
|
前端开发 JavaScript 测试技术
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
39 3
|
2月前
|
存储 前端开发 Java
Kotlin教程笔记 - MVVM架构怎样避免内存泄漏
Kotlin教程笔记 - MVVM架构怎样避免内存泄漏
33 2
|
23天前
|
机器学习/深度学习 算法 数据可视化
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
本文探讨了在量化交易中结合时序特征和静态特征的混合建模方法。通过整合堆叠稀疏降噪自编码器(SSDA)和基于LSTM的自编码器(LSTM-AE),构建了一个能够全面捕捉市场动态特性的交易系统。SSDA通过降噪技术提取股票数据的鲁棒表示,LSTM-AE则专注于捕捉市场的时序依赖关系。系统采用A2C算法进行强化学习,通过多维度的奖励计算机制,实现了在可接受的风险水平下最大化收益的目标。实验结果显示,该系统在不同波动特征的股票上表现出差异化的适应能力,特别是在存在明确市场趋势的情况下,决策准确性较高。
62 5
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
|
2月前
|
运维 负载均衡 Shell
控制员工上网软件:高可用架构的构建方法
本文介绍了构建控制员工上网软件的高可用架构的方法,包括负载均衡、数据备份与恢复、故障检测与自动切换等关键机制,以确保企业网络管理系统的稳定运行。通过具体代码示例,展示了如何实现这些机制。
132 63
|
2月前
|
Cloud Native 安全 持续交付
深入理解微服务架构及其在现代软件开发中的应用
深入理解微服务架构及其在现代软件开发中的应用
88 32
|
2月前
|
监控 持续交付 API
深入理解微服务架构及其在现代软件开发中的应用
深入理解微服务架构及其在现代软件开发中的应用
59 3
|
2月前
|
XML 前端开发 Android开发
Kotlin教程笔记(80) - MVVM架构设计
Kotlin教程笔记(80) - MVVM架构设计
|
3月前
|
机器学习/深度学习 网络架构 计算机视觉
目标检测笔记(一):不同模型的网络架构介绍和代码
这篇文章介绍了ShuffleNetV2网络架构及其代码实现,包括模型结构、代码细节和不同版本的模型。ShuffleNetV2是一个高效的卷积神经网络,适用于深度学习中的目标检测任务。
125 1
目标检测笔记(一):不同模型的网络架构介绍和代码
|
2月前
|
XML 前端开发 Android开发
Kotlin教程笔记(80) - MVVM架构设计
Kotlin教程笔记(80) - MVVM架构设计