1.需求分析:整理需求,对需求进行分类,按照“功能性需求”“非功能性需求”分类,并且非功能性需求还要按照“约束”“运行期质量属性”“开发期质量属性”。
2.领域建模:根据需求,分析领域的核心领域对象(可以通过名词动词法),这些核心对象在此领域中相对稳定比如拿银行来说:银行账户,银行卡,存单等都是核心领域对象。通过分析这些对象了解此领域,并根据分析的领域对象(可以用类图和状态图)跟客户交流来更一步的丰富领域模型,领域建模是根据项目的进程不断精华的。
3.确定关键需求:关键需求(包括功能和非功能)决定架构,我们做项目不能眉毛胡子一把抓应该缩小范围确定重点不至于迷失方向。如果所有需求都一起开始分析设计的话这样就有可能分析的不够深入(项目的时间压力),也可能迷失在繁杂的需求当中(项目大需求多)。
4.概念性架构设计:分析关键用例的用例规约,运用鲁棒图构造系统理想化的职责模型。确定架构模式,确定交换机制,考虑非功能性需求设计出概念性架构。
5.细化软件架构:在上面分析的基础之上通过五视图的方法对概念架构进行细化,使概念架构落到技术层面。
6.验证软件架构:架构如果没有经历过验证就不能称为好的架构,所有我们在架构设计完成的时候需要通过原型法实际做来验证架构。可以先设计一个框架来验证架构(垂直演进型),也可以设计一个垂直抛弃原型来验证架构。
注:
约束:约束是项目必须满足的必要条件,比如:用户电脑操作水平低,必须能够跑在某个操作系统上等等。
运行期质量属性:运行期质量属性是在软件的运行过程中运行的好坏,比如:持续可用性,易用性,高性能等等。运行期质量是用户比较关心的,用户评价软件的好坏就是根据运行期质量来看。
开发期质量属性:开发期质量是指软件内部质量属性,比如:易理解性,模块间的松散耦合,模块的可重用性等等。开发期质量对软件的维护有很大的影响,如果质量比较高则维护成本就很低。还有就是要说如果开发期质量不高运行期质量也很难上去。