软件设计师-系统开发与软件工程

系统开发与软件工程

1.软件开发生命周期模型

瀑布模型:
瀑布模型是一种理想化的开发模型,要求有明确的需求分析,而要达到这一点,在现实开发中几乎不可能。

软件设计师-系统开发与软件工程
喷泉模型:
软件设计师-系统开发与软件工程

软件工作量估算

  1. IBM模型(静态)
  2. 普特南模型(动态)
  3. COCOMO模型(基本(静),中级(静),高级(动))

常用的估算辅助方法

  1. Delphi法,专家判定技术
  2. Standard-component方法

软件项目组织与计划

1.Gannt图

特点:
使用水平线段表示任务的工作阶段;
线段的起点和终点分别对应着任务的开工时间和完成时间;
线段的长度表示完成任务所需的时间。

**优点:**标明了各任务的计划进度和当前进度,能动态的反应项目进展。
**缺点:**难以反映多个任务之间存在的复杂逻辑关系

软件设计师-系统开发与软件工程

3.计划和执行 项目计划包括两个部分:项目组计划和个人项目计划

软件设计师-系统开发与软件工程

4.进度的监控与计划修正

软件设计师-系统开发与软件工程
软件设计师-系统开发与软件工程

配置管理

  1. 指定配置管理计划
  2. 实施变更管理
  3. 实施版本管理
  4. 发行管理
    变更管理需要借助于配置数据库基线
    配置数据库分为:开发库受控库产品库
    基线是指软件生命周期各开发阶段末尾的特定点,也称为里程碑。
    版本管理是指对系统不同版本进行标志和跟踪的过程

风险管理

为什么风险管理:
1. 关心未来
2. 关心变化
3. 必须解决选择问题
风险识别,风险估计,风险驾驭

3.软件质量管理基础

要求掌握ISO/IEC 9126 软件质量模型和Mc Call 软件质量模型中定义的质量特性的含义
ISO/IEC 9126

软件设计师-系统开发与软件工程
Mc Call

4.需求分析与设计基础

1)需求分析的任务与过程(确定功能,性能,数据,界面)

需求分析的工作分为四个方面

  • 问题识别
  • 分析与综合(面向数据流的结构化分析方法,Jackson面向数据结构的方法,面向对象的分析方法ooa,建立动态模型的状态迁移图
  • 编制需求分析的文档;(需求规格说明书)
  • 需求分析与评审

2)需求分析的原则

3)需求的分类

  • 功能需求
  • 非功能需求
  • 设计约束

4)需求工程

需求工程就是包括创建和维护系统需求文档所必须的一切活动的过程,也就是指需求开发需求管理两大工作:

  • 需求开发
  • 需求管理
    这两个方面相辅相成,需求开发是主线,是目标;
    需求管理是支持,是保障。

5)软件设计的任务与活动

  • 概要设计
  • 详细设计

6)主要的设计方法比较

在结构化设计风行的时代,主流的设计方法包括Jackson方法和Parnas方法。

5.结构化分析与设计

结构化分析基础

结构化分析(解决“做什么”的问题):是一种面向数据流的需求分析方法。
掌握数据流图和数据字典

结构化设计基础

  • 概要设计(确定模块,模块和模块之间的关系)一般采用结构图,层次图,HIPO图等
    概要设计主要包括:
    1. 复查基本系统模型
    2. 复查并精化数据流图
    3. 确定数据流图的信息流类型(事务流,变化流)
    4. 根据流类型分别实施变化分析或事务分析
    5. 根据软件设计原则对得到的软件结构图进一步优化
  • 详细设计
  1. 程序流程图
  2. 盒图(N-S图)
    盒图具有以下特点:
    • 功能域明确,可以从盒图上一眼看出来
    • 没有箭头,不可能任意转移控制
    • 容易确定局部和全程数据的作用域
    • 容易表示嵌套关系,也可以表示模块的层次结构
  3. PAD图(problem analysis diagram)
    软件设计师-系统开发与软件工程

    6.测试及维护

    软件测试基础

    软件测试的目标:以尽可能少的时间和人力发现软件产品中尽可能多的错误。
    测试用例:
    测试用例是由测试数据预期结果构成的。
    如何衡量一个测试用例的好坏
    一个好的测试用例应是极有可能发现至今尚未发现的错误
    成功的测试:
    发现了至今为止尚未发现的错误的测试
    高效的测试:
    用少量的测试用例,发现尽可能多的错。
    一个规范化的软件测试过程包括以下活动:

    1. 制定测试计划
    2. 编制测试大纲
    3. 根据测大纲设计生成测试用例
    4. 实施报告
    5. 生成测试报告

    软件测试原则:

    1. 尽早的,不断地进行软件测试,把软件测试贯穿于开发的始终。
    2. 所有的测试都应该能追溯到用户需求,从用户的角度看,最严重的错误是导致系统不能满足用户需求的那些错误。
    3. 应该从小规模测试开始,并逐步进行大规模测试
    4. 应该原则测试之前就制定出测试计划
    5. 根据Pareto原理,80%的错误出现在20%的模块中。测试成功的关键是怎么样找出这20%的模块。
    6. 应该由独立的第三方从事测试工作
    7. 对非法和非预期的数据也要像合法的和预期的输入数据一样编写测试用例。
    8. 检查软件是否做了应该做的事情是成功的一半,另一半是看软件是否做了不该做的事情。
    9. 在规划测试时不要设想程序中不会查出错误。
    10. 测试只能证明软件中有错误,不能证明软件没有错误。

    测试的分类:

    从测试阶段划分:单元测试,集成测试,确认测试,系统测试
    测试方法划分:静态测试,动态测试两大类。
    静态测试指被测试程序不在机器上运行,而是采用人工检测计算机辅助静态分析的手段对程序进行检测。

    • 人工检测(人工检测的主要方法有个人复查,抽查,会审三种)
    • 计算机辅助静态分析
      动态测试是指通过运行程序发现错误。
      动态测试又分为:白盒测试黑盒测试

    软件测试的步骤

    1. 单元测试
    2. 集成测试
    3. 确认测试
    4. (系统测试)

    软件设计师-系统开发与软件工程
    集成测试(组装测试)
    主要目标是发现模块间的接口和通信问题
    集成的方式可分为非增殖式和增殖式
    集成测试计划应该在概要设计阶段指定
    集成测试通常采用黑盒测试
    增殖式方式:
    1. 自顶向下的增殖方式(模拟桩模块)
    2. 自底向上的增殖方式(模拟驱动模块)
    3. 混合增殖式方式
    4. 衍变的自顶向下的增殖方式
    5. 自底向上-自顶向下的增殖方式

    确认测试:
    检查软件的功能、性能和其他特征是否与用户的需求一致。
    以需求规格说明书作为依据的测试
    软件确认测试首先要进行有效性测试以及软件配置审查,然后进行验收测试。
    确认测试一般有三个步骤:
    1. 有效性检查
    2. 软件配置审查
    3. 验收测试
    α测试和β测试(当一个软件是作为产品被许多客户使用时需要这种测试)
    α测试:受控环境中的测试
    β测试:实际使用环境中的测试

    系统测试:
    恢复测试、安全性测试、强度测试、性能测试、可靠性测试、安装测试

    调试:
    调试的任务是根据测试时发现的错误,找出原因和具体的位置,进行改正。常用的调试方法有以下几种。
    1. 试探法
    2. 回溯法
    3. 对分查找发
    4. 归纳法
    5. 演绎法

    黑盒测试

    等价类划分、边界值分析、错误推测法、因果图
    等价类划分:选取少数有代表性的数据作为测试用例,等价类可以分为有效等价类,无效等价类两种。每个用例应尽可能多的覆盖尚未覆盖的有效等价类仅覆盖一个尚未覆盖的无效等价类

    白盒测试

    白盒测试(逻辑驱动测试)
    最常见的方法是逻辑覆盖法,所有可用的方法按照覆盖程度从弱到强的排序为:
    语句覆盖,判定覆盖,条件覆盖,判定-条件覆盖,条件组合覆盖,路径覆盖。

    软件维护

    软件的可维护性:
    1) 可理解性
    2)可测试性
    3)可修改性
    软件维护管理
    保证维护质量提高维护效率控制维护成本
    每次修改需经过申请评估批准实施验证等步骤。

    7.软件过程改进(CMM)

    CMM
    CMM模型描述和分析了软件过程能力的发展程度,确立了一个软件过程成熟度的分级标准。
    1. 初始级
    2. 可重复级
    3. 已定义级
    4. 已管理级
    5. 优化级

    来源:丹辰子DCZ

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

上一篇 2020年9月1日
下一篇 2020年9月2日

相关推荐