软件架构---确定关键需求

确定关键需求,架构师具体要做什么呢?
· 一方面,不同质量属性之间往往具有相互制约性,于是我们自然应该权衡哪一部分质量属性是架构设计的重点目标。
· 另一方面,功能需求数量众多,应该控制架构设计时需要详细分析的功能(或用例)的个数。

1 确定关键质量
  为了确定对架构设计关键的质量属性需求,需要做如下三方面的工作:
  · 考虑为了提高要开发的软件系统受认可的程度,应着重提高哪些方面的质量属性要求;
  · 接下来,充分考虑这些质量属性的相互制约或相互促进关系,以调整不同质量属性的要求标准——例如,你可能会决定高性能要求最最重要,而可扩展性也比较重要;
  · 同时,必须满足各种约束性需求。
  确定关键质量时考虑质量属性之间的矛盾关系,例如,“互操作性”需求往往给“安全性”需求造成威胁,而为了满足“高性能”需求,往往需要使用特定平台的非标准能力,这势必影响了系统的“可移植性”,……,不一而足。于是,我们自然应该权衡哪一部分质量属性是架构设计的重点目标。

2 确定关键功能
  功能需求是大家最熟悉的一种需求。Karl E. Wiegers在《软件需求(第2版)》中这样描述它:

    功能需求(Functional Requirement)规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。功能需求有时也被称作行为需求(Behavioral Requirement),因为习惯上总是用“应该”对其进行描述:“系统应该发送电子邮件来通知用户已接受其预定”。

  而所谓对软件架构关键的功能需求,就是它涉及(或串起)的模块最多、协作方式最有代表性的功能需求。
    任何功能需求,都是由一条特定的“模块协作链”完成的。控制权在模块协作链中来回传递,而功能需求就相当于串起不同模块的线索
  如何确定关键功能需求呢?可通过如下4条启发规则,确定关键功能子集:
    · 核心功能。
    · 必做功能。
    · 高风险功能。
    · 独特功能(覆盖了上述3类功能没有涉及的职责)。

  核心功能。识别“核心功能”,有个标志:业务层的接口要反映这些功能。例如,项目管理系统中,项目信息查看、添加项目任务等都是核心功能。

  必做功能。识别“必须实现的功能”主要依据客户方的背景。架构师不应忽视系统的《愿景与范围文档》,这份文档描述了项目立项的真正源起,文档“项目愿景的解决方案”中“主要特征”往往应作为“必做功能”的备选项。另外,对于业务系统而言,一般支持“运营”的功能比支持“管理”的功能优先级要高。

  高风险功能。基于务实考虑,还应该把“风险高的功能”选入关键功能子集。

    例如,你在设计一个网上书店系统,书籍的全库搜索功能就需要特别关注:
    · 从用户角度讲,极慢的搜索速度、甚至直接收到“系统忙,请稍后再试”的提示,都是令人不满的;
    · 从架构设计角度讲,此功能对书籍数据库进行“面状、只读”式的使用,和增加书籍、修改书籍信息等功能“点状、写入”式的数据库使用特点完全不同……尽早将全库搜索功能选入“高风险功能”之列,利于有针对性地进行架构设计。

  独特功能。最后,看看还是否覆盖了“上述3类功能没有涉及的职责”的功能。例如,如果你设计类似“搜狗拼音”这样的输入法软件,“词库在线更新”功能就必然是对架构关键的功能,因为忽略了它就很难发现架构中负责和服务器交互的“互操作模块”。显然,“特殊功能”是相对上述3类功能而言的。


另外,架构师在确定关键功能子集时,还必须注意两点。
  第一,“关键功能子集”的确定并不存在“标准答案”。只要能较好地覆盖组成架构的不同职责模块,并体现职责模块之间协作关系的特点(有经验的架构师不会放过后者),那么“关键功能子集”的价值也就体现了。
  第二,值得专门说明的还有“关键功能所占比例”的问题。有些专家认为比例大致是固定的,例如,Per Kroll和Philippe Kruchten在《Rational统一过程:实践者指南》中写道:
    在初始阶段,应该确定出一些(大概占总数的20%至30%)对系统起关键作用的用例。这些用例通常对创建架构具有重要影响。

 参考:温昱《软件架构设计》

转载于:https://www.cnblogs.com/sdysyhj/p/11056859.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: gjb438c-2021是中国国家标准化管理委员会发布的《软件需求规格说明》标准,该标准的制定旨在规范软件需求规格说明的编写和管理,提高软件开发过程的质量和效率。 该标准的主要内容包括需求规格说明的定义、编写原则和规范、需求的分类、需求描述的要求、需求变更管理、需求跟踪等方面。其中,强调了需求规格说明应该包括的内容,如需求的功能性,非功能性,性能,安全性,可靠性等方面,并提出了编写需求规格说明的原则和规范,如需求描述要准确,完整,一致,可测量等要求。 此外,标准还规定了需求变更管理的要求,包括变更记录、变更审批等方面。标准还提出了需要开展需求跟踪来确保软件开发的质量和效率,监控需求的进展情况,并及时解决问题。 总之,通过遵守该标准,软件开发人员可以更好地编写和管理软件需求规格说明,提升软件开发效率,降低成本,更好地满足用户需求。 ### 回答2: gjb438c-2021是关于软件需求规格说明的标准规范,主要包含了软件需求规格说明的编写标准和要求。软件需求规格说明是软件开发过程中非常重要的一部分,它描述了软件的需求及具体的实现方式,对于软件开发人员和用户都具有重要的指导意义。 gjb438c-2021标准规范的实施,旨在规范软件需求规格说明的编写和管理,提高软件开发的质量和效率。该规范涵盖了需求分析、需求描述、需求确认等各个方面,并要求详细描述软件的功能、性能、可靠性、易用性等方面的要求。同时,该规范还规定了软件需求规格说明的编写格式、审查流程和版本管理等要求,以确保软件需求规格说明的准确性和完整性。 在实际软件开发中,严格遵守gjb438c-2021标准规范的要求,对于开发人员和用户都具有重要的意义。开发人员可以根据规范要求编写完整准确的软件需求规格说明,明确软件开发的目标和方向,提高开发效率和质量;而用户可以通过规范的软件需求规格说明,了解软件的功能、性能等各个方面的要求,选择最适合自己需求的软件产品。 综上所述,gjb438c-2021标准规范是关于软件需求规格说明的一项重要标准,规范了软件需求规格说明的编写和管理,对于软件开发和用户都具有重要的指导意义。 ### 回答3: 《软件需求规格说明》是指软件开发过程中的一个重要文档,它详细描述了软件即将实现的功能、性能、数据、界面、安全等方面的详细规定。它主要包括引言、定义、系统总体设计、功能需求、非功能需求以及附录等部分。 引言部分主要介绍了软件需求规格说明的目的、范围、参考文献和术语定义等基本信息,确保开发人员和利益相关者对文档的理解和使用得到统一。 定义部分主要对项目范围、业务流程、关键词汇和特殊标记等进行了说明,确保所有人员对需求规格说明文档中的相关定义和术语的理解一致性。 系统总体设计部分主要介绍了系统的总体设计思路及架构,包括系统用例模型、业务流程、数据流图等,为后续的功能需求和非功能需求做好前期铺垫。 功能需求部分主要列举和详细描述产品功能,包括基本功能、扩展功能和非功能需求等,确保软件产品的功能达到用户需求和规定标准。 非功能需求部分主要对软件的性能、安全、可用性、可维护性等方面进行详细规划和说明,确保软件产品各方面性能优异,符合相关的标准要求。 附录部分主要包括补充性的信息,比如软件处理流程图、用户手册等,确保软件文档更加全面和完整。 总之,《软件需求规格说明》文档是软件产品开发过程中非常重要的一份文档。正确的编写和规范的使用,可以优化软件开发过程中的协调和合作,尽可能的确保产品最终效果符合用户需求和相关标准。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值