每个业务都有一个对应的业务模型,这个业务模型设计的时候,完全不需要考虑任何软件设计的思想,比如对象的抽象、继承、存储、性能,等。我们是从业务本身出发,分析业务边界范围内的各种业务概念,以及业务概念之间的关系,通常我们可以使用一个业务模型的图来表达这些业务概念以及业务概念之间的关系。那么如何得到一个业务模型呢?最常见的有名词动词形容词分析法,还有比如四色原型分析法,都可以。找一个适合自己的就行;业务模型本身非常有价值,它提炼了领域内业务的核心概念及其关系,可以帮助我们更好的理解业务本身。
我的工程实践选题是《基于深度强化学习的智能控制系统设计》,
(1) Collect application domain information
该项目的应用场景为:能够让Agent能够不断学习,从周围环境获取信息并能够选择最佳的action来一步步的完成Agent的最终目标,例如让一个机器人或者一个小车能够不碰撞地到达目的地,并且能够自动避障。用户直接用这个训练好的能够规划路径的Agent来实现自己的需求,例如扫地机器人,甚至用在自动驾驶领域。
(2) Brainstorming
User Story去找出领域对象:
用户:提出要求,指定机器人的工作;
开发人员训练Agent:确定性模型可以用蒙特卡洛或者时间差分算法来不断的让Agent去根据当前状态选取action,不断的根据及时奖励更新状态的Value值;而现实中环境是复杂无法确定的,所以要用深度学习能根据摄像头采集到的图片能够用DQN算法得到每个动作的好坏程度,然后去选择相应的动作,慢慢让神经网络能够直接给出最佳的动作,实现智能的动作规划;
机器人:能够根据训练好的参数,实现指定的功能。
大致就是这样子,至于类-属性/属性值-关系,也类似于上面的描述。
以下是结合工程实践所做的类图: