资源预览内容
第1页 / 共163页
第2页 / 共163页
第3页 / 共163页
第4页 / 共163页
第5页 / 共163页
第6页 / 共163页
第7页 / 共163页
第8页 / 共163页
第9页 / 共163页
第10页 / 共163页
亲,该文档总共163页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
LOGO软件项目开发综合实践主讲人 黄钢 chapter_12教材:软件工程案例教程 第2版韩万江等编著 机械工业出版社参考书籍:Java项目开发案例全程实录 明日科技 清华大学出版社 Asp.net项目开发案例全程实录 明日科技 清华大学出版社v1考核方式: 大作业 v2成绩评定: v总评成绩构成:平时考核(50);期中考核( 0);期末考核(50) v平时成绩构成:考勤考纪(20);作业(20 );实践环节(60)Company Logo*物电学院4第 1 章 概论1 软件工程学的几个基本概念一、软件与特点主要介绍软件与软件工程的概念、软件工 程产生的背景1软件及其组成软件是计算机系统中与硬件对等的一部分 ,是程序及相关文档资料的集合。因此,软件 有两大组成要素:*物电学院5第 1 章 概论一是存储介质上的程序,它们是可执行的并可产生用户需要的结果;二是相关的文档资料,它们既是软件开发过程中的质量保证,又是软件使用与维护的依据。两大组成要素详述如下。*物电学院6第 1 章 概论(1)可执行部分应用程序是面向用户的解决各种特定实际问题的程序。如工程管理或科学计算程序、 信息管理程序及实时监控程序等。系统程序是面向计算机系统的为应用程序服务的程序的综合,它们支撑应用程序的运行 。如操作系统。*物电学院7第 1 章 概论(2)不可执行部分面向用户的文档告诉用户如何使用、维护和修改 程序。如用户手册、操作手册及程序维护手册等。面向开发方的文档提供软件开发过程的质量保证 。如系统可行性论证报告、软件计划说明书、需求规 格说明书、数据库设计说明书,以及侧试计划、测试 分析报告等。项目越大,与其相关的文档资料也越重要,从以后的 介绍中可以看出,程序编写在整个项目的开发过程中 只占很少的一部分。*物电学院8第 1 章 概论2软件的特点(1) 软件是一种逻辑产品,它与物质产品有很 大的区别。 软件产品是看不见摸不着的, 因 而具有无形性。它是脑力劳动的结晶,总以程序和文档的 形式出现, 保存在计算机存储器的磁盘和光 盘介质上,通过计算机的运行才能体现它的功 能和作用。*物电学院9第 1 章 概论(2) 软件产品的生产主要是研制。其成本主要体现在软件的开发和研制上,软件开发研究完成后,通过复制就产生了大量软件产品。(3)软件产品不会用坏,不存在磨损、消耗问题。(4)软件产品的生产主要是脑力劳动,还未完全摆脱手工开发方式,大部分产品是“定做”的。*物电学院10第 1 章 概论(5)软件的维护与硬件不同软件从被提交给用户使用开始。只存在维护 问题,而不存在使用过程中被“用坏”的问题。 而硬件则不同,用户购买到硬件并开始使用硬件 后,随着时间的过去,硬件会因为各种原因(如 灰尘、振动、高温、磨损等)造成某些部件的失 效,从而导致硬件被“用坏”了。软件的使用过程中出错的可能性与硬件不同 。如图是软件使用过程中随时间变化的错误率曲 线的示意图。*物电学院11第 1 章 概论(6)软件的开发和运行常常受到计算机系统的限 制软件的开发和运行对计算机系统有着不同程 度的依赖性,软件不能完全摆脱硬件单独活动。 有的软件这种依赖性大些,常常为某个型号的计 算机所专用。有的软件依赖某个操作系统。为了 解除这种依赖性,在软件开发中提出了软件移植 的问题。*物电学院12第 1 章 概论(7) 软件费用不断增加,软件成本相当昂贵。 软件的研制工作需要投放大量的、复杂的、高 强度的脑力劳动,它的成本非常高。在基于计 算机的系统中,软件的开销大大超过硬件的开 销,如图所示。澄清:认为“软件开发就是写程序并设法使之运行”的错误的认识*物电学院13第 1 章 概论软件在开发时期首先需要对软件进行设计(通 常又分为概要设计和详细设计两个阶段),然 后才能进入编写程序的阶段,程序编写完之后 还必须经过大量的测试工作(需要的工作量通 常占软件开发全部工作量的40%50%)才能最 终交付使用。所以,编写程序只是软件开发过 程中的一个阶段,而且在典型的软件开发工程 中,编写程序所需的工作量只占软件开发全部 工作量的10%20%。*物电学院14第 1 章 概论二、软件危机1.软件的发展自从20世纪40年代第一台计算机诞生以来,随着计算机科学与工程的发展,计算机软件技术的发展大体可以分为程序设计,软件系统与软件工程三个阶段。*物电学院15第 1 章 概论2.软件危机v 20世纪60年代,伴随着计算机系统制造技术的 进步,计算机应用对于软件的需求剧增。软件 规模功能日益复杂,需求急剧增大。计算机软 件开发从早期以个人活动为主的手作坊方式 逐步转到以程序员组形式为代表的集体开发为 主:在这转换过程中,出现了软件小产与 市场需求极不适应的严重现象软件危机。*物电学院16第 1 章 概论软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。软件危机主要有以下一些典型表现。P2*物电学院17第 1 章 概论(1)软件生产不能满足日益增长的软件需求,软件生产率远低于硬件生产率和计算机应用的增长,出现丁软件供不匝求的局面。更为严重的是软件生产效率随软件规模的增加和软件复杂性的提高而急剧下降;软件产品的“供不应求”使得计算机硬件的巨大潜力远未发挥。*物电学院18第 1 章 概论(2)软件生产率随软件规模与复杂性提高而下降,智力密集造成的人力成本增加,导致软件成本在计算机系统成本构成中比例急剧上升。早期的计算机系统中软件成本通常不超过系统总成本的20。到70年代约占40一60,80年代中以来,发达国家许多软件产品成本占11算机系统总成本构成的90以上。*物电学院19第 1 章 概论(3)软件开发进度与成本失控,很难估计软件开发的成本与进度,通常是预算成倍突破,项目计划进度一再延期。软件开发单位为赶进度,控制成本往往只有降低软件质量:软件开发陷入成本居高不下,软件质量无保证,用户不满,开发单位信誉降低的怪圈中。*物电学院20第 1 章 概论(4)软件系统实现的功能与实际需求不符。软件开发人员对用户需求缺乏深入的理解往往急于编程。闭门造车,最后实现的系统与用户需求相去太远。*物电学院21第 1 章 概论(5)交付的软件难以维护。程序中的错误很难改正,要想使软件适应新的运行环境几乎不可能,软件使用过程中不能增加用户需要的新功能。“可重复使用的软件”还是个人们努力追求的目标,大量的软件人员在重复开发基本类似的软件。*物电学院22第 1 章 概论(6)软件文档配置没有受到足够的重视。软件文档包括开发过程各阶段的说明书,数据词典,程序清单,软件使用、维护手册,软件测试报告及测试用例。这些软件文档的不规范,不健全是造成软件开发进程成本不可控制,软件维护、管理、交流困难的重要原因。软件质量缺乏度量依据。*物电学院23第 1 章 概论软件危机的表现实际上是软件开发与维护中存在的具有共性的种种问题。近30年来,为解决这些问题,计算机科学家和软件产业从业者已经做出了巨大的努力。但许多问题远未解决,有些问题的严重性得到部分缓解,新的问题又不断出现。*物电学院24第 1 章 概论3.产生软件危机的原因软件危机产生的原因可以从两个方面加以认识:一是软件产品的固有特性;二是软件专业人员自身的缺陷。*物电学院25第 1 章 概论软件的不可见性是软件产品的固有特点之一。 与硬件产品不同,软件是计算机系统中的逻辑部 件。软件开发过程中,在程序代码运行之前,开 发工作的质量、进度难以度量。最终软件产品的 使用价值是在软件运行过程中体现出来的。而且 软件运行没有“磨损”,这使得软件产品可靠性难 以度量,故障隐蔽性强。对原有故障的修改可能 导致新的错误。*物电学院26第 1 章 概论软件产品的固有特点之二是软件的规模与逻辑复 杂性。现代软件产品往往规模庞大,逻辑结构十 分复杂:随着计算机应用的日益广泛,需要开发 的软件规模日益庞大,软件结构也日益复杂。 1968年美国航空公司订票系统达到30万条指令 ; IBM 360 OS 第16版达到100万条指令, 花了5000个人年; 1973年美国阿波罗计划达 到1千万条指令。*物电学院27第 1 章 概论从软件开发管理角度看,软件生产率常随软件规模和复杂性的增大而下降。也就是说,如果个程序员一年可以开发1万条代码,则一个400万条代码的软件系统绝对不是集中400个人在一年内可以完成的,软件规模与其逻辑复杂度通常并不是线性比关系。*物电学院28第 1 章 概论当多人合作完成一个系统时,作为一个工程项目,参与人员的组织与信息交流、工作质量与进度控制等更是一个极复杂的问题。就目前的软件技术水平而言,软件开发工作量随软件规模呈几何级数上升。*物电学院29开发工具落后,生产率提高缓慢。软件开发工具过于原始,没有出现高效率的开发工具, 因而软件生产率低下。在19601980年期间,计算机硬件的生产由于采用计算机辅助设计、 自动生产线等先进工具,使硬件生产率提高了100万倍, 而软件生产率只提高了2倍,相差十分悬殊。*物电学院30第 1 章 概论软件开发人员自身的缺陷主要包括:相当数量 的软件开发人员没有掌握正确的软件开发方法 学,对于软件开发与维护存在许多模糊、错误 认识。对于软件开发的典型错误队识有: v只要初步了解总目标,就可以编写程序细节 在编程中解决; v软件更改容易,因此用户需求可以在程序设计 过程中逐步补充; v程序是软件的主要部分,文档是可有可无的;*物电学院31第 1 章 概论v 软件开发依赖于开发人员的创造力与想象力,程序设计是一门艺术,因此软件设计无章可循;v 一旦软件能够运行,维护是不需要的,或者说是极少的。*物电学院32第 1 章 概论这些错误认识与方法的形成可以归于软件人员没 有掌握恰当的工程化方法,忽视问题定义与分析 ,急于求成,闭门造车。一个软件错误修改的代 价随该错误发生与修改滞后的时间关系极大。一 个早期发生的错误修改越晚,代价越大(如图1所 示)。事实上,许多软件工程项目失败的主要原因 就是对问题定义、用户要求没有认真的分析、在 没有弄清用户到底要求什么时便开始编程。这如 同一个大厦的建立没有地基,最终必然垮台。*物电学院33第 1 章 概论4.消除软件危机的途径P4为了消除软件危机,首先应该对计算机软件有一 个正确的认识。应该彻底消除在计算机系统早期 发展阶段形成的“软件就是程序”的错误观念。 一个软件必须由一个完整的配置组成,事实上, 软件是程序、数据及相关文档的完整集合。其中 ,程序是能够完成预定功能和性能的可执行的指 令序列;数据是使程序能够适当地处理信息的数 据结构;文档是开发、使用和维护程序所需要的 图文资料。*物电学院34第 1 章 概论三、软件工程为了克服软件危机,人们从其他产业的工程化生产得到启示,于是在1968年北大西洋公约组织的工作会议上首先提出“软件工程”的概念,提出要用工程化的思想来开发软件。 从此,软件生产进入了软件工程时代。*物电学院35第 1 章 概论1软件工程的定义软件工程是用科学知识和技术原理来定义、开发 、维护软件的一门学科。该定义说明了软件工程是 计算机科学中的一个分支, 其主要思想是在软件生 产中用工程化的方法代替传统手工方法。工程化的 方法借用了传统的工程设计原理的基本思想,采用 了若干科学的、 现代化的方法技术来开发软件。 这种工程化的思想(软件工程的基本原理)贯穿到 需求分析、设计、实现,直到维护的整个过程。*物电学院36第 1 章 概论2软件工程的性质v软件工程是涉及计算机科学、工程科学、管理科学、数学等领域
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号