软件架构师需要理清各个利益方并了解他们的需求,做到换位思考。换位思考是推动设计的引擎。只有站在利益相关方的角度思考和处理问题,才能开发出更好的软件。
一、找合适的人交谈
利益相关方通常与软件有商业利益关系,可能会为软件付费或者从中获利。利益相关方往往不止一人,与团队合作不同于与个人合作。来自同一利益相关方的两个人可能会提供不一致甚至冲突的信息,架构师需要了解整个团队的想法,甚至需要帮助他们达成共识。
二、创建利益相关
利益相关方关系图呈现了与软件系统有关联或受其影响的人,它将人与人之间的关系和互动进行可视化呈现。还能大致展示不同利益相关方的动机,可利用它确定需要沟通的关键人物。
架构是为客户服务的,如何确保架构能够为客户带来价值呢?通用电气的软件架构师的办法是运用 “ 以客户为中心 ” 的设计流程。先搞清楚谁是客户,他们想做什么;然后将系统按照客户的任务进行划分。架构师需要了解每项任务的启动步骤,以及哪里容易出错。这样,由表及里,确保深层结构能实现客户价值,通用电气将其称之为 “ 客户体验架构 ”,设计流程如下:
1)观察客户在正常流程下如何完成任务,向对方提问,确定对客户至关重要的事项,包括功能需求和质量属性需求。
2)围绕客户需求设计系统并记录在原型里。原型应尽可能具有交互性,而不仅仅是流程图。
3)尽早与客户一起评审原型,确保对方真正了解新系统的变化,以及这些变化对他们的影响。
4)根据客户评审会上的反馈修改调整架构设计。
运用以上四个步骤,就能通过架构为客户创造价值。
三、了解业务目标
业务目标是利益相关方希望通过软件实现的东西。系统的质量属性、权衡取舍、技术债务都要以业务目标为基础
(1)记录业务目标
业务目标包含三个方面:
-
主体:特定的人或角色。如果利益相关方有名称,就加上名称。
-
结果:用可衡量的结果表达利益相关方的需求。如果系统成功,会带来哪些变化?
-
背景:背景信息有助于我们进一步理解利益相关方的需求。
(2)帮助利益相关方描述业务目标
架构师应与产品经理或其它业务相关方合作,确定系统的业务目标。