基于框架的应用系统开发的质量属性
所谓质量属性,就是一组特性,用于评估其满足需求的能力。从用户角度来看,是最终的产品质量。
应用系统过程中用到的质量属性有:
1.性能
性能就是一个东西有多快,通常指响应时间或延迟。
- 响应时间:从发出请求到收到响应所用的时间,比如用户点击网页中的超链接或桌面应用程序中的按钮
- 延迟:消息从A点到B点,通过你的系统所用的时间。
就算构建的不是“高性能”软件系统,性能也可应用于Web应用系统、桌面应用系统、面向服务架构、消息系统等几乎所有你要构建的软件系统。
2.可伸缩性
可伸缩性基本上就是软件处理更多用户、请求、数据、消息等的能力。可伸缩性和并发机制密不可分,因此能在相同的时间内处理更多的东西(比如每秒的请求)。
3.可用性
可用性是软件对服务请求的可操作和可见程度。你常会看到用“9”来衡量或指代可用性,如99.99%(四个9)或99.999%(五个9)。这些数字指的是正常运行时间的百分比。另一边是可以容忍的停机时间。99.9%(三个9)的正常运行时间意味着留给计划维护、升级和意外故障的时间每天只有1分多钟。
4.安全性
安全性涵盖了从认证和授权到数据在运输和存储中的机密性的所有事情。和性能一样,安全性很有可能在一定程度上对你很重要。对于部署到互联网的web应用程序,安全性应该被视为最基础的东西。
5.监控
作为企业级应用,对于如何监测软件系统才能确保他们正常运行和满足服务请求,应该有特别的要求。这可能包括将软件与平台特定的监控功能(比如Java平台的JMX)集成,或发生故障时间集中监测仪表发送报警(比如通过SNMP)。
6.管理
监控通常提供一个软件系统的只读视图,有时会有运行时的管理需求。例如,有必要的话,暴露一些功能,使得操作人员能够修改系统运行时的拓扑结构或配置元素,刷新只读缓存等。
7.审计
人们往往需要一个引起软件系统中数据或行为变化的事件的日志(即审计日志),特别是涉及钱的时候。通常这些日志需要捕获与变动由谁做出、什么时候做出以及为什么做出相关的信息。变动本身(即变动前后的值)往往也需要记录。
8.灵活性
灵活性是一个优点滥用和含混的属于,值得是软件执行多个任务,或以不同方式执行某个任务的“灵活性”。一个很好的灵活性需求的例子是非技术人员修改软件内部使用的业务规则的能力。
9.可扩展性
可扩展性也使滥用和模糊的,但它指的是扩展软件使其可以做一些现在还不能做的事的能力,也许是通过使用插件和API。一些产品(如微软Dynamics CRM)允许非技术用户扩展存储的数据和改变其他用户与数据交互的方式)。
10.可维护性
可维护性往往被认为是一个需求。作为软件开发者,我们通常会努力打造“可维护”的软件,但值得我们思考的是,代码库以后将由谁维护。可维护性很难量化,所以应该认真思考我们可以遵循的架构和开发原则(架构规范和代码规范),因为这些是编写可维护代码的驱动。
根据领域的不同,每个软件系统的质量属性不尽相同。比如,金融行业中基于Web的系统的质量属性可能就不同于电信行业使用的软件系统。做好这些质量属性的具体规范,也是架构管理工作中的中重要内容。