软件架构设计--质量驱动
作为一个有多年程序编程经验的程序员,很多人的梦想是最早成为一名软件架构师,因为这个职位和工作内容听起来很神秘而拥有这个能力的人就像一位武林高手。
在真正尝试做架构之前,我一直心中有一大堆问题,比方,什么是架构,为什么要做架构,架构和设计有没有区别?(包括很多在大学教软件设计的老师也讲不清楚这些东西)
关于架构:
- 当你想了解一个系统,你对构成系统的每一部分真正做些什么,他们之间怎么协作,以及他们怎么与系统周边相关的世界交互,就是架构该考虑的。
系统架构3个关键部分定义:
1.系统的各个元素和他们间关系
2.系统的基本属性:系统做什么,系统怎么做
3.设计和进化的原则: 这些原则使系统更容易被理解,使系统能按一致和有逻辑的方式被扩展,以适应系统全局的形式而不会加入多余的复杂度
- 软件架构是抽象的,并不详述定义出来的系统元素
- 软件架构需要用结构视图,从很多视角来描述
- 软件架构可用作和利益相关方,对系统讨论,理解,协商,交流的基础
- 架构本身不能达到质量,但提供了达到质量的基础
- 架构对于实现系统相关的质量很重要,这些质量应该在架构阶段被设计和评估
系统质量的需求很大程度上会影响架构设计,质量元素可以考虑
System Qualities
Availability
Modifiability
Performance
Security
Testability
Usability
Business Qualities
Time to market
Cost & benefit
Projected lifetime of system
Targeted market
Rollout schedule
Integration with legacy systems
Architecture Qualities
Conceptual integrity
Correctness & completeness
Buildability
质量驱动架构设计的步骤
- 创建质量属性的场景
- 给质量属性场景排优先级,选择驱动架构的场景
- 对于已选择的质量属性场景,选择架构实现手段,方法
- 选择架构设计模式
- 实例化模块和分配功能
- 定义接口和子模块
- 验证,优化用户啊用例和质量场景
- 文档化架构设计视图
完整过程请看下面视图
由以上描述可以看到架构设计很少用到或几乎没有谈到UML 中的类图,顺序图等等,那些是在设计阶段常用的。
最后:架构是抽象的,设计和实现是具体的,系统就是从抽象到具体的过程!