版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章软件工程问题引出人们把程序设计过程中遇到的困境称为“软件危机”.那么,如何走出这种困境,即如何运用现代软件工程技术手段和方法开发出快速、高效、可靠和可维护的软件?这就是本章所要讨论的问题。软件危机和软件工程概念、软件工程目标、软件工程原则、软件过程模型、软件生存周期和软件质量评价。教学重点教学要求了解:软件危机和软件工程概念;熟悉:
软件工程目标、软件工程原则、软件过程模型;掌握:软件开发的基本方法和软件质量评价方法。§6.1软件工程概述§6.4软件质量评价§6.3如阿健工程实施§6.2软件过程本章教学内容计算机软件工程§6.1软件工程概述
软件工程是研究大规模程序设计的方法、工具和管理的一门工程科学,它应用计算机科学以及数学等原理,以工程化的原则和方法来指导计算机软件开发过程。具体说,是用管理学的原理、方法来进行软件生产管理;用工程学的观点来进行费用估算、制定进度和实施方案;用数学方法来建立软件可靠性模型以及分析各种算法和性质,其目标是提高软件生产率和软件质量,降低软件成本。软件工程是在20世纪60年代末为了克服“软件危机”,在这一领域做了大量工作,逐渐形成了系统的软件开发理论、技术和方法。软件工程的发展大体经历了3个时代:程序设计时代、软件时代、软件工程时代。软件工程经过40多年的研究与发展,正逐步走向成熟。6.1.1软件危机
“软件危机”(SoftwareCrisis)一词是1968年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了来的,是指软件开发和维护过程中遇到的一系列严重问题。
1、产生软件危机的原因早期的软件开发依赖于开发人员的素质和个人技能,没有可遵循的原理、原则和方法,缺乏有效的管理。开发出来的软件,在质量、可靠性、可维护性等方面较差。2、软件危机的表现软件危机主要包括两个方面:一是如何开发软件,以满足不断增长,日趋复杂的需求;二是如何维护数量不断膨胀的软件产品,主要表现为:6.1.1软件危机①不能正确地估计软件开发成本和进度,致使实际开发成本往往高出预算很多。
②软件产品不可靠,软件质量差,满足不了用户的需求,甚至无法使用,维护困难。③交付使用的软件不易演化,很少能够重用,以致于不得不重复开发类似的软件。④软件生产率低下,远远满足不了社会发展的需求。⑤软件缺乏适当的文档资料。
软件工程的原则软件开发目标适用于所有的软件系统开发。6.1.2软件工程概念
1、软件工程的定义
弗里兹•鲍尔(FritzBauer)曾经为软件工程下了定义:“软件工程是为了经济地获得能够在实际机器上有效运行的可靠软件而建立和使用的一系列完善的工程化原则”。
2、软件工程要素
(1)软件工程方法:包括项目计划、系统需求分析、数据结构、总体结构设计、算法设计、编码、测试以及维护等。
(2)软件工程工具:为软件工程方法提供了自动的或半自动的软件支撑环境。计算机辅助软件工程将各种软件工具、开发机器和一个存放开发过程信息的工程数据库组合起来形成千个软件开发支撑系统,即软件工程环境。
(3)软件工程过程:是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。6.1.3软件工程目标
1可靠性:指能够防止因概念、设计和结构等方面的不完善造成的软件系统失效,具有挽回系统失效的能力。2可修改性:指允许对系统进行修改而不增加原系统的复杂性,是一个难以度量和难以达到的目标。3有效性:指软件系统能最有效地利用计算机的时间资源和空间资源,是衡量软件质量的一项重要技术指标。4可理解性:指系统具有清晰的结构,能直接反映问题的需求。它有助于控制软件系统的复杂性,支持软件维护…5可维护性:指软件产品交付使用后能够对它进行修改,以便改正潜伏的错误,改进性能和其它属性。6.1.3软件工程目标
6可移植性:指软件从一个计算机系统或环境搬到另一个计算机系统或环境的难易程度。7可重用性:指概念或功能相对独立的一个或一组相关模块定义为一个软部件。8可适应性:指软件在不同的系统约束条件下,使用户需求得到满足的难易程度。9可追踪性:指根据软件需求对软件设计进行正向追踪,或根据程序、软件设计对软件需求进行逆向追踪的能力。10可互操作性:指多个软件元素相互通信并协同完成任务的能力。软件工程是研究软件结构、软件设计与维护方法、软件工具与环境、软件工程标准与规范、软件开发与管理技术的相关理论。软件工程的最终目标是以较少投资获得易于维护、高可靠性、高性能、按时交付的软件产品。软件工程目标之间的关系如图6-1所示。图6-1
软件工程目标之间的关系互斥关系按时交付易于维护低开发成本高性能高可靠性互补关系6.1.3软件工程目标6.1.4软件工程原则
1、选取合适的开发模型在系统设计中,软件的需求、硬件需求以及其它因素之间是相互制约和影响的,需要权衡。
2、选取合适的设计方法在软件设计中,通常要考虑软件的特征,合适的设计方法有利于特征的实现,以达到软件工程的目标。
(1)抽象(Abstraction):指抽取事物最基本的特性和行为,忽略非基本的细节。
(2)信息隐藏(Informationhiding):指将模块中的软件设计决策封装起来的技术。由于对象或操作的实现细节被隐藏,软件开发人员便能将注意力集中于更高层次的抽象上。
6.1.4软件工程原则
(3)模块化(Modularity):模块是程序中逻辑上相对独立的成分,是一个独立的编程单位,应有良好的接口定义。
(4)局部化(Localization):指要求在一个物理模块内集中逻辑上相互关联的计算资源。从物理和逻辑两个方面保证系统中模块之间具有松散的耦合关系,而在模块内部有较强的内聚性,这样有助于控制解的复杂性。
(5)确定性(Accuracy):指软件开发过程中所有概念的表达应该是确定的、无歧义、规范的。
(6)一致性(Consistency):整个软件系统的各个模块均应使用一致的概念、符号和术语;程序内部接口应保持一致;软件与硬件接口应保持一致;系统规格说明与系统行为应保持一致;用于形式化规格说明的公理系统应保持一致,等等。
6.1.4软件工程原则
(7)完备性(Completeness):软件系统不丢失任何重要成分,完全实现系统所需功能的程度在形式化开发方法中,按照给出的公理系统,描述系统行为的充分性;当系统处于出错或非预期状态时,系统行为保持正常的能力。
(8)可验证性(Verifiability):开发大型软件系统需要对系统逐步分解。系统分解应该遵循系统容易检查、测试、评审的原则,以便保证系统的正确性。
3、提供高质量的工程支撑软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。
4、重视软件工程的管理软件工程的管理直接影响可用资源的有效利用、生产满足目标的软件产品以及提高软件组织的生产能力等。
软件过程(SoftwareProcesses)的概念在20世纪80年代被正式提出和明确定义,ISO9000将其过程定义为:“把输入转化为输出的一组彼此相关的资源和活动”。进入90年代,国际标准化组织(ISO)和国际电气与电子工程师学会(IEEE)分别推出《软件过程标准》,我们可将其描述为:软件过程是一个为建造高质量软件所需完成任务的框架,即形成软件产品的一系列步骤,包括中间产品、资源、角色及过程中采取的方法、工具等范畴。软件过程规定了开发和维护一个软件时,要实施的基本过程、活动和任务,其目的是为各种人员提供一个公共的框架,以便用相同的语言进行交流,用相似的方法进行实施。这个相似的方法就是软件生存周期、软件开发模型和软件开发方法。§6.2软件工程过程6.2.1软件生存周期软件生存周期是软件工程中的一个基础概念,指软件产品从提出开发要求、功能确定、设计再到开发成功投入使用,并在使用中不断地修改、增补和完善,直至被新的需要所替代而停止该软件的使用过程。软件开发过程如图6-2所示。软件开发阶段过时吗?软件运行阶段软件维护阶段停止(废弃)软件规划阶段开始
6.2.1软件生存周期软件生存周期的划分使得软件开发变得“有章可循”,即前一阶段任务的完成是后一阶段的前提和基础;后一阶段通常是将前一阶段方案的进一步具体化,而且每一阶段的开始都有严格的技术标准,每一个阶段结束之前都要接受严格的技术评审。软件生存周期各阶段的任务和文档要求如表6-1所示。阶段/项目任务文档软件规划阶段问题定义确定问题的性质、工程目标以及规模作为项目计划书中的一项项目计划进行可行性分析,安排资源分配、进度可行性分析、项目计划书需求分析确定软件的功能、性能、数据、界面等需求规格说明书软件开发阶段系统设计把需求转变为符合成本和质量要求方案设计说明书和数据说明书软件编码用程序语言将软件设计转变为功能程序编码规范的源程序清单软件测试发现软件中的错误并加以纠正软件测试计划和测试报告维护退役软件维护为改正错误或满足需要而修改和完善记录软件维护过程软件退役终止对软件产品的支持,软件停止使用记录软件退役原因、日期6.2.2软件开发模型软件开发模型是从一个特定角度提出的软件过程的简化描述,是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范型,使工程的进展达到预期的目的。因此,可定义“软件开发模型是软件开发全部过程、活动和任务的结构框架。自20世纪60年代以来,随着软件工程思想逐渐形成与发展,出现了很多软件过程模型与方法,例如瀑布模型、增量模型和螺旋模型等,称它们为传统软件过程模型。这些模型的提出不断丰富着软件过程理论,也为开发者提供了一个可参考的过程框架。但是,这些新方法或多或少仍有局限性,这也是激励人们对现有的软件过程及其模型进行持续改进的原动力。下面简要介绍几种常见的软件开发模型。
6.2.2软件开发模型软件开发模型BECDA演化模型
螺旋模型
智能模型
喷泉模型
瀑布模型6.2.2软件开发模型
1、瀑布模型(WaterfallModel)
将开发过程划分成若干个互相区别而又彼此联系的阶段,每个阶段中的工作都以上一个阶段工作的结果为依据,同时为下一个阶段的工作提供了前提,如图6-3所示。图6-3瀑布模型制订计划需求分析系统设计软件编码软件测试使用、维护规划阶段开发阶段维护阶段
2、演化模型(EvolutionaryModel)
是针对事先不能完整定义需求的软件项目开发。对需要开发的软件给出基本需求,作第一次试验开发,其目标仅在于探索可行性和弄清需求,取得有效的反馈信息,以支持软件的最终设计和实现,图6-4是演化模型的例子。图6-4演化模型例子工作版本2信息流信息流R2I/ASC/TDI/ASC/TDRn工作版本1工作版本nR1I/ASC/TD其中:R为需求;D为设计;C/T为编码/测试;I/AS为安装和验收支持。6.2.2软件开发模型
3、螺旋模型图(SpiralModel)
是由TRW公司的B.Boehm于1988年提出的,它是将瀑布模型和演化模型结合起来,并强调其它模型均忽略了的风险分析。该模型更适合于大型软件的开发,对于具有高度风险的大型复杂软件系统的开发是较为实际的方法。螺旋模型将开发划在笛卡尔坐标的4个象限上分别表达制定计划、风险分析、实施工程、客户评估4个方面的活动,如图6-5所示。沿着螺旋线每转一圈,表示开发出一个更完善的新软件版本。如果开发风险过大,开发机构和客户无法接受,项目有可能就此终止;多数情况下会沿着螺旋线继续下去,自内向外逐步延伸,最终得到满意的软件产品。6.2.2软件开发模型图6-5螺旋模型累计成本提交线评审制订计划决定目标、方案和限制风险分析评价方案、识别风险、消除风险客户评价实施工程开发、验证下一产品6.2.2软件开发模型
4、喷泉模型(FountainModel)是于1990年提出的一种新开发模型。喷泉一词本身就体现了迭代和无间隙的特性,表明软件开发活动之间没有明显的间隙。喷泉模型如图6-6所示。图6-6喷泉模型维
护确
认实
现演
化
设
计分
析6.2.2软件开发模型
5、智能模型(IntelligentModel)智能模型是基于知识的开发模型,它综合了上述若干模型,并把专家系统结合在一起,是知识工程与软件工程在开发模型上结合的产物。智能模型如图6-7所示。图6-7智能模型需求分析需求分析需求分析获取需求需求分析具体描述优化程序知识库/专家系统6.2.2软件开发模型软件开发方法是在不断的实践过程中形成的,并在一定程度上受程序设计方法的影响,但软件开发方法绝不仅仅限于程序设计,它包含了更多的软件工程的活动,并且贯穿于整个软件工程活动过程。都目前为止,常见的软件开发方法有以下几种。
1、Parnas方法最早的软件开发方法是加拿大学者帕尼斯(DavidParnas)在1972年提出的,由于当时软件在可维护性和可靠性方面存在着严重问题,因此帕尼斯提出的方法是针对这两个问题的。帕尼斯对软件开发提出了深刻的见解,遗憾的是他没有给出明确的工作流程,所以这一方法不能独立使用,只能作为其它方法的补充。6.2.3软件开发方法
2.Yourdon方法Yourdon方法是1978年由美国科学家尤顿和康斯坦丁提出来的结构化方法,即SASD方法,也称为面向功能或面向数据流的软件开发方法。1979年汤姆·迪马克对此方法作了进一步的完善。Yourdon方法是20世纪80年代使用最广泛的软件开发方法,它首先使用结构化分析方法对软件进行需求分析,然后用结构化设计方法进行总体设计,最后是结构化编程。
3、面向数据结构方法面向数据结构方法是结构化方法的变形,它注重数据结构而不是数据流。结构化方法以分析信息流为主,用数据流图来表示信息流;面向数据结构方法是从数据结构方面分析,并用数据结构图来表示,至今仍广泛使用的软件开发方法。6.2.3软件开发方法
4、面向问题分析法面向问题分析法(ProblemAnalysisMethod,PAM)是20世纪80年代末由日立公司提出的一种软件开发方法。它的基本思想是:考虑到输入、输出数据结构,指导系统的分解,在系统分析指导下逐步综合。这一方法的具体步骤是从输入、输出数据结构导出基本处理框;分析这些处理框之间的先后关系;按先后关系逐步综合处理框,直到画出整个系统的PAD图。从上述步骤中可以看出,这一方法本质上是综合的自底向上的方法,但在逐步综合之前已进行了有目的的分解,这个目的就是充分考虑系统的输入、输出数据结构。PAM方法的另一个优点是使用二维树形结构图PAD,是到目前为止最好的详细设计表示方法之一。6.2.3软件开发方法
5、面向对象开发方法随着OOP(面向对象编程)向OOD(面向对象设计)和OOP(面向对象分析)的发展,最终形成了面向对象的软件开发方法(ObjectModelingTechnique,OMT)。面向对象的软件开发方法是一种自底向上和自顶向下相结合的方法,并且它以对象建模为基础,不仅考虑了输入、输出数据结构,而且也包含了所有对象的数据结构,所以OMT完全实现了PAM没有完全实现的目标。不仅如此,面向对象技术在需求分析、可维护性和可靠性这3个软件开发的关键环节和质量指标上有了实质性的突破,基本解决了在这方面存在的严重问题。6.2.3软件开发方法
6、可视化开发方法可视化开发方法是20世纪90年代软件界最大的两个热点之一。随着图形用户界面的兴起,用户界面在软件系统中所占的比例也越来越大,有的甚至高达60%~70%。
7、软件重用和组件连接软件重用(Reuse)又称软件复用或软件再用。软件重用是利用已有的软件成分来构造新的软件。它可以大大减少软件开发所需的费用和时间,且有利于提高软件的可维护性和可靠性。目前软件重用沿着下面3个方向发展。6.2.3软件开发方法
(1)基于软件复用库的软件重用:是一种传统的软件重用技术,这类软件开发方法要求提供软件可重用成分的模式分类和检索,且要解决如何有效地组织、标识、描述和引用这些软件成分。
(2)与面向对象技术结合:OO技术中类的聚集、实例对类的成员函数或操作的引用、子类对父类的继承等使软件的可重用性有了较大的提高,而且这种类型的重用容易实现,所以这种方式的软件重用发展较快。
(3)组件连接:是目前发展最快的软件重用方式。组件连接技术的实质是一种软件组件的接口标准,任何人都可以按此标准独立地开发组件和增值组件。这样一来,应用系统的开发人员可以把主要精力放在应用系统本身的研究上,因为他们可在组件市场上购买所需的大部分组件。6.2.3软件开发方法系统分析是为系统设计和系统实施提供可靠的具体依据。系统分析阶段的主要活动包括系统初步调查、可行性研究、系统详细调查和系统逻辑方案的提出。
1、系统初步调查系统初步调查是系统分析阶段的第一项活动,也是整个系统开发的第一项活动,其主要目标就是从系统分析人员和管理人员的角度看有无必要开发该系统。
2、可行性研究可行性研究的主要目标是进一步明确系统的目标、规模与功能,对系统开发背景、必要性和意义进行调查分析并根据需要和可能提出拟开发系统的初步方案与计划,它包括三个方面:§6.3软件工程过程6.3.1系统分析
(1)技术可行性:对现有技术进行评价,分析系统是否可以利用现有技术来实施以及该技术对未来系统开发的影响。
(2)经济可行性:对组织的经济状况和投资能力进行分析,对系统的开发、运行和维护费用进行估算,对系统建成后可能取得的社会效益及经济效益进行估算。
(3)运行可行性:分析组织的现有机构、人员、设施能否适应新系统的运行。可行性研究完成后,要提交可行性研究报告。可行性研究报告的主要内容包括现行系统概况、用户主要信息需求、拟开发系统的初步设计方案、技术可行性分析、经济可行性分析、运行可行性分析和结论。6.3.1系统分析
3、系统详细调查系统详细调查是在可行性研究的基础上进一步对现行系统进行全面、深入的调查和分析,弄清楚现行系统运行状况,发现其薄弱环节,找出要解决问题的实质,确保所开发系统有效。系统详细调查的主要工作包括对现行系统的目标、主要功能、组织结构、业务流程、数据流程的调查和分析。
4、系统分析说明书在对现行系统详细调查分析的基础上,着重对用户需求进行进一步调查分析,明确用户的信息需求,包括组织、发展、改革的总信息需求和各级管理人员完成各自工作任务的信息需求,确定新系统的逻辑功能,提出新系统的逻辑方案。编写完成系统分析阶段的最终成果——系统分析说明书。6.3.1系统分析
5、系统分析评审
为了提高软件质量,确保软件开发成功,降低软件开发成本,一旦对目标系统提出具体要求之后必须严格验证这些需求的正确性。系统分析评审应该从以下4个方面进行验证。
(1)一致性:所有需求必须是一致的,任何一条需求不能和其它求互相矛盾。
(2)完整性:需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。
(3)现实性:指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。
(4)有效性:必须证明需求是正确有效的,确实能解决用户面对的问题。6.3.1系统分析软件需求分析是一个不断认识和逐步细化的过程。在该过程中能将软件计划阶段所确定的软件范围逐步细化到可详细定义的程度,并分析和提出各种不同的软件元素(程序、文件、数据库、文档等),然后为这些元素找到解决方法。
1、需求分析的任务需求分析是软件规划阶段的最后一个步骤,它的基本任务是准确地回答“系统必须做什么?”这个问题。需求分析阶段的任务主要有以下4个方面。
(1)确定对系统的综合需求:主要有系统功能需求、系统性能需求、系统运行需求以及将来可能提出的其它需求。这一过程中,系统分析人员要与用户协商,澄清模糊需求,删除无法做到的需求,改正错误需求。6.3.2需求分析
(2)分析系统的数据需求:就是由系统的信息流归纳抽象出数据元素组成、数据的逻辑关系、数据字典格式和数据模型;并以输入/处理/输出的结构方式表示出来的过程。因此,必须分析系统的数据需求,这是软件需求分析的一个重要任务。
(3)导出系统的逻辑模型:就是在理解当前系统“怎么做”的基础上;抽取其“做什么”的本质。在物理模型中有许多物理因素,需要对物理模型进行分析,区分本质和非本质因素,去掉那些非本质因素就可获得反映系统本质的逻辑模型,只要明确目标系统要“做什么”,就可以导出系统详细的逻辑模型。
(4)修正系统开发计划:在经过需求分析阶段的工作后,分析员对目标系统有了更深入更具体的认识,因此可以对系统的成本和进度做出更准确的估计,在此基础上对开发计划进行修正。6.3.2需求分析
2、需求分析的步骤
(1)调查研究:分析人员协同程序员研究系统数据的流程及调查用户需求或查阅可行性报告、项目开发计划报告,访问现场,获得当前系统的具体模型,以IPO图或DFD图表示。
(2)分析与综合:从数据流和数据结构出发,逐步细化软件功能,找出系统各元素之间的联系、接口特性和设计上的限制,最终综合成系统的解决方案,给出目标系统的逻辑模型。
(3)书写需求规格说明书:详细说明软件系统的功能需求、性能需求、接口需求、设计需求、基本结构以及开发标准和验收原则等。
(4)需求分析评审:需求分析的最后一步,应该对功能的正确性、完整性、清晰性,以及其它需求给予评价。6.3.2需求分析
3、需求分析的基本原则近年来已提出了许多软件分析与说明的方法,虽然各种分析方法都有其独特的描述方法,但总的看来,所有需求分析方法都有共同适用的基本原则。
(1)必须清晰描述数据域和功能域:所有软件定义与开发工作最终是为了解决数据处理问题,即将一种形式的数据转换成另一种形式的数据。
(2)按自顶向下、逐层分解问题:在需求分析阶段,软件的功能域和信息域都能做进一步的分解。
(3)给出系统的逻辑视图和物理视图:给出系统的逻辑视图表示和物理视图表示。6.3.2需求分析系统设计的主要目的是将系统分析阶段提出的反映用户需求的系统逻辑方案转换成可以实施的物理(技术方案)。系统设计阶段的主要工作可分为概要设计和详细设计。
1、概要设计概要设计也称为总体结构设计,其内容主要有网络运行模式选择、操作系统选择、数据库管理系统选择、网络平台及其结构选择和系统功能结构设计等。
(1)运行模式选择:目前常用的运行模式有4种:单机模式、主机模式、客户机服务器(C/S)模式、浏览器服务器(B/S)模式。模式的选择根据软件需求分析来确定,但对于信息管理一类的软件,通常选择客户机服务器(C/S)模式或浏览器服务器(B/S)模式。6.3.3系统设计
(2)操作系统选择:目前流行的操作系统较多,可以考虑运行模式和数据库管理系统对环境的要求来确定。
(3)数据库管理系统(DBMS)选择:目前可供选择的关系型数据库管理系统有Oracle、SQLServer、DB2和Access等。前三种系统都是大型数据库管理系统,Access是一种小型数据库管理系统,适用于在单机上设计开发小型软件。
(4)网络平台及其结构选择:机关和各基层单位应分别建立相对独立的局域网,各基层单位的局域网与机关的局域网互联。当然,整个组织也可以只建一个局域网。
(5)系统功能结构设计:将整个系统合理地划分成各个功能模块,其主要原则是模块内部联系越紧密越好,模块之间联系越松散越好。6.3.3系统设计
2、详细设计是对概要设计的进一步细化,设计内容主要有4个方面。
(1)算法设计:是确定每个模块内部的详细执行过程,即设计出完成模块功能所需要的工作步骤,
(2)程序编码:系统设计的一项重要工作就是把管理对象数字化或字符化,这就是编码设计。编码的作用有三个:①标识作用。用来标识和确定某个具体的对象,以便于计算机的识别和区分。②统计和检索作用。当按对象的属性或类别进行编码设计时,易于完成有关的统计和检索工作。③对象状态的描述作用。编码可以用来标明事物所处的状态,便于对象的动态管理。6.3.3系统设计
(3)数据库设计:数据库设计的科学、合理,可以提高系统开发效率和运行效率。数据库设计要满足下面三项要求。①符合用户需求,设计的数据库要能合理存储用户的所有数据,并支持用户需要进行的所有操作。②与选用的数据库管理系统(DBMS)所支持的数据模型相匹配,这样便于数据库设计方案在计算机上的实现。③数据组织合理,易于实现对数据的操作和维护。
(4)用户界面设计:用户界面指软件系统与用户交互的接口,通常包括输出、输入、人机对话的界面与方式等,界面设计目前已成为评价软件质量的一项重要指标。用户界面设计没有什么统一的标准,做到美观大方、风格与系统功能协调、方便用户使用即可。6.3.3系统设计软件编码是用程序设计语言编写出正确的、容易理解的、容易维护的程序模块代码。在编码中要考虑以下几个问题:●程序能按使用要求正确运行,这是最基本的要求。●程序易于调试、检测。●程序可读性好,易于修改和维护。软件编码是通过软件工具来实现的。软件工具指能为软件工程方法提供自动的或半自动的软件支撑环境,支持软件的开发、管理和各种软件文档的生成。它能在软件开发的各个阶段为开发人员提供帮助,有助于提高软件开发的质量和效率。软件工具包括项目管理工具、配置管理工具、分析和设计工具、编程工具、测试工具等。现在开发规模较大的软件,一般都要借助于软件工具或软件开发环境或计算机辅助软件工程
工具与环境的支持。6.3.4软件编码测试是软件交付使用前的最后一个阶段,是保证软件质量的关键步骤,是对需求分析、设计和编码的最后复审。
1、软件测试过程软件测试项目通常包括以下4个方面。
(1)单元测试:在编写出每个模块的代码之后就对它做必要的测试,所以又称为“模块测试”。
(2)集成测试:在所有模块都通过单元测试后,将所有模块按一定逻辑组装成一个完整的程序,检验模块之间的接口关系、数据访问、模块调用、各组成部分是否按照系统设计和程序设计规范协同一致地工作等,所以集成测试又称为综合测试。
(3)确认测试:包括功能测试、性能测试、强度测试和配置评审等内容。6.3.5软件测试
(4)系统测试:是软件开发过程中的最后一项测试,包括验收测试和安装测试。验收测试用来检查系统能否满足用户需求,按用户的意愿进行工作;安装测试是为确保系统应有的功能。
2、软件测试方法软件测试方法很多,最常用的有黑盒测试法和白盒测试法。
(1)黑盒测试法:又称功能测试、数据驱动测试。用这种方法进行测试时,被测程序被当做看不见内部的黑盒。黑盒测试试图发现功能错误或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止错误。
(2)白盒测试法:也称为结构测试法,是基于程序内部语句的逻辑结构的测试。为此,在设计测试数据之前,必须仔细分析程序内部的逻辑结构。6.3.5软件测试
1、软件维护的分类包括纠错性维护、适应性维护、完善性维护和预防性维护。
2、软件维护的任务在软件可交付使用的整个期间,为适应外界环境的变化以及扩充功能和改善质量6.4.1软件质量概念,对软件进行修改。软件的维护不仅包括程序代码的维护,还包括文档的维护。①系统文档。包括开发软件系统各个阶段的有关文档。②用户文档。包括系统功能、安装、使用、参考手册等。
3、软件退役是软件生存周期中的最后一个阶段,终止对软件产品的支持,软件停止使用。6.3.6软件维护§6.4
软件质量评价6.4.1软件质量概念
1、软件质量定义软件质量的定义有多种,无论采用何种形式的定义,软件质量的定义均包含以下3个方面的含义:
(1)与所确定的功能和性能需求的一致性:软件需求是进行“质量”测量的基础,与需求不符必然质量不高。
(2)与所成文的开发标准的一致性:开发标准定义了一组指导软件开发的准则,用来指导软件人员用工程化方法开发软件。如果不能遵照这些准则,软件的高质量无法得到保证。
(3)与所有专业开发的软件所期望的隐含特性的一致性:如果软件只满足那些精确定义了的需求而没有满足哪些隐含的需求,软件质量也就不能得到保证。6.4.1软件质量概念
2、软件质量的度量和评价一般来说,影响软件质量的因素可以分为以下两大类:
(1)直接度量的因素:如单位时间内千行代码中所产生的错误数。
(2)间接度量的因素:在软件开发和维护过程中,为了定量地评价软件质量,必须对软件质量特性进行度量,以测定软件具有要求质量特性的程度。1976年,Boehm等人提出了定量评价软件质量的层次模型。Walters和McCall提出了从软件质量要素、准则到度量的3个层次式的软件质量度量模型。G.Murine根据上述等人的工作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度粮油食品检验人员考前冲刺测试卷(轻巧夺冠)附答案详解
- 2024-2025学年度医学检验(师)模拟试题附答案详解(完整版)
- 2024-2025学年度环境影响评价工程师之环境影响评价相关法律法规考前冲刺练习试题及参考答案详解【能力提升】
- 2024-2025学年度中医助理医师试卷【夺冠系列】附答案详解
- 2024-2025学年度沈阳职业技术学院妇产护理期末每日一练试卷附参考答案详解(精练)
- 2024-2025学年山东化工职业学院单招《物理》考前冲刺练习试题含完整答案详解【夺冠系列】
- 2024-2025学年度计算机四级真题附完整答案详解(名师系列)
- 2024-2025学年度辅警招聘考试全真模拟模拟题及答案详解(夺冠系列)
- 2024-2025学年中医执业医师考前冲刺试卷往年题考附答案详解
- 2024-2025学年度烟草职业技能鉴定复习提分资料及答案详解(夺冠系列)
- 计算机操作员职业标准
- PPK(表格模板、XLS格式)
- 最科学养羊技术
- GB/T 30257-2013节能量测量和验证技术要求通风机系统
- GB/T 22708-2008绝缘子串元件的热机和机械性能试验
- GB/T 17492-2019工业用金属丝编织网技术要求和检验
- GB 13614-2012短波无线电收信台(站)及测向台(站)电磁环境要求
- 城市绿地设计规范课件
- 2023年宁波城市职业技术学院单招职业适应性测试笔试题库及答案解析
- 风景园林工程课件第四章-园路
- 工程质量问责追责管理办法
评论
0/150
提交评论