【1】面向对象技术概述 一、软件开发方法 常见的软件开发方法有面向过程的开发方法,面向数据结构的开发方法和面向对象的开发方法。其中面向过程的开发方法也称为面向功能的软件开发方法或面向数据流的软件开发方法。结构化方法强调过程抽象和功能模块化。它一般利用图形表达用户需求,使用的手段有数据流图、数据字典、结构化语言、判定表及判定树等。面向数据结构的开发方法适合于求解算法依赖于问题描述的数据结构之类的情况。这种方法最适合在完成了软件结构设计之后,用它来设计每个模块的处理过程。它根据问题的数据结构定义一组映射,把问题的数据结构转换为问题求解的程序结构。面向对象开发方法思想是:对问题空间进行自然分割,以更接近人类思维的方式建立问题域模型,以便对客观实体进行结构模拟和行为模拟,从而使设计出的软件尽可能直接地描述现实世界,构造出模块话的,可重用的,维护性好的软件,同时限定软件的复杂性和降低开发维护费用。它是通过面向对象的分析(OOA)、面向对象的设计(OOD)和面向对象的程序设计(OOP)等过程,将现实世界的问题空间平滑地过渡到软件空间的一种软件开发过程。目前,典型的面向对象的开发方法是UML和统一开发过程(RUP)。 二、软件生命周期 软件生命周期是指软件从立项、功能确定、设计,到开发成功投入使用,并在使用过程中不断地修改、增补和完善,直至被新的需要所替代而停止该软件的使用的全过程。
阶段 |
研究问题 |
给出的标准和文档 |
问题定义 |
问题是什么 |
目标和规模报告书 |
可行性研究 |
有可行的方法吗 |
高层逻辑模型、数据流图、成本效益分析 |
需求分析 |
系统做什么 |
逻辑模型、数据流图、数据字典、算法描述 |
总体设计 |
如何解决问题 |
系统流程图、系统结构层次图 |
详细设计 |
怎样具体实现 |
编码规格说明、HIPO图或PDL |
编码和单元测试 |
给出正确的程序模块 |
源程序清单、单元测试方案和结果 |
综合测试 |
给出符合要求的软件 |
综合测试方案和结果、一直的软件配置 |
维护 |
持久地满足用户需要 |
完整地维护记录、文档、软件新版本 |
三、软件开发模型 软件开发模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。分为:瀑布模型、原型模型、螺旋模型、增量模型和喷泉(迭代)模型。 四、面向对象方法的特点 面向对象的方法学可以概括为下列方程:OO=Object+Classes+Inheritance+Communication with Messages 也就是说面向对象就是既使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。 五、面向对象分析(OOA) 面向对象分析的关键,是识别出问题域内的对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。分析就是抽取和整理用户需求并建立问题域精确模型的过程。基本步骤有 问题域分析、发现和定义对象和类、识别对象的外部联系、建立系统的静态结构模型和建立系统的动态行为模型。 六、面向对象设计(OOD) 面向对象设计是把分析阶段的需求转变成符合成本和质量要求的、抽象的系统实现方案过程。细分为系统设计和对象设计。设计准则包括 模块化、抽象、信息隐藏、弱耦合、强内聚和可重用。设计过程包括 设计对象和类、设计系统结构、设计问题域子系统、设计人-机交互子系统、设计任务管理子系统、设计数据管理子系统和设计优化。 七、面向对象方法和工具 面向对象方法主要有 Booch、Jacobson、Coad-Yourdon、James Rumbauth开发方法。已发展成当前最流行的系统分析方法和软件开发技术,并且已经逐步统一、融合形成UML语言。 参考文献: [1] 唐学忠等著. UML面向对象分析与建模. 电子工业出版社. 2008 [2] 蔡敏等著. UML基础与ROSE建模教程. 人民邮电出版社. 2006 [3] Carlo Ghezzi等著. 施平安译. 软件工程基础(第2版) 清华大学出版社. 2003 [4] 参考网站: http://www.omg.org/UML http://www.rational.com/UML http://www.software.ibm.com/ad/ocl 【2】UML语言基础 一、UML的主要内容 UML主要文件包括UML概要、UML语义、UML表示法指南和对象约束语言规约。 二、UML的主要特点 UML主要特点包括统一标准、面向对象、可视化及表示能力强大、独立于过程和容易使用掌握。UML不是一个独立的软件工程方法,而是面向对象软件工程方法中的一个部分。UML贯穿软件系统开发的需求分析、系统分析、系统设计、系统实现和测试五个阶段。 三、UML建模中9种图的特点 1. 用例图 用例图描述系统外部的活动者(角色)与系统提供的用例之间的某种联系。它着重从系统外部活动者的角度来描述系统需要提供哪些功能,并且指明了这些功能的执行者是谁。 2. 静态图 静态结构包括类图、对象图、组件图和配置图。 类图主要用来描述系统中各种类之间的静态结构。类与类之间的各种联系以及类的属性和行为都可以在类图中描述。 对象图是类图的一种变形,是对类图的实例化,即系统在某一时期或者某个特定时刻可能存在的具体对象实例以及它们之间的具体关系。 组件图描述程序代码的组织结构,说明各组件间的依赖关系,组件可以是源代码组件、二进制目标码组件、可执行文件组件或文档型组件。组件一般与类图相关,一个组件图总能映射到一个或多个对象类、接口或协同。 配置图描述系统中物理节点及它们之间的联系,说明系统中硬件和软件的物理配置情况和体系结构。 3. 动态行为图 动态行为图包括交互图(顺序图与协同图)、状态图和活动图。 顺序图描述几个对象之间的动态协作关系,重点反映了在一次特定的交互过程中对象之间传送消息的时间顺序,即在系统执行过程中某个特定时刻所发生的事情。 协同图与顺序图作用相似,但侧重描述各个对象间存在的消息收发关系,而不突出这些消息发送的时间顺序。 状态图是对类的一种补充描述,展示类对象所具有的所有可能的状态以及某些事件发生时其状态的迁移情况。 活动图描述系统中各种活动的执行顺序,重点在对象间的控制流,常用来描述一个用例的处理流程或某种交互流程。 UML图分类
类型 |
包含 |
静态图 |
类图、对象图、包图 |
行为图 |
状态图、活动图 |
用例图 |
用例图 |
交互图 |
顺序图、协作图 |
实现图 |
组件图、部署图 |
参考文献: [1] 唐学忠等著. UML面向对象分析与建模. 电子工业出版社. 2008 [2] 蔡敏等著. UML基础与ROSE建模教程. 人民邮电出版社. 2006 [3] Carlo Ghezzi等著. 施平安译. 软件工程基础(第2版) 清华大学出版社. 2003 [4] 参考网站: http://www.omg.org/UML http://www.rational.com/UML http://www.software.ibm.com/ad/ocl 【3】用例图 一、用例图的描述 用例(Use Case)是指系统的外部事物(活动者、设备或外部系统)与系统交互,它表达了系统的功能,即系统所提供的服务。 用例图是一种描述用例的可视化工具,用简单的图形元素表示出系统的活动者、用例及它们之间的关系,准确地表达了活动者与系统的交互情况和系统所能提供的服务。用例图是从用户角度而不是从开发者角度来描述对软件产品的需求,分析产品所需的功能和动态行为。 二、活动者 确定活动者。活动者可以通过泛化关系定义。 1. 系统的主要客户是谁 2. 谁从该系统获取信息 3. 谁向系统提供信息 4. 谁来安装、操作该系统 5. 谁来关闭该系统 6. 在预定的时刻,是否有时间自动发生 7. 谁使用或删除系统中的信息 8. 系统从何处获得信息 三、用例描述 用例的描述其实是一个关于角色和系统如何交互的规格说明,该规格清晰明了,没有二义性。一般情况下,用例描述包括 用例的目标、用例是怎样被启动的、用例和活动者间的消息流、用例的多种执行方案、用例怎样才算完成并把值传给了活动者。用例描述可以使用用例模板来实现。 用例模板 用例名称 (用例名) 用例目标 (用例在系统中的目标) 级别 (概要任务) 活动者 (此用例的活动者) 状态 前提条件 用例执行前系统应具有的状态 置后条件 用例成功执行后系统应具备的状态 主路径 用例主路径的名称 可选路径 用例的可选路径 例外路径 用例的例外路径 四、用例间的关系 用例除了与其活动者发生关联外,它们之间也存在一定的联系,包括泛化关系、使用关系、包含关系、扩展关系等。 五、用例建模 建立用例图一般可按以下步骤进行: 1. 确定系统的边界和范围,明确系统外部的活动者和外部系统。 2. 确定每个活动者所期望的系统行为。 3. 把这些系统行为作为系统的用例。 4. 把公共的系统行为分解为新的用例,供其它用例引用。把变更的行为分解为扩展用例。 5. 编制每个用例的剧本。 6. 绘制用例图。 7. 区分主业务流和异常情况的事件流。可以把表达异常情况的事件流的用例画成一个单独的子用例图。 8. 精化用例图。解决用例图的重复与冲突问题,简化用例中的对话序列。高层次的用例可以分解为若干下属子系统中的用例。 六、例子 在图书管理系统中,工作人员可以维护(增加、删除、更新)读者信息,可以维护书籍信息,读者可以通过图书管理员请求借书、还书和续借,读者可以登录并查询书籍和借阅信息。给出用例图。 参考文献: [1] 唐学忠等著. UML面向对象分析与建模. 电子工业出版社. 2008 [2] 蔡敏等著. UML基础与ROSE建模教程. 人民邮电出版社. 2006 [3] Carlo Ghezzi等著. 施平安译. 软件工程基础(第2版) 清华大学出版社. 2003 [4] 参考网站: http://www.omg.org/UML http://www.rational.com/UML http://www.software.ibm.com/ad/ocl |