软件架构设计已经逐渐成为现代软件开发过程的核心,然而能够清晰表明架构设计并不是一件容易的事,就面向对象开发而言,RUP 的4+1视图已在架构设计的撰写中得到了广泛的应用和认可。
敏捷开发对软件架构设计产生了一定的影响,让人产生敏捷开发中“轻架构设计”的印象。文章就笔者经验,和大家一起讨论一下敏捷中的架构设计这个话题。
架构面临的品质问题,则通过自动化测试,代码检测工具来完成。必须大量应用自动化测试,减少人工硬调试的复杂性,重复性和不确定性。自动化测试包括单元测试和集成测试。无论是单元测试还是集成测试对面临需要脱离隔离依赖关系并保证开发的并行性。
软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非常了解,并且需要有良好的组织管理能力。可以这样说,一个架构师工作的好坏决定了整个软件开发项目的成败。
在软件开发中,我们对于软件架构经常看到极端,要么不重视软件架构,要么过分重视以至于她成了“天条”。我甚至遇到了这样的事情,某公司强制推行某基于Struts的架构设计,然而到了项目组它却处处遭到抵制,特别是分部基本上抛弃了这个架构设计。那么,这个原因在哪里呢?为什么一个成本高昂的架构设计没有被接纳呢?
架构师(Architecture)是目前很多软件企业最急需的人才,也是一个软件企业中薪水最高的技术人才。换句话说,架构师是企业的人力资本,与人力资源相比其能够通过架构、创新使企业获得新的产品、新的市场和新的技术体系。那么什么是架构师、架构师的作用、如何定位一个架构师和如何成为一个架构师呢?这是许多企业、许多程序员朋友希望知道的或希望参与讨论的话题内容。
近年来,软件领域也渐渐地流行起架构师的角色,特别是对一些大型软件产品或项目的开发,这一角色显得很关键,因为缺乏好的软件架构师而导致项目失败的例子不胜枚举,一个没有经验和能力的架构师也会使项目失败的速度加快。
灵活的软件开发方法将推动反应、检查和应用。其内在的做法推动业务和IT部门协调一致,利用面向软件的架构的再利用原则提供更密切的配合。
软件架构是软件系统一个高层次的结构体现,显示了系统分解后组件的布局和组件之间的关系。好的架构描述应该包含架构的多个视角,组件的设计和扩展描述,以及为满足功能性需求和非功能性需求的设计原则。
当你决定使用以架构为中心的开发方式时,这两个产出是连接架构设计阶段及实作阶段最重要的东西。当然,软件架构的设计不是一、两篇文章就可以解释清楚的,本文仅将一些比较重要的概念及经验提出来,希望能给初入门的读者有个概括的认识。
Dharmesh Shah最近撰写了有关“软件作为服务”即SaaS的架构成熟度模型的文章。之前Gianpaolo Carraro曾提出可伸缩性、多租户(multi-tenancy)与通过配置进行定制(customization throught configuration)是SaaS架构应满足的要求,Dharmesh从这一点出发,提出了关于SaaS架构成熟度模型的5个级别——从“混乱”到“乌托邦“,并针对每个级别背后的经济考虑提出了自己的想法。
不要害怕应用服务器技术!即使很便宜的PC也可以寄宿高级的软件套件(例如Sun的J2EE和它的应用服务器产品)。当然你也可以使用开放源代码的。其要点是这种技术越来越流行,同时越来越易于使用。
Don't Repeat Yourself,是软件开发的最佳实践,良好的软件开发应该是非自我重复的,同样按照非自我重复思想设计开发的软件,往往是好的软件。
SOA不太可能也不具备作为企业内部SaaS运行的能力,但它能够在很多方面为SaaS铺平道路;而无论内部基础架构有多么SOA化,都没有与市场驱动的SaaS相抗衡的灵敏度。
当一个请求到来时,它被路由到ISAPIRuntime.ProcessRequest() 方法.这个方法调用HttpRuntime.ProcessRequest方法
IDC中国软件与服务研究部高级分析师刘飞先生表示:“当今,CIO在企业中扮演着重要的角色,IT与业务的关系正在由辅助转向融合。可由于技术创新、行业竞争、法规遵从等众多挑战,CIO们无法将工作重心放在业务创新上。有数据表明,CIO们百分之八十的精力都用于IT运维,只有百分之二十用于业务创新。而服务管理作为整个企业动态架构的核心,能够通过将劳动密集型任务自动化,开发端到端的管理能力和实施云计算技术等方式来帮助企业实现IT与业务的完美融合,从而实现业务创新。”