软件工程经典教程之软件工程概述.ppt
《软件工程经典教程之软件工程概述.ppt》由会员分享,可在线阅读,更多相关《软件工程经典教程之软件工程概述.ppt(67页珍藏版)》请在课桌文档上搜索。
1、第一章 软件工程概述,2,本章主要内容,1.0 计算机基础1.1 软件的概念1.2 软件危机1.3 软件工程1.4 软件生命周期1.5 软件开发过程模型1.6 软件开发方法简述,3,1.0 计算机基础,计算机组成冯 诺依曼体系结构输入设备输出设备存储器运算器控制器能存储计算步骤(程序)计算机中数的表示二进制八进制十进制数据:数值型,文本型,图形,图象,多媒体数据,计算机之父:冯 诺依曼,4,1.0 计算机基础,计算机语言语言类型:机器语言(二进制指令),汇编语言,高级语言BASIC,C,FORTRAN,COBOL,C+,JAVA,C#语言要素:词汇,语法,控制逻辑控制逻辑:顺序,分支,循环程序
2、为解决某个计算问题,按事先设计的功能和性能要求执行的指令序列。如,计算圆面积:,5,1.0 计算机基础,数据结构:计算机存储、组织数据的方式。变量,数组,记录,文件存储结构(物理结构),逻辑结构算法:求解问题的步骤序列.(1)每个步骤精确描述,无歧义;(2)步骤是有限的;(3)可以用计算机表示。,程序=数据结构+算法,6,1.1 软件的概念,1.1.1 软件技术的发展阶段,1950,1960,1970,1980,1990,2000,程序设计阶段50至60年代初程序系统阶段60至70年代初软件工程阶段70年至90年代第四代技术阶段90年代之后,早期面向批处理有限的分布自定义软件,第二阶段多用户数
3、据库实时软件产品,第三阶段分布式系统嵌入“智能”低成本硬件消费者的影响,第四阶段强大的桌面系统面向对象技术专家系统人工神经网络并行计算网络计算机,7,计算机软件发展的几个时期和特点,8,1.1 软件的概念,1.1.2 软件的定义计算机程序、方法、规则和相关的文档资料以及在计算机上运行时所必需的数据(IEEE,1983)。软件=程序+数据+文档1.1.3 软件的特点,抽象性生产无明显制造过程无磨损性对计算机硬件依赖性软件的手工开发方式,软件本身复杂性高软件的高成本规模大应用范围广,9,1.1 软件的概念,1.1.4 软件的分类,按功能应用软件:Photoshop,Office系统软件:Windo
4、ws,Linux,驱动程序支撑软件:Visual Studio,Rose,按工作方式分时软件(多任务)实时软件(单任务)交互式软件批处理式软件(*.bat),按服务对象项目软件(科研课题软件)市场软件(ACD See),10,1.1 软件的概念,按规模微型小型中型大型甚大极大,嫦娥一号卫星任务控制软件:98.8万行源代码Windows 95:1500万行 Windows 98:1800万行 Windows XP:3500万行 Windows Vista:5000万行,11,1.2 软件危机,1.2.1 什么是软件危机计算机系统发展的早期时代所形成的错误概念与做法,严重阻碍了计算机软件的开发人们
5、将60年代后期,在软件的开发和维护过程中,遇到的一系列严重问题,统称为软件危机。软件开发费用和进度难以控制开发的软件不能满足用户需求软件可维护性差软件质量差概括起来,一是如何开发软件,以满足社会对软件日益增长的需求;二是如何维护数量不断增长的已有软件产品。,12,1.2 软件危机,1.2.2 软件危机产生的原因与软件本身的特点有关软件是一种逻辑实体,抽象性强,开发质量较难评价,开发过程管理和控制较难。软件生产没有明显的制造过程,生产过程表现为人脑的思维过程,具有不可见性。软件存在退化问题,要根据硬件及环境的需求及变化进行修改。软件对硬件和环境有不同的依赖,造成软件升级和移植问题。软件规模越来越
6、大,复杂性越来越高。软件成本昂贵,要投入大量的、复杂的、高强度的脑力劳动。软件工作涉及许多社会因素。机构、体制、管理等都可能影响软件工作的成败。,13,14,1.2 软件危机,与软件开发的方法和技术有关对软件开发与维护存在诸多错误认识。如软件与程序概念不清、忽视软件开发前期调研和系统分析工作、开发方法没有统一规范的方法论指导、忽视测试阶段工作、轻视软件维护(紫光拼音)等。软件开发与维护方法不正确。软件生产不能摆脱手工方式,效率低;软件涉及各个行业,常涉及其他行业专业知识,应该有比较明确的分工。实际上,往往项目中只有几个程序员,既负责系统分析设计,还负责编码,对软件工程师要求过高,且软件对开发者
7、依赖性非常强。,15,1.2 软件危机,1.2.3 解决软件危机的途径既要有技术措施(方法和工具),又要有必要的组织管理措施。将软件开发看作是一个工程项目正确地应用各种方法和工具有效地使用各种软件工具和环境按工程化的原则和方法组织软件开发工作是有效的,是摆脱软件危机的一个主要出路。为了解决软件危机,既要有技术措施,也要有组织管理措施,软件工程正是从技术和管理两方面来研究如何更好地开发和维护计算机软件的。,16,1.3 软件工程(Software Engineering,SE),1.3.1 软件工程的定义:Bauer,1968:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行
8、的可靠软件的一系列方法。IEEE83:开发、运行、维护和修复软件的系统方法。IEEE93:将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。软件工程:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必须的相关文档资料。软件工程学:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。,17,1.3 软件工程,1.3.2 软件工程的内容软件工程学的主要内容是软件开发技术和软件工程管理。软件开发技术包含软件工程方法学、软件工具和软件开发环境;软件工程管理学包含软件工程经济学和软件管理学。应用计算
9、机、数学及管理科学等原理,借鉴传统工程的原则方法,创建软件以达到提高质量,降低成本的目的。计算机科学、数学用于构造模型与算法。工程科学用于制定规范设计、评估成本及确定权衡。管理科学用于计划、资源、质量、成本等管理。,18,1.3 软件工程,1.3.3 软件工程的三要素工具:为软件工程方法提供自动或半自动的软件支撑环境。计算机辅助软件工程(CASE)。方法:提供软件开发的各种方法。包括项目计算与估算方法、需求分析和设计方法、编程测试方法、维护方法等。过程:为了获得高质量软件需要完成的一系列任务的框架,规定了完成各项任务的步骤。规定了“什么人在什么时候用什么方法做什么事情”。1.3.4 软件工程层
10、次图,19,1.3 软件工程,1.3.5 软件工程的基本原理Boehm于1983年提出软件工程的7条基本原理,一般认为这是确保软件产品质量和开发效率的最小集合。严格按照软件生命周期各阶段计划进行管理 坚持进行阶段评审实施严格的产品控制采纳现代先进的程序设计技术结果应能清楚地审查开发小组的人员应少而精承认不断改进软件工程实践的必要性成功软件工程的基本要求=1分技术+6分管理,20,1.3 软件工程,1.3.6 软件工程的基本目标软件工程需要解决的问题主要有:软件成本、软件可靠性、软件维护、软件生产率和软件复用。软件工程是一门工程性学科,其目的是采用各种技术和管理上的手段组织实施软件工程项目,成功
11、的创建软件系统。项目成功的几个基本目标:付出较低的开发成本,在规定时限内满足用户功能、性能要求。开发的软件移植性要比较好。易于维护且维护费用较低。软件系统的可靠性高。目标难以同时满足,可在保证项目成功的前提下,作出权衡。为了使整个组织具有最好的战斗力,我们要重用几个人,照顾一些人,在万不得已的情况下委屈一批人。,21,1.3 软件工程,1.3.7 软件工程的开发原则模块化:复杂问题分解为较小的、相对独立的、容易求解的子问题,有助于抽象和表示复杂系统。抽象和信息隐藏:抽象抓住主要问题,忽略无干细节;信息隐藏有助于保证模块的独立性。模块的高内聚低耦合:模块内尽量紧密,模块间尽量松散。确定性:概念表
12、达规范、确定,无二义性。一致性:遵循统一、规范的方法,开发过程标准化。完备性:开发运行过程中严格评审,保证各阶段开发结果的有效性。,22,1.4 软件过程和软件生命周期,1.4.1 软件过程ISO 9000:把输入转化为输出的一组彼此相关的资源和活动。软件过程是为了获得高质量软件产品,在软件工具支持下由软件工程师完成的一些列软件工程活动。软件过程规定了完成各项任务的工作步骤,与软件生存周期、生存期模型、软件开发工具和参与开发的人员等多方面因素有关。软件开发过程是把用户要求转化为软件需求,把软件需求转化为设计,用代码来实现设计、对代码进行测试,完成文档编制并确认软件可以投入运行使用的过程。软件过
13、程定义了运用方法的顺序、应该交付的文档、开发软件的管理措施和各阶段任务完成的标志。,23,1.4 软件过程和软件生命周期,1995年,国际标准化组织公布了新的国际标准ISO/IEC 12207 信息技术软件生存期过程,将软件开发需要完成的活动概括为主要过程、支持过程和组织过程,每一大过程又包括若干具体过程,共17个。,24,1.4 软件过程和软件生命周期,1.4.2 软件生命周期软件生命周期(Software Life Cycle)指软件产品或软件系统孕育、诞生、成长、成熟、衰亡的生存过程,是软件从设计、投入使用到被淘汰的全过程。软件生命周期是跨越软件生存期的系统开发、运行、维护所实施的全部活
14、动和任务的过程框架。软件生命周期模型是软件工程思想的具体化,包含三个主要阶段:软件定义、软件开发及软件运行维护。,25,1.4 软件过程和软件生命周期,1.4.3 软件生命周期的八个阶段(1)问题定义:系统分析员就问题性质、工程目标和规模等,提出书面报告。(2)可行性研究与计划:确定问题是否有行得通的解决方法。是在较高抽象层次上,进行的分析和设计过程。目的是更准确地确定工程的规模和目标,更准确地分析成本/效益,最终决定是否实施项目。(3)需求分析:确定目标系统必须具备哪些功能。(4)总体设计:描述每种可能的实现方案,估计每种方案的成本和效益;设计软件的体系结构。(5)详细设计:设计出软件的详细
15、规格说明,为编码工作提供“蓝图”。,26,1.4 软件过程和软件生命周期,(6)编码和单元测试(7)综合测试集成测试:将结构单元集成起来,进行测试。验收确认测试:按需求规格说明书,用户进行测试。(8)使用和维护:使软件系统持久地满足用户不断变化的需求。通常有四类活动:改正性维护:修改已发现的错误。适应性维护:为适应变化了的环境,而修改软件。完善性维护:根据用户的要求,改进和扩充软件,使之完善。预防性维护:为将来的维护活动作准备,而修改软件。如为提高软件的可维护性,而进行的修改。,27,1.5 软件开发过程模型,软件开发过程模型也称生命周期模型,是软件生命周期中系统开发、运行、维护等实施活动的结
16、构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。软件开发模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。软件开发模型也常称为软件过程模型、软件生命周期模型、软件工程范型。,28,1.5 软件开发过程模型,1.5.1 瀑布模型(Waterfall Model),定义阶段,开发阶段,维护阶段,29,1.5 软件开发过程模型,瀑布模型的特点(1)阶段之间具有顺序性和依赖性前一阶段的工作完成后,才能开始下一阶段工作。前一阶段的输出文档就是后一阶段工作的基础。某一阶段发现错误要追溯到前面阶段,代价
17、较大。(2)尽可能地推迟实现程序代码只是软件的一部分,而不是全部。清楚地区分分析、设计与实现,尽可能推迟软件实现。(3)确保质量每阶段都必须完成规定的文档。每阶段结束前,都要对所完成的文档进行评审,及早改正错误,评审通过才能进入下一阶段。,30,1.5 软件开发过程模型,瀑布模型的局限性项目开始阶段,开发人员和用户对项目的描述往往是不全面的,可能影响到后面各个阶段。瀑布模型是以文档形式驱动的,系统修改维护难度较大。开发过程中,事先选择的技术或需求迅速发生变化,需要返回到前面某阶段进行修改。,总之,瀑布模型是一种理想的线性开发模式,但缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。开发过
18、程中,用户看不到软件是什么样子,开发完成后,如果用户发现有不满意的地方,为时已晚。随着软件开发项目的规模日益扩大,瀑布模型缺乏灵活性的缺点引发的问题更为严重。,31,1.5 软件开发过程模型,1.5.2 原型模型原型法首先构造一个功能简单的原型系统,然后通过对原型系统逐步求精,不断扩充完善得到最终的软件系统。这个模型可在运行中被检查、测试、修改,直到它的性能达到用户需求为止。因而这个工作模型很快就能转换成原样的目标系统。,32,1.5 软件开发过程模型,原型法优点用户支持,在系统生存期的各阶段起到积极的作用能够处理用户的模糊需求有利于维护,提高用户满意度用户在开发过程中学习了解软件开发费用降低
19、,时间缩短,减少系统开发的风险应用原型法要规避以下误区将次要需求当作主要需求建模用户不断提出要求,因修改错误忽略主要部分的开发修改原型模型时忽略文档更新不断修改原型满足用户需求,忽略用户的实际应用环境是否适合。,33,1.5 软件开发过程模型,1.5.3 螺旋模型(Spiral Model),34,1.5 软件开发过程模型,螺旋模型将瀑布模型和快速原型模型结合起来,强调了其他模型忽视的风险分析,适合大型复杂系统。螺旋模型由风险驱动,强调可选方案和约束条件,从而支持软件的重用,将软件质量作为特殊目标融入产品开发之中。螺旋模型每旋转一圈便开发出更完善的一个新版本软件开发又前进一个层次系统又生成一个
20、新版本而软件开发的时间和成本又有了新的投入得到一个客户满意的软件版本,35,1.5 软件开发过程模型,螺旋模型的限制条件强调风险分析,但要求客户接受和相信这种分析,并做出相关反应是不容易的。对开发人员的风险评估经验和专门知识要求较高,否则将会带来更大的风险。如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。,36,1.5 软件开发过程模型,1.5.4 喷泉模型(Fountain Model),需求阶段,分析阶段,设计阶段,编程阶段,集成与测试阶段,维护与演进阶段,37,1.5 软件开发过程模型,喷泉模型特点喷泉模型是对象驱动的过程,用于支持面
21、向对象开发过程。使用面向对象方法开发软件时,主要活动是定义和不断完善对象,软件开发生存期各阶段划分不是很明显。软件开发活动之间没有明显的间隙。无间隙是指各项开发活动,即分析、设计和编码之间不存在明显的边界,随着开发过程的推进,需不断的对前面工作进行细化和完善,各开发步骤经多次反复迭代。喷泉模型具有迭代的特性,自然支持复用。系统某个部分常常重复工作多次,相关对象在每次迭代中随之加入演进的软件成分。喷泉模型较好的体现了面向对象开发方法的模型。,38,1.5 软件开发过程模型,1.5.5 构件组装模型,标识性选购件,进行下一次迭代,在库中查找构件,将新构件存入库中,若存在提取构件,若不存在创建构件,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 经典 教程 概述

链接地址:https://www.desk33.com/p-235741.html