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

软件工程基础

1. 概述

1.1 软件的生存周期

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

2. 软件过程模型

  1. 瀑布模型。将软件生存周期的各个部分顺序连接划分为若干个阶段。
    在这里插入图片描述
    在这里插入图片描述

  2. 增量模型
    对瀑布模型的基本成分进行分版本迭代。每一个需求分段为一个增量产品,每个增量产品可以分别开发。
    在这里插入图片描述

  3. 演化模型
    快速开发一个简单的产品,通过市场的验证和用户的反馈,优化产品的需求和开发方向。演化模型可分为原型模型和螺旋模型等。

    • 原型模型
      在这里插入图片描述
    • 螺旋模型
      在这里插入图片描述
  4. 喷泉模型
    在这里插入图片描述

3. 软件开发方法

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

3.1 敏捷方法

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

4. 成本估算方法

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

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

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

  1. 自顶向下估算方法
  2. 自底向上估算方法
  3. 差别估算方法
  4. 其他估算方法

5. 进度管理

5.1 进度管理的基本原则

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

5.2 进度安排

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

  1. Gantt图。
    在这里插入图片描述
  2. PERT图
    松弛时间为0的事件流是完成项目的关键路径。如下图的关键事件流是1-2-3-4-6-8-10-11。
    在这里插入图片描述

6. 软件项目的组织

软件项目组织有三条原则

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

组织结构的模式

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

程序设计小组的组织方式

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

7. 软件质量管理

7.1 ISO/IEC 9126软件质量模型

在这里插入图片描述

7.2 Mc Call软件质量模型

在这里插入图片描述

8. 软件配置管理

8.1 基线

基线是软件生存周期中各个阶段的的一个特定点。用来工作划分,用作检查点用来检查各阶段的完成情况。

8.2 软件配置项

  1. 系统规格说明书
  2. 软件项目实施计划
  3. 软件需求规格说明书
  4. 软件设计规格说明书(数据设计,体系结构设计、模块设计、接口设计、对象描述)
  5. 源代码清单
  6. 测试计划和过程、测试用例和测试结果记录
  7. 操作和安装手册
  8. 可执行程序
  9. 数据库描述
  10. 用户手册
  11. 维护文档(如软件问题报告、维护请求、工程编程次序)
  12. 软件工程标准
  13. 项目开发小结

8.3 版本控制

软件的版本升级,使用文档记录各个版本的时间、更新内容,功能特点等。

8.4 变更控制

软件工程过程中某一阶段的变更加以控制和管理,保持修改信息,把信息传递到下一阶段。

9. 风险管理

10. 软件复杂性度量

10.1 McCabe度量法

在这里插入图片描述
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章