论影响软件架构的因素
软件架构的必要性
我们的经验告诉我们,如果我们用非正式、随意的工程技术去开发高性能、高安全性以及高质量的软件系统,我们会遇到相当多的麻烦,这些技术用在开发过去低级或小型的系统是一种行之有效的技术,但是面对现在庞大而复杂的大型系统,却会显得无力。如果不开发或维护一个基础架构,并且利用它组织成一个一致的、整体的、避免零碎的实现,那么我们将无法应对我们在开发过程中所遇到的复杂性,并最终导致测试与集成的失败。所以软件架构对大型而复杂的系统是非常必要的。
大型软件的特点
1. 软件交付时间紧迫。
2. 业务逻辑复杂、业务规则不稳定
3. 适应性强
4. 通用性高
5. 扩展性强
用户对软件的期望是能开发出满足用户基本要求,适应组织变化、成本低、界面友好、智能化、自动化的软件。
服务提供商期望用最低的开发成本,开发最高质量的软件产品。
在 会需求下,软件架构诞生。大型软件开发成功之路是软件架构之路,也是唯一的途径,是软件项目成功的保证。
因而软件架构在开发大型而复杂的系统中地位很重要也是必要的。
软件架构的作用
1) 良好的架构是系统开发成功的关键因素。
2) 架构驱动的软件开发是构架系统的最有效方法。架构驱动的方法优于需求驱动,文档驱动和方法驱动的方法。
3) 系统架构包括了所有的设计与实现方面,包括对硬件和技术的选择,而软件架构是系统架构的子集。
4) 架构提供了整个系统的视图。而正是这一点把它与系统的分析、设计模型区分开来。
软件架构也称之为软件体系结构,是对系统整体结构的把握,是全局整体性的规划,是将组织、过程、人与技术完美结合的一种设计,让组织感到满意,让软件开发过程可控,让团队成员之间能相互协调与合作,让技术学习的曲线适度,让项目的成本最低,让企业能得到最大的回 。
软件架构考虑的核心问题
1) 一个系统的基本组织是什么样的
2) 组成系统的基本组件
3) 组件之间是如何相互交互的
4) 组件和环境之间是如何交互的
5) 设计与演化的原则是什么
影响软件架构的因素
1. 组织因素
软件架构应该是能很好使用企业组织的结构的一种结构,能灵活适应组织的变化,能及时调整系统适应组织需要的一种架构。
2. 过程因素与参与开发人员因素
架构设计需要考虑团队使用的过程与开发方法,不同的过程与开发方法对架构的要求与设计是不同的。
架构设计需要考虑团队中人的特点,选取的技术路线如果与开发项目人的技术基础相融合,并且具有理解上的一致性,也比较容易达成开发的高效率与高质量。
架构设计通常需要是由一组的开发人员与维护人员完成。架构设计
需要开发人员与维护人员的接受。
人是软件架构中的基本要素。架构设计中人作为架构设计中基本要素的理念在软件架构中很重要。软件架构需要一批优秀的人才去实现与执行,好的软件架构能提供更好的平台,更大的发挥人力资源,提高人力资源的效率。能够让参与者更好的发挥自己的才能,而不是约束与束缚人的才能。
3. 技术因素
大型软件的开发是一个创新过程,需要团队创新能力的支撑。因而技术方案的选择需要考虑团队创新能力。
软件架构选择方案的过程其实也是一个对创新能力分析与决策的过程。通常我们考虑创新能力考虑的几个要素如下:
2 开发这些能力所带来的经济价值
2 开发新的能力所需要的成本
2 开发新的能力所需要的知识量及重要性
2 开发这些能力所减少的风险
1) 开发这些能力所带来的经济价值
确定优先级的第一个因素,是能力的经济价值。而确定能力经济价值的理想模式是估计它在一段时间内所带来的经济影响。
2)开发新的能力所需要的成本
很自然的,开发能力的成本是优先级重要考虑的因素。很多能力看起来不错,但了解它的成本之后可能会改变主意。一个很容易被忽视的因素,就是成本会随时间的改变而改变。假定开发一个特定的功能预计4周,但6个月之后,我们会由于因获得知识的改变,而需要额外花3周的时间对已经开发的功能进行改变。
3)开发新的能力所需要的知识量及重要性
在很多项目中,整体工作中的大部分时间是花费在追求新知识中,重要的是承认这种努力,并把它看作是项目组成中的一部分。因为项目开始的时候,我们并不知道项目结束之前所需要做的工作。在开发中形成的知识包括两类:
l 关于产品的知识
是一种关于将要开发产品的开发能力的知识,一个小组关于开发产品能力的知识越丰富,就能做出更好的产品的特性与能力的决策。
l 关于项目的知识
这是关于如何建立产品的知识。例如将要使用的技术、技能、小组共同工作所需要的知识
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!