鱼和熊掌
鱼:开发和维护代价较小、结构较简单但是缺乏某些灵活性的设计方案
熊掌:灵活、易扩展,但结构复杂,开发和维护成本较高的设计方案
舍熊掌而取鱼
需求分析
确定项目的目标和范围
项目干系人
非功能性需求
功能性需求,用例分析
撰写《需求说明书》
完美和缺陷
只实现你真正需要的东西,不要去实现你认为需要的东西
均衡三角形
九个女人也不能在一个月内生出一个小孩,项目的工作量、资源和进度之间绝不是简单的乘法或除法关系
在用户面前,项目组成员应当承担起解释和建议的职责,但有关需求的最终决定必须由用户决定。
利用原型与用户交流并确定需求的做法是行之有效的。
描述需求的文句应尽量简单,采用清晰、明白的“主谓宾”句式,而不能像写散文或写小说那样使用各种复杂的从句和修辞方法。
任何项目都会发生变化,程序员应当对项目过程中的需求变化做好充分准备。
UML
UML的主要价值在于,它为我们使用面向对象概念进行可视化设计提供了一套丰富的表达和描述符号。
UML就像是一种程序员使用的世界语,能有效地促进开发人员之间的交流和沟通,但就像人类的任何语言都无法保证演讲者一定能口若悬河、字字珠玑一样,UML语言也不能确保程序员能获得杰出的设计方案。
用例模型
在UML语言中,用例模型是从外部用户和外围系统的角度,分析和考察待开发系统的行为,并通过参与者与系统之间的交互关系描述了系统对外提供的功能特性——这种参与者与系统功能特性间的交互关系就是我们所说的“用例”。
(1)哪些参与者会和我们的系统发生交互?
(2)我们的系统需要实现哪些功能特性?
从本质上说,用例模型是一个叙述性的文档,除了绘制用例图外,我们还应使用描述性的文字或其他类型的视图来概括最终用户完成某个任务的具体过程,确定用户操作系统软件并得到预期结果时的事件发生顺序。用例模型只描述了软件的功能性需求,对软件的非功能性需求,我们还必须借助其他的表述手段。
用例三要素:
1、用例是由系统的最终用户或外部环境发起的,用例的发起者被成为参与者。
2、每个用例只描述单独的任务,用例所描述的任务必须是符合用户意图的、完整的工作内容。
3、用例必须产生一个对用户有意义的结果。
用例建模的步骤:
1、确定系统边界
2、确定参与者
3、找出所有的用例
4、确定每个用例的级别
5、撰写用例的文字描述
6、画出以整个系统为对象的顺序图
用例级别:高层用例、用户目标级用例和子功能用例