面向对象系统分析与设计(1)
专有名词
分析:建立模型,收集需求
- 专业定义:探索问题和需求,而不是解决方案。涉及的词汇:需求、用例、约束。
设计:模型的实现
- 专业定义:对能够满足需求的解决方案的概念性的描述,而不是具体的实现。涉及的词汇:对象、结构、部署、UI。
面向对象系统分析与设计:
- 面向对象分析:强调对问题相关的对象或者概念的描述;
面向对象设计:强调**对象的定义**,以及为了满足需求对象之间的进行的**合作**
面向对象模型 OO 的作用:
- 便于找到解决关键问题的答案;
- 便于将现实世界的实体建模成软件对象,完成复杂管理;
- 抽象数据类型 ADT:例:将后进先出的序列抽象为栈
- 面向过程设计(设计思维:做某些事的规范、方法、理论等):
- 对过程做选择;
- 选择过程实现的最好的算法,专注于 action 而不是 data;
- 模块开发:
- 划分成细小的彼此关联的模块;
- 概括 + 抽象 = 信息隐藏
- 使用接口,接口的作用:
- 概括模块的内容,外部开发者无法获取到内部信息;
- 模块内部的改变不会改变接口,更不会影响到外部其他模块;
- 挑战点:
- 定义好的模型;
- 选择合适的软件结构;
- 仅凭模块化并不足够;
- 面向对象模型的 4 个元素:数据抽象,概括、继承、多态。
- Programming 经历的几个阶段:
- 面向过程;
- 模块化编程
- ADT 编程;
- 面向对象编程;
- 面向对象编程的优势:
- 编程人员精力偏向于软件接口和数据类型的设计,而不是底层实现;
- 提供增量的、迭代性软件开发,尽早发现 error,能够快速开发;
- 合适的接口,让软件稳定性提升;
- 能够更多思考将来的需要;
- 面向对象编程的步骤: dice game 为例
- 定义用例——play a dice game;
- 定义主要模型——拆解概念、属性、关联,构成可视化的概念
- 定义关系图——描述关系,而非对现实世界的模仿
- 定义设计类图——阐述属性和方法,展示类 class,而不是现实世界的概念。
- SDLC 系统开发生命周期,是理解信息系统如何支持业务需求,如何设计、此系统如何构建和如何移交给用户的过程。
- 步骤分为:
- 项目设计阶段:识别问题;
- 分析阶段:调查、理解问题和需求;
- 设计阶段:详细描述解决方案;
- 实现阶段:建立解决问题的系统;
- 支持阶段:系统使用、维护、功能扩展
- 有瀑布流、分步开发、并行开发、模板、即时模板等等表现形式
- 步骤分为:
- 方法、模型、工具、技术
- 方法:综合性的指导,是模型、工具、技术的集合。
- 模型:代表真实世界的某一面,但不完全等同于真实世界。举例:图表、项目计划。
- 工具:创建模型等时的软件支持,从小的画图代码到大的软件工具都属于此类。
- 技术:指南的集合,一步步的精准指示、或者简单的建议都属于此类。
- 其他趋势:UP、XP、Scrum、Crystal Methods、TDD、FDD等,不详述