随着互联网的发展,软件的体量越来越大,这就要求每个产品在设计之初都需要设计相应的架构,以适应产品的长期发展和升级。作为产品经理——一个产品最重要的负责人,你也应该对软件架构有所了解。软件架构师的主要关注点不是系统的功能,而是软件的质量。软件质量重点表明必须如何交付功能才能被系统的利益相关者接受。作为架构师,您应该了解软件产品利益相关者及其关注点:投资者,他们想知道项目是否可以在给定的资源和进度限制内完成。架构师、开发人员、测试人员,他们首先考虑初始构建,然后是维护和演化。需要组织团队和创建迭代计划的项目经理。想要通过软件产品的质量特征从竞争对手中脱颖而出的营销人员。用户,包括最终用户、系统管理员以及安装、部署、准备和配置人员。关注帮助台来电的数量和复杂性的技术支持人员。架构师的首要任务是与利益相关者合作,了解这些质量问题和约束并确定其优先级。为什么不从功能需求开始呢?因为分解一个系统往往有很多种可能的方法。例如,从数据模型开始可能会产生一种架构,而从业务流程模型开始可能会产生不同的架构。在极端情况下,系统不会被分解,而是作为一个单独的软件开发。这可能满足所有功能要求,但可能无法满足质量要求。项目通常会关注以下问题:功能性产品为其用户提供什么功能?未来可能需要对可变软件进行哪些更改?哪些改变不太可能发生并且不需要特别容易地做出?性能产品会有什么样的性能?用户同时使用系统的容量是多少?系统将为用户存储多少数据?生态系统在部署的生态系统中,系统将如何与其他系统交互?模块化如何分解编写软件的任务?Assign(modules)forwork,尤其是这些模块可以独立开发,又可以准确、方便地满足彼此的需求?可构建性如何将软件构建为一组可以独立实施和验证的组件?哪些组件应该重复使用其他产品,哪些应该从外部供应商处获得?产品化如果产品将存在多个变体,如何开发产品线并利用这些变体的共性?产品线中的产品将如何开发软件产品线涉及哪些步骤?创建软件产品线时进行了哪些投资?在产品线中开发不同变体的选择的预期回报是什么?特别是,是否可以开发一个最小的产品,然后添加(扩展)形式,开发产品线的其他成员而不更改以前编写的代码?安全产品是否需要用户身份验证,或者必须限制对数据的访问?数据的安全性如何保障?如何防止“拒绝服务”攻击或其他攻击?你熟悉这个吗?这其实是产品经理写的PRD文档的一部分。PRD文档包含产品性能指标、安全指标等,而架构师的大部分工作是在拿到PRD时,对项目进行分解,使其架构满足产品设计的基本要求。
