1)确定关键的功能需求。2 )分析关键的非功能需求。
5 . 3 . 1 确定关键的功能需求
软件架构设计的主要目标是研究如何对系统进行划分和划分为那些部分,从篙求规格说明中筛选出对于软件架构具有决定性因素的“关键功能子集”,然后再从关键功能子集中确定出可能影响系统架构的“关键功能需求” 。
可以利用如下4方面的问题,以需求规格说明中的用例为粒度确定关键的功能子集。1)确定主要功能:哪些是系统的核心或主要功能性需求?2 )确定必须实现功能:哪些虽是非核心,但必须被实现的功能性需求?3 )具有风险的功能:哪些是极可能存在技术风险的功能性需求?
4 )特殊的功能:哪些虽并非以上3 点功能性需求,但很可能是重要扩展方向的?
*Sharing Team选择出的师生交流系统中的关键功能子集。核心功能:信息管理、 日志管理、 日程管理。必做功能:登录、用户管理.风险功能:登录。特殊功能:无。其中,由于登录可能需要利用外部邮件系统完成,所以定义为风险功能*
对于得到的关键功能子集,还希望能进一步完整地识别出更细的关键功能需求,这时需要注意的是:• 主要功能是那些与软件业务层直接相关的功能。• 必做功能要视项目的拥有者和使用者的要求而定。・特殊的功能主要是那些能够极大地提高用户满意度的功能。・确定关键功能需求并没有标准答案,并且和需求规格说明相比,选择比例最好按照实际情况而定。
*Sharing Team针对关键功能子集中确定出的每一项,继续定义出它们的关键功能需求:核心功能如下。1)信 息 管 理 :在对信息的管理中,由于需求定义中不允许修改信息,因此需要的功能包括信息查询、信息删除和信息发布。其中,信息发布是最核心的部分,可能会直接影响到软件的架构。因此,定义信息管理中的新信息发布功能是关键功能需求,主要需要解决的是信息的发布或者接收方式
2)日志管理:……
5.3.2 确定关键的非功能需求
推荐使用以下 3 个层次的问题来确定关键的质量属性。1 )系统所需的质量属性有哪些?2 )哪些关键需求是和这些质量相关的?它们实际上都是可量化的吗?3 )建立了哪些验收标准来测试系统是否达到质量要求?
在确定质量需求时,还要注意下面3 个原则。1 )从技术角度来看,关键质量需求要能帮助区别好的和坏的系统架构。
2 )无法测试的质量需求不能认为是关键的。3 )任何时候只要关键质量需求多于一个,都要查看是否会相互矛盾,然后做出权衡,确定优先级或者做出取舍。
一旦需要折中或权衡两个以上的关键质量需求,要注意以下几点。
1 )分别考查两个质量需求影响到的参与者,尽量确保影响较多参与者的质量需求得到满足。

