软件工程笔记_第1页
软件工程笔记_第2页
软件工程笔记_第3页
软件工程笔记_第4页
软件工程笔记_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

第一章软件体系结构的发展(1)主机结构(2)F/S结构(文件服务器结构)(3)C/S结构(客户服务器结构)(4)B/S结构(浏览器结构).开发环境(1)单行命令式调式器(如DEBUG)(2)多行代码编辑器(如EDIT编辑器)(3)集成开发环境(二)软件的特点1.软件具有抽象特征 软件是一种逻辑实体,而不是一种具体的物理实体。这种抽象特征,必须通过某种存储介质来保存,通过电脑执行达成其现实意义。2.软件具有无明显制造过程的特征软件的材料费用接近于零(光盘费、包装费用,网上供下载的共享软件的代理费),软件的主要成本在于研发费用(人工费)。软件开发完成后,可以大量复制。3.软件无备件的特征: 软件不存在硬件使用过程中的磨损、老化问题,但软件仍然需要维护,是指随着软硬件环境或用户需求变化,原有软件可能不再适用用户的要求,从而导致软件退化。(三)软件分类1.按软件功能进行划分:(1)系统软件:与硬件结合紧密,协调计算机系统各个部分、相关软件和数据协调高效工作的软件。 操作系统、数据库管理系统、设备驱动程序、通信处理程序(2)支撑软件:协助用户进行软件开发的工具性软件。 文本编辑程序、编译软件、测试与诊断软件(3)应用软件:在特定领域内开发,为特定目的服务的一类软件。 商业处理软件(财务软件、进货系统等MIS类) 工程与科学计算软件 CAD/CAM软件 平面设计与三维设计软件 智能产品嵌入软件(车载GPS系统、掌上电子词典) CAI软件2.按软件规模进行划分4.软件危机产生的根本原因 软件危机的产生主要在于不准确的软件项目策划、不精确的用户需求调研、随意频繁的软件需求变更、不规范的软件开发管理、轻视文档工作、轻视软件测试、体系结构的不健全、可维护性差等原因造成的。要消除软件危机,要彻底清除在计算机系统早期发展阶段形成的“软件就是程序”的错误观念。(1)软件开发无计划性(2)软件需求不充分(3)软件开发过程无规范(4)软件产品无评测手段5. 解决软件危机的途径(1)加强软件开发过程的管理 软件应包括计算机程序、方法、规则、相关文档资料、必要的数据等齐全的内容,并遵循软件工程的指导原则和ISO、CMM等规范的要求来开发软件项目。(2)推广使用开发软件的成功技术与方法 这是一个不断进行的、永续的、经验教训积累过程(3)开发和使用好的软件工具,建立良好的软件工程支持环境。(三)软件工程的目标1.付出较低的开发成本2.实现要求的功能3.取得较好的软件性能4.开发的软件易于移植5.需要的维护费用较低6.能按时完成开发工作,及时交付使用。四、软件生存周期与软件开发模型和工作任务(一)软件生存周期 软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通过称为软件生命(生存)周期。 根据软件所处的状态、特征以及软件开发活动的目的、任务,软件生存周期可划分为若干阶段。1.计划时期 主要任务是调查和分析:调查用户需求,分析新系统的主要目标,分析开发该系统的可行性。 细分为问题定义和可行性研究两个阶段。(1)问题定义 有的项目也将该阶段称为“系统规划”阶段,主要是确定系统用来“解决什么问题”。 系统分析员通过问题定义阶段弄清楚问题的性质、软件系统的目标和规模,并以书面形式向用户提交,请用户审查和认可。经过调查、讨论,弄清问题的本质和界限。(2)可行性研究 该阶段对问题定义阶段确定的系统目标进行全面的分析,研究完成该项软件任务的可行性,探讨解决问题的可能方案,并对可利用的资源(计算机硬件、软件、网络、人力等)、成本、可取得的效益、开发的进度做出估算,制定出完成开发任务的实施计划,连同可行性研究报告提交管理部门审查系统分析员在该阶段,通过与用户的配合,对用户需求和环境进行深入细致的调查,主要包括两方面的调研:1技术可行性 根据现有的技术分析能否实现系统目标,研究制定的操作方式用户是否能够接受。研究软件体系结构与软件开发方法,是否与用户条件相适应。2经济可行性 根据系统目标,确定系统的软硬件规格,并估算软件开发成本,分析系统的经济效益能否超过它的总成本,从经济上分析系统是否值得投资。2.开发时期 完成设计和实现两大任务,设计包括需求分析和软件设计,实现阶段包括编码和测试。 从重要性和工作量上看,设计要重于实现。(1)需求分析 要解决“目标系统必须做什么”,也就是要1深入描述软件的功能和性能;2确定软件设计的限制、接口;3定义软件的基础有效性需求,并以需求规模说明书的形式准确地表达出来,提交管理机构评审。工具:数据流图、数据定义与加工说明。(备注:有些软件工程理论将这些工具的应用定位于软件设计阶段。)(2)软件设计 主要任务是确定了的各项需求转换成一个相应的体系结构,通常分为总体(概要、初步)设计和详细设计两个阶段。总体设计“如何宏观地解决问题”详细设计“如何具体地实现这个系统”(3)编码 按选定的计算机语言将设计软件为程序代码,同时创建和维护相应的数据库,程序员还要仔细地验证自己的代码是否已经正确实现详细设计的功能。(4)测试主要是通过在设计测试用例的基础上检验软件的各个组织部分。1单元测试(单模块)2集成测试(多模块)3确认测试(用户参与)4系统测试(实际环境多系统组合)3.运行维护阶段 发现错误、工作变化、增加功能等需要的软件升级工作。(二)软件开发模型分类 1.瀑布模型 传统的生命周期方法学通常被命名为“瀑布模型”,包括:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试、软件维护。 (1)瀑布模型的特点1阶段的顺序性和依赖性2推迟实现的观点3保证质量的观点(2)瀑布模型的不足 缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。回溯困难。 2.演化模型 由于瀑布型开发模型的缺点无法保证开发的软件产品最终与用户的需求合意,因此,快速原型模型提出来,即将产品先做成试验性的产品,称为“原型”;然后提交给用户,用户提出修改建议后继续精化原型,再提交给用户经多次反复,直至最终交付。 演化模型,有些文献也称快速原型模型、软件过程模型、迭代模型等。每一迭代过程均由需求、设计、编码、测试、集成等阶段组成,直到软件开发结束;该模型主要针对事先不能完整定义需求的软件开发、数据结构变动对最终效果影响不大的软件开发(如完成由算法构成的程序、不存在复杂数据库关联结构的程序)。 3.螺旋模型(教材P16) 在瀑布型开发模型和演化模型的基础上,增加风险分析,分为四个象限:(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件。(2)风险分析:分析所选方案,考虑如何识别和消除风险。(3)实施工程:软件开发实施。(4)客户评估:评价,提出修正建议。螺旋模型不足之处:(1)难以使用户相信演化方法是可控的、过低的螺旋次数会增加开发成本和时间。(2)开发成败取决于风险评估的成败。 4.智能模型 结合了专家系统与其他的开发模型,基于规则系统、采用归纳和推理机制、建立知识库。 5.喷泉模型 迭代是软件开发过程中普遍存而不论的一种内在属性,尤其在面向对象的设计中迭代过程很常见。为避免开发过程的过分无序,应该把一个线性过程(中心垂直线)作为总目标。第二章三)可行性研究的步骤1.确定系统的规模和目标 根据问题定义阶段获得的总体目标,进一步分析和研究有关材料,确认目标的正确性。2.分析(研究)现有系统,画出大致的系统业务流程图 在开发新系统之前,需要了解现有的业务流程和系统,一般通过阅读现有系统的各种资料和手册、实地考察等。主要工作有:(1)了解现有系统能够完成什么工作、为什么要这样做,并了解和分析现有系统的运行费用等情况,确定新系统的约束条件。(2)画出现有系统的高层(初略)的系统流程图或业务流程图。3.打开高层业务流程图中的“处理”事务黑盒,细化业务处理过程,并画出细化的业务流程图。4.导出高层逻辑模型 一般情况下,需要在此时就导出软件模型;有时,这项工作也会留到需求分析、甚至总体设计中完成。5.进一步确定系统规模和目标,评审系统模型 在导出数据流图之后,系统分析员可以与用户进一步进行研讨、复审,不断修改系统流程图、业务流程图和数据流图,直到系统分析员提出的系统模型全部能满足用户的要求。6.导出供选择的解法,制定行动方案。(1)技术可行性 从开发方的资源、技术等条件进行分析,从软件开发技术发展的大环境以及技术合作对象等方面考虑技术是否可行。 如果可能,提供以成功开发的项目的相关资料,进一步佐证开发项目的技术可行性。(2)操作可行性 例如,在对外开放的公共计算机房内运行工资支付程序显然是不合适的;对于需要保密、且没必要在互联网上交互数据的系统,可以考虑使用单机或局域网,在相对封闭的环境中。(3)经济可行性 主要是回答“效益是否大于成本”的问题。为了给客户提供在一定范围内进行选择的余地,分析员应该至少提供3种类型的供选择方案:低成本方案、中等成本方案、高成本方案。二、需求分析(一)软件需求的目标和任务1.软件需求 是指用户对要实现软件在功能、行为、性能、设计约束等方面的期望。2.软件需求的目标 深入描述软件的功能和性能要求,确定软件设计的约束和软件同其他系统元素的接口细节,定义其他有效性需求。(1)描述用户的需求(2)为软件设计工作奠定基础(3)定义一组需求,一旦开发出软件产品之后,就可以用这组需求为标准来验收该产品3.软件需求的任务 软件人员和用户一起完全弄清用户对系统的确切要求,俗地说就是要全面细致地回答“系统做什么”的问题,但不包括“怎么做”(归于软件设计阶段)的问题。具体来说,需求分析阶段的任务有:(1)确定目标系统的具体要求1确定系统的运行环境2系统的性能要求3系统的功能要求4系统的其他需求(安全、可靠性、界面、资源使用、进度、双方认可的界定规则等)(2)分析系统的数据要求 即细化数据流图(3)建立目标系统逻辑模型数据流图、数据字典(简单)、关键算法描述4)修正系统开发计划(5)建立原型系统 视情况不一定需要。(6)编写软件需求规格说明书并评审(二)软件需求的获取方法1.访谈和会议2.市场调查3.访问用户和用户领域的专家4.考察现场,跟踪现场业务流程5.开发人员和用户共同组成联合小组(1)数据字典的主要作用有:1在分析阶段(通常为简单卡片式):帮助分析员组织有关数据的信息、和用户交流信息的有力工具、备忘录2设计阶段(通常为详细表格式数据字典):根据它确定记录、文件或数据库的格式3实现阶段:根据数据字典确定数据描述;4运行阶段:告诉维护人员,具体数据元素在系统中怎样使用的。概要设计基本任务:1制定规范:在进行软件设计之前,应首先为软件开发组制定在设计时应该共同遵守的标准,以便协调组内各成员的工作。包括:阅读和理解软件需求说明书,以确定设计的目标及其优先顺序。确定设计软件的最合适的方法。规定设计文档的编制标准。规定编码的标准、与硬件操作系统的接口规定、命名规则等。概括地说,主要目标有:有效地进行设备主帐及设备相关资源管理,将设备的新增、报废、调拨、盘盈、盘亏、估价、变更等信息完整的管理起来。检修计划管理备品备件管理1)逐步求精的定义:逐步求精就是为了能够集中精力解决主要问题,而尽量推迟对问题细节的考虑。(3)模块化的标准1模块的可分解性:有助于降低整个问题的复杂性2模块可组装性:可重用构件组装新系统,提高效率与稳定性3模块可理解性:单个的模块易于理解和分析、修改4模块连续性:如果对系统需求的修改只涉及个别模块,则对修改的副作用最小。5模块保护性:如果一个模块内出现异常,它的影响局限在该模块内部,则由错误引起的副作用最小。(5)模块的3个基本属性:1功能:模块实现的功能2逻辑:描述模块内部怎么做3状态:模块使用时的环境和条件抽象的层次考虑任何问题的模块化解法时,都可以提出许多抽象的层次:在抽象的最高层次使用概括方式叙述问题的解法(如业务流图、IPO表等);在抽象的较低层次使用更过程化的方法,面向问题和面向实现来叙述问题的解法(数据字典、数据流图等);在抽象的最低层次用可以直接实现的方法来叙述问题的解法(编程)。(3)抽象的内容1过程抽象:在软件计划阶段,将整个系统当作一个简化的整体元素来看待;在需求分析阶段,用问题所处环境的术语来描述软件的解决方法;在软件设计阶段,从概要设计到详细设计,抽象层次逐步降低;在软件实现阶段,最低抽象层次。2数据抽象数据存储-详细数据字典3控制抽象例如“卸载XX软件”,通过一个动作控制多个操作(查看安装日志、删除文件、修改注册表等),每一个操作又可以用更具体的控制抽象来描述。2.模块的耦合性(1)耦合的概念:耦合是程序结构内不同模块之间相互关联程度的度量,它是由模块间接口的复杂程度、调用模块的方式及通过接口传递的信息类型决定的。(2)耦合的分类1非直接耦合如果两个模块中的每一个都能独立地工作而不需要另一个模块的存在,那么它们彼此完全独立,这意味着模块间无任何连接,耦合程度最低,独立性最强。2数据耦合一个模块访问另一个模块时,彼此间通过数据参数来交换输入、输出信息的。这是系统中使用最多的耦合。3特征耦合一组模块通过参数表传递记录信息。如教师表、学生表、选科表与教师表、学生表的关系。4控制耦合一个模块通过传送开关、标志、名字等控制信息明显地控制选择被调用模块的功能5外部耦合一组模块都访问同一全局变量并传递该全局变量的信息,如网站计数器读取网站点击数量的变量。6公共耦合一组模块都访问同一个公共数据环境(全局数据结构、共享的通信区、内存的公共覆盖区) ,如网站计数器读取、修改网站点击数量的变量。7内容耦合一个模块直接访问另一个模块的内部数据一个模块不通过正常入口而转到另一个模块的内部两个模块有部分程序代码重迭一个模块有多个入口内聚的概念:标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。2)内聚的种类:1偶然内聚几个模块内凑巧有一些程序段代码相同,又没有明确表现出独立的功能,把这些代码独立出来建立的模块称为偶然内聚。缺点:模块内容不易理解不易修改和维护模块的意义不明确2逻辑内聚一个模块把几种相关的功能组合在一起,每次被调用时,由传递给模块的控制参数来确定该模块应执行哪一种功能。缺点:模块不易修改增加了模块间的联系调用模块时,只执行其中一个功能,效率不经济3时间内聚模块大多为多功能模块,要求模块的各个功能必须在同一时间段内执行。一般各部分可按任意顺序执行,内部逻辑简单。4过程内聚模块内的处理是相关的,而且必须以特定顺序执行。5通信内聚一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称为通信内聚模块6信息内聚模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。7功能内聚一个模块的各个成分都是完成某个具体任务必不可少的成分,这些协同工作,紧密联系,不可分割,称为功能内聚。功能内聚的内聚程度最高。优点:模块接口比较清晰,易于理解、测试和维护。与其他模块联系较低。模块的重用性高。1. 变换型结构方法:将数据流图的输入、变换和输出部分分别转换为相应模块,然后在此基础上增加总控模块。总控模块的工作过程如下:(1)调用输入数据模块,以获取输入数据(2)调用变换数据模块,对输入数据进行加工(3)调用输出数据模块,将变换后的数据输出2.事务型结构过程事务型数据流图有一个明显的事务中心,它接受一项事务,根据该事务的特点和性质,选择分配一个适当的处理单元,然后输出结果。方法:首先将数据流图中的各个部分转换成软件结构图中的相应模块;然后增加调度模块,让它调度n个处理单元,最后让事务中心模块调度接受事务、调度和输出结果模块。工作流程:(1)调用接受事务模块接受一项事务(2)调用调度模块选择分配处理单元,获取处理结果(3)调用输出模块输出结果变换分析(1) 复审和精化数据流图(2) (2)确定数据流图中含有变换流特征还是事务流特征(3) (3)区分输入流、输出流和变换部分,即标明流的边界。(4)进行一级“因子化”分解,设计顶层和第一层模块。首先,设计主模块,用程序名为其命名。然后,设计系统结构的第一层:为每一个逻辑输入设计一个输入模块;为每一个逻辑输出设计一个输出模块;为中心变换设计一个变换模块(5)进行二级“因子化”分解,设计中下层模块。(6)改进初始结构图,直至符合要求为止。程序流程图(Program Flow Chart)又称程序框图,是软件设计中经常使用的一种算法表达工具。优点:直观清晰,易于掌握、理解。缺点:(1)本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不考虑程序的全局结构。(2)使用箭头代表控制流,使程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。(3)每个符号对应一行代码,对于大型复杂系统时反而不易理解,绘制费时费力。盒图(N_S图)1.特点:(1)功能域明确,作用域可以一眼看出;(2)不可能任意转移控制;(3)很容易确定局部和全程的作用域;(4)很容易表现嵌套关系,也可以表示模块的层次结构。PAD图(Problem Analysis Diagram,问题分析图)1.特点:(1)结构化程度高(2)比流程图易读,结构清晰,左侧第一条竖线表示第一层结构,每增加一层图形向右扩展一条竖线(3)比流程图更容易在计算机上处理,容易将PAD图转换为程序(4)可以描述数据结构。2.PDL的特点:(1)有固定的关键字外语法,提供全部结构化控制(2)内语法使用自然语言(可以用中文)来描述处理(3)有数据说明机制来描述数据结构(4)有子程序定义与调用机制3.类型:(1)顺序型:直接将语句顺序列出(2)选择型:IF THEN ELSE ENDIF(3)先判定循环:DO WHILE ENDDO(4)后判定循环:DO LOOP EXIT WHENEND LOOP(5)下标型循环:DO FOR ENDFOR(6)调用子程序CALL 子程序名WITH (7)多分支结构:DO CASE CASE CASE OTHERWISE DEFAULT ENDCASE第三章 面向对象对象类继承消息通信(1)面向过程编程思想 传统面向过程的编程思想,实质上是自顶向下的功能分解,以算法为核心,把数据和代码(处理过程)作为相互独立的部分,这种方法反映了计算机的观点,因为计算机内部的数据和程序代码是分开存放的。 面向过程编程思想与人的思维方式不一样,由于分开存放,如果多人分工合作时负责数据结构的人中途改变了某个数据设计,而又没有及时通知所有有关人员,则会发生许多不该发生的错误。类的基本形态:属性和方法(操作)具有不同的可见性,即公用(全局)、私有、受保护类型。公用(Public):整个软件系统中随时可以访问私有(Private):当前函数(处理)代码内部访问受保护类型(Protected):在授权范围内可以访问(1)继承(Inheritance)的含义 类之间的一种相互关系,即使用已经存在的类定义作为基础来建立新类定义的技术。 新类可以不加修改地重用原有类的定义,并增加一些自有的数据和操作的集合。(2)继承的特点:1类间具有共享特征2类间具有细微差别或新增部分3类间具有层次结构 子类(派生类)-父类(基类)5.消息的含义和特点 与传统结构化编程思想不同的是,面向对象编程思想的对象(类)与对象(类)之间的联系是通过消息传递机制实现的。 同一对象可以接收不同形式的多个消息,产生不同的响应; 相同形式的消息传给不同的对象,所做出的响应可以是截然不同的; 消息发送可以不考虑具体的接收者,对象可以响应消息,也可以不响应;消息可分为公有消息和私有消息两类。封装性的条件:1有一个清晰的边界,所有私有数据和实现操作的代码都被封装在这个边界内,从外面看不见更不能直接访问。2有确定的接口,这些接口就是对象可以接受的消息,只能通过向对象发送消息来使用它。3受保护的内部实现,实现对象功能的细节不能在定义该对象的类的范围外进行访问。论域分析的目的是标识基本概念,识别论域的特征,把这些概念集成到论域的模型中泛化(Generalization)关系: 一个实体表现了在其他几个实体背后所具有的概念的共性。 类A(相对特殊)到类B(相对一般)的泛化关系表示“类A是类B的一种”。通常称A为子类(派生类),B为父类(基类)。 一般意义上,泛化关系和继承(Inheritance)是可以互换的概念。二者的区别是:泛化关系是一种关系的名称,继承则表达一种反映和实现这种关系的机制。普通关联 普通关联将反映关联关系的多重性(Multiplicity),如:一只麻雀两条腿,一只螃蟹八条腿 聚合关系是关联关系的一种强化形式,表示两个类实例之间有“整体”与“部分”的关系。 组合聚合也称为组合关系(Composition),是进一步强化的聚合关系,增加了“整体”与“部分”之间的依存关系,即:“整体”消亡了,“部分”也将不存在。 依赖关系表达“使用”的含义,依赖关系比关联关系更弱,“被依赖者”类的变化有可能影响“依赖者”。 实现关系表达一方(甲方)作为要求被提出,另一方(乙方)具体履行要求中声明的任务面向对象分析(OOA)的概念模型 由5个顺序层次组成:类与对象、属性、服务、结构、主题。(教材P95)UML思想要点1)统一(Unified) 使用统一的符号和表达方式,UML的表述内容能够被各类人员所理解:包括客户、领域专家、分析师、设计师、程序员、测试工程师以及培训人员等。 在使用UML之前的传统概念中,他们各自拥有专用的符号系统,自然形成沟通障碍。(2)建模(Modeling) UML在制定时汲取了多种建模方法和精华,包括业务建模和数据建模等。通过各种符号、内部机制建立自己的模型体系。(3)语言(Language) 语言是UML普遍价值的体现,语言的一层基本含义是按照特定规则和模式组成的符号系统,被拥有相同传统和习惯的人群所使用。1.UML语言的主要要素:(1)UML的基本构造块(2)控制这些构造块如何组合的规则(3)一些作用于整个UML模型的通用机制 视图是用来显示系统的不同方面,视图是由多个图(Diagram)构成的,是在某一个抽象层上对系统的一个抽象表示。一个系统需要从多个不同的方面进行描述,如:功能方面、非功能方面、组织结构方面。UML建模由各类图(Diagram)构成,图则由各种模型符号构成。通常图用于描述特定视图的内容。表示模型元素之间相互连接的关系1关联:连接模型元素与实例2泛化:表示一般与特殊的关系3依赖:表示一个元素以某种方式受制于另一个元素4聚合:表示整体与部分的关系(分共享聚合和组合聚合)5实现:一方履行另一方的任务要求6访问:关联中一方能够“访问”另一方的实例1.UML的通用机制(1)规格说明(Specification)UML图形表示的每个部分的背后都有一个规格说明,用来详细描述可视化模型的细节。通过一些文本描述来说明,通常不在图中直接显示。(2)修饰对图形的细节表述,如类图中的属性和方法的可见性,实体类表达数据库模型时中通过下划线表示主键(3)注解 为了能够给模型添加一些额外信息说明,用注解功能。用例图的作用:首先,它描述了对目标系统的功能需求;其次,它把系统看作黑匣子,从外部行为者的角度来理解系统;第三,它驱动了需求分析之后各阶段的工作。类的作用(1)为系统词汇表建模确定系统边界内的抽象及其责任(Responsibility)(2)为简单的协作建模确定系统建模的机制、接口、操作(方法)、属性,以达到系统间的协作。(3)为逻辑的数据库模式建模通常为实体类,生命同期长于程序,主要定义其属性及其约束。跃迁(即“状态转移”,Transion)两个状态之间的关系,表示第一个状态的对象将执行某个动作,如果规定的事件发生或规定的条件被满足,则进入第二个状态。第四章(一)结构化程序设计1.结构化设计的内容:(1)编写程序时,强调使用几种基本控制结构(顺序结构、IF-THEN-ELSE、DO-CASE、DO-WHILE等),通过组合嵌套形成控制结构,尽量避免使用GOTO语句随意跳转。(2)程序设计过程中,尽量使用自顶向下和逐步细化的原则,由粗到细,一步步展开。(教材P136例6-4)2.结构化程序设计的原则(1)使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。(2)选用的控制结构只允许一个入口和一个出口。(3)程序语句组成容易识别的块(block),每个块只有一个入口和一个出口。(4)复杂结构应该用基本控制结构进行组合嵌套来实现。(5)语言中没有的控制结构可用一段等价的程序段模拟,但要求该程序段在整个系统中应前后一致。(6)严格控制goto语句,仅在用一个非结构化的程序设计语言去实现一个结构化的构造时使用。编码的风格1.源程序文档化源程序文档化包括三个方面:

温馨提示

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

评论

0/150

提交评论