zoukankan      html  css  js  c++  java
  • python day 17: UML(统一建模语言)

    python day 17

    1. UML:unified modeling languages,是一种基于面向对象的可视化建模语言。

    2. 画图语言:画图要合理。即符合逻辑。

    3. 历史:
      3.1. 软件功能越来越强大,导致不可维护性,出现了软件危机,国际组织,召集了50个顶尖程序员解决这个问题。
      3.2. 软件工程:用工程学的方法论来指导软件开发,目的是来解决软件危机。
      3.3. 按照工程学的角度,最重要的一步就是建模。
      3.4. 建模:建立模型。图纸+沙盘。模型分为很多种角度。
      3.5. 在中国,软件的大多数消费者是政府。政府采购计划有保护政策。

    4. 软件公司人员构成:
      4.1. 系分:系统分析员
      4.2. 项目经理(pm):外国的项目经理都是经验丰富的。外国可以做一辈子开发。外国生活成本小,中国生活成本大,中国的程序员浮躁,经常跳槽。主要负责项目协调,沟通能力很强。
      4.3. leader组长:管理经验要丰富。
      4.4. 业务咨询:在中国,往往比程序员工资要高。
      4.5. 开发人员
      4.6. 设计人员:全程参与项目。
      4.7. 业务人员
      4.8. 测试人员
      4.9. 技术顾问

    5. cmm: capability maturity model。能力成熟度模型,印度提出来的。

    6. 三类企业的划分:
      6.1. 一类企业:卖标准,ajb, j2ee.
      6.2. 二类企业: 卖产品,
      6.3. 三类企业:做项目,

    7. 软件工程的生命周期---瀑布模型:使用软件工程指导软件开发,有优点,也有缺点。
      7.1. 生命周期的图示:软件生命周期
      7.2. 五个阶段
      7.2.1. 需求分析:价值最高。
      7.2.1.1.问题定义:要做什么样的系统,目标是什么?
      7.2.1.2. 可行性研究:
      时间可行性:限定时间内能开发出来吗?
      经济可行性:对方出得起我想要的钱吗?
      技术可行性:技术上能实现吗?
      7.2.2系统分析和设计:价值第二高。
      技术含量比较高,有经验的人才能胜任。
      概要设计
      详细设计
      7.2.3. 写代码:coder
      7.2.4. 测试:也是有技术含量的。但不到专业程度,就没有技术含量。调试就量在测试。单元测试。都是在提高软件的健壮性。
      单元测试,白盒测试,能看到源码来测试的。
      集成测试,墨盒测试,看不到源码的。
      冒烟测试,
      压力测试,大流量压力,loadrunner,ab|apache
      7.2.5. 维护:纠错性维护和改进性维护。
      7.3. 瀑布模型:依赖性强
      缺点:慢
      7.4. 真实的项目是怎么运作的?真实的项目是怎么运作的?

    8. 软件生命周期---RUP(统一软件开发过程)
      统一软件开发过程(Rational Unified Process,RUP):一个通用的软件流程框架,以架构为中心,用例驱动的迭代化开发流程。对于实现的项目有很强的指导意义。
      RUP用二维坐标来描述。横轴通过时间来组织,是过程展开的生命周期特征,体现开发过程的动态结构;纵轴以内容来组织,体现开发过程的静态结构。
      RUP

    四个阶段:
    初始阶段:主要人员是项目经理和系统分析师,主要任务是系统可行性分析,创建基本的需求,识别系统的关键任务。
    细化阶段:主要目标是创建可执行的构件基线,精化风险评估,捕捉大部分的系统功能需求用例,为构造阶段创建详细需求。主要就是展现用户所期望的需求。
    构造阶段:完成所有的需求,分析和设计,该阶段的制品将演化成最终系统。
    交付:将完整的系统部署到用户所处的环境中。
    RUP是不断迭代的。
    RUP分为6个核心过程工作流和3个核心支持工作流。
    OOP(面向对象编程):OOA(面向对象分析),OOD(面向对象设计)。
    建模的原则:
    正确的模型
    使用者的身份和使用的原因是评判模型好坏的关键。
    必须保证简化过程不掩盖关键问题。
    学uml的目标:
    能看懂产品经理或系统分析设计人员画的图 。
    UML中的图:
    静态模型图:描述系统的静态结构的。
    用例图:use case diagram
    用例图(use case diagram):也称为用户模型图,是从客户的角度来描述系统功能。是第一步。
    参与者(Actor):与系统打交道的人或其他系统即使用该系统的人或事物。用人形图来表示参与者。
    用例(use case):代表系统的某项完整的功能。在UML中用一个椭圆表示。
    关系:定义用例之间的关系。-----泛化关系,扩展关系,包含关系。
    关联关系:角色与用例之间的关系。用户有用户登录功能。
    泛化关系,即父类与子类的关系。
    扩展关系,extend,用户验证密码失败可以找回密码功能。
    包含关系:include,虚线箭头连接,实行此功能的先决条件。
    类图 class diagram
    定义:
    类图是面向对象系统建模中最常用的图,是定义其他图的基础。
    类图主要用来显示系统中的类,接口,以及它们之间的关系。
    类图

        类图包含的主要元素有类,接口和关系,其中关系有关联关系,泛化关系,依赖关系,实现关系。在类图中也可以包含注释和约束。
        类是类图的主要组件,由类名,属性,方法3部分组成。UML中属性和方法是可选的。
    
        UML中公有用+,私有用-,保护类型用#表示,但是软件工具可以自定义。
        UML中类图的关系:
            关联:强调的是实体之间有一定的数量上的对应关系。
                图示:
    

    关联

    关联的多重性

            聚合:不强调生命周期,但是强调整体和部分。
    

    聚合

            组成关系:
    

    组成关系

                代码中实现聚合与组成:
    

    代码实现聚合与组成

            泛化:在UML中,泛化关系是用来表示类与类,接口与接口之间的继承关系。泛化关系有时也称为"is a kind of "关系。就是类的继承。用一条实绩空心箭头由子类指向父类。
    

    泛化

            依赖:对于两个相对独立的系统,当一个系统负责构造另一个系统的实例,或者依赖另一个系统的服务时,这两个系统之间体现为依赖关系。
    

    依赖

            实现:类与接口之间的关系,由类指向接口。有两种表现形式,取决于接口的表现形式:
    

    实现一

    实现二

                接口在UML中一个带有名称的圆圈表示,并且通过一条实绩与它的模型元素相连。有时候接口也使用普通 类符号表示。
    
    动态模型图:描述行为的。
        时序图:用于描述对象之间传递消息的时间顺序,即用例中的行为顺序。
                图一:
    

    时序图

                图二:
    

    时序图二

            基本概念:
    

    基本概念一

    基本概念二
    一个例子:
    例子

        活动图本质上就是流程图。它用于描述系统的活动,判定点和分支等。通常描述方法内部的调用过程。
            基本概念:
                图一:
    

    活动图

                图二:
    

    活动图2

            例子:
    

    例子

        状态图:通过建立对象的生存周期模型来描述对象随着时间变化的动态行为。
            基本概念:
                    图:
    

    基本概念

                    图:
    

    例子

        协作图:也叫合作图,是一种交互图。
                时序图主要侧重于对象间消息传递在时间上的先后关系,而协作图表达对象间的交互过程及对象间的关联关系。
                例子
                    图:
    

    协作图

        对象图:
            例子:
    

    对象图

        包图:
            基本概念:
    

    包图

        组件图:
            基本概念:
    

    组件图

        部署图:
            基本概念:
    

    部署图

  • 相关阅读:
    小程序中自定义组件
    rem是如何实现自适应布局的?
    基于vue前端状态管理模式
    vue项目使用keep-alive的作用
    JS移动元素的方法
    es6 promise then对异常处理的方法
    async/await 中await接收的promise的问题
    angularjs ngRoute demo
    angularjs $watch demo
    Html5 Geolocation demo
  • 原文地址:https://www.cnblogs.com/lanxing0422/p/pythonday17.html
Copyright © 2011-2022 走看看