zoukankan      html  css  js  c++  java
  • 面向对象分析与设计

    1 用例建模

      统一过程是目前最好的面向对象泛型

      分析工作流, 是为了更深的理解需求, 使设计和实现目标系统更加容易

      统一过程覆盖了三种类

        实体类(分析工作流涉及到的)

        边界类

        控制类

      面向对象分析的三项工作

        用例建模: 目标系统如何来提供功能, 不考虑这些功能的先后顺序, 结果是用例图

        类建模: 确定实体类以及实体类的属性, 结果是类图

        动态建模: 确定由或者对一个实体类的一些操作, 结果是状态图

      用例模型

        以用例的形式描述目标系统的功能性需求

        主要包括三个元素, 参与者+用例+参与者与用例之间的关系 

        参与者: 用户与目标系统用例进行交互时所扮演的角色, 不是目标系统的角色, 而是属于外部, 参与者可能是人也可能是机器也有可能是另外一个系统, 也可能是信息的主动给予者也可能是信息的被动接受者

          参与者需要用一个小人来表示, 要用单数的相关的名称命名

        用例: 用来描述一系列的行为, 对特定的客户返回可观察到的结果, 一个用例描述系统做了什么, 而不是怎么做

          用例用一个椭圆来表示, 在椭圆中标识用例名, 一般用强动词来表示

        关联: 一个参与者可以链接到一个或者多个用例

          用一条直线来表示

    2 用例图

      案例1 电梯系统

      

      案例2 在线商店

      

      案例3 课程注册系统

      

      用例图需要一个用例说明

      用例说明包括: 用例名; 简单描述; 事件流; 与其他参与者或者用例之间的关系; 是否有什么特殊要求; 前置条件; 后置条件; ...

      参与者之间也有可能有关系

        继承关系(泛化): 子参与者继承所有父参与者的行为, 子参与者用空心箭头指向父参与者表示

        

        代理: 请求者发出请求, 实际执行操作的是代理者, 用请求者用虚线箭头指向执行者

        

      用例之间的关系

        泛化: 一个用例可以分成几种用例, 这种情况是泛化的关系, 使用空心三角箭头由子类指向父类用例

        

        包含: 一个用例A执行之前需要执行另一个用例B, 则原有用例A包含另一个用例B,  用实心三角箭头由用例A执行用例B, 且在箭头上面写上<<include>>

        

        扩展: 一个用例A的某种结果可能形成另一个用例B, 这个用例B就扩展了用例A, 用实心三角有用例B指向用例A

        

    3 类建模

      类建模的产品是类图

      类图: 分析阶段的类图, 表达的是软件系统中的实体类与他们之间的关系, 针对功能性需求的一种静态视图

      类图表达了模型的静态结构(类, 类的内部结构, 类之间的关系)

      形成类建模的方法

        名词抽取

        CRC(类-职责-合作)卡片方法: 需要较多的领域知识, 更适合对类图进行测试

      用名词抽取方法实现类建模

        1 对目标系统的业务进行言简意赅的描述

        2 从描述中抽取出名词, 这些名词很可能成为候选类

        3 对提取出的名词进行筛选处理, 不能成为实体类的排除, 不相关的排除

        4 结合用例图等形成初步的类建模

    4 动态建模

      动态建模的产品是状态图

      状态图是类图的补充, 描述了一个类的实例可能的状态以及造成这些状态的事件, 这些事件可能是造成这些状态转变的行为

      不是所有的类都需要状态图

      案例1 CD播放器

      

      案例2 图书馆的书的状态

      

      案例3 购物系统的订单

      

      案例4 电梯

      

    5 面向对象测试

      crc卡片: 对每个类都贴上一个卡片, 该卡片记录了: 类名; 类的功能; 该类将激活的别的类

      crc卡片将明确的显示丢失或者不争取的项目

    6 软件系统设计

      通过需求和分析, 回答了what的问题

      在分析和实现之间, 还需要回到how的问题, 这个就是设计

      软件系统设计分为

        架构设计: 软件系统的整体结构 

        模块设计: 功能上相对独立, 又可以继承的

        数据库设计: 存储和处理数据

        数据结构和算法设计: 把软件系统的各个部分连接到一起

        用户界面设计: 易用性, 美观大方

      软件系统设计先进行架构设计, 在执行后面的四种设计

    7 面向对象设计

      主要包括两个工作

        完成类图: 基于分析阶段的简单类图而完成一个详细类图, 将包括所有的类(实体类; 边界类; 控制类)以及类的属性和方法

        完成详细设计: 对类的所有方法进行算法设计, 包括内部变量和数据结构

      实现步骤

      1) 给每个情景构造交互图

        交互图: 完成该情景所涉及的对象以及对象之间传递的消息

        包括顺序图和协作图

      2) 完成类图

        如何给类分配方法

          信息隐藏

          把方法分配给被激活的类或者对象

          做到职责驱动设计

      3) 实现详细设计

      顺序图

        顺序图中有一个矩形, 内含信息组织方式是 类名:对象

        一条竖线从矩形延伸下去表示时间的推移顺序

        可以在其中用箭头表示信息的传递, 在箭头附近附带调用执行的内容等必要信息

        如下表示自己调用自己

        

        条件判断

        

        循环调用

        

      顺序图的具体实例

      

      协作图的实例

      

     

    人若有恒 无所不成
  • 相关阅读:
    《网络是怎样连接的》读书笔记一
    移植mplayer到开发板
    解决ubuntu安装ssh服务无法打开解析包问题
    嵌入式软件工程师面经
    c语言-数组、指针面试题
    Linux命令- echo、grep 、重定向、1>&2、2>&1的介绍
    回调函数的作用
    数据结构-单链表回环函数判断
    算法-一步步教你如何用c语言实现堆排序(非递归)
    算法-快速排序
  • 原文地址:https://www.cnblogs.com/weihuchao/p/6879768.html
Copyright © 2011-2022 走看看