目录
学完了面向对象的基础知识后,很明显你还是不知该如何下手,凡是都得有个章法
此刻有经验的人可能会想到瀑布模型、螺旋模型、迭代开发、敏捷、RUP等一堆软件工程相关的软件开发流程,但对于大部分人来说这些流程仅仅只是项目管理上的流程
本节我们就带大家来了解下,作为一名程序员基于面向对象开发程序的开发流程:
需求模型--》领域模型--》设计模型--》实现模型
需求:客户想要的效果,对客户有价值的事情
功能:系统为了实现客户的价值而提供的能力/功能
汽车:驾驶是需求,刹车、加速、转弯是功能
打印机:打印是需求,进纸、设定、与电脑连接等是功能
pos机:买单是需求,商品扫描、金额汇总、收银等是功能
1/3的项目失败或陷入困境是因为需求原因导致的,老话说得好“garbage in,garbage out”,屎上了生产饼干的流水线,最后产出的是像饼干一样的屎
修复需求错误的问题成本极高
ps:在需求阶段修复错误,成本只需要0.1-0.2即可
结论:需求错了,几乎要把软件项目重做一遍
ps:why是核心
性能performance
性能是系统提供相应服务的效率。主要包括响应时间、吞吐量
性能是很多系统架构设计的关键约束条件之一
例如,同样一个web网站,虽然都是提供信息给用户流量,设计一个日访问量1w的网站与日访问量10亿的网站,二者的设计截然不同
成本cost
成本指为了实现系统而需要付出的代价
成本也是很多系统架构设计的关键约束之一
例如客户只愿意花100w,而我们却设计了一个耗费1000w的系统
时间time
可靠性reliability
安全security
合规性compliance
技术性technology
有的客户可能要求我们采用某种技术
例如客户现在都是windows服务器,要求我们基于windows平台开发
兼容性compatibility
ps:5w+1h属于功能属性;8c属于质量属性
需求分析阶段不区分面向对象还是面向过程
领域模型是完成从需求分析到面向对象设计的一座桥梁
领域模型是对领域内的概念或现实世界中对象的可视化表示,又称为观念模型,领域对象模型,分析对象模型。
领域模型专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系
发掘重要的业务领域概念
建立业务领域概念之间的关系
从用例中找名词(找完后需要删除不是领域对象的名词,具体删除什么,与不同领域有关,没有统一标准,靠经验)
加属性(有些属性并没有在用例中明确给出,靠行业经验自己添加)
连关系(画UML图)
领域类映射(不是全盘拷贝)
应用设计原则和设计模式
拆分辅助类(领域类可以在实现阶段拆分为几个类)
角色:学校、学员、课程、讲师
要求:
选课
who:学生,老师,管理员
where:老男孩
when:任意时间
帮老男孩解决课程管理问题
暂无
管理员,学校,课程,班级,学员讲师,上课记录,作业,分数,学员详细信息,成绩列表,结婚证
筛选:去掉与行业或者说领域无关的名词
管理员,学校,课程,班级,学员,讲师,上课记录,作业,分数,学员详细信息,成绩列表
名字 | 属性 | 备注 |
---|---|---|
管理员 | 无 | 具备所有权限,对于选课系统来说,并不需要管理员的属性,因此在领域模型中,管理员是没有属性的 |
学校 | 学校名,地址,课程列表,班级列表 | |
课程 | 课程名,周期,价钱,大纲 | |
班级 | 班级名,所属学校,课程 | |
学员 | 学员名 | |
讲师 | 讲师名 | |
上课记录 | 班级,课程节次,日期 |
原文:https://www.cnblogs.com/nickchen121/p/10990797.html