当前位置:文档之家› 1软件工程概述

1软件工程概述


2020/12/22
25/31
第1章 软件工程概述
1.5 软件开发模型
螺旋模型
综合了瀑布模型和原型模型的优点,即将两者结合, 并加入了风险分析机制。
2020/12/22
26/31
第1章 软件工程概述
1.5 软件开发模型
螺旋模型的优点
支持用户需求的动态变化。 螺旋模型特别强调原型的可扩充性和可修改性。 为项目管理人员及时调整管理决策提供了方便,可降低
传统方法:也可称为软件生命周期方法或结构化方法 ,把软件开发和维护分成软件定义、软件开发和软件 维护三个时期,每个时期又分成若干个阶段。
软件定义时期:确定软件开发必须完成的任务;论证 软件可行性;确定用户需求的详细功能和性能。可划 分为三个阶段:问题定义、可行性研究和需求分析。
软件开发时期:设计和实现软件的定义。四个阶段: 总体设计、详细设计、编码及单元测试、综合测试。
适当的软件工具或软件工程环境来支持结构化技术的 运用。
从上而下,顺序地完成软件开发的各阶段任务。
2020/12/22
19/31
第1章 软件工程概述
1.4 软件工程方法
面向对象方法
一种把面向对象的思想应用于软件开发过程中,指导 开发活动的系统方法,简称OO (Object-Oriented) 方法。
软件维护时期:对投入使用的软件的修改,实际上是 对软件的一次重新定义和开发过程。
2020/12/22
17/31
第1章 软件工程概述
1.4 软件工程方法
传统方法的各阶段
问题定义:弄清楚要解决什么问题。
可行性研究:分析清楚“用什么办法解决这个问题”,保证在技术 上、实效上、法律上都是行得通的。
抽象(abstraction):抽取各个事物中共同的最基本的 特征和行为,暂时忽略它们之间的差异。
信息隐藏(information hiding):将模块内部信息(数 据和过程)封装起来。
局部化(localization):即在一个物理模块内集中逻辑 上相互关联的计算资源。
一致性(consistency):应保证在开发过程中相关内容 的一致。
软件工程的目标
提高软件产品质量和软件开发效率,减少软件维护难度
需考虑的问题
可修改性:允许对系统修改,而不增加系统复杂性。
有效性:软件系统能在一定的时间资源和空间资源环境 下,完成规定的任务。
正确性:软件能准确无误地执行用户需求的各种功能, 满足用户要求的各种性能指标。
可靠性:也称为健壮性,在硬件、操作系统出现故障, 或人为操作不当的情况下,不会导致软件系统失效。
1.1 什么是软件
软件的特征
软件是一种逻辑实体,具有抽象性 软件没有明显的制造过程 软件在使用过程中,没有磨损、老化的问题 软件对硬件和环境有着不同程度的依赖性 软件开发至今尚未完全摆脱手工作坊式的开发方式,
生产效率低
软件的成本相当昂贵 大多数软件是自定的,而不是通过已有的构件组装而来的 软件工作牵涉到很多社会因素
2020/12/22
7/31
第1章 软件工程概述
1.2 软件危机
产生软件危机的原因
软件缺乏“可见性”,在写出程序代码并在计算机上 运行之前,软件开发过程的进展质量较难衡量,很难 检验开发的正确性。
软件规模庞大,逻辑结构复杂。
开发管理人员只重视设计程序而轻视用户需求分析, 导致最后研制出的软件产品无法满足用户的需求。
需求分析:确定软件的功能和性能。用户要要清楚开发出的软件系 统能够做什么;软件开发人员也应该清楚用户的具体要求是什么。
总体设计:设计软件的总体结构,将一个大系统按照功能设计成小 模块,总体设计有时也称概要设计。
详细设计:对每个模块设计具体算法和数据结构,详细设计有时也 称模块设计。
编码及单元测试:根据详细设计的结果,用程序设计语言,编写正 确的源程序,并且对每段程序进行严格测试。
软件危机包括两个方面的问题
如何开发软件以满足用户对软件日益增长的需求 如何维护数量迅速增长的已有软件
2020/12/22
6/31
第1章 软件工程概述
1.2 软件危机
软件危机的表现
软件功能与实际需求不符 软件开发生产率提高的速度远远不能满足用户需要 软件价格昂贵 软件产品的质量差 对软件开发成本和进度的估计常常不准确 软件文档资料通常既不完整也不合格 软件的维护费用急剧上升
——著名的软件工程专家B. W. Boehm于1983年提出
用分阶段的生存周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组的人员应少而精 承认不断改进软件工程实践的必要性
2020/12/22
12/31
第1章 软件工程概述
1.3 软件工程
软件工程的定义
软件工程是用科学知识和技术原理来定义、开发、维护 软件的一门学科。它应用工程的概念、原理、技术和方 法,应用科学的开发技术和管理方法来开发软件。
1983年IEEE给出的定义为:“软件工程是开发、运行、维护和 修复软件的系统方法。”其中,“软件”的定义为:“计算机程 序、方法、规则、相关的文档资料以及在计算机上运行时所必 件工程概述
1.5 软件开发模型
原型模型
开发人员与用户一起进行需求分析,进行快速设计, 建造原型,原型由用户评估,进一步修改原型,再次 进行设计。迭代这个过程,逐步满足用户需要。
2020/12/22
24/31
第1章 软件工程概述
1.5 软件开发模型
原型模型的主要优点
1.1 什么是软件
软件的定义
是计算机程序、程序使用的数据以及说明程序的各种 文档的集合。
软件(software)由三部分组成
可以在计算机上运行的程序(program)。 运行程序需要的数据(data)。 软件开发、维护、使用需要的各种文档(document)
2020/12/22
3/31
第1章 软件工程概述
软件工程方法包括开发方法、开发工具和开发过程三 方面
开发方法:完成软件开发的技术方法 开发工具:开发软件的支撑环境 开发过程:完成开发软件各项任务的工作步骤。
目前使用得最广泛的软件工程方法,分别是传统方法 和面向对象方法。
2020/12/22
16/31
第1章 软件工程概述
1.4 软件工程方法
瀑布模型的缺点
在软件开发的初期阶段就要求做出正确、全面、完整的需求分 析对许多应用软件来说是极其困难的。
作为整体开发的瀑布模型,由于不支持产品的演化,缺乏灵活 性,对开发过程中很难发现的错误,只有在最终产品运行时才 能暴露出来,从而使软件产品难以维护。
瀑布模型的适用场合
适合于功能、性能明确、完整、无重大变化的软件系统
软件设计技术和管理技术落后,没有统一的软件质量 管理规范。
在软件的开发与维护关系问题上存在错误的概念,重 视开发,而轻视维护。
2020/12/22
8/31
第1章 软件工程概述
1.3 软件工程
软件工程的提出
1968年,北大西洋公约组织在原西德召开计算机科学会 议,由Fritz Bauer首次提出了“软件工程”的概念。
第1章 软件工程概述
第1章 软件工程概述
2020/12/22
哈工大软件学院 杨大易
1/31
第1章 软件工程概述
本章主要内容
1.1 什么是软件 1.2 软件危机 1.3 软件工程 1.4 软件工程方法学 1.5 软件开发模型 1.6 本章小结
2020/12/22
2/31
第1章 软件工程概述
软件工程三要素:方法、工具、过程
2020/12/22
9/31
第1章 软件工程概述
1.3 软件工程
SWEBOK:软件工程知识体系指南
2020/12/22
10/31
第1章 软件工程概述
SWEBOK
1.3 软件工程
2020/12/22
11/31
第1章 软件工程概述
1.3 软件工程
软件工程基本思想
面向对象方法的特征
是建立在对象概念基础上的方法学,对象的概念贯穿 于开发全过程。
运用人类日常的思维方法和原则进行系统开发,体现 出继承性、封装性、多态性等基本特征。
可划分为三个阶段:面向对象分析(OOA)、面向对 象设计(OOD)、面向对象实现(OOI)。
2020/12/22
20/31
第1章 软件工程概述
完全性(completeness):软件系统不丢失任何重要成 分,完全实现所需的系统功能的程度。
可验证性(verifiability):开发大型软件系统需要对系 统逐层分解、验证。
2020/12/22
15/31
第1章 软件工程概述
1.4 软件工程方法
把在软件生命周期全过程中使用的一整套技术集合称 为方法(methodology),也称为范型(paradigm )。
2020/12/22
21/31
第1章 软件工程概述
1.5 软件开发模型
瀑布模型
严格按照软件生存周期各个阶段来进行开发,上一阶 段的输出即是下一阶段的输入,强调每一阶段的严格 性。
2020/12/22
22/31
第1章 软件工程概述
1.5 软件开发模型
瀑布模型的优点
提供了软件开发的基本框架,有利于大型软件开发过程 中人员的组织、管理,有利于软件开发方法和工具的研 究与使用,因此,在软件工程中占有重要的地位。
1.5 软件生命周期模型
软件项目开发和维护的全过程
软件生命周期模型的种类
以软件需求完全确定为基础的瀑布模型; 开发初期仅给出基本需求的渐进式模型,如原型模型、
螺旋模型、喷泉模型等; 以形式化开发方法为基础的变换模型、基于第四代语言
相关主题