zoukankan      html  css  js  c++  java
  • 软件工程概述

    背景

    软件工程(Software Engineering)这个概念的正式提出是在 1969 年,在人们经历过一系列软件危机(Software Crisis)之后的 NATO 会议上。

    当时人们遇到的软件危机包括:

    1. 项目运行超过预算;
    2. 项目运行超过时间;
    3. 软件质量低劣;
    4. 软件通常不符合需求;
    5. 项目无法管理且代码难以维护。

    下面举三个案例呈现当时的软件危机。

    其一是 IBM 的 OS/360 系统,当决定外部技术说明文档的制定人员时,Fred Brooks 错误地给与了程序实现团队而不是体系结构团队,导致最后项目增加了一年的调试时间并多出了几百万美元的投入。

    其二是美国银行信托软件,当时计划预算 2 千万,时长 9 个月;但实际上投入了 6 千万,时长 4 年,仍未完成,最终放弃。

    其三是 AECL 公司开发的 Therac-25 放射性疗法机器,因竞态条件偶然发射高于正常剂量的辐射,从而导致患者死亡或重伤。

    定义

    在软件危机的背景之下,1969 年的 NATO 会议提出了软件工程的概念。

    软件工程是用来建立和使用合理的工程原则,以经济地获取可靠的,且在真实机器上可高效工作的软件。

    随后 IEEE 在 1993 年给出了更加综合性的定义,即

    (1) 将系统化的、规范的、可量化的方法应用到软件的开发、运行及维护中,即将工程化方法应用于软件;

    (2) 在 (1) 中所述方法的研究。

    软件生命周期

    软件工程有两面,一面是 “软件”,一面是 “工程”。软件是软件工程中最重要的制品。我们依照软件的生命周期,在每个时期实施不同的工程化的方法使得软件可以按需求运作。

    软件开发过程

    软件(开发)过程一般有两种:

    1. 瀑布模型:分析 --> 设计 --> 编码 --> 测试。
    2. 增量模型:拆分尽量不耦合的增量构件,每个构件按照瀑布过程运作。

    软件分析方法

    软件分析方法有两大类:

    1. 面向过程方法,包括数据流图、实体关系图和状态图;
    2. 面向对象方法,包括用例图、类图和状态图。

    软件设计方法

    软件设计方法也分为以下两大类:

    1. 面向过程方法,包括结构图(HIPO)、模块化;
    2. 面向对象方法,包括类图中每个类的属性和方法的确定。

    软件编码方法

    1. 选择一门或多门适合需求的编程语言。
    2. 质量保证:
      a. 可操作性;(能用)
      b. 可维护性;(能改)
      c. 可迁移性。(能迁)

    软件测试方法

    软件测试方法总体可分为以下两大类:

    1. 白盒测试,包括基本路径测试和控制结构测试(包括条件测试、数据量测试和循环测试);
    2. 黑盒测试,包括穷尽测试、 随机测试和边界值测试。

    白盒测试中的基本路径测试涉及图论和圈的复杂度。

    文档

    软件的文档是一个持续的过程,软件不死,文档就需要不断更新。软件的文档包含三大类:

    1. 用户文档,引导用户正确使用软件;
    2. 系统文档,定义软件本身;
    3. 技术文档,描述软件的安装、维护和更新。
  • 相关阅读:
    Http请求头与响应头
    获取ip位置方法
    简单的Http Server实现
    HTTP
    long、int与byte数组之间的相互转换
    GlusterFS简单配置
    创建线程池
    网络编程socket
    面向对象-进阶篇
    面向对象-初级篇
  • 原文地址:https://www.cnblogs.com/lshare/p/11336401.html
Copyright © 2011-2022 走看看