携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第28天,点击查看活动详情
软件开发模型
瀑布模型
概念:
1、上一次的开发成果作为本次活动的输入
2、利用这一输入实施本活动
3、本次活动的成果输出给下次活动
4、对本次活动的成果实施评审。若成果得到确认,则继续下一项开发活动;否则返回前一项甚至更前项活动
流程图:
缺点:因为现实中软件的需求很难确定,所以需要很长时间才会得到软件的初始版本,如果需求改变可能损失巨大
原型模型
优点:任何功能一经开发就能进入测试,以便验证是否符合产品需求,可以帮助引导出高品质的产品要求
缺点:如果不加以控制的让用户接触开发中尚未稳定的功能,可能对开发人员及用户都会产生负面影响
螺旋模型
喷泉模型
特点:
1、无间隙:在各项活动之间无明显边界,如分析、设计和编码之间没有明显的界限
2、迭代:喷泉模型在系统某个部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的系统
V模型
RAD快速应用开发
\
软件架构设计
软件架构设计主要关注软件构件的结构、属性和交互作用,并通过多种视图全面描述特定系统的架构
| 架构设计生命周期 |
|---|
| 需求分析:根据需求模型构件软件架构模型、模型转换的可追踪性 |
| 设计阶段:组成元素、体系结构描述语言ADL、4+1视图 |
| 实现阶段:项目组织结构、配置管理、中间件、程序设计语言、逐步细化 |
| 构件组装阶段、部署阶段、后开发阶段 |
UML与系统架构
”4+1“视图模型从5个不同的视角包括逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件体系结构。每一个视图只关心系统的一个侧面,只有五个视图结合在一起才能反应系统的体系结构的全部内容。
过程视图
描述系统中的进程。当可视化系统中一定会发生的事情时,此视图特别有用
该视图通常包含活动图
物理视图
描述如何将前三个视图中所述的系统设计实现为一组现实世界的实体。该视图中的图表展示了抽象部分如何映射到最终部署的系统中。
该视图通常包含部署图
逻辑视图
描述系统各部分的抽象描述。用于建模系统的组成部分以及各组成部分之间的交互方式
通常包括类图,对象图,状态图和协作图
开发视图
描述系统的各个部分如何被组织为模块和组件。管理系统体系结构中的层非常有用
该视图通常包含图和组件图
1.2.6.2 基于架构的软件设计方法ABSD
ABSD方法是体系结构驱动,即指构成体系结构的商业、质量和功能需求的组合驱动的。在基于体系结构的软件设计方法中,采用视角与视图来描述软件架构,采用用例来描述功能需求,采用质量场景来描述质量需求。
体系结构文档化过程的主要输出结果是体系结构规格说明和测试体系结构需求的质量设计说明书这两个文档
体系结构复审是一个迭代过程。目的是标识出潜在的风险尽早发现体系结构设计中的缺陷和错误。
特定领域软件结构DSSA
特定领域软件架构是在一个特定应用领域中,为一组应用提供组织结构参考的标准软件体系结构
DSSA通常是一个具有三个层次的系统模型,包括领域开发环境(领域架构师)、领域特定应用开发环境(应用工程师)和应用执行环境(操作员)
参与角色:领域专家、领域分析人员、领域设计人员、领域实现人员
| 基本活动 | 主要目标 |
|---|---|
| 领域分析 | 获得领域模型。领域模型描述领域中系统之间共同的需求,即领域需求 |
| 领域设计 | 获得特定领域软件架构。DSSA描述领域模型中表示需求的解决方案。 |
| 领域实现 | 依据领域模型和DSSA开发和组织可重用信息,并对基础软件架构进行实现 |
软件架构风格概述
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式
定义一个系统家族,即一个体系结构定义一个词汇表和一组约束
词汇表中包含一些构件和连接件类型
约束指出系统是如何将这些构件和连接件组合起来的
体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完成的系统
数据流风格
所有数据按照流的形式在执行过程中前进,不存在结构的反复和重构,在流动过程中,数据经过序列间的数据处理组件进行处理,然后将处理结果向后传送,最后进行输出
批处理
批处理风格的每一步都是独立的,并且每一步是顺序执行的。只有当前一步处理完,后一步处理才能开始。数据必须是完整的,以整体的方式传递。如日志分析、计费程序等。
管道过滤器
每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常通常对输入流的变换及增量计算来完成,所以在输入被完全消费之前,输出便产生了。如传统的编译器、UNIx管道等。
| 批处理 | 管道过滤器 |
|---|---|
| 整体数据传送 | 增量 |
| 构件粒度大 | 构件粒度小 |
| 延迟高、实时性差 | 实时性好 |
| 无并发 | 可并发 |