zoukankan      html  css  js  c++  java
  • 如何进行成功的架构设计

    通过对架构进行的5种视图的角度来看,一个优秀的架构应该具有以下特点:

    1.       从开发角度,应该有良好的模块化,每个模块职责清晰,模块之间松耦合。模块内部高聚合。

    2.       从逻辑角度,适应了功能需求的变化,适应了技术的变化。

    3.       从运行角度,对系统的动态运行有良好的规划,可以标识出哪些是主动模块,哪些是被动模块。

    4.       从数据角度,对数据进行了良好的规划,不仅包括数据的持久化存储方案,还可能包括数据传递、数据复制、数据同步等。

    5.       从物理角度,可以进行明确、灵活的部署规划。

    一个成功的架构设计所需要的关键因素

    1.       是否遗漏了至关重要的非功能性需求。

    客户不仅关心功能的实现,更关心功能实现的好坏,5秒打开一个网页和10秒打开一个网页对客户来说意义有时是完全不一样的。很多项目甚至产品功能性的需求都实现了,最后却栽倒在非功能性的需求上。

    非功能性需求从哪里来?

    来自用户。例如性能、易用性。为用户而设计,不仅要满足用户要求的功能,也有达到用户期望的质量。

    来自开发人员和维护人员。例如可扩展性、可重用性、可移植性。一个拙劣的设计,会使开发和维护变成一场噩梦。

    来自客户组织。例如预算限制、上线时间。

    非功能性需求分为质量属性和约束两种,质量属性是软件系统的整体质量品质,往往与大多数功能有关,例如易用性、性能、可伸缩性、持续可用性、鲁棒性、安全性、可扩展性、可重用性、可移植性、易理解性、易测试性等。至于约束,要么是架构设计中必须遵守的原则,例如一些硬件或者软件的限制,要么转化为质量性需求或者功能需求。

    2.       能否适应频繁的需求变更。

    分离变化点。架构应该能够支持业务功能在一定范围内变化。

    3.       不同的视图是否一致、同步。

    架构师应该掌握趋于系统化的方法,在分而治之的大前提下,也要注意综合考虑,注意各个视图之间的同步。

    4.       架构是否及时得到验证。

    原型测试。

    制定架构设计策略

    1.       全面认识需求。

    2.       关键需求决定架构。

    3.       多视图探索。

    4.       尽早验证。

    全面认识需求

    一方面,需求是应该分层的,同一个项目,在客户眼中和在开发人员眼中的意义完全是不一样的。一般可以分为组织级(客户)、用户级(最后使用系统的人)和开发级。

    另一方面,需求应该被分为不同的类型。包括功能性需求和非功能性需求,非功能性需求分为质量属性和约束。

    关键需求决定架构

    架构师没有必要对所有需求都深入了解,这是策略。

    1.       功能需求数量众多,应该控制架构设计时需要详细分析的用例的个数。

    2.       不同质量属性之间往往是相互制约的,这时需要一个权衡。

    关键需求决定架构有利于集中精力深入分析最重要的需求。

    多视图探索架构

    分而治之。这样可以在每种视图时专注系统的某一方面。

    尽快验证

    一般有两种验证方式

    1.       原型方式。通过开发一个垂直演进原型,来实现软件架构。

    2.       框架方式。或者说框架 + 垂直抛弃原型。


    参考文献

    《软件架构设计》   温昱

  • 相关阅读:
    两个静态的页面嵌入动态页面进行传值
    网页滚动图片窗
    最近用VS2008SP1+ .NET Framework3.5SP1开发程序,使用了MsChart,但是部署到服务器的时候提示如下错误:
    使用ajax的登录页面
    动态创建DataTable
    滚动信息
    通过Web Services上传和下载文件
    弹出窗体
    ajax开源网址
    jQuery图片滚动十佳插件重点介绍
  • 原文地址:https://www.cnblogs.com/wing011203/p/1245522.html
Copyright © 2011-2022 走看看