这是我参与 8 月更文挑战的第 5 天,活动详情查看: 8月更文挑战web
为了便于和客户、策划沟通,经过文档的形式来展现本身对客户需求的理解程度,省得作偏了,作出来的不是客户或策划须要的。 开发成本上,优先级等方面考虑 弄清楚用户要解决什么问题,从用户提供的,用户未提供但潜在存在的等方面全面地理解、挖掘、分析出用户真实、准确的需求markdown
从客户的角度来描述系统功能,在需求分析文档里使用并发
参与者:使用该系统的人或事物,以人形图标表示app
用例:表明系统某项完整的功能,用椭圆表示oop
关系:定义用例之间的关系,有泛化关系,扩展关系,包含关系post
表示同一业务目的(父用例)的不一样技术实现(各个子用例),用三角箭头从子用例指向父用例 好比支付包含了分期支付,支付宝支付,贷款支持等,但同时也能够用来表示基于某个参与者有更多的用例。spa
包含:一个用例能够包含其余用例具备的行为,并把它包含的用例行为做为自身行为的一部分,采用虚线箭头加 include 指向被包含的用例 扩展:在完成某个功能的时候偶尔会执行另一个功能,用虚拟箭头加 extend 指向被包含的用例。线程
类、接口、关系code
类名、属性和方法orm
公共类型用 + 表示,私有用 - 表示,保护用 # 表示
对应 TypeScript 里的 public private protected
泛化关系:类与类,接口与接口之间的继承关系,好比圆形继承于形状类,用实线空心箭头指向父类
实现关系:类与接口之间的实现关系,用虚线空心箭头指向父类
依赖关系:一个系统依赖另外一个系统的服务,好比自行车经过打气筒类来充气,用虚线箭头指向被依赖的类,不会为某辆自行车专门配个打气筒
关联关系:存在固定的对应关系,好比主人和自行车,公司与员工等,用实线箭头指向被关联的类。
聚合关系:总体和部分的关系,两个类处于不一样的层次上,一个表明总体,一个表明部分,好比汽车由轮胎以及其它零件组成,用空心菱形箭头表示,其中菱形指向总体,箭头指向部分
首先组合、聚合是关联关系的一种,关联的两个类是属于同一层级,而聚合、组合是不一样层级,是总体与部分的关系,另外组合关系里的部分的生命周期依赖于总体。 表示方式也不一样,关联是用实线箭头指向被关联类,聚合是用空心菱形箭头,空心菱形指向总体,箭头指向部分,而组合则是用实心菱形箭头表示,实心菱形指向总体,箭头指向部分。
描述对象之间传递消息的时间顺序,即用例中的行为顺序。其中纵轴是时间轴,横轴是表明在协做中各个独立的对象
选项表示可能会发生,也可能不会发生,通常用于只有一个 if 的场景 抉择则用在多个 if 或者有 else 的场景
描述系统的活动,断定点和分支