结构化设计7/7,架构设计画板

软件研发是一门实践技术,实践技术就是要用实际的东西去做,并且有摸得着看得见的产出物。

如何使用“模型映射设计”方法设计?下面采用一个虚拟项目完整的总结设计实践。

模型映射设计

如下是模型映射设计的重要环节和方法描述。

环节 设计方法 关注点
用户故事 使用UserStory结构化描述用户故事,作为[角色],我想[做什么],以便达到[什么目的]。 用户场景全面性
技术故事 在用户之外增加“技术角色”完善用户故事,技术故事主要侧重点在技术约束上不应当替代用户故事,比如“作为[信息安全员]我想[单向加密登录密码]以便[防止用户密码泄露]”,用户故事+技术故事形成完整的业务及功能场景描述。 技术约束条件
领域模型 通过领域驱动建模或者数据建模方法,抽象业务实体或数据模型,此模型不应当完全映射为数据库表模型。 业务变化性
开发架构 基于场景+模型划分模块、子系统、系统,在这一环节就可以使用分层架构等设计方法组合架构构件 高内聚低耦合
部署架构 结合软件系统的物理环境,包括主机、网络、终端等组合物理部署架构设计 物理硬件优缺点
重点过程 对于业务流程中比较复杂的业务过程,采用过程视图等方式进行细化确定 复杂业务共享

业务需求

使用Scrum敏捷迭代开发的知识作为背景,讨论下如何设计一套Scrum敏捷项目管理系统。下图是Scrum敏捷迭代的研发管理流程,使用这个流程图作为原始业务需求。

Scrum敏捷开发流程 1.png

用户故事

UserStory - 作为[角色],我想[做什么],以便达到[什么目的]

首先使用UserStory用户故事从业务需求中抽象业务模型如下。 2.png 业务模型重点考虑的是全面性,不要遗漏用户场景或者技术约束,可以采用系统干系人期望的角度进行分析。

技术故事

技术故事的表现形式与用户故事相同,将系统隐藏NPC加入到角色

然后在用户故事基础上,增加系统隐藏NPC(研发人员/测试人员/安全人员/运维人员等)的行为目的。

场景 Role - 角色 SO - 行为 Goal - 目的
系统运维 安全人员 登录密码单向加密 防止用户密码泄露
系统测试 测试人员 项目产品任务数据接口导出 自动化测试使用
系统测试 研发人员 Backlog采用展示模板配置方式设计 兼容Backlog类型增加
系统测试 运维人员 系统规范化日志打印 问题排查

注:以上用户故事和技术故事主要用于设计演示,其中的逻辑设计并不严谨

领域模型

从用户故事+技术故事抽象领域模型

领域模型主要划分系统的高内聚模块或者子系统,重点在边界。《领域驱动设计》是一种领域模型建模的方法。 5.png

开发架构

从领域模型划定的边界抽象模块或子系统

开发架构规定了开发模块子系统,并间接影响模块间的技术通讯,比如相同上下文Context内的模块可以直接调用Service,不同上下文Context的模块应该通过聚合根或者消息服务调用实现低耦合。 6.png

部署架构

物理世界的部署方式

部署架构的基本单位是终端/网络/设备等,主要用于描述系统部署方式。 3.png

过程视图

过程视图可以采用UML泳道图方式描述

过程视图主要针对复杂过程梳理,用于团队共享。一般来说只有复杂过程需要使用过程视图描述。 7.png

注:这个过程并不复杂,主要用于表达方式演示

总结

架构设计画板

架构设计画板就是模型映射设计方法的逻辑描述。模型映射设计方法就是从业务需求和专业技术出发,经过用户故事和技术故事的抽象建模,映射到领域模型、开发架构、部署架构和重点过程四个视图的设计方法,非功能性需求约束贯穿始终。 9.png

推荐

以下只代表相关方向的知识,推荐学习相关知识构建体系化专业能力。 10.png

猜你喜欢

转载自juejin.im/post/7016229592759271460