一、软件架构为谁而设计
1、为用户而设计,不仅满足用户要求的功能,也要达到用户期望的质量
2、为客户而设计,充分考虑客户的业务目标、上线时间的要求、预算限制,以及集成需要等
3、为开发 人员而设计,软件的可扩展性、可重用性、可移植性、易理解性和易测试性等非功能需求更多地考虑对开发人员的影响
4、为管理人员而设计, 为项目经理制定项目计划、管理项目分工和考核项目进度等提供依据
二、理解架构设计视图
1、什么是架构视图,是一种设计架构、描述架构的核心手段,在多种架构中,最常见的是逻辑架构视图和物理架构视图。2、逻辑架构,规定了软件系统中逻辑元素组成及之间的关系,即组成软件系统的逻辑元素可以是逻辑层、功能子系统、模块;其核心任务是比较全面的识别模块、规划接口,并基于此进一步明确模块之间的使用关系和使用机制。3、物理架构,规定了组成软件系统的组成元素(进程、线程、以及作为类运行时示例的对象等)、之间的关系、以及部署在硬件上的策略,可以反映出软件系统动态运行时的组织情况4、从“从逻辑架构+物理架构”到设计实现· 逻辑架构中关于职责划分的决策,体现为层、功能子系统和模块等的划分决定,从静态视角为详细设计和编程实现提供切实的指导;有了分解就必然产生协作,逻辑架构还规定了不同逻辑单元之间的交互和交互机制,而编程工作必然实现这些接口和机制。· 所谓交互机制,是指不同软件单元之间交互的手段。· 物理架构,关注的是软件系统在计算机中运行期间的情况。而物理架构视图规定了软件如何使用进程和线程完成期望的并发处理,进程线程这些主动单元会调用那些被动单元参与处理,交互机制为何等消息,从而为详细设计和编程实现提供切实指导。
三、实验训练
1、程序员尽量找机会多看看别人的设计成果、多体会别人的设计过程、多试着自己来设计。设计一个名叫MailProxy的邮件代发系统,用例图刻画基本功能,如图所示2、目标:运用“逻辑视图+物理视图”;辅以分而治之、迭代设计技巧
3、逻辑架构设计
逐步细化逻辑架构的设计(迭代2)
4、逻辑架构设计逐步清晰、不同模块不断明确、相应的目标程序组件逐渐清楚,因此,软件单元和硬件机器的映射关系进一步明确了,为未来的安装部署方式提供了指导