软件工程学概述

软件的定义程序+数据+文档

  1. 程序:能够完成预定功能和性能的可执行的指令序列;
  2. 数据:使程序能够适当地处理信息的数据结构或数据库;
  3. 文档:开发、使用和维护程序所需要的图文资料

软件危机:软件在开发和维护过程中遇到的一系列问题

    主要体现在两个方面:

  1. 如何开发软件,以满足对软件日益增长的需求;
  2. 如何维护数量不断膨胀的已有软件

    典型表型:

  1. 对软件开发成本和进度的估计常常很不准确;
  2. 用户对“已完成的”软件系统不满意的现象经常发生;

  3. 软件产品的质量往往靠不住;

  4. 软件常常是不可维护的

  5. 软件通常没有适当的文档资料;

软件成本在计算机系统总成本中所占的比例逐年上升;

软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势

软件危机产生的原因:

  1. 软件不同于硬件,它是计算机系统的逻辑部件而不是物理部件;
  2. 软件开发的过程是多人分工合作,分阶段完成的过程,参与人员之间的沟通和配合十分重要;
  3. 开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的要求;
  4. 软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范;
  5. 在软件的开发和维护关系问题上存在错误的观念

软件工程:是指导计算机软件开发和维护的一门工程学科(概念、原理、技术、方法;结合管理技术;高质量高产量)

软件工程方法学:(要素——方法:技术;工具:支撑环境;过程:工作步骤)

  1. 传统方法学:也称为生命周期方法学结构化范型。它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用(文档先行)
  2. 面向对象方法学:与传统方法相反,面向对象方法把数据和行为看成是同等重要的,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。

软件生命周期:由软件定义、软件开发、运行维护(软件维护:最长10年)三个时期组成,每个时期又分为若干阶段

  1. 软件定义:问题定义、可行性研究和需求分析

  2. 软件开发:总体设计、详细设计、编码和单元测试、综合测试

  3. 运行维护:主要任务是使软件持久地满足用户的需要

软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。也就是什么人(who)、在什么时候(when)->步骤、做什么事(what)->任务、以及怎样(how)->技术、做这些事以实现某一个特定的具体目标

软件工程学概述

软件开发模型种类:

过程模型—— 瀑布型(重点掌握)、快速原型模型(掌握)、增量模型(了解)、 螺旋模型(了解)、喷泉模型(了解)、敏捷过程(重点了解)等。 

模型研究的是:该模型划分为哪些阶段,以及每个阶段的执行顺序

  1. 瀑布模型:传统的瀑布模型过于理想化,一般开发过程中带“反馈环”;具有严格的顺序性和依赖性,即必须等前一个阶段完成后,才可以进行下一个阶段;
  2. 快速原型模型(理论上):快速原型模型不仅仅做需求分析,还可以探讨新技术,验证技术是否可行;
  3. 增量模型:分批向用户提交产品,如学校的信息管理系统,可细分为学生管理系统,教师管理系统,财务管理系统等分别实现各自的功能,但是又共同构成了整个软件的整体;
  4. 螺旋模型:改进的快速原型模型,增加风险分析;
  5. 喷泉模型:面向对象、过程迭代、无缝

敏捷模型:程序>文档;客户合作(即甲方参与开发);极限编程;

微软过程: