软件工程基础_第1页
软件工程基础_第2页
软件工程基础_第3页
软件工程基础_第4页
软件工程基础_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计&软件工程基础一、程序设计的概念

程序设计:利用计算机解决具体问题的全过程。

程序设计的基本过程:①分析所求解的问题

②抽象数学模型

③设计合适的算法和数据结构

④编写程序

⑤调试运行

程序设计基础二、程序设计方法1.结构化程序设计(StructuredProgramming)

为了完成一些大规模、高复杂度的程序设计任务,SP(和软件工程)思想被提倡。强调数据类型、程序结构,强调可靠性、可维护性甚于程序的效率。其主要思想如下:(1)注意程序的可读性(2)采用自顶向下、逐步求精的设计方法。(3)程序语言只包括3种结构(单入口,单出口)(4)模块化程序设计基础基本结构: 顺序结构选择结构循环结构程序设计基础程序模块1程序模块2程序模块2条件程序模块1成立不成立条件程序模块成立不成立2.面向对象程序设计(Object-OrientedProgramming)

20世纪80年代OOP由理论转向实践,90年代开始盛行。(1)软件规模越来越大,(美国航天飞机系统4000万条代码),人们不得不寻求更高效、更可靠的开发技术。

(2)OOP抓住软件开发的本质,OOP开发的软件易重用、易修改、易测试、易扩充。程序设计基础

对象:用来描述客观事物的实体。每个对象有各自的内部属性和操作方法。程序设计基础整个程序是由一系列相互作用的对象构成的,对象之间的交互通过发送消息来实现。属性:频道颜色音量方法:调节频道调节颜色调节音量电视机电视机对象

类:具有相同的属性和操作方法,并遵守相同规则的对象的集合。

类是对象集合的抽象,规定了这些对象的公共属性(即数据结构)和方法(操作数据的函数)。对象是类的一个实例。程序设计基础OOP特点:封装、继承、多态性程序设计基础三、程序设计语言文章汉语、英语字、词、语法结构写文章程序计算机语言数据表示、表达式、语句结构编程序

计算机语言:人与计算机通讯的语言

程序:利用计算机语言编写的能够完成一定功能的一组代码。

程序设计语言=计算机语言

1.语言的分类应用范围通用语言、专用语言系统程序设计语言、科学计算语言事务处理语言、实时控制语言程序设计方法结构化语言模块化语言面向对象语言与硬件的联系程度机器语言汇编语言高级语言→与计算机硬件基本无关依赖于计算机硬件(低级语言)程序设计基础

⑴机器语言

从本质上说,计算机只能识别0和1两个数字,因此,计算机能够直接识别的指令是由一连串的0和1组合起来的二进制编码。机器指令=操作码+操作数

机器语言:指计算机能够直接识别的指令的集合。即以二进制代码表示的机器指令集合,它是计算机能够直接识别和执行的语言。程序设计基础优点:占用内存少少,执行速度度快;缺点:面向机器,,通用性差,,不易阅读和和记忆,编程程工作量大,难难以维护。程序设计基础础[例]用Intel8086指令系统编编写机器语言言程序,完成成“9+8””优点:比机器语言言程序容易阅阅读和修改缺点:面向机器,,通用性差。。程序设计基础础⑵汇编语言汇编语言:用符号代替替机器指令所所产生的语言言。例如,8086汇编编语言实现现“9+8”源程序:用汇编语言言编写的程序序。汇编程序:负责翻译的的软件。主要作用→源源程序转换成成用二进制代代码表示的目目标程序。连接程序:将目标程序序与库文件或或其他目标程程序连接起来来形成可执行程程序。程序设计基础础汇编语言源程序目标程序可执行程序汇编程序连接程序⑶高级语言高级语言:用接近自然然语言和数学学语言的语法法、符号描述基本操作的的程序设计语语言FORTRAN、Pascal、C、C++、、Delphi、Java、C#例如用C++实现“9+8”程序设计基础础优点:符合人类习习惯,简单易易学通用性强,便便于维护源程序:用高级语言言编写的程序序。翻译程序:将源程序翻翻译成用二进进制代码表示示的目标程序。翻译程序的工工作方式:①解释方式::边解释边执执行②编译方式::编译程序、、运行程序程序设计基础础高级语言源程序执行结果解释程序解释方式程序设计基础础编译方式可执行程序高级语言源程序编译程序目标程序连接程序2.程序设计计语言的选择择选择编程语言言涉及很多因因素:①人的因素::编程小组精精通这门语言言吗?②任务需要::选择的语言言能否实现任任务的全部功功能?能跨平台台吗?有数据据库接口功能能吗?能直接控制声卡等等硬件吗?③客户指定。。例如要通过过串行口控制制一个外部设设备,C+汇编编语言是最明明智的选择。。了解一些流行行的语言,对对于做出合理理选择会有帮帮助。程序设计基础础一、软件的定定义软件:计算机系统中中的程序及其其文档。程序:计算任务的处处理对象和处处理规则的描描述。文档:为了便于了解解程序所需的的阐明性资料料。程序必须装入入机器内部才才能工作文档供人阅阅读,不一一定装入机机器软件工程基基础18IEEE对对软件的定定义(1983)软件是计算算机程序、、方法、规规则、相关关的文档资资料以及在在计算机上上运行的程程序所必需需的数据的的集合。程序:是计算机机需要遵照照执行的一一系列指令令。它作为为一种具有逻辑结构构的信息,,精确而完完整地描述述计算任务务中的处理对象和和处理规则则。方法、规则则:通常是在在文档中说说明并在程程序中实现现的。文档:开发、使使用和维护护程序所需需要的图文文资料。数据:向一个程程序提供的的输入。二、软件的的发展过程程软件的发展展受到应用用和硬件发发展的推动动和制约,,其发展过过程大致可可分为三个个阶段:第一阶段1946-1958第二阶段1956-1968第三阶段1968以后从第一个程序出现到实用的高级程序设计语言出现,这期间重点考虑程序本身,尚未出现“软件”一词。实用的高级程序设计语言出现到软件工程出现,这期间出现软件一词,融程序及其有关的文档于一体。“软件危机”软件工程出现→现在,1968年大西洋公约学术会议提出“软件工程”的概念。1.软件危危机概念观点1软件产品的的生产总是是超出预算算,落后于计划进度度,而且产产品质量不不可靠。观点2在软件的开开发和维护护过程中所所遇到的一系列严重重问题。软件的生产产过程不像像硬件那样样规范,受受人的因素素和外界影影响很大,,因此在软软件生产的的各阶段都都会引入不不同程度的的错误,致致使成本上上升,甚至至导致软件件失败。三、软件危危机与软件件工程2.软件危危机的表现现软件开发和和维护费用用急剧上升升不重视文档档资料产品质量不不可靠软件产品成成本高于硬硬件产品3.软件开开发中的问问题软件生产技技术进展缓缓慢软件成本和和质量难以以控制对软件开发发的错误认认识难以准确、、全面把握握用户需求求不重视阶段段审查和复复审软件复杂且且规模庞大大软件维护费费用上升4.软件工工程概念软件工程(SoftwareEngineering,SE)一门研究用用工程化方方法构建和和维护有效效的、实用用的和高质量软件的的学科。。软件工程在软件开发发与维护过过程中采用用工程的原原理、方法法、技术并使用正确确的管理方方法来指导导软件生产产的全过程程。主要内容软件开发方方法软件开发过过程软件开发工工具软件管理5.软件工工程的基本本准则B.W.Boehm综合各方方意见,于于1983年提出了了软件工程程的基本准准则1.用分阶段的的生命周期期计划严格格管理据统计,在在不成功的的软件项目目中有50%左右是是由于计划划不周造成成的。应该该把软件生生命周期划划分为若干干阶段,并并制定出相相应的切实实可行的计计划,严格格按照计划划对开发和和维护进行行管理。2.坚持进行阶阶段评审设计的错误误占软件错错误的63%,编码码错误只占占37%。。而且在后后期纠正错错误的代价价非常高。。因此,必必须严格坚坚持阶段评评审,及早早发现和纠纠正错误3.实行严格的的产品质量量控制在现实中由由于外部原原因要求对对需求等进进行修改是是难免的。。但必须有有严格的管管理制度和和措施。4.采用现代程程序设计技技术和软件件工程技术术如结构化程程序分析(StructuredAnalysis)和结构化化设计(StructuredDesign)等。5.结果应能清清楚地审查查由于软件是是一种看不不见摸不着着的逻辑产产品,对它它的检验和和审查很困困难。因此此,应提供供可视化的的检验标准准和方法。。6.开发人员应应少而精软件开发小小组的人员员应该是素素质高,人人员不宜过过多。人员员素质低和和人员过多多,都会导导致软件的的错误率高高,且开发发效率下降降,成本增增加。7.承认不断改改进软件工工程的必要要性软件工程是是一门不断断迅速发展展的学科,,必须学习习和跟踪先先进的技术术和方法,,也要不断断总结经验验、改进方方法,要不不断进行技技术创新。。四、软件生生命周期软件生命周周期是从时间的角度出发发,从软件件目标的提提出、定义义、开发、、维护,直直到最终被被丢弃的整整个过程。。计划时期→→开发时期期→运行时时期1.计划时时期问题的定义义:提出软件件项目的目目标和规模模可行性研究究:对项目进进行可行性性调研和论论证,确定定项目是否否能够或者值得开发发2.开发时时期开发时期要要具体分析析、设计和和实现计划划时期定义义的软件。。需求分析:做什么概要设计:建立目标标系统的总总体结构详细设计:怎样做编码码:选择程序序设计语言言进行描述述。测试试:单元测试试、综合测测试、确认认测试和系系统测试或或者验收测测试。3.运行时时期交付使用→→维护工作作维护的主要要任务:通过各种种必要的的维护活活动延长长系统的的生命周周期。软件开发发的原则则与方法法结构化软软件开发发的原则则结构化::用一组组规范的的步骤、、准则和和工具来来进行工工作最成熟、、最广泛泛的方法法(1)用用户参与与(2)先逻逻辑,后后物理(3)自自顶向下下逐步步求精功功能分分解与抽抽象(4)工工作成果果描述标标准化软件开发发的方法法(1)系系统流程程图(2)结结构分析析法(3)结结构化设设计法(4)数数据结构构法(5)层层次输入入—处理理—输出出方法(HIPO法)一、问题题定义问题是指指用户的的基本要要求,就就是确切切地定义义用户要要求解决决的问题题,即确定问题题的性质质、工程程的目标标和规模模。问题定义义的目的的是要在在短时间间内,对对用户的的要求有有一个比比较准确确的估计计,对要要实现的的系统规规模做到到心中有有数。但但仅有这这些还不不够,还还要搞清清用户不不打算干干什么,,在这个个系统中中哪些内内容不用用实现。。工作的宗宗旨是搞搞清要做做什么并并划清要要实现的的系统的的范围边边界。在问题定定义阶段段,分析析员应尽尽可能站站在较高高的角度度去抽象象、概括括所要做做的事情情。分析员对对问题有有了明确确认识之之后,应应该把自自己的认认识写成成书面报报告,提提交给用用户和使使用部门门的负责责人审查查,以检检验分析析员对所所要解决决的问题题的理解解是否正正确。因因为分析析员对问问题的理理解为今今后开发发工作确确定了方方向。分分析员对对问题理理解正确确与否,,关系到到系统成成败。问题定义义(续))在问题定定义阶段段,分析析员应该该对工程程成本做做出粗略略的预算算,并对对下阶段段可行性性研究所所需要时时间和成成本做出出较精确确的估计计。对问题定定义的书书面报告告应该尽尽可能清清楚简洁洁,最好好写在一一页内。。这份报报告通常常应包括括工程项项目的名名字,对对问题概概括定义义、项目目的目标标,项目目的规模模,对可可行性研研究的具具体建议议(既需需要用的的时间和和成本)等等。。一旦分析析员和用用户及使使用部门门的负责责人对所所要解决决的问题题,取得得完全一一致的看看法且在在报告书书上签了了字,问问题定义义阶段工工作就宣宣告完成成,可行行性研究究就可以以开始。。二、可行行性研究究可行性研研究就是是分析员员站在较较高的角角度去调调查现行行系统及及用户提提出的目目标,并并寻找是是否有一一种手段段能够在在现有条条件下实实际地达达到项目目目标。。同时向向用户指指出该系系统实现现的意义义,使用用户去权权衡花费费这样的的代价去去实现这这样的系系统是否否值得。。可行性研研究的目目的就是是用最小小的代价价在尽可可能短的的时间内内,确定定问题是是否能够够解决,,从而确确定问题题是否值值得去解解。如何才能能达到这这个目的的呢?进进行客观观分析,,通过对对几种可可能解法法,分析析其利弊弊,才能能判断原原定系统统的目标标和规模模是否现现实,系系统带来来的效益益是否大大到值得得投资开开发这个个系统。。因此,,可行性性研究实实质上是是进行一一个大大大压缩简简化了的的软件分分析和设设计过程程,也就就是在较较高层上上,以较较抽象的的方式进进行软件件分析和和设计的的过程。。可行性研研究应在在以下三三方面进进行:①①技术可可行性;;②经济济可行性性;③操操作可行行性。可行性研研究(续续)1.技术术可行性性对技术可可行性研研究,首首先应从从对现行行系统进进行调查查入手。。因为现现行系统统是信息息的重要要来源。。新的目目标系统统必须能能完成现现行系统统的基本本功能;;另一方方面,新新系统必必须能解解决旧系系统中存存在的问问题。所所以,应应先对现现行系统统的组成成部分、、功能和和存在问问题进行行调查研研究。但但这种调调查研究究不可能能做得很很细,对对一些内内容细节节必须先先暂时忽忽略,抓抓住主要要的问题题。此时时,分析员应把调调查到的现行行系统的情况况画成高层数数据流程图。。其次,导出新系统的的高层逻辑模模型(数据流流程图)。新系统的高高层的逻辑模模型建立在现现行系统的高高层数据流程程图的基础上上。因为通过过前一步的工工作,分析员员对目标系统统(新系统)应该具的基基本功能和所所受的约束,,已有一定的的了解,使用用数据流程图图描绘数据在在系统中流动动和处理的情情况,从而概概括地表达出出对新系统的的设想。用数数据流程图和和数据字典来来定义新系统统的高层逻辑辑模型。可行性研究((续)其三,重新定定义问题。新新系统的逻辑辑模型实质上上表达了分析析员对新系统统必须做什么么的看法。此此时,分析员员应该和用户户一起复查问问题定义、工工程规模和目目标。这次复复查应该把数数据流程图和和数据字典作作讨论的基础础。如果分析析员对问题有有误解或者用用户曾经遗漏漏了某些要求求,那么现在在是发现和改改正这些错误误的时候了。。其四,导出供供选择的解法法。分析员应应从他所建议议的系统逻辑辑模型出发,,推导出若干干个较高层次次的解决办法法,供比较和和选择。最简简单的途径,,是从技术角角度出发,考考虑解决问题题的不同方案案。这些不同同方案可以在在数据流程图图上划分不同同的自动化边边界而得到。。所以分析员员在确定了几几组不同的自自动化边界之之后,再针对对每组边界,,考虑如何实实现所要求的的系统。当从技术角度度提出了一些些系统模型之之后,应根据据技术可行性性的考虑,初初步排除一些些不现实的系系统。把技术术上行不通的的解法(方案案)去掉之后后,就剩下了了一组技术上上可行的方案案。可行性研究((续)一般来说,技技术可行性还还可以从硬件件(包括外围围设备)的性性能要求、软软件的性能要要求(包括操操作系统、软软件包、数据据库管理系统统、各种软件件工具)能源源及环境条件件以及软件系系统所采用的的技术是否先先进,实现的的可能性如何何,实现软件件系统的人员员素质是否具具备等方面进进行考虑。2.经济可行行性研究经济可行行性,不仅仅仅是了解为完完成用户提出出的要求是否有足够的的资金支持(这是目前很很多分析员重重点要做的事事情),而更主要是把把成本与获利利分析清楚。也就是对经经济合理性进进行评价,即即带来的经济济效益是否超超过其开发和和维护所需要要的费用。这这工作包括估估计费用和估估计效益两个个方面。可行性研究((续)估计费用。主主要考虑以下下几部分:设设备费用,包包括计算机硬硬件和软件的的费用;人力力费用,包括括开发人员和和维护人员的的工资;材料料费用;管理理费用以及维维护费用等。。估计效益。可可以从以下几几个方面考虑虑:提供了哪哪些以前提供供不了的信息息,提供信息息的速度提高高了多少?质质量有什么提提高?对使用用者查询和使使用信息的方方便程度有什什么提高,节节省多少人力力?对组织的的领导人和管管理人员正确确做出决策提提供了哪帮助助?…有时不不能直接用金金钱来衡量效效益,如一个个邮购单位,,由于能够及及时、准确地地处理订货,,缩短了顾客客收到货物的的时间,从而而在竞争中得得到了更多的的顾客。这一一类的收益就就不容易用具具体金钱来衡衡量,只能由由管理人员根根据经验来做做出大约的估估计。在估计效益时时,要谨慎把把各种可能影影响效益发挥挥的各种因素素考虑在内,,打上折扣。。可行性研究((续)3.操作和维维护可行性人员操作和维维护可行性的的研究是了解解当用户所要要求的软件系系统建立起来来之后,用用户对它的操操作是否方便便?管理和维维护是否容易易?如果对于于一个软件系系统的操作比比原有的手工工系统还麻烦烦,那么它是是不会受欢迎迎的。另一方方面,如果管管理和维护这这个软件系统统的人员比原原来的手工系系统还多,素素质要求还高高,那么这个个系统对用户户来说负担太太重了。从上面的讨论论中不难看出出,可行性研研究的出发点点应该是从当当前的物理系系统到新的物物理系统的转转换,它是整整个可行性研研究的基础,,实际上也是是整个系统开开发过程的缩缩影。因为整整个系统实现现过程也就是是把当前的手手工系统转化化为可用计算算机实现的新新系统的一个个转换过程,,只不过这工工作比在可行行性研究阶段段更细致,更更具体罢了。。上述从三个方方面分别开展展的,而实际际上它们之间间有着密切的的联系,因此此还必须对它它们综合考虑虑,然后向用用户推荐方案案供其选择。。可行性研究((续)当用户选定方方案之后,分分析员应对在在问题定义阶阶段所规定的的实现目标进进行修改。因因为,这时对对系统有了更更深入的了解解,原来的问问题定义可能能有的不能实实现,还有些些需要加上去去,也就是说说原有的问题题边界不够准准确,需要纠纠正,以便今今后有一个非非常明确的工工作目标。这这是一步极有有实质意义的的工作,它使使分析员和用用户最后明确确了要解决的的问题的边界界以及它的实实现方案。一一般来说,可可行性研究的的结果可导致致以下两种情情况:(1)可行行(2)不可行行可行性研究结结束后,要写写出可行性研研究报告,提提交有关专家家论证和上级级主管部门批批准。可行性性研究报告作作为所有软件件文件资料的的基础材料,,它的格式可可以很不相同同,但大体的的内容提纲是是一致的。需求分析的定定义软件需求分析析是在可行性性研究基础上上进行的更细细致的分析工工作。也就是是在对软件计计划阶段确定定的工作范围围内进一步对对目标对象和和环境作细致致、深入的调调查分析。需需求分析过程程实际上是一一个调查研究究、分析综合合的过程,是是一个抽象思思维、逻辑推推理的过程。。通过调查研研究和分析,,充分了解用用户对软件系系统的要求。。在此基础上上,把用户要要求表达出来来,解决软件件系统“做什什么”的问题题。也就是建建立起系统的的逻辑辑模模型型,把把软软件件功功能能和和性性能能的的总总体体概概念念描描述述成成具具体体的的软件件规规格格说说明明书书。需求求分分析析的的目目标标(1.理理清清数数据据流流或或数数据据结结构构;;2.通通过过标标识识接接口口细细节节,,深深入入描描述述功功能能,,确确定定设设计计约约束束和和软软件件有有效效性性要要求求;;3.构构造造一一个个完完全全、、精精致致的的目目标标系系统统逻逻辑辑模模型型。。)需求求分分析析的的任任务务(认认清清问问题题、、分分析析与与综综合合、、逻逻辑辑模模型型导导出出与与复复审审))结构构化化分分析析方方法法三、、需需求求分分析析结构构化化分分析析方方法法结构构化化分分析析方方法法的的策策略略基本本的的系系统统模模型型结构构化化分分析析方方法法策策略略分分析析.输入入1....软件系统输出1输出2输出3输入N...x1231.12.23.33.13.23.43.5顶层0层1层3.3逐层分解方法示意图业务务流流程程图图结构构化化分分析析方方法法((续续))————数数据据流流图图数据据流流图图的的定定义义数据据流流图图的的组组成成要要素素:源源点点、、终终点点、、数数据据流流、、数数据据文文件件、、数数据据变变换换数据据变变换换的的两两种种类类型型:①对对数数据据结结构构的的变变换换,,如如对对数数据据的的格格式式重重新新排排列列。。②②在在原原有有数数据据内内容容基基础础上上产产生生新新的的数数据据内内容容,,如如计计算算平平均均值值或或总总计计。。数据据流流图图的的画画法法1、、画画数数据据流流图图的的基基本本原原则则((①数数据据流流程程图图中中的的图图形形符符号号只只能能包包含含四四种种基基本本元元素素。。②②数数据据流流程程图图主主图图上上的的数数据据流流必必须须封封闭闭在在外外部部实实体体((外外部部项项))之之间间,,实实体体可可以以是是一一个个也也可可是是多多个个。。③③变变换换框框上上至至少少有有一一个个输输出出数数据据流流和和一一个个输输入入数数据据流流。。④④数数据据流流程程图图上上的的每每一一个个元元素素都都必必须须有有““名名字字””。。)2、方法法与步骤骤3注意事事项(父父子图的的平衡、、分解程程度与数数据存储储文件,,数据流流图是静静态图、、与传统统框图的的差别、、反复修修改的过过程)数据流图图数据流图图数据流图图数据字典典1、数据据字典的的定义((数据字典典就是对对数据流流程图中中,数据据、变换等进进行精确确定义。。)2、数据据定义方方法(对数据自自顶向下下的分解解。当分分解到不不需要进一步定定义,对对每个和和系统有有关的人人都能清清楚理解解这些数数据项的含含义为止止。)3、数据据定义中中的数据据结构((顺序、选选择、重重复、可可选)4、数据据字典中中的符号号(=表示示等价、、+表示示和(或或连接两两个分量)、、{}表示示重复花花括号内内的分量量、[|]表表示或即即从方括弧内内列出的的若干分分量中选选择一个个、()表表示可可选即或括弧里里的量可可有可无无、n..m表表示示界域)5、数据据流、数数据存储储、数据据变换的的定义加工的描描述要求:准准确、清清晰、简简洁自然语言言结构化语语言决策树决策表以上工具具的混合合使用决策树、、决策表表、结构构化语言言if交交易额额>=2500元元thenif三三个月无无欠款then折折扣15%elseif老顾顾客then折扣扣10%else折扣扣5%else无折折扣1.研究究目前正正在使用用的系统统现有的系系统(包包括人工工系统)是信息息的重要要来源。。因此,,首先要要去了解解现有系系统能完完成哪些些工作,,而新的的目标系系统必须须也能完完成它的的基本功功能;对现有系系统(人人工系统统)的了了解,是是要了解解对现有有系统能能做什么么,同时时画出描描绘现有有系统的的高层数数据流程程图。2.导出出新系统统的高层层数据流流程图(即逻辑辑模型)好的设计计,通常常总是从从现有系系统出发发导出现现有系统统的逻辑辑模型,,然后参参考现有有系统的的逻辑模模型,设设想出新新系统的的逻辑模模型。通常第一一步的工工作,对对新的目目标系统统应该具具有的基基本功能能和所受受的约束束条件,,已有一一定的了了解,把把这些了了解用数数据流程程图概括括地描绘绘出对新新系统的的设想。。同时定定义系统统中使用用的数据据,构造造初步的的数据字字典。这这样,数据流程程图和数数据字典典共同定定义了新新的目标标系统的的高层逻逻辑模型型。结构化分分析步骤骤结构化分分析步骤骤(续))3.完善善数据流流程图在第二步步画出新新系统的的高层数数据流程程图中,,许多数数据的定定义和一一些细节节都没有有考虑进进去。现现在应着着手解决决这个问问题。(1)沿着数据据流程图图回溯为了对数数据流程程图中的的数据流流和数据据存储进进行定义义,通常常是从数数据流程程图的输输出端着着手分析析。这是是因为软软件系统统的目标标是产生生这些输输出,输输出数据据确定了了软件系系统必须须具有的的最基本本的组成成元素。。输出数据据是由哪哪些数据据项组成成的,通通过调查查访问是是不难搞搞清这个个问题。。那么每每个输出出数据项项又是从从哪里来来的呢?因为它它是新系系统的输输出,那那么它们们或者是是从外面面输入到到系统中中来,或或者是通通过运算算由系统统中产生生出来的的。为了了弄清这这些,可可以沿着着数据流流程图从从输出端端往输入入端回溯溯,能够够确定每每个数据据项的来来源,与与此同时时也就初初步定义义了有关关的算法法。结构化化分析析步骤骤(续续)在第二二步得得到的的高层层数据据流程程图中中,许许多具具体细细节没没有包包括在在里面面。因因此,,当沿沿着数数据流流程图图回溯溯时,,经常常会遇遇到::为了了得到到某个个数据据项需需要用用到数数据流流程图图中目目前还还没有有的数数据项项,或或者得得出这这个数数据项项要用用的算算法还还不完完全清清楚。。为了了解决决这些些问题题,需需要向向用户户和有有关人人员请请教,,他们们的回回答使使分析析员对对新系系统的的认识识更具具体更更深入入了。。系统统中更更多的的数据据项被被划分分出来来,更更多的的算法法被搞搞清楚楚了。。一般般把分分析过过程得得到的的有关关数据据项的的信息息、变变换的的算法法简明明地记记在数数据字字典中中。(2)用户复复查通过沿沿着数数据流流程图图的回回溯过过程,,把一一些数数据项项和变变换的的算法法记录录到数数据字字典中中。这这个数数据字字典是是否准准确完完整?算法法是否否正确确?还还有没没有必必要的的变换换和数数据项项遗漏漏了?某些些数据据项的的来源源搞清清楚吗吗?………结构化化分析析步骤骤(续续)对这些些问题题必须须请系系统的的用户户对前前面步步骤得得出的的结果果仔细细地进进行复复查。。可以以借助助于数数据流流程图图和数数据字字典,,从输输入端端开始始向用用户解解释输输入数数据怎怎样一一步一一步地地转变变成输输出数数据。。这些些解释释集中中反映映了分分析员员通过过前面面分析析工作作,所所获得得的对对新目目标系系统的的认识识。这这些认认识是是否正正确,,有无无遗漏漏?应应请用用户及及时纠纠正和和补充充分析析员的的认识识。通通过复复查过过程验验证了了已知知的元元素,,补充充了未未知的的元素素。填填补了了文档档中的的空白白。由于复复查可可能获获得新新的知知识,,又可可能引引出新新的问问题。。这些些需要要进一一步的的调查查访问问寻求求对问问题的的解答答,而而且还还应及及时修修改和和补充充数据据流程程图和和数据据字典典,把把对系系统的的新认认识及及时记记录下下来。。所以以,追追踪数数据流流程图图和复复查软软件系系统的的逻辑辑模型型实质质上构构成一一个循循环。。对数数据流流程图图的分分析产产生一一些问问题,,这些些问题题通过过复查查得到到的答答案使使分析析员对对系统统有更更深人人更具具体的的认识识,同同时可可能又又引出出新的的问题题,寻寻找这这些新新问题题的答答案导导致了了对新新系统统的更更进一一步的的认识识。,,每经经过一一次循循环都都会对对新系系统了了解更更多的的细节节。结构化分析((续)4.分解细化化数据流程图图通过上面的分分析及用户的的复查,分析析员对新系统统有了更进一一步了解,此此时可对数据据流程图中的的各个变换进进行检查。如如果某个变换换的功能还比比较复杂,即即还比较抽象象,就应将这这个变换功能能分解成若干干个子功能。。这些较低层层的子功能就就成为新的数数据流程图上上的变换。在在新的数据流流程图中,也也应包括自己己的数据流和和数据存储。。数据流程图经经分解之后,,得到一组新新的数据流程程图,不同的软件件元素之间关关系变得更清清楚了。对这这组新数据流流程图的分析析追踪可能产产生新的问题题,对这些问问题的解答,,又可能在数数据字典中增增加一些新的的条目,并且且可能导致新新的或精化的的变换算法的的描述。随着着分析过程的的进展,经过过问题与解答答的反复循环环,分析员越越来越深入、、具体地定义义了新系统。。通过上面各各步就可以得得到一套新目目标系统的分分层数据流程程图和数据字字典,也就是是得到新系统统的逻辑模型型。软件总体设计计的任务从软件需求规格格说明书出发,将设计计对象用数据据流或数据结结构的形式表表达成完整的的抽象实体。。这个实体应应当是一个结结构清晰、层层次分明的模模块组合,应应当可以被评评价和细化,,也可以被修修改。同时还还要定义这个个实体与外部部环境的接口口。软件总体设计计的目标1.软件实体应当当具有明显的的层次结构,,便于软件元元素之间的控制。2.软件实体应当当模块化,这这些摸块应具具有完全独立立的功能。3.软件实体与环环境的界面应应当清晰。4.软件设计计的最终表示示—软件设计计规格说明应应当清晰、简简洁、完整和无无岐义。四、软件总体体设计结构化方法从从建立一个具具有良好结构构系统的观点点出发,基于于把一个复杂杂的系统分解解成相对对立立的模块的原原则,主要研研究了将系统统分解为不同同模块的方法法与技术,分分析系统分解解师长生的各各种影响,提提出了评价模模块结构质量量的具体标准准,还给出了了从数据流图图导出模块结结构图的规则则。结构化设计方方法规定了一一系列模块的的分解协调原原则,提出了了结构化设计计的基础是模模块化,即将将整个协调分分解成相对对对立的若干模模块,通过对对模块的设计计和模块之间间关系的协调调来实现整个个协调的功能能。结构化设计方方法系统模块结构构图模块化的优点点可以独立设计计、编码、测测试,控制了了程序的复杂杂性,减少了了出错。模块错误不宜宜扩散,提高高了软件的可可靠性。便于团队开发发开发的软件可可维护性、开开放性、通用用性好。1.评价软件件初始结构,,调节之间的的耦合度和聚聚合度在设计初始软软件结构以后后,常常会发发现几个模块块的功能有相相似之处,这这相似部分不不仅增加了编编程和调试的的工作量,同同时也给维护护过程带来麻麻烦,应当消消除这样的重重复。(1)完全相似这种情况只在在数据类型上上不一致,可可采用完全合合并,只需在在数据类型的的描述或变量量定义上加以以改进。(2)局部相似两个模块具有有功能类似的的组成部分和和不同部分。。可通过模块块分解消除重重复功能部分分:首先找出出模块中的功功能相似部分分,分离出来来,构成它们们的一个公共共的下层模块块。如果分解解后余下的模模块比较简单单,则可以同同它们的各自自调用模块进进行合并。这这样消除了重重复功能的组组成部分,模模块间的耦合合较小、模块块内的聚合较较大。软件总体设计计准则(续))软件总体设计计准则(续))2.模块功能能的完善一个完整的功功能模块应具具有以下三个个要素:(1)执行某某项指定功能能的部分(2)如果需需要返回一系系列的数据给给它的调用者者,应在完成成数据处理或或结束时,告告诉它的调用用者“文件完完”或其他标标志。(3)出错处处理部分,即即在不能完成成指定任务时时,必须将产产生这种例外外情况的原因因(出错标志志)通知它的的调用者。它它们是一个功功能模块的有有机组成部分分,不应当分分离到其他模模块中去,否否则会增加模模块间的耦合合。软件总体设计计准则(续))3.模块调用用个数最好不不要超过五个个一个模块拥有有的直属下级级模块的个数数叫模块的扇扇出数。如果果一个模块扇扇出数过大,,这个模块就就往往包含过过多的功能,,一般是因为为缺乏中间层层次的控制模模块,需要将将其功能进行行分解。一个模块的直直接上级模块块的个数叫模模块的扇入数数。一个模块块的扇入表明明有多少个上上级模块直接接调用它,扇扇入越大,则则共享该模块块的上级模块块数目越多,,这是有好处处的。但不能能违背模块独独立性而单纯纯追求高扇入入。4.一个模块块的作用范围围应在其控制制范围之内一个模块的作作用范围就是是这个模块内内一个判定的的作用范围。。一个判定的的作用范围是是指所有受这这个判定影响响的那些模块块,只要模块块中含有一些些依赖于这个个判定的操作作,那么这个个模块就在这这个判定的作作用范围之内内。软件总体设计计准则(续))5.力争设计计单入口和单单出口的模块块,避免“病病态联接”一个模块只有有一个入口和和一个出口时时,这个模块块比较容易理理解,有利于于结构化编制制程序,也比比较容易维护护。但实际上上这样的模块块不多。病态态联接是指转转移到或引用用到另一模块块中去的内容容耦合。要尽尽量避免这种种病态联接,,以减少模块块间的耦合。。6.力争降低低模块接口的的复杂性模块接口复杂杂性是软件发发生错误的一一个主要原因因。因此,应应该仔细设计计模块接口,,使得信息传传递简单并且且和模块功能能相一致。例如:求一元元二次方程的的根的模块QUAD-ROOT(TBL,x)其中用数组组TBL传送送方程的系数数,用数组x回送求得的的根。但是模模块QUAD-ROOT接口TBL和x意义不不明确,不利利于对这个模模块的理解。。因此可以将将它简化如下下:QUAD-ROOT(A,B,C,ROOT1,ROOT2),其其中,A,B,C是方程程系数,ROOT1和ROOT2是是方程的两个个根。软件的总体设设计准则(续续)7.模块的大大小模块大小就是是模块含语句句数量的多少少。模块的大大小没有统一一的标准。一一般来说,模模块的大小以以一页左右为为宜,比较容容易阅读和理理解。在进行行模块设计时时,首先应根根据模块的独独立性来选取取模块的规模模。如果某个个模块功能是是独立的,那那怕程序段较较短也不要人人为地加长;;如果程序段段只有一个独独立的功能,,那怕程序较较长,也不要要人为地把它它分解成两个个模块。结构构化化设设计计工工具具::HIPO图图用图图形形的的方方法法表表示示系系统统的的输输入入、、输输出出、、功功能能和和层层次次软件件详详细细设设计计的的定定义义对软软件件模模块块的的过过程程设设计计。。软件件详详细细设设计计的的任任务务对总总体体设设计计所所产产生生的的功功能能模模块块进进行行过过程程描描述述,,开开发发一一个个可可以以直直接接转转换换成成程程序序语语言言代代码码的的软软件件表表示示。。软件件详详细细设设计计的的步步骤骤1.将总总体体设设计计产产生生的的构构成成系系统统的的各各功功能能模模块块逐逐步步细细化化,,形形成成若干干程序序模模块块;2.运用用详详细细设设计计工工具具对对程程序序模模块块进进行行过过程程描描述述;;3.确定定各各个个模模块块间间的的详详细细接接口口信信息息;;4.编写写详详细细设设计计说说明明书书;;5.详详细细设设计计评评审审。。五、、软软件件详详细细设设计计程序序设设计计风格格效率率测试试的的目目的的1.测试试是是一一个个程程序序的的执执行行过过程程,,它它的的目目的的在在于于发发现现错错误误;;2.一个个好好的的测测试试用用例例是是极极可可能能发发现现至至今今未未发发现现的的错错误误;;3.一一个个成成功功的的测测试试是是发发现现了了至至今今未未发发现现的的错错误误的的测测试试。。测试试的的原原则则1.避免免由由程程序序编编写写者者自自己己进进行行测测试试,,目目的的在在于于克克服服盲盲目目的的自自信信心心和和对对功功能能要要求求误误解解的的延延续续性性;;2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论