软件工程概述

软件工程的概述:

1、软件

1.1、软件的经典定义:

软件=“完成特定功能的程序+数据结构+文档”

1.2、 特征:

是开发的,而不是制造的
软件不磨损,但退化
根据需求自定义要开发的软件

2、软件危机

2.1、软件危机的定义:

在计算机软件的开发和维护的过程中所遇到的一系列严重的问题

2.2、软件危机的表现:

  • 对软件的开发成本和进度的估计常常不准确
  • 软件产品质量较差,可靠性较低
  • 用户对开发出来的软件产品不满意
  • 软件常常是不可维护的
  • 软件产品缺少应有的文档资料
  • 软件产品的供不应求

2.3、产生软件危机的原因:

主观原因

  1. 对用户要求没有完整和准确的认识就匆忙编写程序

  2. 对软件的开发过程认识不准确。生命周期的每个阶段都有特定的工作和特点,都是不可逾越的。只有上一个阶段的工作完成,才能开始下一个阶段的工作

  3. 对软件质量的重视不够是造成软件开发成本激增的主要原因,注意软件开发过程中的错误的“放大效应”

  4. 轻视软件维护将是一个重大的错误。开发时期各个阶段的关键目标都是提高软件的可维护性

客观原因

  1. 软件与硬件不同,软件是"开发的”而非“制造的”。其开发过程难以管理和控制,产品质量也不好把握;

  2. 软件不会“磨损”,但是它会不断“退化”。软件系统无法适应不断变化的环境和功能的需求

  3. 软件都规模庞大,而程序的复杂性是随其规模的扩大呈现指数增加的

3、软件工程

3.1、件工程的定义:(指导软件开发与维护的工程学科)

采用工程的概念、原理、技术和方法来开发和维护软件,综合运用正确的管理技术和最好的技术方法,以经济的开发出高质量的软件并有效的维护它

3.2、 软件工程的 基本原理:

  • 用分阶段的生命周期疾患严格的管理
  • 坚持进行阶段评审
  • 实行严格的产品控制
  • 采用现代程序设计技术
  • 结果可以清楚的审查
  • 开发小组成员少而精
  • 承认不断改进软件工程实践的必要性(开发与维护)

4、软件工程的方法学:

4.1、 定义:

软件生命周期全过程中使用的一整套技术方法的集合称为方法学

4.2、软件工程方法学包含的三个要素:

方法、工具、过程

4.3目前使用最广泛的软件工程方法学:

传统方法学

1、传统方法学:(生命周期方法学/结构化泛型)

采用结构化技术来完成软件开发的各项任务,按照顺序完成各个阶段的任务,每一阶段依赖上一个阶段产生的结果,并将上一个阶段的工作进一步具体化

2、面向对象方法学:

以数据为主线,将数据和其上的操作紧密结合起来

面向对象方法学的四大要素:

类+对象+继承+消息传递

5、软件的生命周期:

5.1、定义:

一个软件从定义、开发、使用、维护、直至被废弃,要经历漫长的时期称为软件的生命周期

5.2、生命周期的三个过程八大阶段:

软件工程的概述:软件工程概述

5.3、软件生命周期的模型

➢5.3.1、定义

在软件开发过程中,人们通常使用生命周期模型来简要地描述软件过程。生命周期模型规定了生命周期各个阶段和它们执行的顺序,因此也被称为过程模型.

➢5.3.2、模型

1、瀑布模型——线性模型之一
定义:

瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。
直到80年代早期,它一直是唯一被广泛采用的软件开发模型
软件工程概述

特点:

各阶段之,间有依赖性和严格的顺序性。
推迟实现。一典型特点
严格的阶段质保。 文档驱动。

瀑布模型的问题:

实际的项目很少顺序严格
用户往往难以给出具体、正确、完整的要求
开发人员“阻塞状态”严重

2.原型模型
定义:

原型模型是一个快速开发的过程,首先和用户沟通进行主要功能的需求分析和快速设计,然后建立一个原型,再请用户进行评价和反馈。开发人员根据用户的反馈进一步细化需求,改进原型系统的设计,如此反复直至用户满意。

软件工程概述

快速原型模型的特点:

出品速度快。

逐步求精。

开发阶段迭代。

快速原型模型的问题:

实现过程中不应有的折衷方案。

开发者急于完成原型而忽略了整体设计和可维护性;

用户的参与过多也造成了软件开发管理的混乱

3、增量模型
定义:

增量模型也称为渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。

软件工程概述

增量模型的特点:

结合了瀑布(线性)模型和原型模型的特点;

每个增量可以结合原型法;

增量模型的问题:

开放的软件体系结构

中心思想:渐进开发,逐步完善
4、喷泉模型
定义:

喷泉模型是典型的面向对象的软件过程模型之一,’“喷泉”较好地体现了面向对象软件开发过程迭代无缝的特性。

软件工程概述

问题讨论一情景分析

假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件生命周期模型?为什么?

●解:
对这个项目的一个重要要求是,严格按照已对外公布了的日 期完成产品开发工作,因此,选择生命周期模型时、应该着重考 虑哪种模型有助于加快产品开发的进度。使用增量模型开发软件 时可以并行完成开发工作,因此能够加快开发进度。

●分析:
这个项目是开发该公司已被广泛应用的字处理软件的新版本,从 上述事实至少可以得出3点结论:第一,旧版本相当于一个原型,
通过收集用户对旧版本的反映,较容易确定对新版本的需求,没 必要再专门建立一个原型系统来分析用户的需求;第二,该公司
的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经 验,具有采用增量模型开发新版字处理软件所需要的技术水平;
第三,该软件受到广大用户的喜爱,今后很可能还要开发更新的。 版本,因此,应该把该软件的体系结构设计成开放式的,以任
今后的改进和扩充。