软件架构中质量特性

From:http://www.cnblogs.com/wintersun/archive/2013/04/24/3039877.html

每一种架构模式都有它的优缺点以及潜在风险,选择正确模式来满足需求功能和质量特性是非常重要的.质量特性在需求分析过程中已经定义了, 质量特性可分为三种类型:

 

1. 实现特性. 

* 协作性.在内部组件与外界通用访问与交换数据. 协作性需要松散依赖的基础架构.

* 可维护性与扩展性. 修改系统与方便地扩展的能力.

* 可测试性. 帮助系统创建测试用例. 可测试性通常需要完整的系统设计与实现文档.

* 轻便性. 系统级的独立于软件与硬件平台. 系统开发用高级编程语言通常具有这个特性. 一个典例的例子就是JAVA, 大多数JAVA程序编译一次可以在任何地方运行.

* 伸缩性. 适用增加用户请求量的能力. 系统设计中伸缩性是比较讨厌的瓶颈.

* 灵活性. 系统易于修改适应于非原始设计的系统不同环境或问题, 系统开发使用面向组件或面向服务的架构通常处理这个特性.

2. 运行时特性.

* 可用性. 一个系统应该具有24/7的能力. 可用性通过复制与谨慎设计可应付硬件, 软件, 网络故障来实现.

* 安全性. 一个系统应对内外界各种类型的攻击. 安全性能通过安装防火墙, 创建认证与授权过程与使用加密.

* 性能. 增加一个系统效率系统到响应时间, 吞吐量, 资源利用, 通常与其它几个特性呈对立系统.

* 易用性. 用户使用系统时感到满意. 易用性包含完整性, 正确性, 兼容性几个因素, 也包括友好的用户界面, 完整文档与技术支持.

* 可靠性. 准确的输出结果. MTTF(平均失效前时间), 从故障中恢复, 故障预测.

* 可维护性(扩展性, 适用性,可服务性, 测试性, 兼容性, 可配制性, 软件系统易于修改.


3. 业务特性.

* 市场时效性. 从需求分析到产品发布之日所需时间.

* 成本.  构建到运维系统的消耗.

* 生命周期. 一个产品”存活”到”退休”期间时间

在大多数情况下,没有一个单一架构模式能同时满足所有质量特性. 软件架构师通常需要在很多特性之间做出权衡. 典型成对应系统质量特生有这些:

*  空间与时间的取舍.  空间换时间, 或是时间换空间.

*  可靠性与性能的取舍.  例如, 像CSharp这样的语言实现防止内存溢出可能, 但纯C语言使用指针可以性能高但可靠性低.

*  可伸缩性与性能的取舍.  例如, 一个典型的方法来提高服务的可伸缩性运用复制服务器。 为了确保所有服务器的一致性,以确保每个服务器都有相同的一致性的数据,整个服务的性能就会受到影响。

在选择架构模式时,不能满足所有的质量特性,系统分析师或软件架构师需要与客户一起来确定质量特性的优先级。通过枚举备选体系结构设计和计算加权来评价质量属性, 以便软件架构师可以优化设计与选择最合适的方案。

时间: 2024-12-05 01:35:21

软件架构中质量特性的相关文章

java 对象的this使用 java方法中参数传递特性 方法的递归

一.this关键字,使用的情形,以及如何使用. 1.使用的情形 类中的方法体中使用this  --初始化该对象 类的构造器中使用this --引用,调用该方法的对象 2.不写this,调用 只要方法或者构造器中  不存在成员变量与局部变量同名的情况,可直接不写this 否则方法中或构造器中使用的就是局部变量 3.static 静态方法不能调用this,不能调用任何非static修饰的成员变量 或者方法 二.java方法中  参数传递特性 1.基本数据类型--实际是新增变量,并赋值而已   不过代

PHP中面向对象特性实现

PHP近些年来成为全球最流行的网页编程语言,该语言以弱类型.易兼容.门槛低.开发快.功能强著称,且听别人这么说,我在有了c和c#基础后学习PHP过程中也并不是很顺利,该语言的一些特殊的语法规则又是让我混淆,不过不得不说,它让编程变得更加容易了.大家可能学习过C++或C#,应该知道面向对象的三大特征:封装性.继承性.多态性.其实任何一门编程语言,除了语言特有的API不同外,语言本身的编程思想和理念是想通的.现在,就让我带你走进PHP中面向对象特性的实现方式. 首先必须明白PHP为面向对象设定的6个

C#中的 特性 详解(转载)

本篇幅转载于:http://www.cnblogs.com/rohelm/archive/2012/04/19/2456088.html C#中特性详解 特性提供了功能强大的方法,用于将元数据或声明信息与代码(程序集.类型.方法.属性等)相关联.特性与程序实体关联后,即可在运行时使用"反射"的技术查询特性. 特性具有以下属性: 特性可向程序中添加元数据.元数据是有关在程序中定义的类型的信息.所有的 .NET 程序集都包含指定的一组元数据,这些元数据描述在程序集中定义的类型和类型成员.可

Performance Tuning guide 翻译 || Performance Tuning Guide 11G中新增特性

Performance Tuning Guide 11G中新增特性 本章描述了Oracle11g Release2(11.2)中增加了哪些新的性能调整 特性,以及指向这些增加信息. 本章节描述的特性以及增强,包含了优化数据库性能的各个方面. 关于Oracle11gR2的所有新特性汇总,可以查看Oracle Database New Features Guide. 11.2.0.2中新增的新特性(关于性能调优) 新增的以及更新过的性能调整特性包括: 注:Resource Manager(资源管理器

软件架构中的SOA架构有哪些特点?

面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互. SOA是一种粗粒度.松耦合服务架构,基于soa服务思想进行功能的抽取(重复代码问题解决),以服务为中心各个系统之间依靠ESB进行调用. 随着业务复杂性与规模的不断增长,以及业务的多变性因素,使得敏捷软件开发变得尤其重要,在尽可能满足客户需求的同时,维持良好的软件质量与系统可用性. 将整体应用拆分开来,从而确保

软件架构中的单体架构有哪些特点?

易于开发,易于测试,整体应用也易于部署.但成功的应用都会随着时间增大,最终变得巨大而复杂.巨大的.复杂的单体应用程序,其持续部署变得困难.SaaS应用通常在一天之内会多次将改动推到生产环境,必须重新部署整个应用来更新程序的任何一小部分,由于紧耦合模式,可能还必须做更广泛的手工测试,持续部署几乎不可能.当不同的模块具有资源需求冲突的时候,整体应用程序也将难以扩展.可靠性一般.因为所有的模块都在同一进程内运行,所以任一模块的漏洞,比如内存泄露,将会影响整个进程.东软UniEAP Platform软件

.net 4.0 中的特性总结(一):dynamic

在新版本的C#中,dynamic关键词是一个很重要的新特性,现在你可以创建动态对象并在运行时再决定它的类型.而且.net 4.0为CLR加入了一组为动态语言服务的运行时环境,称为DLR(Dynamic Language Runtime动态语言运行时),这使得: C#这种静态类型语言可以在 .NET Framework 中开发动态语言并为与其它动态语言提供互操作性了. DLR架构见下图: 例如: 执行结果:

<转载>C#中的特性(Attributes)

作者:sadaf alvi    阅读人次:7233    文章来源:CSDN Bolg    发布时间:2007-9-1 翻译不是为了翻译,是为了学习!因为只有翻译我才能逐句的看完整篇文章.当然还可以得到各位达人的斧正,让我由懂得皮毛到渐入佳境!乐哉,幸哉! 原文 约定: 1."attribute"和"attributes"均不翻译 2."property"译为"属性" 3.msdn中的原句不翻译 4."progr

.NET中的特性、属性以及两者的区别

一.特性(Attribute)的概念:公共语言运行时允许添加类似关键字的描述声明,它对程序中的元素进行标注,如类.字段.方法等,其本质上就是一个类,如果没有什么机制来在运行期来获取Attribute的附加信息,那么Attribute就没有什么存在的意义,.NET中以反射机制来实现在运行期获取Attribute的附加信息.那么特性到底长啥样子呢?比如:  在方法的前面加上  [Obsolete("此方法声明为已过期")]  这个特性,其实ObsoleteAttribute就是一个.net