软件工程第一章软件工程概述

上传人:tian****1990 文档编号:81949135 上传时间:2019-02-22 格式:PPT 页数:79 大小:912KB
返回 下载 相关 举报
软件工程第一章软件工程概述_第1页
第1页 / 共79页
软件工程第一章软件工程概述_第2页
第2页 / 共79页
软件工程第一章软件工程概述_第3页
第3页 / 共79页
软件工程第一章软件工程概述_第4页
第4页 / 共79页
软件工程第一章软件工程概述_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《软件工程第一章软件工程概述》由会员分享,可在线阅读,更多相关《软件工程第一章软件工程概述(79页珍藏版)》请在金锄头文库上搜索。

1、软件工程,第1讲 软件工程概述,1.1 软件危机与软件工程的产生 1.2 软件工程的基本概念 1.3 软件工程研究的主要内容 1.4 软件开发模型,1.1 软件危机与软件工程的产生,1.1.1 软件与软件的特点 软件的定义: 软件是能够完成预定功能和性能的可执行的计算机程序和使程序正常执行所需要的数据,加上描述程序的操作和使用的文档。 简略地说:,软件程序文档,软件的复杂性 软件是一种逻辑实体,而不是具体的物理实体,它具有抽象性 软件是“开发”出来的,不是“制造”出来的 软件维护不同于硬件维修(参看硬件和软件失效率的对比图) 软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的

2、依赖性 软件的开发效率仍相当低,至今尚未完全摆脱手工作坊式的开发方式,硬件和软件失效率的对比:,1.1.2 软件的三个发展阶段,第1个阶段:程序时期(约为20世纪50至60年代) 程序规模小,每一个程序都是为求解某一个问题而专门设计的,几乎没有什么系统的方法可遵循,程序设计常常是设计者头脑中进行的隐含过程,除了程序清单,基本没有设计文档资料,其生产方式完全是“个体手工方式”,人们只有程序的概念而没有软件的概念。,第2个阶段:程序+说明时期(约为20世纪60至70年代),软件技术取得了很大的进展,如多用户人机交互、文件管理、多种高级语言的出现、形式语言理论、编译技术的突破等,给计算机的广泛应用奠

3、定了基础。 但是,软件应用的需求变多,规模变大,复杂程度变高,使得“个体生产方式”已经不能适应生产要求,而是需要多人分工合作共同编制程序,形成了所谓的“作坊式生产方式”,这种方式造成了开发约定不清晰、程序说明不完整,导致了软件质量不高、成本失控、生产效率过低、工期延误,后期难于维护,甚至一个软件项目在开发过程中途夭折等,最终导致“软件危机”的开始。,软件危机 软件危机是指在计算机软件的开发和维护中所遇到的一系列严重问题 原因: 1)软件本身的复杂性 2)软件维护和开发方法不正确 表现: 软件开发周期大大超过规定日期; 软件开发成本严重超标; 软件质量难于保证。,例: Windows95有100

4、0万行代码 Windows2000有5000万行代码 Exchange2000和 Windows2000开发人员结构,为了摆脱软件危机这一困境,北大西洋公约组织NATO (North Atlantic Treaty Organization ) 于1968年召开软件研讨会(Conference on Software Engineering),并首次提出“软件工程”这个术语,从此诞生了软件工程这个新兴学科。 从70年代初开始,软件工作者主要围绕软件过程和开发模型、开发方法和技术、开发工具和环境,开发规范和标准以及软件管理等各个方面的研究和实践,使“作坊式生产方式”,逐步过渡到“软件工厂式的生产

5、方式”,软件的生产步入了系列化、产品化、工程化和标准化的进程。,第3个阶段:软件工程时期(约为20世纪70年代以后),1.2 软件工程的基本概念,1.2.1 软件工程定义 是指导软件开发和维护的工程类学科,它以计算机科学理论及其他相关学科的理论为指导,采用工程化的概念、原理、方法和技术,进行软件的开发和维护,并与经过时间证明正确的管理方法与措施相结合,以较少的代价获取高质量的软件。,1.2.2 软件工程的目标,具体包括: 付出较低的开发成本 达到要求的软件功能 取得较好的软件性能 开发的软件易于移植 需要较低的维护费用 能按时完成开发工作,及时交付使用,1.2.3 软件生存周期SLC(Soft

6、ware Life Cycle) 一个软件产品通常是从模糊的概念开始,逐步建立起产品的需求,并对需求进行说明,然后进行设计、实现和测试。如果客户是满意的,那么就可安装产品,并且开始运行和维护它。如果产品到达了其有用生命的尽头就会退役、报废或停止使用。这一系列过程,我们称为软件的生命周期。,软件生命周期 软件的生命周期可以归结为以下几个主要阶段:软件计划、需求分析、软件设计、编码、测试、维护与运行、退役等。 实际上,每个软件的生命周期有所不同,如有的软件可能在需求阶段花费几年的时间,有的软件在设计和实现阶段只需几个月时间,有的软件则在维护阶段可能长达十几年。,软件生存周期划分的意义 把软件的整个

7、生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能简化每一步的工作,使软件开发过程易于控制和管理。 采用这种划分,使得每一个阶段的工作相对独立,有利于简化整个问题的解决,且便于不同人员分工协作。而且严格的科学的评审制度提高了软件的质量,从而大大提高了软件开发的生产率和成功率。,第一个阶段:软件计划(Planning) 确定要解决的“问题是什么”及“解决问题的可行方案” 即确定要开发软件系统的总目标,给出它的功能、性能、可靠性以及接口等方面的概要性要求; 从技术方面、经济方面、法律方面探讨解决问题的可能方案 对可利用的资源(如计算机硬件、软件、人力等)、成本、可取得的经济效益、开发的

8、进度做出估计, 制定出完成开发任务的实施计划等,提交管理机构评审。,第二个阶段:需求分析和规格说明(Requirement Analysis and Specification) 确定目标系统要“做什么”。 对软件计划阶段的要求进一步细化和求精,强调软件分析人员与用户、软件分析人员与软件开发人员的交互。 充分理解软件的作用域、所需功能、性能及接口、安全与保密、人机工程与人机界面、数据定义及数据库、安装及验收等需求,落实用户所需文档、用户操作和运行需求、用户维护需求,然后写出软件需求规格说明书,提交管理机构评审。,第三个阶段:设计(Software Design) 确定目标系统要“怎么做”。 软

9、件设计是将需求转换成为软件的表示,包括数据结构、软件结构、接口表示和过程细节。 通常将前三者划为软件的初步(概要)设计,后者则归为软件的详细设计。 这些软件表示应该按照规定的标准形式加以描述,形成软件设计规格说明书,提交管理机构评审。,第四个阶段:编码(Coding) 编码体现了目标系统的“具体实现”。 编码是将设计转换成计算机可以接受的语言代码源程序。如果设计给出的描述很详细,那么编码几乎可以机械地完成。自然,编码必须与设计表示一致、具有结构简单、清晰易读等良好的编码风格。,第五个阶段:软件测试(Software Testing) 软件测试是保证软件质量的重要手段,其主要任务是检查该软件是否

10、符合要求,其目的是发现软件存在的错误。 软件测试依据软件规格说明设计测试用例,并施加在已经编码的程序上进行执行,经过对预期结果和实际执行结果的比较、分析,来发现程序的错误,最后形成测试报告。 测试的主要过程有单元、集成、系统、验收和安装测试等。,第六个阶段:运行/维护(Running/Maintenance) 该阶段体现软件是否能够持久满足用户的需求。已交付的软件投入正式使用后,便进入运行和维护阶段。 软件维护的实质是对软件继续进行查错、纠错、修改和确认的过程。无论是应用软件或系统软件,都要在使用期间不断改善和加强产品的功能和性能、适应运行环境的改变、纠正在开发期间未能发现的遗留错误。,第七个

11、阶段:报废/退役(Retirement) 当软件经过一段时期运行和服务后,便可能报废或退役。 主要的原因有: 为满足用户的需求所做的维护费用太高,可能比新开发一个软件所花费的代价更高。 维护的少量变化对于依赖性很强的软件的整体功能而言,有极大的危险。 环境的变更(如硬件或操作系统)导致软件的更换。 用户不再需要这个软件。,1.3 软件工程研究的主要内容,规范和标准 方法和技术 工具和环境 过程与管理,1.3.1 规范和标准,(1) 一个好的企业,应有一套良好的标准来配套 软件的工业化生产过程应具备的特点: 明确的工作步骤 详细具体的规范化文档 明确的质量评价标准 (2)软件工程标准的意义 提高

12、软件的质量 提高软件的生产率 提高软件人员之间的通信效率 提高软件管理水平 降低软件的成本 缩短软件开发周期,(3)软件工程标准的层次 根据软件工程标准制定的机构和标准适用的范围有所不同,它分为5个级别: 国际标准:如ISO 8631-86Information Processing-program constructs and conventions for their representation信息处理-程序构造与表示法的约定。 国家标准 行业标准: IEEE(Institute Electrical and Electronic Engineers)美国电气与电子工程师学会。例如ANS

13、I/IEEE Str 828-1983(软件配置管理计划标准)。 企业规范: 国内某企业软件开发规范 项目规范,国家标准: GB/T8567-1988 GB/T8567-1988计算机软件产品开发文件编制指南建议:在一项计算机软件的开发过程中,一般地说,应该产生14种文件。这些文件是:,可行性研究报告 项目开发计划 软件需求说明书 数据要求说明 概要设计说明书 详细设计说明书 数据库设计说明书,用户手册 操作手册 模块开发卷宗 测试计划 测试分析报告 开发进度月报 项目开发总结报告,软件质量国家标准,1.3 软件工程研究的主要内容,规范和标准 方法和技术 工具和环境 过程与管理,1.3.2 方

14、法和技术,软件方法 软件方法体现了软件开发人员看待系统的立场和观点,它确定开发的各个阶段,规定每个阶段的活动、产品、实施步骤和完成准则。,软件方法与技术的例子 (1)面向数据流的方法 (2)面向数据结构的方法 (3)面向功能的方法 (4)面向对象的方法 (5)形式化方法,1.3 软件工程研究的主要内容,规范和标准 方法和技术 工具和环境 过程与管理,1.3.3 工具和环境,软件工具 软件工具可以帮助软件项目开发过程中某些阶段或某个环节实现软件过程自动化,从而提高软件的劳动生产率和质量、缩短软件开发周期、降低软件生产成本。有时,人们称其为“帮助开发软件的软件”。 按其功能大致可分为: 需求分析工

15、具 设计工具 实现工具 测试工具 维护工具 项目管理工具 配置管理工具等。,(1)需求分析工具 用以辅助系统分析员生成完整、正确、一致的需求说明,改善软件开发人员之间的通信状况。 例如,具有代表性的有1977年美国密执安大学研制的ISDOS(Information System Design and Optimization System)中用于需求分析的工具PSL/PSA(Problem Statement Language/Problem Statement Analyzer)。,又如,美国TRW公司研制的SREM (Software Requirements Engineering Me

16、thodology)中的RSL/REVS(Requirements Statement Language/Requirements Engineering and Validation System)。 又如,Sybase公司生产的S-Designor ProcessAnlyst可以辅助分析人员利用面向数据流的方法如Gane & Sarson、Yourdon/DeMarco、SSADM (Structured System Analysis and Design Methodology) 、 以及OMT(一种object-oriented method)中的functional model。它可以生成RTF格式的文档。,(2)设计工具 用来进行系统设计,数据设计,接口设计,形成设计规格说明,检查并排除规格说明中的错误。 如美国Hughes飞机公司80年代初开发的AIDES(Automated Interactive Design and Evaluation System)系统,它可以辅助设计人员用结构化设计方法以交互方式对软件系统

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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