版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章软件工程引论1.1软件产品的概念与特征1.2软件危机1.3软件工程的产生及其发展1.1软件产品的概念与特征1.1.1软件产品的概念与分类就本质而言,软件就是一个信息转换器,它的功能不外是产生、管理、获取、修改、显示或转换信息。它担任着双重角色,首先,它是一种产品,表达了由计算机硬件体现的计算潜能;其次,它又是开发和运行产品的载体,是计算机控制(操作系统)、信息通信(网络)的基础,也是创建和控制其他软件(软件工具和开发环境)的基础。对于软件的一种公认的解释是:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。其中,程序是为实现设计的功能和性能要求而编写的指令序列;数据是使指令能够正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文资料。根据用途划分,软件可以大致划分成如下类别:(1)系统软件:就一般情况来说,系统软件是为其他软件服务的软件。系统软件与计算机硬件交互频繁,处理大量的确定或不确定的复杂数据,往往需要具有多用户支持、资源精细调度、并发操作管理、多种外部设备接口支持等项功能。(2)实时软件:管理、分析、控制现实世界中所发生的事件的软件称为实时软件。它一般有数据采集、数据分析、输出控制等三方面的功能。实时软件需要保持一个现实任务可以接受的响应时间,即必须保证能够在严格限定的时间范围内对输入做出响应。(3)商业管理软件:商业信息处理是最大的软件应用领域,包括常规的数据处理软件和一些交互式的计算处理(如POS软件)软件。它的基本功能是将已有的数据重新构造,变换成一种可以辅助商业操作和管理决策的形式。在这个过程中,几乎都要涉及到对于大型数据库的访问。各类管理信息系统(MIS)、企业资源计划(ERP)、客户关系管理(CRM)等都是典型的商业管理软件。(4)工程与科学计算软件:此类软件的特征是要实现特定的“数值分析”算法。例如离散傅立叶变换、有限元分析、演化计算等等。CAD/CAM软件一般也可以归属到这一类型中来。(5)嵌入式软件:驻留在专用智能产品的内存中,用于控制这些产品进行正常工作,完成很有限、很专业的功能的软件。例如各类智能检测仪表、数码相机、移动电话、微波炉等智能产品都必须在嵌入式软件的支持下才能正常工作。(6)人工智能软件:利用非数值算法去解决复杂问题的软件。各类专家系统、模式识别软件、人工神经网络软件都属于人工智能软件。(7)个人计算机软件:文字处理系统、电子表格、游戏娱乐软件等等。此外,还可以根据软件的规模(代码行及开发工作量,如表1.1)、软件的工作方式、使用频度、失效后造成的影响等对软件产品进行分类。表1.1根据规模进行软件分类软件规模类别参加人员数开发期限产品规模(源代码行数)微型11~4周0.5 k小型11~6月1~2 k中型2~51~2年5~50 k大型5~202~3年50~100 k甚大型100~10004~5年1 M极大型2000~50005~10年1~10 M1.1.2软件产品的特征在制造硬件时,人的创造性的劳动过程(分析、设计、建造、测试)能够完全转换成物理的形式,但软件是逻辑的而不是物理的产品,因此软件具有和硬件完全不同的特征:(1)软件是一种逻辑实体,具有抽象性。我们可以把软件保存在媒体介质上,但却无法直接看到软件的形态,因而必须通过运行、观察、分析、思考、判断才能够了解软件的功能、性能及其他特性。换句话说,软件产品具有明显的非可视特征。(2)软件的生产与硬件不同。软件是由开发或工程化而形成的,不是由传统意义上的制造过程生产的。虽然软件开发和硬件制造之间有一些相似之处,可是两者在本质上是不同的。这两者都能够通过良好的设计获得高质量的产品,但即使有了良好的设计和优秀的样品,硬件在批量制造过程中仍然可能引入质量问题,这种情况对于软件而言几乎不存在。软件在开发完毕,形成为产品之后,其批量制造过程只是简单的拷贝/复制;软件的开发和硬件的制造都依赖于人,但参与者和他们完成的工作之间的关系不同;两者的终极目的都是建造产品,但方法不同;软件的成本集中在开发过程上,而硬件生产的成本更多地表现在原材料消耗上。因此,软件项目开发过程不能完全像硬件制造过程那样来管理。(3)软软件件产产品品不不会会““磨磨损损””。。和和硬硬件件产产品品类类似似,,软软件件产产品品也也会会出出现现故故障障。。所所不不同同的的是是,,硬硬件件产产品品的的故故障障多多来来自自外外在在条条件件导导致致的的““磨磨损损””或或““老老化化””,,而而软软件件产产品品如如果果发发生生故故障障,,无无一一例例外外的的是是在在设设计计开开发发过过程程中中留留有有隐隐患患。。因因此此,,硬硬件件的的故故障障可可以以通通过过简简单单的的更更换换部部件件解解决决,,而而软软件件的的故故障障必必须须通通过过全全面面的的软软件件维维护护活活动动才才有有望望克克服服。。同同时时,,不不完完善善的的维维护护活活动动又又可可能能在在软软件件中中注注入入新新的的故故障障,,导导致致软软件件质质量量的的““退退化化””。。也也就就是是说说,,软软件件故故障障的的修修复复要要比比硬硬件件故故障障的的修修复复复复杂杂得得多多。。因因此此,,衡衡量量软软件件产产品品质质量量的的一一个个重重要要指指标标就就是是它它的的““可可维维护护性性””。。图图1.1是是软软、、硬硬件件产产品品的的失失效效率率曲曲线线。。图1.1软软件/硬硬件产品品失效率率曲线软软件发发展的阶阶段划分分自从20世纪40年代代第一台台计算机机问世以以来,就就有了““程序””的概念念,可以以认为它它是软件件的前身身。经过过了几十十年的发发展,人人们对软软件有了了更为深深刻的认认识,在在这几十十年中,,软件开开发经历历了三个个发展阶阶段:20世纪纪50~~60年年代属于于程序设设计阶段段;20世纪60~70年代代为程序序系统阶阶段;20世纪纪70年年代之后后进入软软件工程程阶段。。各阶段段的特点点与区别别见表1.2。。表1.2计计算机软软件发展展的三个个阶段及及其特点点阶段特点程序设计程序系统软件工程软件所指程序程序及说明书程序、文档、数据主要程序设计语言汇编及机器语言高级语言软件语言*软件工作范围程序编写设计和测试整个软件生命周期需求者程序设计者本人少数用户市场用户开发软件的组织个人开发小组开发小组及大、中型开发机构软件规模小型中、小型大、中、小型阶段特点程序设计程序系统软件工程决定质量的因素个人技术小组技术水平技术与管理水平开发技术和手段子程序、程序库结构化程序设计数据库、开发工具、集成开发环境、工程化开发方法、标准和规范、网络及分布式开发、面向对象技术、计算机辅助软件工程维护责任者程序设计者开发小组专职维护人员硬件的特征高价、存储量小、可靠性差降价,速度、容量和可靠性明显提高向超高速、大容量、网络化、微型化方向发展软件的特征完全不受重视软件的技术发展不能满足需求,出现软件危机开发技术有进步,但仍未完全摆脱软件危机表1.2计计算机软软件发展展的三个个阶段及及其特点点1.2软软件件危危机软软件危危机及其其表现现代计算算机应用用系统中中,软件件的地位位日益重重要和突突出。如如何满足足日益增增长的软软件需求求,如何何维护应应用中的的大量已已有软件件,已经经成为了了计算机机应用系系统进一一步发展展的瓶颈颈。1968年年,北大大西洋公公约组织织的计算算机科学学家们在在联邦德德国召开开的国际际会议上上讨论了了软件危危机问题题,同时时也是在在这个会会议上提提出了““软件工工程”这这个名词词,导致致了一门门新的工工程学科科的正式式诞生。。简单地地说,,所谓谓软件件危机机,就就是指指在软软件开开发和和软件件维护护过程程中所所存在在的一一系列列严重重问题题。具具体地地说,,软件件危机机具有有如下下一些些表现现:(1)软软件开开发没没有真真正的的计划划性,,对软软件开开发进进度和和软件件开发发成本本的估估计常常常很很不准准确,,计划划的制制定带带有很很大的的盲目目因素素,因因此工工期超超出、、成本本失控控的现现象经经常困困扰着着软件件开发发者。。(2)对对于软软件需需求信信息的的获取取常常常不充充分,,软件件产品品往往往不能能真正正地满满足用用户的的实际际需求求。(3)缺缺乏良良好的的软件件质量量评测测手段段,从从而导导致软软件产产品的的质量量常常常得不不到保保证。。(4)对对于软软件的的可理理解性性、可可维护护性认认识不不够;;软件件的可可复用用性、、可维维护性性不如如人意意。有些软软件因因为过过于““个性性化””,甚甚至是是难以以理解解的,,更谈谈不上上进行行维护护。缺缺乏可可复用用性引引起的的大量量重复复性劳劳动极极大地地降低低了软软件的的开发发效率率。(5)软软件开开发过过程没没有实实现““规范范化””,缺缺乏必必要的的文档档资料料或者者文档档资料料不合合格、、不准准确,,难以以进行行专业业维护护。(6)软软件开开发的的人力力成本本持续续上升升,如如美国国在1995年年的软软件开开发成成本已已经占占到了了计算算机系系统成成本的的90%(如图图1.2所所示)。(7)缺缺乏自自动化化的软软件开开发技技术,,软件件开发发的生生产率率依然然低下下,远远远满满足不不了急急剧增增长的的软件件需求求(如如图1.3所示示)。。图1.2计计算机机系统统硬件件、软软件成成本比比例变变化图1.3软件技术的的发展落后后于需求软件危机曾曾经是历史史上的阴影影,目前软软件工程界界也仍然在在一定程度度上受到它它的影响。。软件工程程概念的提提出,正是是为了克服服软件危机机。自1968年以以来,随着着软件工程程学的不断断发展,软软件危机得得到了一定定程度的遏遏制,但还还远远没有有被彻底解解决。《TheStandishGroup.Chaos.1995.》》一文报告告了20世世纪90年年代中期美美国商用软软件产业的的情况:1995年年美国公司司取消了810亿美美元的软件件项目;在在所考察的的软件项目目中,在完完成前就取取消了其中中的31%;53%的软件项项目进度拖拖延,通常常拖延的时时间超过预预定工期50%以上上;只有9%的大型型软件项目目能够及时时交付且费费用不超支支(对中型型和小型软软件公司来来说这一数数据为16%)。1.2.2产生生软件危机机的原因软件危机的的存在是不不争的事实实。产生软软件危机的的原因可以以归纳为主主、客观两两个方面。。从客观上来来看,软件件不同于硬硬件,它的的生产过程程和产品都都具有明显显的“不可可视”特征征,这就导导致在完成成编码并且且上机运行行之前,对对于软件开开发过程的的进展情况况较难衡量量,软件产产品的质量量也较难进进行先期评评价,因此此,对于开开发软件的的过程进行行管理和控控制比较困困难。在软软件工程的的早期,制制定详细的的开发计划划并且进行行全程跟踪踪调控,对对于所有的的阶段产品品和阶段工工作进展进进行技术审审查和管理理复审,可可望在一定定程度上克克服“开发发过程不可可视”造成成的消极影影响。此外,软件件运行过程程中如果发发现了错误误,那么必必然是遇到到了在开发发时期(分分析、设计计、编码过过程)引入入的,在检检测过程中中没有能够够检查出来来的故障。。对于此类类故障的维维护,通常常意味着要要修改早期期的分析结结果、设计计结果并调调整编码。。由于软件件产品的不不可视特征征,维护过过程不像硬硬件产品维维护时只要要简单的更更换损坏部部件那样容容易,这在在客观上造造成了软件件难以维护护的结果。。利用足够够的文档资资料使不可可视的产品品可视化,,有助于提提升软件产产品的可理理解性和可可维护性。。从主观上分分析,导致致软件危机机发生的另另一大原因因,可以归归于在计算算机系统发发展的早期期,软件开开发的“个个体化”特特点,主要要表现为忽忽视软件需需求分析的的重要性、、忽视软件件的可理解解性、文档档不完备、、轻视软件件的可维护护性、过分分强调编码码技巧等等等方面。只有软件的的用户才真真正了解他他们自己的的需求。而而且应当承承认,用户户一开始并并不见得能能够清晰、、准确、无无二意地表表达自己的的需求。软软件开发人人员需要做做大量的、、深入细致致的调研工工作,引导导用户逐步步准确、具具体地描述述软件的需需求,才能能够得到对对问题、目目标的正确确认识,从从而获得解解决问题的的恰当出发发点,有望望开发出真真正能够满满足用户需需求的软件件产品。在在对用户的的需求没有有清楚的认认识时就仓仓促进行程程序编写,,最终必然然会导致开开发工作的的失败。一般来说说,软件件产品从从策划、、定义、、开发、、使用与与维护直直到最后后废弃,,要经过过一个漫漫长的时时期,通通常把这这个时期期称为软软件的““生命周周期”。。可以以将生命命周期分分作“软软件定义义”、““软件开开发”和和“运行行与维护护”三个个阶段。。在软件定定义阶段段中,主主要进行行软件目目标的策策划、可可行性研研究和软软件的需需求分析析工作,,通过和和用户多多次交流流,在所所要开发发的软件件必须““作什么么”方面面和用户户达成一一致(当当然在开开发过程程中也允允许在严严格的控控制下进进行需求求变更)。软件被定定义之后后,进入入开发阶阶段,主主要对软软件的体体系架构构、数据据结构和和主要算算法进行行设计和和编码实实现。对对于编码码结果,,还要按按照规范范进行测测试后,,才能最最终交付付使用。。如前所所述,在在开发阶阶段也可可能对于于此前不不够准确确的软件件定义结结果进行行调整。。统计数数据表明明,在典典型的软软件工程程过程中中,编码码工作量量大约只只占软件件开发全全部工作作量的15%~~20%。软件的运运行与维维护阶段段在软件件生命周周期中占占据的比比例最大大。在软软件运行行过程中中,分析析和设计计阶段的的一些遗遗留缺陷陷可能会会逐步暴暴露;运运行环境境的演变变也会对对运行中中的软件件提出变变更要求求;用户户新需求求的提出出则常常常要求扩扩充现有有软件的的功能或或者改进进其性能能,所有有这些要要求与问问题都必必须通过过“软件件维护””工作去去解决。。在维护护过程中中,必须须注意保保持所有有软件工工作产品品之间的的一致性性。针对对不同的的需求,,维护工工作一般般可以分分为纠错错性维护护、适应应性维护护、扩充充性维护护和预防防性维护护等不同同类型。。作为软件件,应当当有一个个完整的的配置。。Boehm(美国著著名的软软件工程程专家,,加州州州立大学学教授)指出,,“软件件是程序序以及开开发、使使用、维维护程序序所需要要的所有有文档””。所所以,软软件产品品除包括括程序之之外,应应当包括括完整、、准确、、翔实的的文档资资料。主主要的文文档应当当包括““需求规规格说明明书”、、“体系系结构设设计说明明书”、、“详细细设计说说明书””、“安安装手册册”、““操作手手册”、、“系统统管理员员手册””等。缺缺乏必要要的配置置文档,,将严重重影响软软件的可可理解性性,从而而给软件件的维护护造成严严重障碍碍。做好包括括项目策策划、可可行性研研究、需需求分析析三项内内容的软软件定义义工作,,是提高高软件质质量、降降低软件件成本、、保证开开发进度度的关键键环节。。值得注意意的严重重问题是是,在软软件开发发的不同同阶段进进行修改改所付出出的代价价是极其其不同的的。在早早期引入入变动,,涉及的的面比较较小,因因而代价价也比较较低;在在开发的的中期,,因为许许多配置置项(被被标识的的工作产产品)已已经完成成,所以以引入一一个变动动,就要要对它所所涉及的的所有已已经完成成的配置置项进行行变更,,不仅工工作量大大,而且且逻辑上上也更复复杂,因因此付出出的代价价剧增;;如果在在软件““已经完完成”时时再引入入变更,,更是要要付出高高得多的的代价。。根据美美国一些些软件公公司的统统计资料料,软件件开发后后期引入入一个变变动比在在早期引引入相同同变动所所需付出出的代价价高2~~3个数数量级。。图1.4定定性地描描绘了在在不同时时期引入入一个变变动需要要付出的的代价的的变动趋趋势。图图1.5是美国国贝尔实实验室统统计得出出的定量量结果。。图1.4变变更代价随随时间变化的的趋势示意图1.5改改正一个问问题需要付出出的代价解解决软件件危机的途径径可以借鉴其他他工程领域的的成功经验,,基于软件危危机产生的主主、客观原因因,从软件工工程技术和软软件工程管理理两方面来采采取措施,防防范软件危机机的发生。软件开发不是是某种个体劳劳动的神秘技技巧,而应当当是一种组织织良好、管理理严密,分析析、设计、编编码、测试、、品保等各类类人员协同配配合、共同完完成的工程项项目。在软件件开发过程中中,必须充分分吸收和借鉴鉴人类长期以以来从事各种种工程项目所所积累的行之之有效的原理理、概念、技技术和方法,,特别要注意意吸收几十年年来在计算机机硬件研究和和开发中积累累的经验、教教训。从管理层面上上考虑,应当当注意推广和和使用在实践践中总结出来来的开发软件件的成功的技技术和方法,,并且探索更更好的、更有有效的技术和和方法,注意意积累软件开开发过程中的的经验数据财财富,逐步消消除在计算机机系统早期发发展阶段形成成的一些错误误概念和做法法。建立适合合于本组织的的软件工程规规范;制定软软件开发中各各个工作环节节的流程文件件、工作指南南和阶段工作作产品模板;;实施针对软软件开发全过过程的计划跟跟踪和品质管管理活动;为为每一项工程程开发活动建建立配置管理理库;实施严严格的产品基基线管理并建建立组织的软软件过程数据据库和软件财财富库;为各各类员工及时时提供必要的的培训等等都都是加强软件件开发活动管管理工作的有有效手段。从技术角度考考虑,应当开开发和使用更更好的软件开开发工具,提提高软件开发发效率和开发发工作过程的的规范化程度度。在计算机机软件开发的的各个阶段,,都有大量的的繁琐重复的的工作要做,,在适当的软软件工具的辅辅助下,开发发人员可以把把这类工作做做的既快又好好。目前广为为使用的统一一建模语言(UML)、、各种配置管管理工具、缺缺陷管理工具具和自动测试试工具都在软软件工程活动动中发挥了很很好的作用。。计算机辅助助软件工程(CASE)更是目前备备受重视的一一个旨在实现现软件开发自自动化的新的的领域。1.3软软件工程的产产生及其发展展1968年,,北大西洋公公约组织的计计算机科学家家们在原联邦邦德国召开的的国际会议上上,针对软件件危机的严峻峻形势,提出出了把在其他他工程领域中中行之有效的的一些工程学学知识运用到到软件开发过过程中来,从从管理和技术术两个方面研研究如何更好好地开发和维维护计算机软软件的设想。。这也就是软软件工程的基基本思路。在在这次会议上上首次提出并并使用了“软软件工程”这这一术语。简单地说,软软件工程是指指导软件开发发和维护的工工程学科。它它的核心思想想是采用工程程的概念、原原理、技术和和方法来开发发和维护软件件,把经过实实践考验而证证明是正确的的管理技术和和当前能够得得到的最好的的技术方法结结合起来,从从而大大提高高软件开发的的成功率和生生产率。许多多计算机专家家都曾经描述述过“软件工工程”的定义义。Boehm曾曾为软件工程程下过定义::“运用现代代科学技术知知识来设计并并构造计算机机程序及为开开发、运行和和维护这些程程序所必需的的相关文件资资料”。1983年,,IEEE(电气和电子子工程师协会会)给出的软软件工程定义义为:“软件件工程是开发发、运行、维维护和修复软软件的系统方方法”。FritzBauer(美国著名名的软件工程程专家)则给给出了另一个个关于软件工工程学的定义义:“建立并并使用完善的的工程化原则则,以较经济济的手段获得得能在实际机机器上有效运运行的可靠软软件的一系列列方法”。后来又有一些些从事软件工工程方法学研研究的人陆续续提出了许多多更为完善的的软件工程的的定义,但主主要思想都是是强调软件开开发过程中需需要应用工程程化原则的重重要性。IEEE给出出了关于软件件工程的一个个更加综合的的定义:(1)将系系统化的、规规范的、可度度量的方法应应用于软件的的开发、运行行和维护过程程。即将工程程化方法应用用于软件开发发与维护过程程中。(2)对上上述方法的研研究。就内容来看,,软件工程应应当包括三个个要素:方法法、工具和过过程。软件工工程方法为软软件开发提供供了“如何做做某项工作””的技术指南南。它包括了了多方面的任任务。例如项项目策划和估估算方法、软软件需求分析析方法、体系系结构的设计计方法、详细细设计方法、、软件测试方方法等等。使使得整个开发发过程的每一一种阶段任务务都能够“有有章可循”。。软件工程工具具为软件工程程方法提供了了自动的或半半自动的软件件支撑环境。。目前这样的的工具已经有有许多种,而而且已经有人人把诸多软件件工程工具集集成起来,使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋买卖合同上诉状样本
- 承包合同书范本
- 购销合同的签订注意事项解析
- 保安服务终止合同概述
- 居间科技咨询合同
- 劳动合同补充协议范本写作指南
- 投资合同风险规避
- 计件工劳动合同的违约权益
- 墙体涂装油漆分包合同模板
- 环保设备安装及运营维护合同
- 汽车维修绿色环保方案
- 幼儿园教师值班制度
- 2024年区块链供应链管理平台建设合同
- 《心理健康教育主题班会》主题
- GB 30254-2024高压三相笼型异步电动机能效限定值及能效等级
- 重大事故隐患判定标准与相关事故案例培训课件
- 公安行政执法综合实训智慧树知到期末考试答案章节答案2024年南京警察学院
- 年度成本费用预算表模板
- 火龙罐综合灸疗法
- 深圳市中小学生流感疫苗接种知情同意书
- 《中国近现代史纲要》第八章-中华人民共和国的成立与中国社会主义建设道路的探索
评论
0/150
提交评论