架构设计六技从需求向架构过渡的系统方法温昱•资深咨询顾问•软件架构专家•《软件架构设计》作者业内对架构的讨论仍沿用了传统思想:如果知道了系统需求,就可以为此系统构建架构。这种观点是缺乏远见的……——LenBass定位需求软件系统软件架构问题领域解决方案议程功能与架构质量与架构约束与架构总结原理:功能and职责协作链资源管理任务管理成员界面经理界面管理员界面数据管理安全管理日志管理查看任务分配任务修改任务第一技:通过协作,识别职责第二技:缩小范围,事半功倍如何确定关键功能需求•核心功能–标志:业务层的接口要反映这些功能•必须实现的功能–往往来自甲方的要求。•覆盖了系统架构的一些方面,而其他功能没有–例如……•实现风险高的功能–例如……案例有意义吗展现层业务层数据层概念性架构设计过程压缩者打包器压缩选择界面原文件压缩器压缩行进界面压缩配置压缩包监听器字典概念性架构设计过程解压缩者包格式解析器解压缩界面原文件解压缩器字典压缩包文件压缩段概念性架构设计过程打包器压缩选择界面源文件压缩、解压器压缩行进界面压缩配置压缩包监听器包格式解析器解压缩界面文件压缩段原文件读写层压缩包读写层压缩控制层界面交互层概念性架构设计过程原文件读写层压缩包读写层压缩控制层界面交互层主界面选项设置进度显示右键菜单压缩解压解压前预览压缩包格式缓冲分卷已字符流方式读文件生成文件缓冲有奖问答1.架构设计的“决定因素”A.用例驱动的(功能需求驱动的)B.非功能需求驱动的C.包括功能、非功能的综合因素驱动的D.根本不存在所谓“决定因素”,应靠经验议程功能与架构质量与架构约束与架构总结原理:质量属性对架构的影响•功能需求:连接两岸的公路交通桥墩支撑的公路桥•约束条件:不能影响万吨轮从桥下通过规定桥墩的高度和桥墩间距•使用期质量:在湍急的江流中保持稳固把桥墩建在岩石层之上•建造期质量:施工方便性继续确认和调整架构第三技:功能质量,综合考虑高性能Cache机制著名定义中的两个错误架构风格到接口一级了么?非功能需求的设计要另起炉灶么?软件架构包含了关于以下问题的重要决策:软件系统的组织;选择组成系统的结构元素和它们之间的接口,以及当这些元素相互协作时所体现的行为;如何组合这些元素,使它们逐渐合成为更大的子系统;用于指导系统组织的架构风格:这些元素以及它们的接口、协作和组合。软件架构不仅注重软件本身的结构和行为,还注重其他特性:使用、功能性、性能、弹性、重用、可理解性、经济和技术的限制及权衡、以及美学等。第四技:分门别类,深入理解运行期质量属性开发期质量属性性能(Performance)安全性(Security)易用性(Usability)持续可用性(Availability)可伸缩性(Scalability)互操作性(Interoperability)可靠性(Reliability)鲁棒性(Robustness)易理解性(Understandability)可扩展性(Extensibility)可重用性(Reusability)可测试性(Testability)可维护性(Maintainability)可移植性(Portability)运行期质量+开发期质量运行期质量属性开发期质量属性性能(Performance)安全性(Security)易用性(Usability)持续可用性(Availability)互操作性(Interoperability)可靠性(Reliability)鲁棒性(Robustness)易理解性(Understandability)可测试性(Testability)可重用性(Reusability)演进可伸缩性(Scalability)可扩展性(Extensibility)可维护性(Maintainability)可移植性(Portability)找到合适你的质量分类•FURPS•McCall•ISO•运行期质量+开发期质量•……有奖问答1.包括可扩展性、可管理性等在内的质量要求,以下正确的是A.可扩展性越强越好,所有可以想到的情况统统支持,不计成本B.有经验的架构师懂得借助场景技术,理性决定支持哪些扩展、如何支持扩展C.设计模式影响性能D.“可管理性”往往转化成一组“功能需求”,如用户管理功能、备份功能、参数配置功能、运行监视功能等议程功能与架构质量与架构约束与架构总结约束的常见类型•技术性约束:采用何种OS、采用何种技术、需要和哪些遗留系统互操作……•标准性约束:不同行业、大型企业集团的相关行业标准、企业标准……•法规性约束:相关法律、法规、政府规章、行政规定……架构师实际面临更多约束第五技:约束分析,必不可少第六技:正交表法,掌控全局对比:经典的需求分类方式©正交表方法,推荐给大家!业务目标快好省组织级约束用户需求运行期质量用户级约束行为需求开发期质量乙方约束用户开发组织广义功能质量约束案例:连锁超市系统提高收银效率投资少,工期短(投资多,使用期长)要求在Linux上运行与原有物流系统整合用户电脑水平偏低开发人员分散在不同地点用户开发组织广义功能质量约束案例:连锁超市系统提高收银效率(业务需求)单笔取消功能(用户需求)鲁棒性(Robustness)用户电脑水平偏低POS终端按键触发状态转换然后扫描或输入商品ID(行为需求)案例:连锁超市系统工期短投资少松耦合团队熟悉A技术不可选昂贵的中间件开发人员分散在不同地点选择A技术否定B技术案例:连锁超市系统投资较多预期使用期长原有物流系统整合互操作性基于MOM的整合策略实际当中约束的影响实际当中约束的影响有奖问答1.关于功能、质量、约束这三类需求,以下正确的是A.需求变更主要来自功能需求B.一般而言,质量需求最稳定C.约束只需遵守即可D.约束仅存在于技术方面E.约束仅来自客户方议程功能与架构质量与架构约束与架构总结系统方法总结谢谢!Q&A如何下载本PPT•大会网站•松耦合空间•资深咨询顾问•软件架构专家•架构设计高级培训讲师•《软件架构设计》作者•Email:shanghaiwenyu@163.com•MSN:shanghaiwenyu@hotmail.com