项目管理之信息系统开发基础(二、架构设计)

 导语:软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构建的描述、构建的相互作用(连接件)、指导构建集成的模式以及这些模式的约束组成。 软件架构不仅制定了系统的组织结构和拓扑结构,并且显示了系统需求和构件之间的对应关系,提供了一些设计决策的基本原理。

1,软件架构风格

      软件架构设计的一个核心问题是能否达到架构级的软件复用,这种可复用的共性,形成了软件架构的特定风格,有以下五种。

    1)数据流风格

    2)调用/返回风格

    3)独立构件风格

    4)虚拟机风格

    5)仓库风格

2,软件架构的分类

   ① 逻辑架构

     逻辑架构关注的是功能,包含用户直接可见的功能,还有系统中隐含的功能。或者更加通俗来描述,逻辑架构更偏向我们日常所理解的“分层”,把一个项目分为“表示层、业务逻辑层、数据访问层”这样经典的“三层架构”。

   ②开发架构

    开发架构则更关注程序包,不仅仅是我们自己写的程序,还包括应用程序依赖的SDK、第三方类库、中间价等。尤其是像目前主流的Java、.NET等依靠虚拟机的语言和平台,以及主流的基于数据库的应用,都会比较关注。和逻辑架构有紧密的关联。

   ③运行架构

        顾名思义,更关注的是应用程序运行中可能出现的一些问题。例如并发带来的问题,比较常见的“线程同步”问题、死锁问题、对象创建和销毁(生命周期管理)问题等等。开发架构,更关注的是飞机起飞之前的一些准备工作,在静止状态下就能规划好做好的,而运行架构,更多考虑的是飞机起飞之后可能发生的一些问题。

   ④物理架构

    物理架构,更关注的系统、网络、服务器等基础设施。例如:如何通过服务器部署和配置网络环境,来实现应用程序的“可伸缩性、高可用性”。或者举一个实际的例子,如何通过设计基础设施的架构,来保障网站能支持同时10W人在线、7*24小时提供服务,当超过10W人或者低于10W人在线时,可以很方便的调整部署架构来支撑。

   ⑤数据架构

    数据架构,更关注的是数据持久化和存储层面的问题,也可能会包括数据的分布、复制、同步等问题。更贴切来讲,如何选择需要的关系型数据库、流行的NOSQL,如何保障数据存储层面的性能、高可用性、灾备等等。很多时候,和物理架构是有紧密联系的,但它更关注数据存储层面的,物理架构更关注整个基础设施部署层面。

3,软件构架的目标

① 可靠性(Reliable)软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。
安全性(Secure)软件系统所承担的交易的商业价值极高,系统的安全性非常重要。
可伸缩性(SCAlable)软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能性。
可定制化(CuSTomizable)同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。
可扩展性(Extensible)在新技术出现的时候,一个软件系统应当允许导入新技术,从而对现有系统进行功能和性能的扩展。
可维护性(MAIntainable)软件系统的维护包括两方面,一是排除现有的错误,二是将新的软件需求反映到现有系统中去。一个易于维护的系统可以有效地降低技术支持的花费。
客户体验(Customer Experience)软件系统必须易于使用。

市场时机(Time to Market)软件用户要面临同业竞争,软件提供商也要面临同业竞争。以最快的速度争夺市场先机非常重要。

4,软件架构的评估方式

1)基于问卷调查(或检查表)的方式

2)基于场景的方式(主要评估方式) 架构权衡分析法(ATAM),软件架构分析法(CBAM),成本效益分析法(SAAM)

3)基于度量的方式

5,软件设计

1)结构化设计

①概要设计

②详细设计

2)面相对象设计(OOD)

OOD设计原则

① 单一职责原则

②开放-封闭原则

③李氏替换原则

依赖倒置原则

接口隔离原则

⑥组合重用原则

⑦迪米特原则(最少知识法则)

3)设计模式

①分类模式

②对象模式





猜你喜欢

转载自blog.csdn.net/zl834205311/article/details/80323703