大学计算机基础教学课件黄卓第9章 软件工程基础

上传人:w****i 文档编号:94557659 上传时间:2019-08-08 格式:PPT 页数:39 大小:1.08MB
返回 下载 相关 举报
大学计算机基础教学课件黄卓第9章 软件工程基础_第1页
第1页 / 共39页
大学计算机基础教学课件黄卓第9章 软件工程基础_第2页
第2页 / 共39页
大学计算机基础教学课件黄卓第9章 软件工程基础_第3页
第3页 / 共39页
大学计算机基础教学课件黄卓第9章 软件工程基础_第4页
第4页 / 共39页
大学计算机基础教学课件黄卓第9章 软件工程基础_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《大学计算机基础教学课件黄卓第9章 软件工程基础》由会员分享,可在线阅读,更多相关《大学计算机基础教学课件黄卓第9章 软件工程基础(39页珍藏版)》请在金锄头文库上搜索。

1、返回总目录,第9章 软件工程基础,了解软件工程的基本知识 了解结构化分析和设计的基本方法 了解软件测试的目的、准则及方法 了解程序的调试方法,教学目的, 软件工程概述, 结构化分析及设计基础, 软件测试基础, 程序的调试,本章内容,软件的定义、特点及分类,软件危机与软件工程,软件工程发展历史,软件工程概述,9.1 软件工程概述,软件工程过程与软件生命周期,软件工程的目标与原则,软件开发工具与软件开发环境,软件工程发展历史,30多年来,软件工程的研究和实践取得了长足的进步,其中一些具有里程碑意义的进展包括: 20世纪60年代末至70年代中期,在一系列高级语言应用的基础上,出现了结构化程序设计技术

2、,并开发了一些支持软件开发的工具。 20世纪70年代中期至80年代,计算机辅助软件工程(CASE)成为研究热点,并开发了一些对软件技术发展具有深远影响的软件工程环境。 20世纪80年代中期至90年代,出现了面向对象语言和方法,并成为主流的软件开发技术;开展软件过程及软件过程改善的研究;注重软件复用和软件构件技术的研究与实践。,1. 软件的定义,软件的定义、特点及分类(一),国标(GB)中对计算机软件的定义为:与计算机系统的操作有关的计算机程序、规程、规则以及可能有的文件、文档及数据。,计算机软件(Software)是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。其

3、中,程序是软件开发人员根据用户需求开发的、用程序、设计语言描述的、适合计算机执行的指令(语句)序列。数据是使程序能正常操纵信息的数据结构。文档是与程序开发、维护和使用有关的图文资料。可见软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的与软件开发、运行、维护、使用等有关的文档。,2. 软件的特点,软件的定义、特点及分类(二),软件在开发、生产、维护和使用等方面与计算机硬件相比存在明显的差异。深入理解软件的定义需要了解软件的以下特点: 软件是一种逻辑实体,而不是物理实体,具有抽象性。软件的这个特点使它与其他工程对象有着明显的差异。人们可以把它记录在纸上或存储介质上,但却无法看到软件

4、本身的形态,必须通过观察、分析、思考、判断,才能了解它的功能、性能等特性。 软件的生产与硬件不同,它没有明显的制作过程。一旦研制开发成功,可以大量拷贝同一内容的副本。所以对软件的质量控制,必须着重在软件研发方面下功夫。 软件在运行、使用期间不存在磨损、老化问题。软件虽然在生存周期后期不会因为磨损而老化,但为了适应硬件、环境以及需求的变化要进行修改,而这些修改又会不可避免地引入错误,导致软件失效率升高,从而使得软件退化。 软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题。 软件复杂性高,成本昂贵。软件是人类有史以来生产的复杂度最高的工业产品。软件涉及人类社会的各

5、行各业、方方面面,软件开发常常涉及其他领域的专门知识。软件开发需要投入大量、高强度的脑力劳动,成本高,风险大。 软件开发涉及诸多的社会因素。许多软件的开发和运行涉及软件用户的机构设置体制问题以及管理方式等,甚至涉及到人们的观念和心理,软件知识产权及法律等问题。,3. 软件分类,软件的定义、特点及分类(三),软件根据应用目标的不同,是多种多样的。软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)。应用软件是为解决特定领域的应用而开发的软件。例如,事务处理软件、工程与科学计算软件、实时处理软件、嵌入式软件、人工智能等应用性质不同的各种软件。系统软件是计算机管理自身资源,提高计算机使用效

6、率并为计算机用户提供各种服务的软件,如操作系统、编译程序、汇编程序、网络软件、数据库管理系统等。支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具性软件,包括辅助与支持开发并维护应用软件的工具软件,如需求分析工具软件、设计工具软件、编码工具软件、测试工具软件、维护工具软件等,也包括辅助管理人员控制开发进程和项目管理的工具软件,如计划进度管理工具软件、过程控制工具软件、质量管理及配置管理工具软件等。,1. 软件危机,软件危机与软件工程(一),20世纪60年代后期,“软件危机”为业界所经常谈及。软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。实际上,几乎所有的软件都不同

7、程度地存在这些问题。,在软件开发和维护过程中,软件危机主要表现在: 软件需求的增长得不到满足。用户对系统不满意的情况经常发生。 软件开发成本和进度无法控制。开发成本超出预算,开发周期大大超过规定日期的情况经常发生。 软件质量难以保证。 软件不可维护或维护程度非常低。 软件的成本不断提高。 软件开发生产率的提高赶不上硬件的发展和应用需求的增长。,2. 软件工程,软件危机与软件工程(二),国标(GB)中指出,软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。,软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段,工具支持软件的开发、管理、文

8、档生成,过程支持软件开发的各个环节的控制、管理。,软件工程的核心思想是把软件产品(就像其他工业产品一样)看作是一个工程产品来处理,把需求计划、可行性研究、工程审核、质量监督等工程化的概念引入到软件生产当中,以期达到工程项目的3个基本要素:进度、经费和质量的目标,1. 软件工程过程,软件工程过程与软件生命周期(一),软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。它的定义具有以下两方面的内涵: (1)软件工程过程是指为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。基于这个方面,软件工程过程通常包含以下4种基本活动: P(Plan):软件规格说明。规定软件的功能及其

9、运行时的限制。 D(Do):软件开发。产生满足规格说明的软件。 C(Check):软件确认。确认软件能够满足客户提出的要求。 A(Action):软件演进。为满足客户的变更要求,软件必须在使用的过程中演进。 (2)从软件开发的观点看,它就是使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)。,2. 软件生命周期,软件工程过程与软件生命周期(二),通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。一般包

10、括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。,软件生命周期的主要活动阶段有: 可行性研究与计划制定。确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成开发任务的实施计划。 需求分析。对待开发软件提出的需求进行分析并给出详细定义。编写软件规格说明书及初步的用户手册,提交评审。 软件设计。系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程。 软件实现。把软件设计转换成计算机可以接受的程序代码,即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。

11、 软件测试。在设计测试用例的基础上,检验软件的各个组成部分。编写测试分析报告。 运行和维护。将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和修改。,1. 软件工程的目标,软件工程的目标与原则(一),软件工程的目标是:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。 软件工程需要达到的基本目标应是:付出较低的开发成本,达到要求的软件功能,取得较好的软件性能,开发的软件易于移植,需要较低的维护费用,能按时完成开发、及时交付使用。 基于软件工程的目标,软件工程的理

12、论和技术性研究的内容主要包括:软件开发技术和软件工程管理。,2. 软件工程的原则,软件工程的目标与原则(二),为了达到上述的软件工程目标,在软件开发过程中,必须遵循软件工程的基本原则。这些原则适用于所有的软件项目,这些基本原则包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。 抽象。抽取事物最基本的特性和行为,忽略非本质细节。采用分层次抽象、自顶向下、逐层细化的办法控制软件开发过程的复杂性。 信息隐蔽。采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。 模块化。模块是程序中相对独立的成分,一个独立的编程单位。模块应有良好的接口定义。模块的大小要适中,模块过大会

13、使模块内部的复杂性增加,不利于对模块的理解和修改,也不利于模块的调试和重用。模块太小会导致整个系统表示过于复杂,不利于控制系统的复杂性。 局部化。要求在一个物理模块内集中逻辑上相互关联的计算资源,保证模块间具有松散的耦合关系,模块内部有较强的内聚性,这有助于控制解的复杂性。 确定性。软件开发过程中所有概念的表达应是确定的、无歧义且规范的。这有助于人与人的交互不会产生误解和遗漏,以保证整个开发工作的协调一致。 一致性。包括程序、数据和文档的整个软件系统的各模块应使用已知的概念、符号和术语;程序内外部接口应保持一致,系统规格说明与系统行为应保持一致。 完备性。软件系统不丢失任何重要成分,完全实现系

14、统所需的功能。 可验证性。开发大型软件系统需要对系统自顶向下,逐层分解。系统分解应遵循容易检查、测评、评审的原则,以确保系统的正确性。,软件开发工具与软件开发环境,1软件开发工具,2软件开发环境 软件开发环境或称软件工程环境是全面支持软件开发全过程的软件工具集合。这些软件工具按照一定的方法或模式组合起来,支持软件生命周期内的各个阶段和各项任务的完成。 计算机辅助软件工程(Computer Aided Software Engineering,CASE)是当前软件开发环境中富有特色的研究工作和发展方向。CASE将各种软件工具、开发机器和一个存放开发过程信息的中心数据库组合起来,形成软件工程环境。

15、CASE的成功产品将最大限度地降低软件开发的技术难度并使软件开发的质量得到保证。,软件工程环境可从以下几种角度分类: 按软件开发模型及开发方法分类,有支持瀑布模型、演化模型、螺旋模型、喷泉模型以及结构化方法、信息模型方法、面向对象方法等不同模型及方法的软件工程环境。 按应用范围分类,有通用型和专用型软件工程环境,其中专用型软件工程环境与应用领域有关,故又可称为应用型软件工程环境。 按开发阶段分类,有前端开发环境(支持系统规划、分析、设计等阶段的活动)、后端开发环境(支持编程、测试等阶段的活动)、软件维护环境和逆向工程环境等。此类环境往往可通过对功能较全的环境进行剪裁而获得。,结构化分析方法 结

16、构化设计方法,结构化分析与设计基础,9.2 结构化分析与设计基础,结构化分析方法(一),软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求的过程。需求分析将创建所需的数据模型、功能模型和控制模型。,1需求分析及需求分析方法,(1)需求分析的内容包括:提炼、分析和仔细审查已收集到的需求,确保所有利益相关者都明白其含义并找出其中的错误、遗漏或其他不足的地方,从用户最初的非形式化需求到满足用户对软件产品的要求的映射,对用户意图不断进行提示和判断。,(2)需求分析阶段的工作。,(3)需求分析方法。常见的需求分析方法有:,1)结构化分析方法。主要包括:面向数据流的结构化分析(Structured Analysis,SA)方法、面向数据结构的Jackson(Jackson System Development,JSD)方法、面向数据结构的结构化数据系统开发(Data Structured System Development,DSSD)方法。,2)面向对象的分析方法(Object-Oriented Analy

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号