项目管理之信息系统开发基础(二架构设计)
Posted 持.之.以.恒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目管理之信息系统开发基础(二架构设计)相关的知识,希望对你有一定的参考价值。
导语:软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构建的描述、构建的相互作用(连接件)、指导构建集成的模式以及这些模式的约束组成。 软件架构不仅制定了系统的组织结构和拓扑结构,并且显示了系统需求和构件之间的对应关系,提供了一些设计决策的基本原理。
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)设计模式
①分类模式
②对象模式
以上是关于项目管理之信息系统开发基础(二架构设计)的主要内容,如果未能解决你的问题,请参考以下文章