首页 > 其他分享 >面向对象笔记——面向对象分析的过程

面向对象笔记——面向对象分析的过程

时间:2023-11-18 19:34:20浏览次数:39  
标签:需求 迭代 模型 笔记 面向对象 开发 软件 过程 面向对象分析

面向对象软件过程简介

软件过程的基本概念

  • 软件的诞生及其研发整个生命周期是一个过程,这个过程称之为软件过程。
  • 包括:需求获取(沟通)、需求分析和设计(建模)、实现和测试(构建)、部署和维护
  • 软件过程是描述了实施于软件开发和维护中的阶段、方法、技术、实践及相关产物(计划、文档、模型、代码、测试用例和手册等)的集合
  • 是软件企业研发活动运行的基本框架,并且能够对软件过程改进活动提供支持与帮助。

主要软件过程模型

  • 通用过程:需求定义、软件设计、软件实现、部署
  • 目前采用的软件过程主要有
    • 瀑布模型(waterfall model)

      • 又称为经典生命周期模型,起源于1970s。是一种线性过程流模型,一个阶段活动完成后再开始下一个阶段活动。
      • 特点
        • 阶段间具有顺序性和依赖性
        • 推迟实现的观点
        • 质量保证观点
      • 缺点
        • 客户通常难以清楚的描述所有的需求
        • 响应慢:关于需求的责任和义务一定要在过程的早期阶段清晰界定,这意味着对用户的需求变更的相应较困难
        • 难以及时发现系统问题。
        • 阻塞状态:任务之间存在依赖性,开发团队的一些成员要等待另一些成员工作完成
      • 优点
        • 容易管理:过程可见
    • Agile Modeling

      • 敏捷开发(AgileDevelopment)
        • 敏捷开发的总体目标是通过“尽可能地、持续地对有价值的软件的交付”使客户满意
        • 极限编程(XP)
          • 由价值观、原则、实践和行为4个部分
          • 四大价值观:沟通、简单性、反馈和勇气。
          • 五大原则:快速反馈、简单性假设、逐步修改、提倡更改和优质工作。
          • 12个最佳实践:计划游戏、小型发布、隐喻、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周工作40个小时、现场客户和编码标准
        • 并列争求法(Scrum)
          • 用迭代的方法,其中把每30天一次的迭代称为一个“冲刺”,并按需求的优先级来实现产品。
          • 多个自组织和自治小组并行地递增实现产品。协调是通过简短的日常会议来进行的。
        • 自适应软件开发(ASD)
          • ASD的核心是三个非线性的、重叠的开发阶段:猜测、合作与学习。
        • 水晶法(Crystal)
          • 探索了用最少纪律约束而仍能成功的方法
    • 开发生产中敏捷模型开发思想的应用——DevOps

      • DevOps是Development和Operations的合成词,其目标是要加强开发人员、测试人员、运维人员之间的沟通协调
      • 项目做到持续开发、持续集合、持续交付、持续部署、持续监控
      • DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合
    • 螺旋模型

      • 螺旋模型最初由BarryW.Boehm(美国国家工程院院士)在1988年提出,是一种演进式模型。它结合了原型的迭代性质和瀑布模型的系统性和可控性特点。
      • 螺旋模型是一种风险驱动型的过程模型。采用循环的方式逐步加深系统定义和实现的深度,同时降低风险。
      • 优点
        • 实现风险管理,降低变更风险
        • 确定一系列里程碑,确保利益相关者都能支持。
      • 缺点
        • 很难说服客户以合同形式合作。
        • 依赖大量风险评估专家及风险评估工作。
      • 适用范围
        • 开发大型系统和软件。
        • 预期存在较大风险的项目。
    • 快速原型模型

      • 通过快速建立一个能反映用户主要需求的原型系统,让用户试用,通过实践了解目标系统的概貌,用户试用之后提出修改建议,开发人员按照用户的意见快速的修改原型,如此反复,直到获取用户的真正需求,一旦需求确定,便可根据原型开发
      • 快速原型是一种启发式方法,快速的挖掘用户需求并达成理解上的一致
      • 优点
        • 能渐进地启发客户提出新的要求或任务,促使开发人员和用户达成共识;
      • 缺点:
        • 原型开发会忽略掉非功能性要求,如性能、安全性、可靠性等;开发过程的快速更改意味着没有文档,唯一的设计描述是原型的代码,这不利于长期的维护。
      • 适用场景:
        • 需求模糊。
        • 开发人员对算法效率、操作系统的兼容性,人机交互形式等情况不明确。
    • RUP (Rational Unified Process)

      • 统一过程模型是一种“用例驱动、以体系结构为核心,迭代及增量”的软件过程框架,由UML方法和工具支持。它融合统一了瀑布模型、增量过程模型、演化过程模型、基于构建的开发、面向方面的软件开发这五种基本软件过程。
      • 统一过程是迭代和增量的过程,每次迭代分为四个阶段:
        • 初始始阶段(inception phase)
          • 包括用户沟通和计划活动两个方面,强调定义和细化用例,并将其作为主要模型
        • 细化阶段(elaborattion phase)
          • 根据主要的用例描述设计出详细的系统构架。
            • 构架包括了用例模型、分析模型、设计模型、实现模型(包含一些构件)和实施模型的视图。
        • 构造造阶段(construction phase)
          • 将设计转化为实现,并进行集成和测试。
        • 移交交阶段(transition phase)
          • 将产品发布给用户进行测试评价,并收集用户的意见,之后再次进行迭代修改产品使之完善。
      • 优点
        • 统一过程模型做到全面兼顾阶段、风险、工作流、质量监控、项目管理等方面。
        • 具备五种基本过程模型的优点,如基于构件开发的成本优势、基于增量开发的响应速度、基于面向对象开发的严谨
      • 缺点:耗时耗力
      • 适用范围:大型系统
    • OPEN Process

    • OOSP (Object-Oriented Software Process)

  • 软件过程管理内容
    • 软件过程管理的思想:产品的质量取决于过程的质量,采用规范化的软件开发过程
      • 工程过程是软件系统、产品的定义、设计、实现以及维护的过程
      • 开发过程:定义并开发软件产品的活动过程,包括需求分析、软件设计和编程等
        • 本质:实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射,实现这一映射的基本途径是系统建模。
          • 软件建模三个层次透视图
            • 概念(conceptual):图形化描述某个问题域,用图描述现实世界或关注领域中的事物
            • 规格说明(specification:描述构思中的软件设计,用图描述软件的抽象物或具有规格说明和接口的构件
            • 实现(implementation):描述设计已经完成的软件实现,用图描述特定技术中的软件实现
        • 开发过程解析
          • 到底要解决什么业务问题?--业务建模
          • 为了解决业务问题,所开发系统应提供什么功能和性能?--需求
          • 为了提供功能,系统内部应该有什么样的业务核心机制?--分析(概念)
          • 为了满足性能,系统的核心机制如何用选定技术实现?--设计(规格)
          • 有意识的分析,不是靠蒙胧思考。
        • 软件开发并没有所谓的“最佳”方法,它们往往各有利弊
      • 运行过程:在规定的环境中为其用户提供运行计算机系统服务的活动过程。
      • 维护过程:提供维护软件产品服务的活动过程,也就是通过软件的修改、变更,使软件系统保持合适的运行状态,这一过程包括软件产品的移植和退役。

面向对象分析与设计主要步骤

  • 基于UP(统一过程)思想
  • 核心思想:短时间定量迭代、进化和可适应性开发
  • 基本过程:
    • ->业务->需求分析(用例)
    • ->面向对象分析(结构+行为)
    • ->面向对象设计
    • ->编码实现
  • 面向对象分析与设计步骤
    • 业务
    • 需求
    • 分析:结构
    • 分析:行为
    • 编码实现
  • 迭代和演化式增量开发过程
    • 选代生命周期基于对经过多次选代的系统进行持续扩展和精化,并以循环反馈和调整为核心驱动力,使之最终成为适当的系统。随着时间和 一次又一次选代的递进,系统增量式地发展 完善,因此这一方法也被称为迭代和增量式开发
    • 开发被组织成一系列固定的短期小项目,称为迭代(iteration)
    • 每次迭代都具有各自的需求分析、设计、实现和测试活动
    • 开发工作通过一系列有序的构造-反馈-调整循环向前发展
    • 注重核心价值的开发与设计
    • 迭代开发优点
      • 降低了在一个增量上的开发风险。如果某个迭代完成后的软件不符合客户要求,那么损失只是这一个开发有误的迭代的花费。
      • 降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。
      • 加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。
      • 由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。
    • 迭代开发缺点
      • 需要高素质的项目管理者带领和高水平的开发团队
      • 可能需要更多的资源。对整个项目周期要求较宽裕
      • 有必要全面了解各项需求,对项目需求明晰度要求很高
    • 增量构建模式(两种)
      • 构建可供客户使用的软件的一小部分。其交付出来的可能只是某个功能,而非具有完全功能的产品。
      • 构建最小可行产品(互联网)

分析小结

  • 螺旋模型和瀑布模型的区别:
    • 螺旋模型支持用户需求的动态变化,实现风险管理,降低了变更风险;更适用于庞大、复杂并且具有高风险的系统。
  • UP和过去的“瀑布”或者顺序生命周期不太一样,UP不是在 一开始就定义全部需求,然后进行全部或绝大部分的设计;其中初始阶段不是需求阶段,而是可行性的阶段,在此阶段要进行充分的调查。
  • 注意一个开发阶段由多个迭代组成

注:这节的笔记有一大部分可以说是软件工程的知识吧,毕竟软件工程是基础

标签:需求,迭代,模型,笔记,面向对象,开发,软件,过程,面向对象分析
From: https://www.cnblogs.com/qq286442936/p/17840959.html

相关文章