软件架构怎么写( 四 )


3、满足复用的要求,最大程度的提高开发人员的工作效率 。软件架构设计的几种视图 我们常常在讨论架构设计该做些什么的时候,或是在架构设计评审的会议上,会提出各种各样的问题,例如开发人员该如何记录Log,事务如何控制?怎样才能提高我们的开发人员的工作效率,即在单位时间内更有品质的完成更多的功能?怎样满足客户的非功能性需求?怎样让生产环境的平台管理人员更好的维护系统? 上面这些问题,实际上是软件系统的不同的干系人站在不同的角度上提出的问题,要回答上面这些问题,我们就得从不同的视角来看待软件架构设计这项工作 。
1、逻辑架构视角,从系统用户的角度考虑问题,设计出来的软件架构能够满足业务逻辑的需求,能够处理现在越来越复杂的业务逻辑需求 。2、开发架构视角,从系统开发人员的角度来考虑问题,设计的架构要易于理解,易于开发,易于单元测试,最好做到让开发人员可以用最少的代码行数完成功能的开发 。
3、运行架构视角,从系统运行时的质量需求考虑问题,特别关注于系统的非功能需求,客户常常都会要求我们系统的功能画面的最长响应时间不超过4秒,能满足2000个用户同时在线使用,基于角色的系统资源的安全控制等 。4、物理架构视角,关注系统安装和部署在什么样的环境上,例如现在最流行的企业应用服务解决方案IBM Http Server + WebSphere Application Server + DB2,WebLogic + Oracle等 。
5、数据架构视角,如今我们开发的各类系统,如MIS,ERP,SAP,基本上都是对各类数据的操作,把一堆不太好懂的数据展现成用户容易看懂的数据,自动处理各类数据的运算等,所以数据的持久化是十分重要的一件事情 。1、分析需求和理解业务模型(或领域建模),并选定关键Use case 。
软件的需求,可以分为从用户视角和开发人员视角来看,从用户的角度看,又可以分为功能性和非功能性需求,我们必须从不同的视角和级别去全面的认识需求并分析需求,理解业务模型 。实践表明,常常被我们忽视的非功能性需求常常会导致整个项目失败 。
理解业务需求最好的方式莫过于进行领域建模,领域建模与需求分析往往是交替穿叉进行的,领域建模主要有以下三个方面的作用: ◆探索复杂问题,弄清领域知识 。Martin Fowler曾经说过,他采用面向对象方法最大的好处就是它有助于解决更为复杂的问题 。
领域建模本身作为辅助思维的工具,帮助我们将注意力始终保持在最为重要的业务概念及其关系上,使我们能够不断深入地,系统的对需求进行分析和认识 。领域建模往往是一个从模糊到清晰,从零散到系统的过程 。
◆决定功能范围,影响可扩展性 。任何模型都是对现实世界某种程序的抽象,这种抽象就会忽略某一些东西,例如忽略对象的属性和对象间的关系,而这些忽略往往都是带有一定的目的性的,这种忽略就决定了功能的范围 。
模型揭示了各种功能背后的结构,如果说定义功能相当于“拍照片”的话,那么领域建模就相当于“做透视”,更加关注问题领域的内在结构,相当于对问题领域进行了一定的抽象,良好的领域模型不仅能很好的支持现有的功能,而且还可以在一定程度上支持未来可能出现的新需求,体现良好的可扩展性 。◆提供交流基础,促进有效沟通 。
领域建模通常会使用UML图作为呈现的方式,这样为我们的沟通提供了方便 。当然,有时候文字在描述某些特定领域的问题时可能更适合,可以灵活运用 。
在我们公司的实际软件开发流程中,往往领域建模缺少这一环节,这可能是在以后的工作中需要进一步提高之处 。虽然我们总是期望架构设计师能全面掌握需求,但由于时间和精力的限制,摆在我们面前的现实就是架构设计师没有时间对所有需求进行深入分析,所以我们的策略就是“把好钢用在刀刃上”,即把大部分时间和精力花在对决定架构最重要的关键需求 。