架构设计过程简单总结:架构设计的驱动力=功能+质量+约束.功能即系统要满足的业务需求。质量包括运行期质量和开发期质量. 常见的运行期质量属性包括软件系统的易用性、性能、可伸缩性、持续可用性、鲁棒性、安全性等。开发期质量属性是开发人员最为关心的,要达到怎样的目标应根据项目的具体情况而定。约束可能是商业预算,运行环境,使用人员水平,开发团队水平等。架构设计过程如下:
一,需求收集,分析。
此处省略2000字。。。 见前篇 《需求收集、分析小结》http://www.blogjava.net/fool/archive/2017/04/28/432489.html
二,概念架构/概念模型
从需求中找出关健、重大需求,进行概念建模.下面三个图称之鲁棒图。其中控制对象理解为mvc模式中的控制器和model。使用鲁棒图可以建立概念模型,约等于初步设计。初步设计并不关心细节。
鲁棒图建立概念模型语法:
概念设计举例:
上次谈到超市小票如何分析实体对象,本次接着举例如何对收银进行概念建模
如上图:具备基本收银功能的概念模型。概念模型建模可以是增量的。比如商品折扣或其它促销活动等。
概念架构的用途:
1) 可以帮助我们找出领域模型中的实体对象。
2) 检查需求用例是否正确和完善。
3)初步设计,鲁棒图是一种初步设计技术。
4)根据用例和概念设计划分系统、子系统、模块或者包。借助鲁棒图,初步识别功能背后的职责,规划切分系统的方式。
三,关注非功能性需求,包括运行期质量和开发期质量。
运用目标—场景—决策表对非功能性需求作出决策.小举例:
目标 | 场景 | 决策 |
易用性 | 销售员需要输入条码检索商品,繁琐且速度慢 | 根据条码,品名模糊匹配检索商品,提供辅助录入。 |
性能 | 长时间稳定运行 | 数据库集群,服务应用集群 |
技术选型 需要管理钱箱、打印机、响应速 pos系统使用c/s
度快
四,细化架构。RUP 4+1视图法则将架构需要关注的不同的点使用不同的视图表示.从不同的维度对系统进行解读,从而形成统一软件过程架构描述。
运行架构:
关心进程、线程、同步的相关设计,捕捉并发和同步特征
逻辑架构:
关心逻辑层(layer)的划分,系统/子系统的划分,划分模块及其接口的定义。功能组划分也属于逻辑架构.功能:不仅包括用户可见的功能,还包括为实现用户功能而必须提供的"辅助功能模块";它们可能是逻辑层、功能模块等。
物理架构:
关心服务器选型,物理层划分(tier)。 描述如何部署机器和网络来配合软件系统的可靠性、可伸缩性等要求.layer就运行在tier上。Tier反映系统伸缩能力。
开发架构:
描述了在开发环境中软件的静态组织结构。即开发工具下的开发视图,描述文件编译及其依赖关系。而使用maven管理开发的项目编译及依赖关系结构更加分明。
数据架构:
关心数据的存储、分布和文件的存放及数据的复制,传递,同步。数据的存放包括sql,内存数据库,nosql数据库等.
逻辑架构设计举例:
还是用收银系统简单举例,收银系统逻辑架构图如下:
整个系统划系统为系统,切为两个系统,一个收银员角色处理的业务,收银系统。
一个后台管理系统。后台管理系统包括用户管理模块,基础资料模块(产品资料等)
销售模块(本例对销售单)。另外,因为收银系统需要和后台系统交互,把收银系统需要使用到的相关的各模块封装成一个接口模块,专门处理和收银系统交互的模块。系统、模块之间的通讯方式应当尽量避免双向。相互依赖可能会引发很多问题。
物理架构设计举例:
物理架构和逻辑架构可以相互印证。描述软件系统的物理布署。
如果考虑运行期质量比如长时间运行布署图可能应用做集群。数据库做集群等。逻辑层layer运行在物理层tier之上
运行架构和数据架构视图根据实际情况可选设计