您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程PPT-01软件工程概述
授课教师:梁丽第一章软件工程概述内容要点:本章概括地讲述了软件、软件危机、软件工程、软件生产、软件生存周期、软件开发模型、软件开发方法及软件开发工具。教学重点:软件危机的产生、表现和原因软件工程的定义、性质、目标、内容和面临的问题软件生存周期各阶段的特点和内容教学难点:几种主要的软件开发模型主要的软件开发方法本章的知识结构图软件是由计算机程序的发展而形成的一种概念,是计算机系统中与硬件相互依存的另一部分。程序是按既定算法,用某种计算机语言所规定的指令或语句编写的一系列指令或语句的集合。软件是程序再加上程序实现和维护程序时所必须的文档的总称。(一)软件工程的产生1.软件软件被普遍接受的软件的定义是:软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它包括程序(program)、相关数据(data)及其说明文档(document)。其中程序是按照事先设计的功能和性能要求执行的指令序列;数据是是程序能正常操纵信息的数据结构;文档是与程序开发维护和使用有关的各种图文资料。软件中国大百科全书中对软件的定义是:软件是计算机系统中的程序和有关文件(文档)。根据国际标准化组织的定义,软件是与计算机系统操作有关的程序、过程、规则、及任何有关的文档资料。(一)软件工程的产生在信息处理和计算机领域内,一般认为软件是计算机程序、各种相关的文档和数据的集合,如下图所示。(一)软件工程的产生文档就是为了委托、购入、使用、开发、维护软件,以及管理开发过程所需要的文书和资料,是有关计算机程序功能、设计、编制、使用的文字或图形资料。一般文档可分为面向管理人员的文档、面向开发人员的文档、面向用户的文档和面向使用维护人员的文档。程序是计算任务的处理对象和处理规则的描述。数据包括使系统初始运行所必须的数据,如数据库和表的结构及初始数据、系统运行中所需要的各种代码表、各种标志等。(一)软件工程的产生2.软件的特点软件既是知识产品,又是与汽车、建筑物一样的工业产品,此外,软件还具有类似艺术、学术那样的知识性创造的特点,因此,可以说软件就是知识性工业产品,它具有一些独特的性质:①软件是逻辑产品,它具有无形性,这个特点使它与其它工程对象有着明显的差异。人们可以把它记录在纸上、内存、和磁盘、光盘上,但却无法看到软件本身的形态,必须通过观察、分析、思考、判断,才能了解它的功能、性能等特性。通过计算机的执行才能体现它的功能和作用。②软件在使用过程中,不存在磨损和消耗问题。软件在生存周期后期不会因为磨损而老化,但会为了适应硬件、环境以及需求的变化而进行修改,而这些修改有不可避免的引入错误,导致软件失效率升高,从而使得软件退化。当修改的成本变得难以接受时,软件就被抛弃。③软件没有明显的制造过程。其成本主要体现在软件的开发和研制上,一旦研制开发成功,就可以大量拷贝同一内容的副本。所以对软件的质量控制,必须着重在软件开发方面下工夫。④软件对硬件和环境有着不同程度的依赖性。这导致了软件移植的问题。⑤软件是复杂的,而且以后会更加复杂。软件是人类有史以来生产的复杂度最高的工业产品。软件涉及人类社会的各行各业、方方面面,软件开发常常涉及其它领域的专门知识,这对软件工程师提出了很高的要求。⑥开发和维护成本高。软件开发需要投入大量、高强度的脑力劳动,成本非常高,风险也大。现在软件的开销已大大超过了硬件的开销。⑦软件的开发至今尚未完全摆脱手工作坊式的开发方式,生产效率低。⑧软件工作牵涉到很多社会因素。许多软件的开发和运行涉及机构、体制和管理方式等问题,还会设计到人们的观念和心理。这些人的因素,常常成为软件开发的困难所在,直接影响到项目的成败。软件技术面临的问题•规模•复杂性•生产率例:•Windows95有1000万行代码•Windows2000有5000万行代码,3000多个工程师,几百个小团队。Exchange2000和Windows2000开发人员结构Exchange2000Windows2000项目经理25人约250人开发人员140人约1700人测试人员350人约3200人•美国IBM公司在1963年至1966年开发IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。......据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。......这个项目的负责人F.D.Brooks事后总结了他在组织开发过程中的沉痛教训时说:“......正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。......程序设计工作正像这样一个泥潭,......一批批程序员被迫在泥潭中拼命挣扎,......谁也没有料到问题竟会陷入这样的困境......”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。(一)软件工程的产生(一)软件工程的产生3.软件生产的发展软件生产的发展经历了程序设计时代、程序系统时代和软件工程时代。程序设计时代(60年中期以前):生产方式是个体手工劳动,使用的工具是机器语言、汇编语言,主要通过编程来实现,不重视程序设计方法。程序系统时代(60-70年代):生产方式是作坊式小集团生产,生产工具是高级语言(Pascal、C、Ada语言),开始提出结构化方法,但开发技术还没有根本性突破,开发人员素质和开发技术不适应规模大、结构复杂的软件开发,导致了软件危机的产生。软件工程时代:生产方式是工程化生产,提出具有广泛应用前景的面向对象方法和相关的语言(Smalltalk、C++),使用数据库、开发工具、开发环境、网络、先进的开发技术和方法,使生产率大大提高,但未能完全摆脱软件危机。4.软件危机1)概念指在计算机软件开发和维护过程中所遇到的一系列严重问题,这是软件生产与市场需求极不适应的严重现象。包含两方面的问题:一是如何开发软件,怎样满足对软件的日益增长的需求;二是如何维护数量不断膨胀的已有软件。2)软件危机的表现(1)对软件开发成本和进度的估计常常不准确,软件生产进度无法控制。开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见。(2)软件需求定义不准确,易偏离用户需求。用户对“已完成”系统不满意的现象经常发生。软件危机的表现(3)软件的可维护程度非常之低。很多程序的错误是很难改正的,不能根据用户的需求变化在原有程序中增加新的功能。软件危机的表现(4)软件通常没有适当的文档资料。管理人员可以使用这些文档作为管理何评价软件开发工程的进展情况;软件开发人员可以利用他们作为信息交换工具;对于软件维护人员文档更是必不可少。软件危机的表现(5)软件的成本不断提高。随着技术的进步硬件成本不断降低,而软件成本随着人力资源成本的增高、软件规模的增大而不断上涨。在美国1985年的软件成本已经占到计算机系统总成本的90%。(6)软件开发生产率的提高赶不上硬件的发展和人们需求的增长。(7)软件可维护性差。详见教材P2成功的标准:用户在用用户可很容易做完要做的事失败的根本原因:开发人员写出的东西达不到用户要求(人的问题.技术问题)问题出在哪里??⑴项目没有被很好地理解;计划不周,最终导致进度拖延。⑵没有充分的文档资料(documentation)(3)软件可靠性(reliability)缺少度量的标准,质量无法保证。如何保证软件产品的质量,是非常复杂困难的问题,特别对于规模庞大的软件。⑷软件难以维护(maintainability)、不易升级(evolvability)产生软件危机的原因:在软件开发过程中出现的严重问题主要与:软件本身有关。软件开发与维护的方法不正确有关。产生软件危机的原因:软件与硬件不同,是逻辑部件。软件开发过程的进展情况难以衡量。软件开发的质量也难以评价。管理与控制软件开发过程相当困难。修改或改正软件设计等软件维护比较困难。产生软件危机的原因:软件不同于一般的程序,其规模庞大。需要多人协作完成,会涉及诸多技术问题,比如:分析方法、设计方法、形式说明方法、版本控制等。需要严格、科学的管理。软件本身的特点也给开发和维护带来一些客观困难。软件开发与维护中长期形成的错误认识与作法。比如:忽视软件的需求分析,急于动手编写程序;轻视软件的维护等。二是软件专业人员自身的缺陷(软件开发人员——没有掌握正确的软件开发方法,对软件开发和维护存在许多模糊、错误认识;软件管理人员——软件管理技术落后,软件质量管理没有依据)(4)解决途径详见教材P5(一)软件工程的产生软件工程的定义软件工程这一术语首次出现在1968年的NATO会议上。是指导计算机软件开发和维护的工程学科。FritzBauer在NATO会议上给出的定义:“软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而确立和使用的健全的工程原理(方法)。”软件工程的定义IEEE【IEE83】给出的软件工程定义:“软件工程是开发、运行、维护和修复软件的系统方法。”软件工程的定义IEEE【IEE93】给出了一个更加综合的定义:“将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。”软件工程的定义软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。其中:计算机科学、数学——用于构造软件系统模型与算法;工程科学——用于制定规范、标准;管理科学——用于计划、资源、成本、质量控制。目标:追求软件产品的正确性、可用性和软件生产的效率工程活动:需求分析、设计、实现、测试确认、维护支持方法学问题:开发模型、设计方法、支持过程、管理过程什么是软件工程?是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,并把正确的管理技术与当前最好的技术方法结合起来。软件工程学自软件工程的概念形成以来,在这一研究领域吸引了众多的科学和技术人员,并开展了大量的理论和技术性的研究,从而形成了“软件工程学”这一计算机科学中的分支。软件工程学软件工程学就是研究如何借助科学的理论和现代工程上的技术来指导软件的开发,从而达到用较少的投资获得高质量的、可靠的软件的目的。的科学。它涉及到软件的全部活动、广泛的知识领域及其技术;包括:计算机科学、数学、管理学、经济学、心理学、认知学、行为学、美学、艺术、可靠性理论和通信技术等多个学科。具体而言,软件工程学提出了对开发理论、开发方法、开发工具的研究领域。软件工程学软件工程学的发展经历了三个时期:程序设计时期、软件时期、软件工程时期。软件工程学软件工程学所包含的内容可概括为:软件开发技术软件工程(项目)管理软件工程学软件开发技术所包含的内容可概括为:软件开发方法学软件工具软件工程环境软件工程学软件工程(项目)管理主要包括软件管理软件工程经济学软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理、项目计划等。软件工程学统计数据表明,大多数软件开发项目的失败,并不是由于软件开发技术方面的原因。它们的失败是由于不适当的管理造成的。遗憾的是,尽管人们对软件项目管理重要性的认识有所提高,但在软件管理方面的进步远比在设计方法学和实现方法学上的进步小,至今还提不出一套管理软件开发的通用指导原则“软件工程”课程与其它软件专业课的区别(1)立足于系统的整体。(2)讲授系统分析、系统设计、测试及维护的理论和方法。(3)构筑一个软件系统,实践软件开发全过程。“软件工程”课程教学与实践的目标•转变对软件开发的认识:上升程序系统•转变思维定式:上升程序员系统工程师(系统分析员)•工程化训练系统分析员的地位用户分析员程序员“一个好的工业,应有一套良好的标准来配套”软件的工业化生产过程应具备的特点:•明确的工作步骤•详细具体的规范化文档•明确的质量评价标准软件工程技术的两个明显特点:•强调规范化•强调文档化(一)软件工程的产生6.软件工程的基本原理用分阶段的生命周期计划严格管理。坚持进
本文标题:软件工程PPT-01软件工程概述
链接地址:https://www.777doc.com/doc-4973546 .html