1、软件工程,教材:主编 曹哲 高诚中国水利水电出版社 教案:河北工业大学廊坊分院计算机系 黄南川,河北工业大学廊坊分院计算机系,如何学习这门课程,正确地理解, 领悟和掌握软件工程方法学 发挥主观能动性,多问“为什么”,问题 解 培养和他人相互合作进行软件开发,独立解决问题的能力 培养通过多种手段获取新知识的能力 培养逻辑思维能力, 尤其是抽象能力 理论和实践的结合 课题实习内容小组形式运用面向对象的软件开发方法, 自学OO概念,思想和语言软件开发过程验收内容和标准(需求说明书,设计说明书,系统原型),河北工业大学廊坊分院计算机系,第一章 概述,1.1 软件 1.2 软件工程的概念 1.3 软件生
2、存周期 1.4 软件开发模型 1.5 软件开发方法、工具及环境,河北工业大学廊坊分院计算机系,1.1 软件,在运行中能提供所希望的功能和性能的指令集(即程序) 使程序能够正确运行的数据 描述程序研制过程和方法使用的文档,程序,软 件,可执行部分,不可执行部分,文档1,文档2,文档3,1.什么是软件,软件程序文档数据,河北工业大学廊坊分院计算机系,1. 软件的特点,软件是逻辑产品,硬件是物理产品。 特点: (1)软件开发更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。软件开发、设计几乎都是从头开始,成本和进度很难估计。 (2)软件存在潜伏错误,硬件错误一般能排除。 (3)软件开发成功后
3、,只需对原版进行复制。,河北工业大学廊坊分院计算机系,1. 软件的特点(续),(4)软件在使用过程中维护复杂:1)纠错性维护改正运行期间发现的潜伏错误;2)完善性维护提高或完善软件的性能;3)适应性维护修改软件,以适应软硬件环境的变化;4)预防性维护改进软件未来的可维护性和可靠性;( 5) 软件不会磨损和老化。,河北工业大学廊坊分院计算机系,2.软件的发展,50中期60中期60中期70中期70中期80中期80中期现在,河北工业大学廊坊分院计算机系,效率和质量,1.1.2 软件危机,软件危机的具体表现: 开发成本和进度估计不准 用户对“已完成的”软件系统不满意 软件质量往往靠不住 软件常常是不可
4、维护的 软件通常没有适当的文档资料 软件成本逐年上升 软件开发生产率滞后于硬件和计算机应用普及,河北工业大学廊坊分院计算机系,硬 件,软件开发,软件维护,1955年 1970年 1985年,100%,80%,60%,40%,20%,软件、硬件成本变化趋势,河北工业大学廊坊分院计算机系,产生软件危机的原因,1)用户对软件需求的描述不精确。 2)软件开发人员对用户需求的理解有偏差,这将导致软件产品与用户的需求不一致。 3)缺乏处理大型软件项目的经验。 4)开发大型软件易产生疏漏和错误。 5)缺乏有力的方法学的指导和有效的开发工具的支持。软件开发过多地依靠程序员的 “技巧”,从而加剧了软件产品的个性
5、化。 6)面对日益增长的软件需求,人们显得力不从心。从某种意义上说,解决供求矛盾将是一个永恒的主题。,河北工业大学廊坊分院计算机系,缓解危机的方法?,1.2 软件工程的概念,过程管理部分,方法 “如何做” 技术手段,工具 自动或半自动地支持软件的支撑环境(开发和管理),过程,方法,工具,软件工程,要素之间相互关联和支持,河北工业大学廊坊分院计算机系,软件工程的目标: 在给定成本、进度的前提下,开发满足用户需求的并具有以下特性的软件产品。,可修改性 有效性 可靠性 可理解性 可维护性,可重用性 可适应性 可移植性 可追踪性 可互操作性,河北工业大学廊坊分院计算机系,软件工程的目标,1)可修改性(
6、modifiability),允许对软件系统进行 修改而不增加其复杂性。它支持软件调试与维护。 2)有效性(efficiency),指软件系统的时间和空间效率。这是一个应当努力追求的重要目标。 3)可靠性(reliability),是指在给定的时间间隔内,程序成功运行的概率。可靠性是衡量软件质量的一个重要目标。,河北工业大学廊坊分院计算机系,4)可理解性(understandability),指系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植和重用。 5)可维护性(maintainability),是指软件产品交付使用后,在实现改正潜伏的错误
7、、改进性能等属性、适应环境变化等方面工作的难易程度。由于软件的维护费用在整个软件生存周期中占主要的比重,因此,可维护性是软件工程中的一个十分重要的目标。软件的可理解性和可修改性支持软件的可维护性。,软件工程的目标,河北工业大学廊坊分院计算机系,6)可重用性(reusability),是指软部件可以在多种场合使用的程度。概念或功能相对独立的一个或一组相关模块可构成一个软部件。软部件应具有清晰的结构和注释、正确的编码和较高的时空效率。可将各种软部件按照某种规则放在软部件库中供开发人员选用。广义地讲,可重用性还应包括应用项目、规格说明、设计、概念和方法等等的重用。一般来说,重用的层次越高,带来的效益
8、越大。可重用性有助于提高软件产品的质量和开发效率、降低软件开发和维护费用。,软件工程的目标,河北工业大学廊坊分院计算机系,7)可适应性(adaptability),是指软件在不同的系统约束条件下,使用户需求得到满足的难易程度。选择广为流行的软硬件支持环境、采用广为流行的程序设计语言编码、采用标准的术语和格式书写文档可增强软件产品的可适应性。 8)可移植性(portability),是指软件从一个计算机系统或环境移植到另一个上去的难易程度。采用通用的运行支持环境和尽量通用的程序设计语言的标准部分可提高可移植性。而应将依赖于计算机系统的低级(物理)特征部分相对独立、集中起来。可移植性支持软件的可重
9、用性和可适应性。,软件工程的目标,河北工业大学廊坊分院计算机系,9)可追踪性(traceability),是指根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向追踪的能力。软件开发各阶段的文档和程序的完整性、一致性、可理解性支持软件的可追踪性。 10)可互操作性(interoperability),是指多个软件元素相互通信并协同完成任务的能力。,软件工程的目标,河北工业大学廊坊分院计算机系,软件工程的原则:,抽象 信息隐藏 模块化 局部化 一致性 完全性 可验证性,河北工业大学廊坊分院计算机系,软件工程的原则,1抽象(abstraction),抽取各个事物中共同的
10、最基本的特征和行为,暂时忽略它们之间的差异。一般采用分层次抽象的方法来控制软件开发过程的复杂性。抽象使软件的可理解性增强并有利于开发过程的管理。 2信息隐藏(information hiding),将模块内部的信息(数据和过程)封装起来。其他模块只能通过简单的模块接口来调用该模块,而不能直接访问该模块内部的数据或过程,即将模块设计成“黑箱”。信息隐藏的原则可使开发人员把注意力集中于更高层次的抽象上。,河北工业大学廊坊分院计算机系,软件工程的原则,3.模块化(modularity),把一个程序划分成若干个模块,每个模块完成一个子功能,将这些模块组装成一个整体,即可完成该程序指定的功能。其中每个模
11、块是程序中相对独立的成分,是独立的编程单位。 4局部化(localization),即在一个物理模块内集中逻辑上相互关联的计算资源。局部化支持信息隐藏,从而保证模块之间具有松散的耦合、模块内部有较强的内聚。这有助于控制每一个解的复杂性。,河北工业大学廊坊分院计算机系,软件工程的原则,5一致性(consistency),整个软件系统(包括程序、数据和文档)的各个模块应使用一致的概念、符号和术语;程序内部接口应保持一致;软件与环境的接口应保持一致;系统规格说明应与系统行为保持一致;用于形式化规格说明的公理系统应保持一致。 6完全性(completeness),软件系统不丢失任何重要成分,完全实现所
12、需的系统功能的程度。为了保证系统的完全性,在软件的开发和维护过程中需要严格的技术评审。 7可验证性(verifiability),开发大型软件系统需要对系统逐层分解。系统分解应遵循易于检查、测试、评审的原则,以使系统可验证。 抽象、信息隐藏、模块化和局部化的原则支持可理解性、可修改性、可靠性等目标,并可提高软件产品的质量和开发效率; 一致性、完全性和可验证性等原则可以帮助软件开发人员去实现一个正确的系统。,河北工业大学廊坊分院计算机系,软件工程的基本原理,著名的软件工程专家B. W. Boehm于1983年综合了软件工程专家学者们的意见并总结了开发软件的经验,提出了软件工程的7条基本原理。这7
13、条原理被认为是确保软件产品质量和开发效率的原理的最小集合,又是相互独立、缺一不可、相当完备的最小集合。下面就简单介绍软件工程的这7条原理:,河北工业大学廊坊分院计算机系,1)用分阶段的生存周期计划严格管理,这条基本原理是应该把软件生存周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件开发与维护工作进行管理。应该制定的计划有项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划和运行维护计划等。各级管理人员都必须严格按照计划对软件开发和维护工作进行管理。据统计,不成功的软件项目中,有一半左右是由于计划不周造成的。,河北工业大学廊坊分院计算机系,2)坚持进行阶段评审
14、,据统计,在软件生存周期各阶段中,编码阶段之前的错误约占63%,而编码错误仅占37%。另外,错误发现并改正得越晚,所花费的代价越高。坚持在每个阶段结束前进行严格的评审,就可以尽早发现错误,从而可以最小的代价改正错误。因此,这是一条必须坚持的重要原理。,河北工业大学廊坊分院计算机系,3)实行严格的产品控制,决不能随意改变需求,只能依靠科学的产品控制技术来顺应用户提出的改变需求的要求。为了保持软件各个配置成分的一致性,必须实行严格的产品控制。其中主要是实行基准配置管理(又称为变动控制),即凡是修改软件的建议,尤其是涉及基本配置的修改建议,都必须按规程进行严格的评审,评审通过后才能实施。 这里的“基
15、准配置”是指经过阶段评审后的软件配置成分,即各阶段产生的文档或程序代码等。,河北工业大学廊坊分院计算机系,4)采用现代程序设计技术,实践表明,采用先进的程序设计技术既可以提高软件开发与维护的效率,又可以提高软件的质量。多年来,人们一直致力于研究新的“程序设计技术”。比如,20世纪60年代末提出的结构程序设计技术;后来又发展出各种结构分析(SA)和结构设计(SD)技术;之后又出现了面向对象分析(OOA)和面向对象设计(OOD)技术等等。,河北工业大学廊坊分院计算机系,5)结果应能清楚地审查,软件产品是一种看不见、摸不着的逻辑产品。因此,软件开发小组的工作进展情况可见性差,难于评价和管理。为了更好
16、地进行评价与管理,应根据软件开发的总目标和完成期限,尽量明确地规定软件开发小组的责任和产品标准,从而使所得到的结果能清楚地审查。,河北工业大学廊坊分院计算机系,6)开发小组的人员应少而精,软件开发小组人员素质和数量是影响软件质量和开发效率的重要因素。实践表明,素质高的人员与素质低的人员相比,开发效率可能高几倍至几十倍、而且所开发的软件中的错误也要少得多。另外,开发小组的人数不宜过多,因为随着人数的增加,人员之间交流情况、讨论问题的通信开销将急剧增加,这不但不能提高生产率,反而由于误解等原因可能增加出错的概率。,河北工业大学廊坊分院计算机系,7)承认不断改进软件工程实践的必要性,遵循上述六条基本
17、原理,就能够较好地实现软件的工程化生产。但是,软件工程不能停留在已有的技术水平上,应积极主动地采纳或创造新的软件技术,要注意不断总结经验,收集工作量、进度、成本等数据,并进行出错类型和问题报告的统计。这些数据既可用来评估新的软件技术的效果,又可用来指明应优先进行研究的软件工具和技术。,河北工业大学廊坊分院计算机系,1.3 软件生存周期,河北工业大学廊坊分院计算机系,软件生存周期各阶段划分,可行性研究,需求分析,概要设计,详细设计,实 现,集成测试,确认测试,使用与维护,退役,软件定义,软件开发,软件使用与维护,河北工业大学廊坊分院计算机系,1 . 软件定义,软件定义的基本任务是确定软件系统的工
18、程需求,也就是要搞清“做什么”。 软件定义过程可通过软件系统的可行性研究和需求分析两个阶段来完成。,河北工业大学廊坊分院计算机系,1)可行性研究,确定用户要求解决的项目的性质、目标和规模。 可行性研究 经济可行性、技术可行性、操作可行性、法律可行性、不同的方案。 确定软件元素的作用范围,并对软件进行成本估算,制定进度安排,最后提交软件计划。,河北工业大学廊坊分院计算机系,2)软件需求分析,确定系统必须具有的功能和性能,系统要求的运行环境,并且预测系统发展的前景。 需求分析可以划分成四个方面的工作: 问题的认识 评价和综合 需求规格说明书(SRS) 复审 面向数据流的分析方法是需求分析的主要方法
19、,其中最典型的就是结构化方法(简称SA方法)。,河北工业大学廊坊分院计算机系,2 . 软件开发,软件开发的基本过程是软件开发人员按照需求规格说明的要求,由抽象到具体,直到生成程序,并进行全面的测试,最后生产软件产品。 软件开发过程由概要设计、详细设计、实现(即编码与单元测试)、组装测试、验收测试共5个阶段组成。,河北工业大学廊坊分院计算机系,1)总体设计,软件设计的任务 数据设计 体系结构设计 接口设计 过程设计 总体设计的基本任务是确定模块分解、各模块功能和模块间接口,设计全局数据结构 。 著名的软件设计方法 逐步精化-自顶向下设计方法 面向数据的设计方法,面向数据流的设计方法 面向对象的设
20、计 阶段性成果:概要设计说明书;数据库或数据结构说明书;组装测试计划等文档。,河北工业大学廊坊分院计算机系,2)详细设计,详细设计各模块的实现细节和局部数据结构 详细设计工具 图形工具 流程图、N-S图、判定表、判定树、问题分析图 列表工具 HIPO(Hierarchy plus Input,Process, Output) 语言工具 PDL(Program Design Language),河北工业大学廊坊分院计算机系,3)编码实现,把软件设计转换成计算机可以接受的程序代码。 选择易学、使用方便的编程语言,以利于减少出错的概率和提高软件的可靠性。 编程风格是在不影响软件性能的前提下,有效地组
21、织和编写程序,提高软件的易读性、易测试性和易维护性。,河北工业大学廊坊分院计算机系,开发软件不仅仅是编程,河北工业大学廊坊分院计算机系,4)测试,软件测试的目标是尽可能多地发现错误,一次成功的测试是发现至今没有发现的错误。 测试不仅要对软件内部逻辑进行测试,还要对其外部功能进行测试。 测试在软件生命期中横跨两个阶段: 程序员在编写出每个模块之后进行的必要的测试,即单元测试 专门的测试人员对系统进行的各种综合测试,河北工业大学廊坊分院计算机系,软件研制与软件测试的层次对应关系,可行性研究,编码与调试,单元测试,组装测试,验收测试,运行与维护,需求分析 (验收测试计划),概要设计 (组装测试计划)
22、,详细设计 (单元测试计划),河北工业大学廊坊分院计算机系,3 . 软件的使用与维护及退役,任务: 通过各种维护活动使软件系统持久地满足用户的需求。 每项维护活动实质上都是一次压缩和简化了的软件定义和软件开发过程。都要经历提出维护要求、分析维护要求、提出维护方案、审批维护方案、确定维护计划、修改软件设计、修改程序、测试程序、评审、验收等步骤。,河北工业大学廊坊分院计算机系,1)维护,维护是软件的开发工作完成以后在用户使用期间对软件所做的补充、修改和增加工作。 维护工作分成以下四类: 纠错性维护 适应性维护 改善性维护 预防性维护 软件的易理解性、易测试性和易修改性是决定软件易维护性的基本因素。
23、,2)退役,河北工业大学廊坊分院计算机系,1.4 软件开发模型,软件开发模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。软件开发模型也常称为:软件过程模型软件生存周期模型软件工程范型,河北工业大学廊坊分院计算机系,软件开发模型的几种类型:以软件需求完全确定为基础的瀑布模型; 在开发初期仅给出基本需求的渐进式模型,如原型模型、螺旋模型、喷泉模型等; 以形式化开发方法为基础的变换模型、基于四代技术的模型; 基于知识的智能模型等等。在实际开发时,应根据项目的特点和现有的条件选取合适的模型,也可以把几种模型组合起来使用以便充分利用各模
24、型的优点。,河北工业大学廊坊分院计算机系,1.瀑布模型(Waterfall Model),由Winston Royce 在1970年最早提出的软件开发模型。 瀑布模型是一种传统的开发方法,它是将软件开发活动按线性顺序联结的若干阶段的模型。规定了各项软件工程活动,以及它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。 是一种以文档为驱动的模型。,河北工业大学廊坊分院计算机系,瀑布模型,河北工业大学廊坊分院计算机系,带反馈的瀑布模型,河北工业大学廊坊分院计算机系,瀑布模型的特点 按照传统的瀑布模型来开发软件,有如下几个特点:(1)阶段间具有顺序性相依赖性这个特点有两重含义:第一,必须等前一
25、阶段的工作完成之后,才能开始后一阶段的工件;第二,前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果,河北工业大学廊坊分院计算机系,(2)推迟实现的观点瀑布模型在编码之前设置了系统分析与系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现。清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现,是按照瀑布模型开发软件的一条重要的指导思想 。,河北工业大学廊坊分院计算机系,(3)质量保证的观点软件工程的基本目标是优质、高产,每个阶段都应坚持两个重要做法:第一,每个阶段都必须完成规定
26、的文档,没有交出合格的文档就是没有完成该阶段的任务。完整、准确的合格文档不仅是软件开发时期各类人员之间相互通信的媒介,也是运行时期对软件进行维护的重要依据。第二,每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。事实上,越是早期阶段犯下的错误,暴露出来的时间就越晚,排除故障改正错误所需付出的代价也越高。因此,及时审查,是保证软件质量,降低软件成本的重要措施。,河北工业大学廊坊分院计算机系,线性过程太理想化 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量; 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险; 早期的错误
27、可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。,瀑布模型主要问题:,河北工业大学廊坊分院计算机系,2. 快速原型模型(Rapid Prototype Model),在软件计划时期定义的用户需求往往是不完全和不准确的,或开发者不能确定算法的有效性、操作系统的适应性或人机交互的形式 分为抛弃模型和演化模型,河北工业大学廊坊分院计算机系,2. 原型模型示意图,河北工业大学廊坊分院计算机系,3.增量模型(Incremental Model),软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成 第一个增量往往是实现基本需求的
28、核心产品。核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最终的完善产品。,河北工业大学廊坊分院计算机系,4.螺旋模型(Spiral Model),河北工业大学廊坊分院计算机系,螺旋模型沿着螺线旋转,在笛卡尔坐标的四个象限上分别表达了四个方面的活动: 制定计划。确定软件目标,选定实施方案,弄清项目开发的限制条件。 风险分析。分析所选方案,考虑如何识别和消除风险。 实施工程。实施软件开发。 客户评估。评价开发工作,提出修正建议。,四个象限上分别表达四个方面的活动,河北工业大学廊坊分院计算机系,螺旋模型的
29、优点,支持用户需求的动态变化。 原型可看作形式的可执行的需求规格说明,易于为用户和开发人员共同理解,还可作为继续开发的基础,并为用户参与所有关键决策提供了方便。 螺旋模型特别强调原型的可扩充性和可修改性,原型的进化贯穿整个软件生存周期,这将有助于目标软件的适应能力。 螺旋模型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险。,河北工业大学廊坊分院计算机系,螺旋模型的缺点和适应场合,缺点: 如果每次迭代的效率不高,致使迭代次数过多,将会增加成本并推迟提交时间; 使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高。 适应场合:支持需求不明确、特别是大型软件系统的开发
30、,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。,河北工业大学廊坊分院计算机系,5.喷泉模型(Fountain Model),由B.H.Sollers和J.M.Edwards于1990年提出。 喷泉模型对软件复用和生存期中多项开发活动的集成提供了支持,主要支持面向对象的开发方法。“喷泉“一词本身体现了迭代和无间隙特性。系统某个部分常常重复工作多次,相关功能在每次迭代中随之加入演进的系统。所谓无间隙是指在开发活动,即分析、设计和编码之间不存在明显的边界。,河北工业大学廊坊分院计算机系,喷泉模型,1软件系统可维护性较好; 2各阶段相互重叠; 3整个模型是一个迭
31、代的过程; 4具有增量开发特性,即能做到分析一点、设计一点、实现一点,测试一点,使相关功能随之加入到演化的系统中。 5模型是对象驱动的; 6支持软部件的重用。,河北工业大学廊坊分院计算机系,6.智能模型(Intelligent Model),智能模型是基于知识的软件开发模型,它把瀑布模型和专家系统综合在一起。该模型在开发的各个阶段都利用了相应的专家系统来帮助软件人员完成开发工作,使维护能在系统需求说明一级上进行。为此,建立了各个阶段的知识库,将模型、相应论域知识和软件工程知识分别存入数据库,以软件工程知识为基础的生成规则构成的专家系统与包含应用论域知识规则的其他专家系统相结合,构成该应用论域的
32、开发系统。,河北工业大学廊坊分院计算机系,6.智能模型(Intelligent Model),河北工业大学廊坊分院计算机系,7.变换模型(transformational model),变换模型主要用于软件的形式化开发方法。 在软件需求分析确定以后,便用形式化的规格说明语言将其描述为“形式化软件规格说明”,然后对其进行一系列自动或半自动的变换,最终得到软件系统的目标程序。,河北工业大学廊坊分院计算机系,8.基于四代技术的模型,1981年R. Ross提出了第四代编程语言(即4GL),它是一种面向问题而非面向过程的语言。,河北工业大学廊坊分院计算机系,1.5 软件开发方法、工具及环境,1. 结构
33、化方法 结构化方法是E.Yourdon等人于20世纪70年代中期提出的简单实用、使用广泛的一种系统化开发软件的方法,它适用于开发大型的数据处理系统,特别是管理信息系统。 采用“抽象”和“分解”两个基本手段。 通常包括SA、SD和SP三个方面,SA和SD是生命周期方法学的基本方法。 属于功能/数据方法,即将系统的功能和涉及的数据或多或少地分开来处理。 开发出来的系统的可维护性、稳定性、可修改性和可重用性比较差。 由于不是使用构造性的术语进行思考,所以软件需求与软件实现之间存在巨大差异。,1.5.1 软件开发方法,河北工业大学廊坊分院计算机系,2 . 面向对象建模方法 面向对象方法学出现于20世纪
34、80年代中后期,并迅速成为20世纪90年代的主流开发方法。 以客观世界中实体为基础,将客观实体的属性与操作封装成对象,对象之间通过传递消息互相联系,以模拟现实中不同事物彼此之间的联系。 采用“封装”、“分类”和“继承”三个基本原则。 包括OOA、OOD、OOP、OOT四个方面,与过程建模密切相关的是OOA和OOD。 符合人们的思维习惯。 软件过程模型具有高度的连续性。 软件的可维护性和可重用性好。,河北工业大学廊坊分院计算机系,1.5.2 软件开发工具与环境,软件开发的工具软件:支持软件项目的开发、管理、维护活动的软件。,河北工业大学廊坊分院计算机系,1.5.3 计算机辅助软件工程,在软件工程
35、活动中,人们按照软件工程的原则和方法,利用计算机及其集成的软件开发环境,辅助软件项目的开发、维护及管理的过程,称为计算机辅助软件工程(即CASE,Computer-Aided Software Engineering)。,河北工业大学廊坊分院计算机系,CASE工具,事务系统规划工具 项目管理工具 支撑工具 分析和设计工具 程序设计与编码工具,测试工具 原型制造工具 维护工具 框架工具,河北工业大学廊坊分院计算机系,作业,1.什么是软件,软件有哪些特点? 3.什么是软件工程,构成软件工程的要素是什么? 5.软件工程的目标是什么? 8.软件生存周期由哪几个过程组成,每个过程分别包括哪几个阶段? 9.简述瀑布模型的主要开发过程和优缺点。,