• chapter1. 软件与软件危机


    第一章:软件与软件危机

    软件测试与质量保证

    • 软件测试与质量保证是什么关系?

      软件测试和质量保证是用来提高软件质量的手段。

      测试是寻找软件系统中出现的问题,通过把这些问题修改正确来提高软件质量。

      质量保证是通过一系列有效的手段,通过过程管理、统计分析来发现软件产品在生产、开发的过程中存在的问题,从过程等的角度来保证软件的质量。

    • 为什么要进行软件测试?

      如果不通过软件测试的手段,就无法验证工作的正确与否。

    • 为什么软件总是出问题?

    1.1 软件概念

    • 能够完成预定功能和性能的、可执行的指令(计算机程序);

    • 使得程序能够适当地操作信息的数据结构;

    • 描述程序的操作和使用的文档

      软件 = 程序+数据(库)+文档

    软件组成

    image-20210306000826921

    软件产品的其他内容

    image-20210306000917009

    1.2 软件特点

    • 软件是逻辑的、知识性的产品的集合,是对物理世界的一种抽象,或者是某种物理形态的虚拟化
      • 软件是硬件的灵魂,硬件是软件的基础;
      • 软件,是智慧和知识的结晶;
      • 软件不会“磨损”,而是逐步完善。

    1.3 软件种类

    • 系统软件
      • 泛指哪些为了有效地使用计算机系统、给应用软件开发与运行提供支持、或者能为用户管理与使用计算机提供方便的一类软件。如操作系统、基本输入\输出系统BIOS
    • 应用软件
      • 指那些专门用于解决各种问题的软件
        • 通过应用软件
        • 定制应用软件

    1.4 软件危机

    image-20210306001557994

    软件复杂性的增长

    image-20210306001627732

    软件质量引起的事故

    image-20210306001715516
    • 软件危机
      • 在软件开发及维护的过程中所遇到一系列严重问题,这些问题接可能导致软件产品的寿命缩短、甚至夭折。
    • 主要表现
      • 项目运行超出预算
      • 项目运行延期
      • 软件质量低
      • 软件通常不符合需求
      • 项目无法管理,且代码难以维护

    1.5 软件工程

    image-20210306002030583
    • 软件工程试图以工程的原理、原则和方法进行软件开发,以解决软件危机

      • 将软件作为产品,借鉴传统工程途径,实现软件的工程化开发和工业化生产
    • 软件工程

      • 应用计算机科学、数学及管理科学等原理,开发软件的工程
      • 是一门交叉学科
      image-20210306155453529

      软件工程层次

      image-20210306155516080

      最基础的是质量关注点,根据用户的质量关注点选择合适的开发过程,采用合适的方法和开发工具。

    1.6 软件生命周期

    什么适合进行软件测试?

    软件生命周期定义

    • 软件从开始生产直到报废的生命周期。周期内又问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到报废等阶段。

    软件生命周期的阶段划分

    • 问题定义
      • 双方:确定开发目标、范围
    • 可行性分析
      • 撰写问题陈述,明确具体目标和范围
      • 分析经济、技术、法律等因素
    • 需求分析
      • 功能分析、数据分析、协作关系分析
      • 制定系统规格说明、开发计划
    • 系统设计
      • 系统框架、人机交互设计、数据库设计
      • 总体设计:静态模型、动态模型
      • 详细设计:模块设计、算法设计
    • 编码
      • 使用程序设计语言、软件开发工具
    • 软件测试
      • 单元测试、集成测试、系统测试
    • 维护
      • 纠错、需求变化、功能扩展

    软件生命周期模型

    • 软件开发的基本过程

      image-20210306160236851

    代表性软件生命周期模型

    • 瀑布模型
    • 原型模型
    • 快速应用开发(RAD)模型
    • 螺旋模型
    • 增量模型和迭代模型
    • RUP(Rational Unified Process)
    • 敏捷开发

    瀑布模型

    • 阶段划分明确,执行完一个阶段的任务就开始下一个阶段的任务。
    • 瀑布模型是最早出现的软件开发模型
    • 软件存在的问题只能可能在软件开发的后期才被发现

    原型模型

    • 简化的版本,来描述系统的主要功能
    • 方便用户和开发人员的沟通
    • 开发过程:image-20210306160727913
    • 评估原型的阶段就是测试的阶段

    快速应用开发(RAD)—V模型

    image-20210306160835196
    • 针对早期的开发过程,对每个阶段提出了测试
    • 重点掌握、代表性

    增量和迭代模型

    image-20210306161118729
    • 每当新版本就会测试

    • 增量:由小到多

    • 迭代:由粗到细

    统一软件开发过程模型RUP

    image-20210306161228928
    • 全面的软件过程、迭代开发
    • 工作流程清晰,文档详细
    • 使用方便、图形化
    • 坡形图代表每个阶段的关注点的不同

    螺旋模型

    • 针对大型项目,以解决风险为主
    • 首先确定目标,再进行风险评估,一直进行风险评估和重新计划不停迭代

    敏捷开发

    • 核心思想是迭代和增量开发
    • 以测试驱动开发
    • 要求合作简洁、高效

    小结

    • 为什么需要软件测试?
      • 软件质量很重要,但总是容易出问题
    • 为什么软件总是出问题?
      • 软件本身的复杂性越来越高
      • 软件开发中的环境因素越来越高
    • 什么时候进行软件测试?
      • 早期的软件生命周期模型中基本都是再编码之后进行,后期的模型中变成整个生命周期的质量控制活动
      • 敏捷开发倡导测试驱动开发
  • 相关阅读:
    第四章 分布式扩展
    第三章 2.性能压测,容量问题
    第三章 1.云部署,打包上传
    MySQL语法大全
    Python随手记
    Python操作Mysql中文乱码问题
    Python基础函数
    破解电信校园网路由限制
    ThinkPHP扩展函数的三个方法
    $_SERVERS预定义变量
  • 原文地址:https://www.cnblogs.com/zhangzizi/p/14491190.html
Copyright © 2020-2023  润新知