`
landy
  • 浏览: 8191 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

软件质量属性设计

 
阅读更多

 

本人曾经阅读过《软件架构设计》一书的第一版,读了之后对架构设计的方法、流程有了更深刻的认识,也对我后续的工作起了非常大的指导作用,我认为,正是这本书,使我成为了一个合格的架构师。最近从ITEye上了解到温昱先生出了《软件架构设计》一书的第二版,赶紧下了样章读了一下,感觉第二版相比第一版,在概念、方法、流程、实践几个方面的指导性更强了,实在是程序员升级架构师必备良书!

最近正好想写一篇质量属性如何设计的文章,看了温昱先生的书之后,很是兴奋,验证了我个人的一些想法,下面基于我实际经历的一个项目,结合对《软件架构设计》一书所讲,谈一下质量属性如何设计。

首先介绍一下项目背景,某大型电信解决方案提供商向全球电信运营商提供某软件系统,因不同的运营商需求有差别,需要投入大量的人力物力对某个特定的运营商进行客户化定制,成本较高,为了降低定制成本,该提供商将交付组织切分为负责通用版本的组织A和负责针对特定局点定制的交付组织B,且成立了一个项目专门提升该软件系统的可定制性,以实现这种分级交付,降低定制成本。

项目启动后,负责该项目的架构师凭借丰富的经验马上启动了架构设计,他从业界同类产品了解到,业界为了提升定制能力采用了元数据驱动的架构风格,于是马上开始了元数据驱动框架的设计,设计好之后召集开发人员和管理人员开了个沟通会,会中,该架构师被两个问题难住了:

1)有个定制开发人员问,如果基线版本升级了,能否保证定制版本做的修改能够被直接继承?在这个问题上,大家发生了激烈的争论,架构设计团队认为有些场景可以,有些场景不可以,而定制开发人员的理解跟架构设计团队的理解不一样,最终该问题被搁置下来,后续再论。

2)管理人员问,对定制能力目标,我们怎么测试和验证目标是否达成。这个问题比较毒,一下子把架构设计团队问傻了,没人答得上来,于是被骂了一顿。

问题在哪里??看了《软件架构设计》的第9章“概念性架构设计”就能找到答案:“没有依据场景来做设计”。我认为的问题有:

1)没有从系统各Actor的角度,分析定制用例,导致重要定制场景遗漏,被问起的时候自然就捉襟见肘;

2)没有将定制能力目标分解到定制场景,导致对设计缺乏度量,不知道设计到底能不能满足定制能力目标要求,自然也回答不了“通用版本与定制版本的边界”这类的问题。

要怎么做呢??看了《软件架构设计》的第9章“概念性架构设计”给出了方法:质量属性目标——质量属性场景——决策。我再结合自己的经验,对此方法进行一下细化,我认为应该遵从下面的步骤,才能确保定制目标的达成:

1)分析定制的Actor,比如定制开发人员,定制运维人员等;

2)针对各Actor,分析其定制用例,如开发人员增加一个业务、修改一个业务流程、增加一个业务实体字段等等;

3)针对每个用例,结合定制能力目标,分析该Actor的工作流程,通过这一步的分析,通用版本的边界(系统用例)能够大致识别出来。

4)再针对关键系统用例,进一步使用分析对象进行鲁棒分析;通过这一步,对元数据驱动框架的能力要求能明确下来;

5)然后在进一步对元数据驱动框架进行细化设计;

6)提取一个关键用例,基于设计方案进行验证,看看是否达到设计目标,如果达不到,需要再增加元数据驱动框架的场景覆盖广度或者覆盖厚度。

通过这样一个系统的方法和流程,我们才能保证做出符合业务目标的可定制性设计。其它类型的质量属性的设计方法和流程也是类似的。

其实那个负责可定制性设计的架构设计团队不管是业务经验还是技术能力,都是比较扎实的,关键是没有掌握一个比较科学的设计方法和流程。因此,广大程序员兄弟们在实践的同时,一定不能忘了提升理论素养,这样才有利于更早的打破天花板,获得更大的成功。

0
5
分享到:
评论

相关推荐

    软件体系结构 质量属性

    在软件开发过程中,开发者需要了解客户对质量属性的期望,了解哪些质量属性对项目的成功至关重要,并将其翻译成明确的设计要求。只有这样,软件产品才能满足客户的需求,提高客户满意度。 在设计软件产品时,开发者...

    面向质量属性驱动的软件架构设计方法

    在本文中,已经提出了一种方法,以评估基于Web的系统的关键质量属性对软件体系结构的适应性。 最后,基于质量属性方案和策略进行了比较分析,以选择满足基于Web的系统即学生和课程评估系统(SCES)的系统级要求的...

    软件体系结构之主要质量属性(英文)

    这七个质量属性在软件设计阶段就需要深入考虑,它们相互关联且可能互相影响。例如,提高性能可能会影响可维护性,而增强安全性可能会影响到可用性。因此,软件架构师需要在这些属性之间寻找平衡,以满足项目特定的...

    分析-质量属性效用树.

    质量属性效用树(Utility Tree)是软件架构评估和决策中的一个重要工具,它用于系统地分析和量化质量属性,如性能、安全性、可用性、可维护性等,以支持架构设计决策。在软件开发过程中,质量属性是衡量系统好坏的...

    分析-质量属性效用树.docx

    在IT领域,尤其是在软件工程中,理解并有效地使用质量属性效用树对于设计和优化系统架构至关重要。 首先,我们要理解什么是质量属性。质量属性是指那些直接影响系统性能、用户体验和业务价值的特性,它们并非直接...

    软件体系结构的质量属性.pptx

    在软件设计和开发过程中,软件架构师需要对软件体系结构的质量属性进行评估和优化,以确保软件的整体性能和可维护性。 Architecture Tradeoff Analysis Method(ATAM)是一种常用的评估软件体系结构质量属性的方法...

    软件体系结构5-软件体系结构的质量属性.ppt

    软件体系结构质量属性的设计是指在软件设计过程中,根据系统的质量属性要求,设计和优化系统架构的过程。设计的目的是为了使系统能够满足质量属性的要求,从而提高系统的可用性、可维护性、性能、安全性等方面。 6....

    实现软件架构质量属性的战术

    架构设计则为满足架构需求的质量属性寻找适当的战术。对如何实现特定的质量属性感兴趣。质量需求指定了软件的响应,以实现业务目标。我们感兴趣的是设计使用设计模式、架构模式或架构策略创建设计的“战术”。是什么...

    软件体系结构课件-质量属性.ppt

    软件体系结构课件-质量属性是软件设计中非常重要的一部分,它直接影响软件的质量和可维护性。在这个课件中,我们将讨论软件体系结构的质量属性,包括可修改性、语义一致性、泛化、限制可能的选择、防止连锁反应、...

    软件架构的质量属性

    因此,软件架构师必须根据项目的具体需求和约束来平衡这些质量属性,设计出满足当前业务需求同时也具备一定的扩展性和适应性的软件架构。 此外,由于给定文件中的【部分内容】是一段被OCR扫描识别错误的文字,无法...

    软件架构质量属性需求分析定义.pdf

    Response: 指系统对于Stimulus做出的反应或行为,这是软件质量属性分析中的输出部分,比如响应时间、系统稳定性、数据安全性等。 Measure: 对响应进行量化的指标,如响应时间是否在某个时间阈值内、系统稳定性是否...

    ADD 质量属性驱动 eclipse 插件 UML

    **ADD(Architecture-Driven Development)质量属性驱动**是一种软件开发方法,它强调在设计阶段就考虑系统的非功能需求,如性能、安全性、可维护性等质量属性。在Eclipse环境中,这种理念可以通过特定的插件得以...

    企业管理视角下外卖类手机软件质量属性对消费者购买意愿的影响.docx

    研究通过设计问卷,利用SPSS20.0和AMOS20.0统计分析软件收集和处理数据,对模型进行验证,旨在揭示外卖软件质量属性如何影响消费者的购买意愿,以及感知有用性和感知易用性在此过程中的中介效应。 研究的意义在于,...

    软件体系结构的质量属性ppt课件.ppt

    软件体系结构的质量属性是软件开发过程中至关重要的一部分,它关乎到软件系统的性能、可维护性、可靠性、安全性等关键因素。本课件主要探讨了如何定义软件体系结构,以及如何通过评估和方法论来确保软件质量。 首先...

    全面软件质量管理

    软件质量属性和质量要素是理解全面质量管理的关键。质量属性包括功能性与非功能性两个方面,功能性质量如正确性、健壮性和可靠性,非功能性质量如性能、易用性、安全性等。这些属性相互交织,共同构成了软件的整体...

Global site tag (gtag.js) - Google Analytics