目录
质量属性以及架构风格的对比仍是重点:
论软件系统架构评估
理论素材准备:
架构权衡分析法ATAM
质量属性以及架构风格的对比仍是重点:
系统开发基础:UML建模(UML类图、用例图、状态图等)、数据流图、设计模式、ER图
数据库系统:规范化、封装协议、反规范化、数据库新技术
其他嵌入式
试题一、质量属性 架构风格
管道过滤器架构风格:
主要特点:过滤器相对独立;
主要优点:功能模块复用:可维护性和可扩展性较强;具有并发性;模块独立性高;
主要缺点:不适于交互性强的应用;对于存在关系的数据流必须进行协调
适合领域:系统可划分清晰的模块;模块相对独立;有清晰的模块接口
面向对象:
主要特点:力争实现问题空间和软件系统空间结构的一致性;
主要优点:高度模块性,实现封装,代码共享灵活,易于维护,可扩展性好;
主要缺点:增加了对象之间的依赖;多种领域
事件驱动:
主要特点:系统由若干子系统构成且称为一个整体;系统有统一的目标;子系统有主从之分;每一个子系统由自己的事件收集和处理机制
主要优点:适合描写系统组;容易实现并发处理和多任务;可扩展性好;具有类层次结构;简化代码
因为树形结构的所以削弱了对系统计算的控制能力;各个对象的逻辑关系复杂
论软件系统架构评估
对于软件系统,尤其是大规模的复杂软件系统来说,软件的系统架构对于确保最终系统的质量具有十分重要的意义,不恰当的系统架构将给项目开发带来高昂的代价和难以避免的灾难,对于一个系统架构进行评估,是为了:分析现有架构存在的潜在风险,检验设计中提出的质量需求,在系统被构建之前分析现有系统架构对于系统质量的影响,提出系统架构的改进方案。架构评估是软件开发过程中的重要环节,请围绕“论软件系统架构评估”论题,依次从以下三个方面进行论述。
概要叙述你参与与架构评估的软件系统,以及在评估过程中所担任的主要工作
分析软件系统架构评估中所普遍关注的质量属性有哪些?详细阐述每种质量属性的具体意义。
详细说明你所参与的软件系统架构评估中,采用了哪种评估方法,具体实施过程和效果如何。
理论素材准备:
质量属性
性能:指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。如响应时间、吞吐量。设计策略:优先级队列、增加计算资源、减少计算开销、引入并发机制、采用资源调度等
可靠性:是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。如MTTF、MTBF。设计策略:心跳、ping、Echo、冗余、选举
可用性:是系统能够正常运行的时间比例,经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。如故障间隔时间。设计策略 :心跳、Pingecho、冗余、选举。
安全性:是指系统在合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。如保密性、完整性、不可抵赖性、可控性。设计策略:入侵检测、用户认证、用户授权、追踪审计
可修改性:指能够快速的以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量。设计策略:接口实现分离、抽象、信息隐藏
功能性:是系统所能完成所期望的工作的能力。一项任务的完成需要系统中许多或大多数构件的相互协作。
可变性:指体系结构经扩充或变更而成为新体系结构的能力。这种新体系结构应该符合预先定义的规则,在某些具体方面不同于原有的体系结构。当要将某个体系结构作为一系列相关产品的基础时,可变性是很重要的。
互操作性:作为系统组成部分的软件不是独立存在的,经常与其他系统或自身的环境相互作用。为了支持互操作性,软件体系结构必须为外部可视化的功能特性和数据结构提供精心设计的软件入口。程序和用其他编程语言编写的软件系统的交互作用就是互操作性的问题,也影响应用的软件体系结构
敏感点:是为了实现某种特定的质量属性,一个或多个构件所具有的特性
权衡点:是影响多个质量属性的特性,是多个质量数据的敏感点
风险点与非风险点不是以标准专业术语形式出现的,只是一个常规概念,即可能引起风险的因素,可称为风险。某个做法如果有隐患,也有可能导致一些问题,则为风险点;而如果某件事是可行的可接受的则为非风险点。
架构权衡分析法ATAM
评估小组负责人:评估方法,描述ATAM方法
项目决策者:业务角度,描述业务动机
首席设计师:架构、描述架构
架构设计师:确定架构方法
评估小组、设计小组、管理人员和客户代表,生成指令属性效用树
评估小组:分析架构方法
项目干系人:投票、讨论场景和对场景分级
架构设计师:分析架构方法
评估小组负责人:评估方法:描述评估结果
范文:
2018年5月,我集团公司开始进行旅游平台项目的开发工作,我在该项目中承担了系统架构设计师的职务,主要负责系统的架构设计。该项目主要是对供应商的产品进行标准化的管理,规范化供应商提供的产品,然后转化成集团公司标准化的产品,在集团网站上面售卖以及推送给经销商的平台上面售卖,实现旅游产品的上架、下架、价格、库存、订单、支付、结算的自动化系统。本文以旅游平台为例,论述了软件系统的架构评估。首先分析了软件架构评估所普遍关注的质量属性并阐述了其性能、可用性、可修改性和安全性的具体含义。整个系统采用了面向服务SOA的架构设计方法。在架构设计完成之后,对SA评估采用了基于场景的评估方式中的体系结构权衡分析方法ATAM,并详细描述了其评估过程,项目评估小组经过对项目的风险点、敏感点的讨论后生成了质量效应树。目前系统已稳定运行一年多,从而验证了该项目的采用ATAM架构评估保证了系统的顺利完成。
随着互联网的快速发展,旅游产品的品种以及价格、库存变动频率已经不是传统的旅游系统能够保障的了,目前集团公司招了很多的业务人员来维护这几十万中的旅游的产品,随着旅游旺季的到来,人员的维护已经不能及时进行处理,所以集团内各大业务线急需开发一套自动化的旅游平台来满足,从新增供应商的以及维护产品的上、下架、价格、库存的动态响应处理,以及经销商下单的自动化结算处理一条线的自动化处理的旅游平台项目。
系统的整体架构采用了面向服务的架构SOA。前端采用了VUE进行开发,后端的工作才有用面向对象语言JAVA,运行在LINUX服务器上面开发,数据库存储采用了mysql通过将系统分为多个子模块;各个子模块的构件上用服务进行了封装,他们之间通过消息进行通信。经过对客户需求的分析,我将该系统拆分了供应商的产品服务模块(封装了所有供应商厂家的产品接入,通过适配器的模式进行不同接口的适配,转换为统一、标准的产品)、订单模块服务模块(用于旅游集团官网上面下单、经销商下单的入口处理)、最小价服务模块(通过对于标准化的产品进行最小价的取值,然后呈现到官网以及经销商的旅游产品都是最低价的产品)、公共服务模块(用于各种消息中间件队列的处理以及公共算法的处理模块)。下面先介绍一下软件评估的质量属性。
架构评估是软件开发过程的重要环节,在软件架构评估中的质量属性:性能、可用性、可修改性、安全性、可测试性、可靠性和易用性等。其中前4个质量属性是质量效应树的重要组成部分。性能是指系统的响应能力,即经过多长时间对事件作出响应。可用性是指系统能够正常运行的比例,经过用两次故障之间的时间长度或出现故障时系统能够恢复的速度来表示。可修改性是指系统能以较高的性价比对系统作出变更的能力。安全性是指系统能够向合法用户提供服务,同时拒绝非授权的用户使用或拒绝服务的能力。
常用的架构评估方法有:基于问卷调查的评估方法、基于场景的评估方式和基于度量的评估方式。基于问卷调查的评估方式是由多个评估专家通过调查问卷的方式回答问卷中的问题,对多个评估结果进行综合,最终得到最终结果。其评价的具有主观性不太适合本项目。基于度量的评估方式虽然评价比较客观,但是需要评估者对系统的架构有精确的了解,也不太适合本项目。而基于场景的评估方式又分为架构权衡分析法ATAM,软件架构分析法SAAM和成本效益分析法CBAM。本项目中根据不同质量属性使用了ATAM作为系统架构评估的方法。
在使用ATAM进行架构评估时,我们根据项目需要成立了项目评估小组。其主要成员包括:评估小组负责人、项目决策人、架构设计师、用户、开发人员、测试人员、系统部署人员等项目干系人。我在这里的身份是项目的评估小组负责人和首席架构师。架构的评估经历了描述和介绍阶段、调查和分析阶段、测试阶段和报告阶段四个阶段。下面我分别从这四个阶段进行介绍。
在描述和介绍阶段,由于项目评估成员有部分人员对ATAM并不熟悉,我首先介绍ATAM的方法。它是一种基于场景的软件架构评估方法,对系统的多个质量属性基于场景进行评估。通过该评估确认系统存在的风险,并检查各自非功能性需求是否满足需求。客户也阐述了系统的目的和商业动机。项目是为了通过捕获互联网流量从而挖掘出有价值的漏洞信息。通过实时获取漏洞可以有效