软件设计师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. 瀑布模型。将软件生存周期的各个部分顺序连接划分为若干个阶段。

  2. 增量模型
    对瀑布模型的基本成分进行分版本迭代。每一个需求分段为一个增量产品,每个增量产品可以分别开发。

3. 软件开发方法

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

3.1 结构化方法

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

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)。

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. 7.2 Mc Call软件质量模型

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

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

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

相关推荐