第 1章 软件工程概述
1.1 软件的概念、特点和分类一,软件的概念软件 是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合 。
其中,程序是按事先设计的功能和性能要求编写的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发,维护和使用有关的图文材料 。
注:程序并不是软件,程序只是软件的组成部分 。
第 1章 软件工程概述二,软件的特点
( 1) 软件是一种逻辑实体 。
( 2) 软件的开发,是人的智力的高度发挥,而不是传统意义上的硬件制造 。
( 3) 软件维护与硬件的维修有着本质的差别 。
( 4) 软件的开发和运行常常受到计算机系统的限制,
对计算机系统有着不同程度的依赖性 。
( 5) 软件的开发至今尚未完全摆脱手工艺的开发方式,使软件的开发效率受到很大限制 。
( 6) 软件的开发是一个复杂的过程 。
( 7) 软件的成本非常高昂 。
第 1章 软件工程概述三,软件的分类
1.基于软件功能的划分 系统软件应用软件支撑软件
2.基于软件工作方式的划分 实时处理软件分时软件交互式软件批处理软件第 1章 软件工程概述
1.2 软件的发展和软件危机一、计算机系统的发展历程第一代 ( 20世纪 60年代中期以前 ),程序设计阶段 。
第二代 ( 从 20世纪 60年代中期到 70年代中期 ),程序系统阶段 ——,软件工程,学科诞生 。
第三代(从 20世纪 70年代中期到 80年代中期):软件工程阶段。
第四代 ( 从 20世纪 80年代中期至今 ),软件产业在世界经济中已经占有举足轻重的地位 。
第 1章 软件工程概述二,软件危机
20世纪 60年代末 70年代初,西方工业发达国家经历了一场,软件危机,。 这场软件危机表现在:
一方面软件十分复杂,价格昂贵,供需差日益增大,另一方面软件开发时又常常受挫,质量差,
指定的进度表和完成日期很少能按时实现,研制过程很难管理,即软件的研制往往失去控制 。 我们称软件开发 和维护过程中所 中遇到的这一系列严重问题为软件危机 。
软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件 。
第 1章 软件工程概述
1.3 软件工程一,软件工程的定义软件工程 是指研究软件生产的一门学科,也就是将完善的工程原理应用于经济地生产既可靠又能在实际机器上有效运行的软件 。
1983年美国,IEEE软件工程标准术语,对软件工程下的定义为:软件工程是开发,运行,维护和修复软件的系统方法,其中,软件,的定义为:
计算机程序,方法,规则,相关的文档资料以及在计事机上运行时所必需的数据 。
第 1章 软件工程概述二、软件工程方法学通常把在软件生命周期全过程中使用的一整套技术的集合,称为 软件工程方法学 。软件工程方法学包括三个要素:方法、工具和过程。
其中:软件工程方法是完成软件开发的各项任务的技术方法,为软件开发提供了,如何做,的技术。
软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。
注:传统方法学和面向对象方法学是目前使用得最广泛的两种软件工程方法学。
第 1章 软件工程概述
1.4 软件生存期和软件开发模型一,软件生存期如同任何其他事物一样,软件也有一个孕育,
诞生,成长,成熟,衰亡的生存过程,一般称之为计算机 软件的生存期 。
一般说来,软件生命期由软件定义、软件开发和软件维护三个时期组成,每个时期又可进一步划分成若干个阶段。
第 1章 软件工程概述
1.软件定义时期
( 1)问题定义:这是软件生存期的第一个阶段,
主要任务是弄清用户要计算机解决的问题是什么。
( 2)可行性研究:任务是为前一阶段提出的问题寻求一种至数种在技术上可行、且在经济上有较高效益的解决方案。
第 1章 软件工程概述
2,软件开发时期
( 1) 需求分析:弄清用户对软件系统的全部需求,
主要是确定目标系统必须具备哪些功能 。
( 2) 总体设计:设计软件的结构,即确定程序由哪些模块组成以及模块间的关系 。
( 3) 详细设计:针对单个模块的设计 。
( 4) 编码:按照选定的语言,把模块的过程性描述翻译为源程序 。
( 5) 测试:通过各种类型的测试 (及相应的调试 )使软件达到预定的要求 。
第 1章 软件工程概述
3,软件运行时期是软件生存周期的最后一个时期 。 软件人员在这一时期的工作,主要是做好软件维护 。 维护的目的,是使软件在整个生存周期内保证满足用户的需求和延长软件的使用寿命 。
第 1章 软件工程概述二、软件开发模型
1.瀑布模型,将软件生存周期的各项活动规定为依照固定顺序连接的若干阶段工作,形如瀑布流水,
最终得到软件产品 。
2.螺旋模型,为了克服瀑布模型的不足,螺旋模型于 1988年提出 。 该模型中加入了风险分析,通常用来指导大型软件项目的开发 。
3.喷泉模型,体现了软件创建所固有的迭代和无间隙的特征 。