首页 《软件工程》1_软件工程概述

《软件工程》1_软件工程概述

举报
开通vip

《软件工程》1_软件工程概述null软件工程与项目管理软件工程与项目管理第1章 软件工程概述第1章 软件工程概述掌握:软件危机、软件工程、软件生命周期、软件开发方法、软件开发模型、软件工具及支撑环境的相关概念。1.1 软件危机1.1 软件危机1.1.1 软件 1.1.1 软件 1.软件的定义1.软件的定义 软件是计算机系统中与硬件相互依存的一部分,它是包括程序、数据及相关文档的完整集合。其中, 程序是指按事先设计的功能和性能要求执行的指令序列; 数据是指使程序能正常操纵信息的数据结构; 文档是指与程序开发、维护和使用有关的图文资料...

《软件工程》1_软件工程概述
null软件工程与项目管理软件工程与项目管理第1章 软件工程概述第1章 软件工程概述掌握:软件危机、软件工程、软件生命周期、软件开发方法、软件开发模型、软件工具及支撑环境的相关概念。1.1 软件危机1.1 软件危机1.1.1 软件 1.1.1 软件 1.软件的定义1.软件的定义 软件是计算机系统中与硬件相互依存的一部分,它是包括程序、数据及相关文档的完整集合。其中, 程序是指按事先设计的功能和性能要求执行的指令序列; 数据是指使程序能正常操纵信息的数据结构; 文档是指与程序开发、维护和使用有关的图文资料。2.软件的分类2.软件的分类1)按软件功能 系统软件 支撑软件 应用软件null2)按软件规模 微型软件 小型软件 中型软件 大型软件 甚大型软件 极大型软件3. 软件的特点3. 软件的特点软件是一种逻辑实体,而不是物理实体。 软件的生产过程是开发,而不是制造。 软件不存在磨损、老化现象。 软件的开发和运行常常受到计算机系统的限制。 软件是复杂的。null美国宇航局的软件系统一览表null图1-1 计算机系统中软硬件成本所占比例的变化1.1.2 软件生产的发展 1.1.2 软件生产的发展 null程序设计时期(约为20世纪50~60年代) 程序系统时期(约为20世纪60~70年代) 软件工程时期(20世纪70年代以后)null1.1.3 软件开发面临的主要问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 1.1.3 软件开发面临的主要问题 null 西方计算机科学家在20世纪60—70年代总结了软件开发和维护过程中遇到的一系列严重问题,表现为以下几方面: 对软件开发成本和进度的估计常常不准确,开发成本超出预算,实际进度相比预定 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 一再拖延。 用户对“已完成”系统不满意的现象时有发生。 软件质量常常不可靠,“缺陷”和“补丁”不断。 软件的可维护程度非常低。 软件通常没有相应的文档资料。 软件成本不断提高。 软件开发生产率的提高赶不上硬件的发展和人们需求的增长。1.1.4 软件危机的提出 1.1.4 软件危机的提出 null1968年,北大西洋公约组织的计算机科学家在联邦德国召开国际会议,第一次讨论了“软件危机”问题。 “软件危机”是指在计算机软件的开发和维护过程中所遇到的一系列严重问题,这类问题不仅仅是“不能正常运行的软件”才具有的,实际上几乎所有软件都不同程度地存在这类问题。 概括来说,软件危机包含两方面的问题:一是如何开发软件,以满足不断增长、日趋复杂的需求;二是如何维护规模不断膨胀的软件产品。 这次会议同时提出了解决“软件危机”的途径,即采用工程化的思想来管理软件开发的过程,并正式提出“软件工程”一词,从此一门新兴的工程学科—软件工程—应运而生。1.2 软件工程1.2 软件工程1.2.1 软件工程的定义1.2.1 软件工程的定义null软件工程是导软件开发和维护的一门工程学科。它采用工程的概念、原理、技术和方法,把经过时间检验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,用于开发和维护软件。 软件工程是一门综合性的交叉学科,它涉及哲学、计算机科学、工程科学、管理科学、数学及应用领域知识。2.软件的分类2.软件的分类1)按软件功能 系统软件 支撑软件 应用软件1.2.2 软件工程的内容和目标1.2.2 软件工程的内容和目标null软件工程的三个要素 软件工程方法 软件工具 软件工程的过程null软件工程的目标 付出较低的开发成本 达到要求的软件功能 取得较好的软件性能 开发的软件易于移植 需要较低的维护费用 能按时完成开发工作,及时交付使用1.2.3 软件工程的作用1.2.3 软件工程的作用null(1)从软件企业的专业人才来讲,其作用体现在以下几个方面: 高层管理人员利用软件工程的理论和方法来管理整个公司。 中层项目经理和软件工程师:利用软件工程的理论和方法,来管理项目组的软件开发。 软件蓝领工人利用软件工程的理论和方法来实现软件的开发。 软件营销人员利用软件工程的理论和方法与客户进行沟通,以赢得客户的信任。 软件实施和维护人员:利用软件工程的理论和方法,来实现软件的功能、性能与接口的实施和维护。 软件售前人员利用软件工程的理论和方法,来提高投标成功的把握。null(2)从软件项目管理来讲,其作用体现在:在规定的时间内按照规定的成本实现符合预期的质量目标(软件的功能、性能和接口达到需求 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 书的要求)的软件。 (3)从软件企业本身来讲,其作用体现在:持续地规范软件开发过程和软件管理过程,不断地优化软件组织的个人素质和集体素质,从而逐渐增强软件企业的市场竞争实力。 (4)从软件企业发展进程来讲,其作用体现在:克服软件危机,控制软件开发进度,节约开发成本,提高软件质量。2.软件的分类2.软件的分类1)按软件功能 系统软件 支撑软件 应用软件1.2.4 软件工程的基本原则1.2.4 软件工程的基本原则null用分阶段的生存周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组的人员应该少而精 承认不断改进软件工程实践的必要性1.3 软件生命周期1.3 软件生命周期1.3.1 软件生命周期的定义1.3.1 软件生命周期的定义null可行性分析 需求分析 概要设计 详细设计 编码 测试 维护null可行性分析 在项目进入具体开发之前,首先需要进行的步骤是可行性分析。这一步骤必须回答的问题是“将要开发的软件系统是做什么的?在经济上、技术上和操作上是否可行?”,具体来说,需要考虑的问题有:该软件项目的性质是什么、它是数据处理问题还是实时控制问题、它是科学计算问题还是人工智能问题等,以及该问题是否有行得通的解决办法,若有解决问题的办法,则需要多少费用、多少资源(包括硬件、软件和人员)、多少时间。null需求分析 这一阶段主要要解决的是系统“做什么”的问题。用户了解他们所面对的问题,知道必须做什么,但是通常不能完整地、准确地表达出来,也不知道怎样用计算机解决他们的问题。而软件开发人员虽然知道怎样用软件完成人们提出的各种功能要求,但是,对用户的具体业务和需求不完全清楚,这是需求分析阶段的困难所在。null概要设计 这一阶段主要解决的是系统“怎么做”的问题。具体来说,开发人员要把确定的各项功能需求转换成相应的软件体系结构,在该结构中,每个成分都是意义明确的模块,即每个模块都和某些功能需求相对应。因此,概要设计的核心内容就是设计软件的结构,弄清该结构由哪些模块构成,每个模块的功能是什么,这些模块之间的层次结构是怎样的。同时,还要设计该应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。null可行性分析 在项目进入具体开发之前,首先需要进行的步骤是可行性分析。这一步骤必须回答的问题是“将要开发的软件系统是做什么的?在经济上、技术上和操作上是否可行?”,具体来说,需要考虑的问题有:该软件项目的性质是什么、它是数据处理问题还是实时控制问题、它是科学计算问题还是人工智能问题等,以及该问题是否有行得通的解决办法,若有解决问题的办法,则需要多少费用、多少资源(包括硬件、软件和人员)、多少时间。null详细设计 详细设计阶段就是对每个模块要完成的功能具体描述为精确的、结构化的过程描述,即该模块的控制结构是怎样的,先做什么,后做什么,有什么样的条件判定,有哪些重复处理等,然后用相应的工具把这些控制结构表示出来。null编码 编码阶段就是把每个模块的控制结构转换成计算机可接受的程序代码,即用种某特定程序设计语言编写的“源程序清单”。编写出的程序应该结构好、清晰易读,并与设计一致。null测试 软件测试阶段的主要任务是发现和排除错误,也就是对软件系统进行从上到下的全面的测试和检验,看它是否符合软件总体设计方案规定的功能和要求。测试分为模块测试、集成测试、确认测试。模块测试是查找各模块在功能和结构上存在的问题。集成测试是将各模块按一定顺序组装起来进行的测试,主要是查找各模块之间的接口问题。确认测试是按需求说明书对软件的功能逐项进行测试,以确定软件功能是否符合用户的需求,开发的软件是否合格,能否交付用户使用。null维护 软件维护是软件生存周期中时间最长的阶段。己交付的软件正式投入使用后便进入了软件维护阶段,它可以持续几年甚至几十年。在软件运行过程中,可能由于各方面的原因需要对其进行修改,如运行中发现了软件隐含的错误而需要修改,为了适应变化了的软件运行环境而需要做适当地变更,也可能是因为用户业务发生变化而需要扩充和增强软件的功能等。 null1.4 软件开发方法1.4 软件开发方法1.4.1 结构化开发方法1.4.1 结构化开发方法null1978年,E.Yourdon和L.L.Constan-tine提出 SASD(Structured Analysis and Structured Design)方法,也可称为面向功能的软件开发方法,或面向数据流的软件开发方法 结构化开发方法的指导思想是自顶向下、逐步求精,基本原则是功能分解与抽象,它由结构化分析、结构化设计和结构化程序设计构成1.4.2 面向数据结构的开发方法1.4.2 面向数据结构的开发方法null以数据结构为驱动的 以1975年M.A.Jackson提出的Jackson方法和1974年J.D.Warnier提出的Warnier方法最有代表性 主要思想是:一个问题的数据结构与处理该问题数据结构的控制结构有着惊人的相似之处,根据这一思想,从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其他细节,就可以得到完整的程序结构图 对输入、输出数据结构明确的中小型系统特别有效1.4.3 面向对象的开发方法1.4.3 面向对象的开发方法null面向对象开发方法的基本出发点是尽可能按照人类认识世界的方法和思维方式来分析和解决问题。客观世界是由许多具体的事物、事件、概念和 规则 编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf 组成的,这些均可看成对象 面向对象OO(Object-Oriented)技术在需求分析、可维护性和可靠性这3个软件开发的关键环节和质量指标上有了实质性的突破 ,彻底解决了在这些方面存在的问题1.5 软件开发模型1.5 软件开发模型1.5.1 瀑布模型1.5.1 瀑布模型null 瀑布模型是由温斯顿•罗伊斯(Winston Royce)在1970年提出的,其核心思想是按工序将问题简化,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。瀑布模型将软件生命周期划分为软件计划、需求分析和定义、软件设计、软件实现、软件测试、软件运行和维护6个阶段,并规定了它们自上而下、相互衔接的固定次序nullnull瀑布模型的特点十分明显: 软件生存周期的顺序性 尽可能推迟软件的编码 强调文档null瀑布模型的主要问题: 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险。 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。1.5.2 快速原型模型1.5.2 快速原型模型null 快速原型模型主要是针对在软件开发过程中需求分析不明确的情形而提出的,它又称为原型模型。采用快速原型模型进行开发的过程是:在开发真实系统之前构造一个原型,在该原型的基础上逐渐完成整个系统的开发工作。nullnull与瀑布模型相比,快速原型模型克服了瀑布模型的缺点,减少了由于软件需求不明确而带来的开发风险;软件原型直观、形象,更多地遵循了人们认识事物的规律,因而更容易被人们接受;采用模拟的方法,缩短了用户和系统分析、设计人员之间的距离;在整个系统开发过程中反馈及时,标准统一,因而可及时地暴露问题;充分利用了新一代软件开发工具,使系统开发和运行的效率都大大提高。 快速原型模型的不足之处在于:快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。1.5.3 渐增模型1.5.3 渐增模型nullnull与瀑布模型相比,快速原型模型克服了瀑布模型的缺点,减少了由于软件需求不明确而带来的开发风险;软件原型直观、形象,更多地遵循了人们认识事物的规律,因而更容易被人们接受;采用模拟的方法,缩短了用户和系统分析、设计人员之间的距离;在整个系统开发过程中反馈及时,标准统一,因而可及时地暴露问题;充分利用了新一代软件开发工具,使系统开发和运行的效率都大大提高。 快速原型模型的不足之处在于:快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。1.5.4 螺旋模型1.5.4 螺旋模型null 螺旋模型将软件开发划分为制订计划、风险分析、实施开发和客户评估4类活动,活动描述如下: 制订计划:确定软件目标,选定 实施方案 关于机房搬迁实施方案高中班级自主管理实施方案公交公司安全生产实施方案成立校园管乐队的实施方案中层管理人员竞聘上岗实施方案 ,明确项目开发的限制条件。 风险分析:分析所选方案,考虑如何识别和消除风险。 实施开发:实施软件开发仍然按照瀑布模型中的分析、设计、编码、测试等步骤进行。 客户评估:评价软件的功能和性能,并提出修改意见。null1.5.5 喷泉模型1.5.5 喷泉模型null1.5.6 构件化开发模型1.5.6 构件化开发模型null 用于演化式的开发或迭代式的开发,它从与客户的交流开始,首先获得问题的定义,同时标识基本的类,然后对项目进行计划与风险分析。在进入开发阶段后,首先从候选类的标识开始,在已有的类库中查找相应的类是否存在,如果已经存在则提取出来进行复用;如果候选类不存在,就要利用面向对象的方法创建并存放到类库中,初步完成系统的构造后,再送客户进行评估,这样即完成了第一次迭代。如此反复迭代,螺旋向前,逐步完成项目的开发。1.6 软件工具及支撑环境1.6 软件工具及支撑环境1.6.1 软件工具的分类1.6.1 软件工具的分类null需求分析工具 设计工具 编码工具 确认工具 维护工具1.6.2 软件开发支撑环境1.6.2 软件开发支撑环境null软件开发支撑环境是指在基本硬件与软件的基础上,提供一组能支持软件生存周期的工具,即提供能支持软件开发、维护、管理和质量控制等各个方面,而且能适应多种用户要求的工具。 软件开发支撑环境一般由数据库、一组工具和一组统一的命令或调用方式3部分组成1.6.3 常用CASE工具1.6.3 常用CASE工具nullVisio IBM Rational系列 Power Designer第1章结束 第1章结束 谢谢!
本文档为【《软件工程》1_软件工程概述】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_386169
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2012-05-04
浏览量:395