作为一个有多年程序编程经验的程序员,很多人的梦想是最早成为一名软件架构师,因为这个职位和工作内容听起来很神秘而拥有这个能力的人就像一位武林高手。
在真正尝试做架构之前,我一直心中有一大堆问题,比方,什么是架构,为什么要做架构,架构和设计有没有区别?(包括很多在大学教软件设计的老师也讲不清楚这些东西)
关于架构:
系统架构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 中的类图,顺序图等等,那些是在设计阶段常用的。
最后:架构是抽象的,设计和实现是具体的,系统就是从抽象到具体的过程!