文章目录
- 一 项目背景与目标
- 二 核心需求分析
- 初步需求详细分析
- 需求总结表
- 三 DDD核心概念与开发流程
- 领域和领域专家
- 领域驱动设计开发流程
- 四 潜在扩展需求
一 项目背景与目标
-
项目定位
- 开发基于SaaS的企业管理系统,聚焦软件服务企业的细分市场,功能需求包括工时管理、考勤管理、项目管理、请加管理等核心功能。
- 采用多租户架构,支持企业按需付费使用,降低客户运维成本。
-
迭代规划
- 分三个阶段迭代开发,逐步扩展需求复杂性和灵活性。
- 迭代一目标:实现最小闭环功能,覆盖从需求分析到代码实现的完整流程。
二 核心需求分析
- 领域(Business Domain)/业务领域指的是软件要解决的那些业务问题。在本例里, “企业管理”就是要处理的领域。
- 在领域驱动设计中“领域专家”(业务专家),需要对业务有总体性和本质性的把握,同时对业务发展也要有一定前瞻性。
在很多企业中领域专家是多年业务经验中级管理干部或者是产品经理。
初步需求详细分析
- 目前项目的初步需求如下:
-
租户管理:支持租户(企业客户)的增删改查,确保数据隔离。
-
人员与组织管理:支持部门层级管理(如开发中心、开发组、直属部门)。员工管理:增删改查功能,且员工需归属至单一部门。
- 人员和组织结构图:
- 项目管理
- 客户管理:租户可维护其客户列表,每个客户分配客户经理。
- 合同管理:支持合同增删改查,关联销售负责人及起止时间。
- 项目管理:合同下可创建多个项目,分配项目经理,记录项目周期。
- 客户、合同、项目的关系图:
- 人员分配
- 支持员工跨项目分配,记录预计投入时间百分比。
- 目标:优化人力资源调配,实现利用率最大化。
- 人员和项目将投入的关系:
- 工时登记
- 仅允许已分配至项目的员工登记工时。
- 功能:按周填报每日工时,支持修改及备注。
- 工时登记的界面原型
需求总结表
三 DDD核心概念与开发流程
领域和领域专家
- 领域与领域专家
- 领域定义:系统解决的业务问题(如“企业管理”)。
- 领域专家角色:由资深业务人员或产品经理担任,负责业务本质的抽象与前瞻性规划。
领域驱动设计开发流程
- 开发流程
- 模型建立阶段
- 行为需求捕获:通过事件风暴(替代传统用例建模)识别功能流程。
- 领域建模:用业务语言构建模型,业务专家参与评审。
- 模型实现阶段
- 架构设计:包括微服务(进程间)和DDD分层架构(进程内)。
- 数据库设计与代码实现:将领域模型转化为技术方案。
- 模型建立阶段
- 领域驱动设计主要的开发流程:
- 流程特点
- 非线性的敏捷迭代:各步骤反复穿插,以领域模型为核心驱动。
- 业务与技术边界明确:模型建立阶段禁用技术术语,确保业务可理解性。
四 潜在扩展需求
- 安全性:用户认证与权限控制(如角色基于访问权限)。
- 扩展性:支持动态字段以满足行业差异化需求。
- 数据分析:工时利用率报表、资源负载预测等高级功能。