软件设计师11–软件工程基础

软件工程基础

    • 1. 概述
      • 1.1 软件的生存周期
    • 2. 软件过程模型
    • 3. 软件开发方法
      • 3.1 结构化方法
      • 3.2 面向对象方法
      • 3.3 敏捷方法
    • 4. 成本估算方法
    • 5. 进度管理
      • 5.1 进度管理的基本原则
      • 5.2 进度安排
    • 6. 软件项目的组织
    • 6.1 软件项目组织有三条原则
    • 6.2 组织结构的模式
    • 6.3 程序设计小组的组织方式
    • 6.4 CMMI能力成熟度模型
    • 7. 软件质量管理
      • 7.1 ISO/IEC 9126软件质量模型
      • 7.2 Mc Call软件质量模型
    • 8. 软件配置管理
      • 8.1 基线
      • 8.2 软件配置项
      • 8.3 版本控制
      • 8.4 变更控制
    • 9. 风险管理
    • 10. 软件复杂性度量
      • 10.1 McCabe度量法

1. 概述

1.1 软件的生存周期

  1. 可行性分析和项目开发计划
  2. 需求分析
  3. 概要设计
  4. 详细设计
  5. 编码
  6. 测试
  7. 维护

2. 软件过程模型

  1. 瀑布模型。将软件生存周期的各个部分顺序连接划分为若干个阶段。

    软件设计师11--软件工程基础
  2. 增量模型
    对瀑布模型的基本成分进行分版本迭代。每一个需求分段为一个增量产品,每个增量产品可以分别开发。

    软件设计师11--软件工程基础
  3. 螺旋模型
    软件设计师11--软件工程基础

3. 软件开发方法

  1. 结构化方法
  2. Jackson方法
  3. 原型方法
  4. 面向对象方法
  5. 敏捷方法
    敏捷方法的总体目标是“尽可能早地、持续地对有价值的产品的交付”使客户满意。

3.1 结构化方法

一种面向数据流的需求分析方法,使用图形表达用户需求,常用的工具有数据流图、数据字典
(一)数据流图
用来描述数据流从输入到输出的变换流程。

软件设计师11--软件工程基础
(二)数据字典
对软件中的每个数据规定一个定义条目,以保持数据在系统中的一致性。
软件设计师11--软件工程基础

3.3 敏捷方法

  1. 极限编程(XP)
    极限编程由四部分组成,彼此相互依赖、关联,并通过行为贯穿整个软件生存周期。
    (一)四大价值观:沟通、简单性、反馈和勇气
    (二)五个原则:快速反馈、简单性假设、逐步修改、提倡更改和优质工作。
    (三)12个最佳实践:计划游戏(快速制定计划、随着细节的不断变化而完善)、小型发布、隐喻、简单设计、测试先行、重构、结对编程、集体代码所有制、继续集成、每周工作40小时、现场客户和编码标准。
  2. 水晶法(Crystal)
    每一个不同的项目都需要一套不同的策略、约定和方法论。
  3. 并列争球法(Scrum)
    把每30天的一次迭代称为一个“冲刺”,并按需求的优先级来实现产品。多个自组织和自治的小组并行的递增实现产品。协调通过简短的日常会议来进行,就像橄榄球中的“并列争球”。
  4. 自适应软件开发(ASD)
    ASD有6个基本原则:有一个使命作为指导;特征被视为客户价值的关键点;过程中的等待很重要,重做和做同样关键;变化不是改正而是对软件开发实际情况的调整;确定的交付时间迫使开发者认证考虑每个版本的关键需求;风险控制。

4. 成本估算方法

估算软件开发所需成本、时间和工作量。常用估算方法有三种:

  1. 基于已经完成的类似项目进行估算。
  2. 基于分解技术进行估算。包括问题分解和过程分解。问题分解是把问题分解为多个小问题来估算。过程分解是把软件开发过程(分析、设计、编码、测试)进行分解估算。
  3. 基于经验估算模型的估算。典型的经验估算模型有IBM估算模型、COCOMO估算模型、Putnam估算模型。

多个估算模型可以组合使用,提高估算精度。

  1. 自顶向下估算方法
  2. 自底向上估算方法
  3. 差别估算方法
  4. 其他估算方法
    • COCOMO模型
    • COCOMOII模型
    • Putnam模型

5. 进度管理

5.1 进度管理的基本原则

  1. 划分
  2. 相互依赖性
  3. 时间分配
  4. 工作量确认
  5. 确定责任
  6. 明确输出结果
  7. 确定里程碑

5.2 进度安排

采用图示的方法展示项目的进展情况。图中需包含:
(1)各个任务计划的开始时间和完成时间
(2)各个任务的完成标志
(3)各个任务与参与的工作人数,各个任务与工作量之间的衔接情况
(4)完成各个任务所需的物理资源和数据资源
进度安排的常用图形有甘特图(Gantt)和项目计划评审技术图(PERT)。

  1. Gantt图。
    软件设计师11--软件工程基础

6. 软件项目的组织

6.1 软件项目组织有三条原则

  1. 尽早落实责任
  2. 减少交流接口
  3. 责任均衡

6.2 组织结构的模式

  1. 按项目划分模式
  2. 按职能划分模式
  3. 矩阵模式

6.3 程序设计小组的组织方式

  1. 主程序员制小组。一名主程序员负责小组技术活动,分配任务,协调技术问题,必要时完成程序的关键部分。
  2. 民主制小组。小组各成员地位平等,有组长,但是工作目标和决策都是由全体成员集体决定,相互合作。
  3. 层次式小组。组长领导若干高级程序员,每个高级程序员领导若干程序员。
    **

6.4 CMMI能力成熟度模型

CMMI是一个引导软件组织不断走向成熟的过程模型。

  1. 初始级:软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
  2. 已管理级:建立了基本的项目管理过程来跟踪费用、进度和软件的功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
  3. 已定义级:已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件。
  4. 量化管理级:分析软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理活动有一个作出结论的客观依据,能够在定量的范围内预测性能。
  5. 优化管理级:过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。 有能力识别软件过程中的薄弱环节,并有足够的手段改进它们,防止缺陷的产生。
    软件设计师11--软件工程基础

    7.2 Mc Call软件质量模型

    软件设计师11--软件工程基础
    软件设计师11--软件工程基础

    来源:方大锤

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年10月25日
下一篇 2018年10月25日

相关推荐