《软件工程课件第一章.ppt》由会员分享,可在线阅读,更多相关《软件工程课件第一章.ppt(29页珍藏版)》请在三一办公上搜索。
1、软件工程(Software Engineering),教材:软件工程导论 编著:张海藩 主讲:周荣辉,2,软件的魅力,计算机软件已经成为一种驱动力,它是进行商业决策的引擎;它是现代科学研究和工程问题解决的基础;它是区分现代产品和服务的关键因素。计算机软件无处不在。人们把软件看作是生活中的现实技术。在很多情况下,人们把他们的生活、他们的舒适、他们的安全、他们的娱乐、他们的决策、甚至他们的整个生活都依赖于计算机软件。,第一章 软件危机与软件工程,软件工程(Software Engineering),4,计算机硬件与软件,任何计算机系统由硬件(hard)和软件(software)两大部分构成。硬件只
2、是提供了计算的可能性。必须有支持和管理计算机的软件,系统才能实现计算。,5,软件的定义,软件是计算机程序以及开发、使用和维护程序所需要的所有文档。软件是包括程序、数据及其相关文档的完整集合。软件=知识+程序+文档+数据 软件是知识的载体。软件包括:能够完成预定功能和性能的可执行的指令(计算机程序);保证程序运行的配置信息(运行环境)和初始数据等。描述程序的开发、使用和维护的文档,6,软件的定义,软件是客观世界中问题空间与解空间的具体描述,它追求的是表达能力强、更符合人类思维模式,具有构造性和易演化性的计算模型。-软件的实质,7,软件的特点,软件是一种逻辑产品,无形态,具有抽象性。同时又具有一般
3、机器的属性-原料加工的工具。软件是开发而形成的,无明显的制造过程。软件不会“磨损”和老化,但存在退化问题。大多数软件是定做的,不是通过已有构件组装而成。主要靠脑力劳动生产。开发和维护成本高。,8,软件的发展,1、程序设计时期(19461956)软件=程序 开发方式:个体 主要特征:计算机硬件=计算机 用途少,规模小;不作为商品;开发者=使用者:自己开发,自己使用。2、程序系统时期(19561968)软件=程序+说明 开发方式:作坊式 主要特征:程序规模增大,多人分工合作。软件作为商品,即程序设计者使用者;程序开发和使用的文档资料已不可缺少。3、软件工程时期(1968现在)软件=程序+数据+文档
4、 开发方式:工程化 主要特征:按工程管理的方法管理整个软件开发过程。,9,软件发展中的问题,60年代中后期,软件商品化的出现,使计算机应用的广度和深度得到迅速扩大,由此而带来的问题是:应用领域不断扩大-软件需求量倍增。要求计算机解决更多的问题-软件规模增大。要求解决问题的深度增加-软件复杂程度增大。软件开发反映出的问题:软件是手工劳动,是智力产品-生产率低。程序是逻辑实体,出错容易,纠错困难,质量难以保证,维护费用高于开发费用。软件规模和复杂度与开发者花费的精力和时间不是简单的正比关系,成本上升快。,10,软 件 危 机,软件生产的进度、数量、质量、成本与社会对软件的需求量和希望要求甚远,与硬
5、件发展形成强烈反差。这就是所谓的“软件危机”。-现实与希望形成的巨大落差,11,软件危机的具体表现,1、软件开发:软件开发过程和成本无法有效控制,且成本逐年上升;软件开发生产率提高的速度跟不上需求的增加;用户需求模糊,用户对已完成的软件系统不满意;软件产品质量靠不住,没有确保质量的有效措施。2、软件维护:软件常常是不可维护的(缺乏文档或文档质量)。维护成本高。软件维护花费的时间和费用占整个软件开发组织的60%以上。,12,产生软件危机的原因,客观原因:软件是手工劳动,是智力产品-生产率低。软件是逻辑实体,出错容易,纠错困难。软件的复杂性使得仅靠人的智力难以驾驭。主观原因 开发方式:认为开发软件
6、就是写程序。组织方式:作坊式的生产方式;开发无计划、开发过程无规范、开发过程难控制。用户方面:对软件需求描述不精确。开发人员方面:对用户需求的理解与用户本来愿望有差异,相互之间的信息交流不及时、不准确、有误解。,13,“软件工程”的提出,寻求新的软件开发组织形式和开发方法。北大西洋公约组织成员国的软件工作者于1968、1969年连续两年召开软件研讨会,即有名的NATO会议,集中研究对策,讨论如何摆脱软件危机,提出了软件工程的概念,即用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理、维护和更新。于是,计算机科学与技术的新领域“软件工程”诞生了。,14,软件工程的定义,IEEEIEE8
7、3:软件工程是开发、运行、维护和修复软件的系统方法。IEEEIEE93:软件工程是将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。计算机大百科全书:软件工程是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度实现满足用户要求的软件产品的定义、开发、发布和维护的工程,或以之为研究对象的学科。,15,软件工程包含的内容,软件工程三要素:方法、工具和过程 软件工程方法:提供“如何做”的技术 软件工程工具:提供自动或半自动地支持软件的开发和管理,支持各种软件文档的生成。软件工程过程:在技术和工具支持下,完成把用户的需求转换为软件产品的一组有组织的活动。
8、没有软件工程过程就没有软件管理。软件工程研究的内容:软件工程方法学研究 软件工程工具研究 软件过程管理、规范、标准研究,16,软件工程的目标,在给定成本、进度的前提下,开发出满足用户需求的高质量的、易于维护的软件产品。软件工程是从技术和管理两方面研究如何更好地开发和维护计算机软件。成本、进度和质量将是未来若干年中导致软件激烈竞争的主要因素。,17,软件工程面临的问题,软件工程经过几十年的发展,取得了很大进步,但如下问题仍然没有得到很好的解决:软件费用仍然很高。可靠性难以稳定地保证。可维护性差。可重用性低。生产率不能有效提高。,18,软件生存周期,定义:软件生存周期是指一个软件从提出开发要求开始
9、直到不再使用(报废)为止的整个时期。软件生存周期阶段划分软件工程采用软件生存周期方法,从时间角度对软件开发和维护的复杂问题进行分解,把软件生存的漫长周期依次划分为若干阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。软件生存周期包括三个时期:软件定义 软件开发 软件使用和维护,19,软件生存周期软件定义,1、问题定义:确定要求解决的问题是什么?2、可行性研究:确定在时间和资源的约束条件下,能否完成指定的任务?包括:技术可行性、经济可行性、法律可行性、社会可行性。若可行,则制定项目所需费用、资源、时间的开发计划。3、需求分析:准确地确定“软件系统必须做什么”,即明确目标系统必须具备的功
10、能和对系统的约束。,20,软件生存周期软件开发,1、概要设计:确定在总体上应该怎样实现目标系统,包括系统的软件结构设计、接口设计和数据结构设计。-软件架构设计2、详细设计:对软件结构中的模块进行精确描述算法设计。3、编码及模块测试:把模块算法转换成特定程序设计语言的正确的、容易理解、容易维护的程序模块。4、综合测试:发现和纠正程序中的错误,保证软件功能和性能符合需求规格说明书规定的要求。包括集成测试、确认测试和系统测试。,21,软件生存周期软件维护,软件投入使用后继续对软件的查错、纠错和改进。使系统持久地满足用户的需要。包括:改正性维护 适应性维护 完善性维护 预防性维护,22,软件过程,软件
11、过程指为获得高质量软件所需要完成的一系列任务以及完成这些任务的工作步骤。过程还规定了运用的方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施、任务完成的标志等。,23,软件过程模型,软件过程模型也叫软件生存期模型、软件工程范型,是软件过程的一种抽象表示。软件过程模型实际上是一种开发策略。软件生存周期规定了一个软件开发应该经历的工作阶段,但这些阶段按照一种什么策略来组织,这就是软件过程模型要讨论的问题。在软件开发过程中,软件项目的性质不同、运用的开发方法不同、支持软件开发的工具不同,其开发策略也不同,即适用的软件过程模型不同。不同的软件过程模型,很难说哪个最好。只能说某
12、个软件项目用哪个模型更好。,24,软件过程模型-瀑布模型,严格按照软件生存期的阶段划分顺序和各阶段的目标、任务、文档的要求来进行开发。该模型以文档为驱动。每一活动结束后,通过严格的阶段复审和确认,得到一致、完整、准确的良好文档,以“冻结”这些文档为该阶段结束的标志,并作为下一阶段活动的唯一基础;以每一步的正确性和完整性来保证最终系统的质量。适应性:瀑布模型适合功能和性能明确、完整、无重大变化的软件开发。局限性:用户很难完整、准确表达对系统的全面要求,需求说明也很难做到把一切描述得完整、准确、一致,并与实际环境相符。,25,瀑布模型,26,软件过程模型-原型模型,先根据用户对需求的描述,通过软件
13、工具构造一个软件系统的原型来描述目标系统的主要功能,让用户进行评价,并根据用户意见进行改进。随着不断实验、评价和修改,最后使得在功能上完全满足用户需求。软件系统原型一般不是最终目标系统,只是在功能上描述了用户需求,忽略了软件质量特性要求和管理对质量的控制。开发原型系统的条件:用户对目标系统只有模糊笼统的认识,难以准确地提出所有的系统要求。软件开发者和用户之间存在通信障碍。有快速构造原型的工具。开发的软件系统可以通过对原型系统的完善来实现,也可以抛弃原型系统,重新规划和设计。,27,软件过程模型增量模型,先按瀑布模型开发一个满足基本要求的系统,然后根据用户在使用中提出的新需求在进一步完善形成新的
14、版本,这个过程不断重复,直到最终的完善产品。软件需求不完整时,可以采用该模型的开发方案。如早期的MDOS系统和现在的WINDOWS系统。与原型模型的区别:增量模型的每个版本都是可操作产品。增量模型中,第一个增量往往是核心的产品,即实现了基本要求。以后的每一个增量都是在前一个版本的基础上进行的补充、修改和完善的结果。,28,软件过程模型螺旋模型,螺旋模型是风险驱动模型,将开发过程分为几个螺旋周期,每个螺旋周期大致与瀑布模型相同。每个螺旋周期可分为四个工作步骤:1、制定计划:确定软件目标,选定实施方案,明确开发限制条件;2、风险分析:分析所选方案,识别风险和消除风险;3、开发实施:实施软件开发;4、用户评估:评价开发工作,提出修改意见。与增量模型的区别:增量模型的每一次结果都是可操作的系统,而螺旋模型的最后一个周期的结果才是可操作的。与原型模型的区别:开发原型模型重点在系统的功能。螺旋模型重点在系统的风险。螺旋模型适合风险大的大型软件开发。,