分析、设计的理解
- 分析是对软件进行需求分析(明确所要做的内容),技术可行性分析(实现软件的可行性),风险评估分析(可能面临的问题),强调对软件的认识与研究。
- 设计是设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及编写具体的代码,形成软件的具体设计方案,强调的是软件的具体实现。
面向对象的分析与设计的优势
以人类对世界的认识为原型,将程序的执行者抽象为一个个实体(对象),简化设计复杂度,便于多人协作共同开发,同时,封装、继承、多态等特性丰富编程技巧,易于实现复杂的功能。
UML(统一建模语言)的作用
UML(Unified Modeling Language,统一建模语言) 是一组用于描述OOAD过程的图形化表达方式。
- UML作为草图:非正式、不完整的图,借助可视化语言的功能,可以用于探讨问题或解决方案空间的复杂部分。
- UML作为蓝图:相对详细的设计图,用于逆向工程中对现有代码可视化或者是前向工程中的代码生成
- UML作为编程语言:完成软件系统可执行规格的说明。
其具体的种类有:
- 用例图:用户角度:功能、执行者
- 静态图:系统静态结构
- 类图:概念及关系
- 对象图:某种状态或时间段内, 系统中活跃的对象极其关系
- 包图:描述系统的分解结构
- 行为图:系统的动态行为
- 交互图:描述对象间的消息传递
- 顺序图:强调对象间消息发送的时序
- 合作图:强调对象间的动态协作关系
- 状态图:对象的动态行为。状态-事件-状态迁移-相应动作
- 活动图:描述系统为完成功能而执行的操作序列
- 交互图:描述对象间的消息传递
- 实现图:描述系统的组成和分布状况
- 构件图:组成部件及其关系
- 部署图:物理体系结构及软件单元的对应关系
软件范围(需求)控制的可行性
项目的首要约束是 scope(范围), time(工期), quality(质量) 和 budget(预算) 四个基本元素,也称为项目管理三角模型。在实际软件项目中,即使在有明确的软件开发合同条件下,这四个约束并不是不可商量的。原因在于软件生产是易变、不可见、独特的智力生产!另一方面,软件的本质特征(complexity(复杂性),conformity(一致性), changeability(可变性),invisibility(不可视性))导致软件开发的较为困难,并且由于客户需求往往不够明确,导致开发软件范围的不可控更加严重。
但是,在软件项目中应该使用2/8 法则,细化 20% 有效需求,可满足 80% 客户需要,所以,我们应该将80%的工程量用在20%的需求上,刚开始我们只需剔除客户都不明确的需求,着手于最为重要的需求任务上,之后在不断地用户反馈和迭代中完善软件。
看板管理
团队看板如下:
UML绘图工具使用
例图选自《UML和模式应用》Page 7:图1-5