软件工程自学指导书.doc

上传人:小** 文档编号:4528487 上传时间:2021-09-27 格式:DOC 页数:63 大小:514.04KB
返回 下载 相关 举报
软件工程自学指导书.doc_第1页
第1页 / 共63页
软件工程自学指导书.doc_第2页
第2页 / 共63页
点击查看更多>>
资源描述

《软件工程自学指导书.doc》由会员分享,可在线阅读,更多相关《软件工程自学指导书.doc(63页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、,软件工程自学指导书宋海南2011年于东北石油大学第一章 软件与软件工程教学内容1.软件软件的发展、软件的定义、软件的特点、软件的种类。2.软件工程的概念软件危机与软件工程的定义、软件工程的目标、软件工程的原则。3.软件生存周期与软件开发模型瀑布模型、原型模型、螺旋模型。教学要求掌握:软件和软件工程的基本概念。了解:软件生命周期及软件开发的各个模型。自学要点软件、软件工程、软件生存周期和软件开发模型学时分配3学时(自学学时:6学时)1.1 软件的定义及其特点v 软件的定义计算机系统是通过运行程序来实现各种不同的应用。把各种不同功能的程序,包括用户为自己的特定目的编写的应用程序、检查和诊断机器系

2、统的程序、支持用户应用程序运行的系统程序、管理和控制机器系统资源的程序等通常称为软件。v 软件的非精确定义:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档组成的完整集合。v 比较公认的软件定义由以下三部分组成:在运行中能提供所希望的功能和性能的指令集(即程序);使程序能够正确运行的数据结构;描述程序研制过程、方法所用的文档。v 软件的特点软件具有抽象特征。软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性软件是智力劳动的结果。软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。软件无备件特征。在软件的运行和使用期间,没有

3、硬件那样的机械磨损、老化问题。软件对硬件有明显的依存性。软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。在软件的开发和运行中必须以硬件提供的条件为基础。软件的研发主要由人工完成。软件的开发至今尚未完全摆脱手工的开发方式。软件无明显的制造过程。软件的开发费用越来越高,成本相当昂贵。软件的分类 软件依据不同的标准,可划分为不同的分类。根据软件的应用领域可分为:系统软件、实时软件、商业软件、科学计算软件、嵌入式软件、人工智能软件。1.2 软件工程概念v 软件危机与软件工程定义v 软件危机软件危机指的是软件开发和维护过程中遇到的一系列严重问题。v 软件危机的表现产品不符合用

4、户的实际需要。软件开发生产率提高的速度远远不能满足客观需要,软件的生产率远远低于硬件生产率和计算机应用的增长,使人们不能充分利用现代计算机硬件提供的巨大潜力。软件产品的质量差。对软件开发成本和进度的估计常常不准确。软件的可维护性差。软件文档资料通常既不完整也不合格。软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。v 产生软件危机的原因软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。在写出程序代码并在计算机上试运行之前,很难检验开发的正确性,而且软件开发的质量也较难评价。软件不同于一般程序,它的一个显著特点是规模庞大。虽然软件本身独有的特点确实给开发和维护带来一些客观困

5、难,但是人们在开发和使用计算机系统的长期实践中,也确实积累和总结出了许多成功的经验。开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的需求。软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范。在软件的开发与维护关系问题上存在错误的概念。v 软件工程的定义软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。软件工程准则可以概括为如下六条基本原理。(1)用分阶段的生存周期计划严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)

6、采用现代程序设计技术 (5)结果应能清楚地审查(6)合理安排软件开发小组的人员v 软件工程的基本内容与目标v 软件工程的基本内容从内容上划分软件工程学可分为理论、结构、方法、工具、环境、管理、规范等。v 软件工程学研究的基本目标定义良好的方法学,面向计划、开发维护整个软件生存周期的方法学。确定的软件成分,记录软件生存周期每一步的软件文件资料,按步显示轨迹。 可预测的结果,在生存周期中,每隔一定时间可以进行复审。软件工程学的最终目标是以较少投资获得易维护、易理解、可靠、高效率的软件产品。软件工程学是研究软件结构、软件设计与维护方法、软件工具与环境、软件工程标准与规范 、软件开发技术与管理技术的相

7、关理论。v 软件工程的原则为了开发出低成本高质量的软件产品,软件工程学应遵守以下基本原则:分解、独立性、一致性、确定性。13 软件生存周期与软件开发模型软件工程采用的生存周期方法就是从时间角度对软件的开发与维护这个复杂问题进行分解,将软件生存漫长的时期分为若干阶段,每个阶段都有其相对独立的任务,然后逐步完成各个阶段的任务。v 软件生存周期一个软件从定义到开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件生存周期就是从提出软件产品开始,直到该软件产品被淘汰的全过程。软件生存周期一般可分为以下阶段:问题定义可行性研究需求分析设计编码测试运行与维

8、护软件生存期也可以分为三个大的阶段:计划阶段、开发阶段和维护阶段。 v 软件开发模型为了反映软件生存周期内各种工作应如何组织及软件生存周期各个阶段应如何衔接,需要用软件开发模型给出直观的图示表达。软件开发模型是软件工程思想的具体化,是实施于过程模型中的软件开发方法和工具,是在软件开发实践中总结出来的软件开发方法和步骤。总的说来,软件开发模型是跨越整个软件生存周期的系统开发、运行、维护所实施的全部工作和任务的结构框架。1瀑布模型瀑布模型: 瀑布模型规定了各项软件工程活动,包括:制定开发计划,进行需求分析和说明,软件设计,程序编码。测试及运行维护,参看图1.1。并且规定了它们自上而下,相互衔接的固

9、定次序,如同瀑布流水,逐级下落。 图1.1 软件生存周期的瀑布模型然而软件开发的实践表明,上述各项活动之间并非完全是自上而下,呈线性图式。实际情况是,每项开发活动均处于一个质量环(输入-处理-输出-评审)中。只有当其工作得到确认,才能继续进行下一项活动,在图1.1中用向下的箭头表示;否则返工,由向上的箭头表示。2螺旋模型对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型与演化模型结合起来,并且加入两种模型均忽略了的风险分析。螺旋模型沿着螺线旋转,如图1.2所示,在笛卡尔坐标的四个象限上分别表达了四个方面的活动,即: 制定计划确定软件目标,选定实施方案,弄清项目开发的限制条件;

10、风险分析分析所选方案,考虑如何识别和消除风险; 实施工程实施软件开发 客户评估评价开发工作,提出修正建议。沿螺线自内向外每旋转一圈便开发出更为完善的一个新的软件版本。图1.2 螺旋模型3原型模型又称快速成型模型,快速原型模型正是为了克服瀑布模型的缺点而提出来的。一般用于最终系统的早期用户评价,开发工期短,质量有保证。其本质是“快速”,开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。v 主要优点: 使用这种软件过程开发出的软件产品通常能满足用户的真实的需求; 软件产品的开发过程基本上是线性顺序过程。4. 变

11、换模型 是基于形式化规格说明语言以及程序变换技术的软件系统开发模型。第二章 可行性研究 教学内容1 问题的定义2 可行性研究的任务3 可行性研究的步骤4 系统流程图5 成本/效益分析教学要求了解:可行性分析的步骤自学要点可行性研究的任务和步骤、系统流程图。学时分配2学时(自学学时:4学时)v 可行性研究v 问题的定义 问题定义阶段需解决问题是“该软件开发项目要解决什么问题”。v 可行性研究的任务可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。也就是说可行性研究的目的不是解决问题,而是确定问题是否值得去解,研究在当前的具体条件下,开发新系统是否具备必要的资源和其它条件。一般

12、说来,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案的选择等方面研究可行性。可行性研究需要的时间长短取决于工程的规模,一般说来,可行性研究的成本只占预期的工程中成本的5-10%。v 可行性研究的步骤1确定系统规模和目标2分析目前正在使用的系统3. 设计出新系统的高层逻辑模型4. 评审系统模型5. 设计和评价供选择的方案6. 推荐一个方案并说明理由7. 制定行动方针8. 拟定开发计划并书写计划任务书9. 编制可性报告并提交审查v 可行性研究工具系统流程图系统流程图是描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、数据库、图表、人工处理等)。

13、系统流程图不同于程序流程图。v 系统流程图的基本符号v 系统流程图的作用1. 制作系统流程图的过程是系统分析员全面了解系统业务处理概况的过程,它是系统分析员作进一步分析的依据。2. 系统流程图是系统分析员、管理人员、业务操作人员相互交流的工具。3. 系统分析员可直接在系统流程图上拟出可以实现计算机处理的部分。4. 可利用系统流程图来分析业务流程的合理性。v 成本效益分析成本效益分析的目的是要从经济角度分析开发一个特定的新系统是否划算,从而帮助使用部门负责人正确地做出是否投资于这项开发工程的决定。v 成本估计本课程把主要的成本估计方法归并为自顶向下估计、自底向上估计和算法模型估计三类。v 费用估

14、计1 代码行技术一旦估计出源代码行数以后,用每行代码的平均成本乘以行数就可以确定软件的成本。每行代码的平均成本主要取决于软件的复杂程度和工资水平。2 任务分解技术这种方法首先把软件开发工程分解为若干个相对独立的任务。再分别估计每个单独的开发任务的成本,最后加起来得出软件开发工程的总成本。v 几种度量效益的方法1.货币的时间价值 成本估算的目的是要求对项目投资。但投资在前,取得效益在后。因此要考虑货币的时间价值。通常用利率表示货币的时间价值。2.投资回收期投资回收期是衡量一个开发工程价值的经济指标。所谓投资回收期就是使累计的经济效益等于最初的投资所需的时间。投资回收期越短,就能越快获得利润,就越

15、值得投资。3纯收入工程的纯收入是衡量工程价值的另一项经济指标。所谓纯收入就是在整个生存期之内系统的累计经济效益(折合成现在值)与投资之差。如果纯收入为零,则工程的预期效益与在银行存款一样。但开发一个软件项目有风险,从经济观点看,这项工程可能是不值得投资的。如果纯收入小于零,那么显然这项工程不值得投资。只有当纯收入大于零,才能考虑投资。第三章 需求分析教学内容1需求分析的任务与步骤2需求分析方法(面向数据流的分析方法)1 基本符号、基于数据流的分析方法、数据字典。 4需求规格说明书教学要求掌握:需求分析的方法;理解:需求分析的任务和原则自学要点数据流图、面向数据流的分析方法。学时分配4学时(自学

16、学时:10学时)31 需求分析的任务与步骤v 需求分析的任务需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。需求分析所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求。通常软件开发项目是要实现目标系统的物理模型,即确定待开发软件系统的系统元素,并将功能和数据结构分配到这些系统元素中。它是软件实现的基础。需求分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。在这个阶段结束时交出的文档中应该包括详细的数据流图(DFD),数

17、据字典(DD)和一组简明的算法描述。v 需求分析阶段的任务包括下述几方面1确定目标系统的具体要求。确定系统的运行环境要求;系统的性能要求;系统功能。2分析系统的数据要求。分析系统的数据需求是由系统的信息流归纳抽象出数据元素组成、数据的逻辑关系、数据字典格式和数据模型。并以输入/处理/输出(IPO)的结构方式表示。因此,必须分析系统的数据需求,这是软件需求分析的一个重要任务。3建立目标系统的逻辑模型,就是在理解当前系统需要“怎样做”的基础上,抽取其“做什么”的本质。4修正系统开发计划5建立原型系统6编写软件需求规格说明书及评审v 需求分析的方法结构化分析方法(简称SA方法)就是面向数据流自顶向下

18、逐步求精进行需求分析的方法。v 需求分析的过程或步骤1 调查研究 2 描述和分析系统的逻辑模型应注意下述两条原则:第一,在分层细化时必须保持信息连续性,也就是说细化前后对应功能的输入输出数据必须相同;第二,当进一步细化将涉及如何具体地实现一个功能时,也就是当把一个功能进一步分解成子功能后,并将考虑为了完成这些子功能而写出其程序代码时,就不应该再分解了。3编制文档在这个阶段应该完成下述四种文档资料:系统规格说明-用比较形式化的术语和表示对软件功能构成的详细描述,作用是:技术合同说明;设计和编码的基础;测试和验收的依据。数据要求-数据结构、数据域、数据精度。用户系统描述。修正的开发计划。4需求分析

19、审查v 需求分析的原则1. 必须能够表达和理解问题的数据域和功能域2. 按自顶向下、逐层分解问题 3. 要给出系统的逻辑视图和物理视图v 需求分析评审标准的主要内涵正确性、无歧义性、完全性、可验证性、一致性、可理解性、可修改性、可追踪性。v 需求分析方法 大多数的需求分析方法是由数据驱动的,数据域具有三种属性:数据流、数据内容和数据结构。通常,一种需求分析方法总要利用一种或几种属性。v 需求分析方法的共性1支持数据域分析的机制2功能表示的方法3接口的定义4问题分解的机制以及对抽象的支持5逻辑视图和物理视图6系统抽象模型v 面向数据流的需求分析方法结构化分析方法是面向数据流进行需求分析的方法。结

20、构化分析方法使用数据流图DFD与数据字典DD来描述,面向数据流问题的需求分析适合于数据处理类型软件的需求描述。其核心思想是分解化简问题,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。3.2 数据流图与数据字典v 数据流图(DFD)1数据流图的含义数据流图是描述数据处理过程的工具。数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的传输变换过程。数据流图是结构化系统分析的主要工具,它表示了系统内部信息的流向,并表示了系统的逻辑处理的功能。2数据流图的特性:抽象性、概括性、层次性。3. 数据流图基本符号(1)数据流图中的主要图形元素数据流图的基本图形元素有4种,如图所示。数据流

21、图基本图形符号(2)数据流与加工之间的关系“*”表示相邻的一对数据流之间是“与”关系;“+”表示相邻的两个数据流是“或”关系;“”表示相邻的两个数据流是“异或”的关系。 (3)分层的数据流图数据流图加工关系4.数据流图的用途数据流图的作用主要有以下几条:(1)系统分析员用这种工具可以自顶向下分析系统信息流程。(2)可在图上画出需要计算机处理的部分。(3)根据数据存贮,进一步作数据分析,向数据库设计过渡。(4)根据数据流向,定出存取方式。 (5)对应一个处理过程,用相应的语言、判定表等工具表达处理方法。5数据流图的优缺点(1)总体概念强,每一层都明确强调“干什么”,“需要什么”,“给出什么”。(

22、2)可以反映出数据的流向和处理过程。 (3)由于自顶向下分析,容易及早发现系统各部分的逻辑错误,也容易修正。(4)容易与计算机处理相对照。 (5)不直观,一般都要在作业流程分析的基础上加以概括、抽象、修正来得到。(6)如果没有计算机系统帮助的话,人工绘制太麻烦,工作量较大。6数据流图画法(1)画数据流图的一般原则:画数据流图的基本步骤概括地说,就是自外向内,自顶向下,逐层细化,完善求精。(2)数据流图的分层方法(3)分层法绘制流程图的几个问题7数据流图的绘制与其它流程图的差别(1) 数据流图与系统流程图的区别(2) 数据流与程序流程图的区别(3) 数据流与程序结构图的区别(4) 数据流与控制流

23、的区别要求会画第一层数据流图。v 数据字典1数据字典的定义数据字典是关于数据的信息的集合,对数据流程图中的各个元素做完整的定义与说明,是数据流程图的补充工具。数据流图和数据字典共同构成系统的逻辑模型。2数据字典的内容数据字典由下列六类元素的定义组成。(l)数据流 数据流名称及其称号; 数据流的来源:可能是一个外部实体、处理逻辑、数据存储; 数据流的去处; 数据流的组成:一个数据流可能包括若干个数据结构,若只有一个数据结构,就不需要专门定义; 数据流的流通量:单位时间的传输次数; 高峰时期的流通量:业务的频繁程度和时间有关。(2)数据项数据项也称数据元素,是“不可再分”的数据单位,是数据的最小组

24、成单位。主要内容有: 数据项名称及编号:数据项名称必须唯一地标识这个数据项,以区别于其他数据项;给数据项取名时,要反映该数据项的含义,易于他人理解、记忆。 别名:同一数据项的名称可能不止一个,称为别名。 取值的范围和取值的含义 。 数据项的长度:指数据项所包含的字符或数字的位数。(3)数据结构 数据结构的名称及其编号 ; 数据结构的组成:如果是一个简单的数据结构,只要列出它所包含的数据项即可。如果是一个嵌套的数据结构,只需列出它所包含的数据结构名称,因为这些数据结构同样在数据字典中有定义。(4)数据存储数据存储是数据结构停留或保存的场所。主要内容: 数据存储的名称及编号:在DFD中对数据存储给

25、以命名,并编上一个唯一的编号; 流入、流出的数据流:流入的数据流指出其来源,流出的数据流指出其去向; 数据存储的组成:指它所包含的数据项或数据结构。 (5)处理逻辑主要内容: 处理逻辑的名称及编号 ; 简述:对处理逻辑的简明描述,其目的是使人了解这个处理逻辑是做什么用的; 处理逻辑的输入和输出; 处理逻辑的主要功能 ; 处理逻辑的小说明(文档之一) 。(6)外部实体外部实体是系统的“人-机”界面,也就是系统的数据流由外部实体流入,或者系统的数据向外部流出。主要内容: 外部实体的名称及编号; 与外部实体有关的数据流。 例如: 外部实体名称:供应商; 编号:GS03-22; 简述:向本公司供应货物

26、的个人和单位; 有关的数据流: 数据元素的别名就是该元素的其他等价的名字,出现别名主要有下述三个原因:对于同样的数据,不同的用户使用了不同的名字;一个分析员在不同时期对同一个数据使用了不同的名字;两个分析员分别分析同一个数据流时,使用了不同的名字。虽然应该尽量减少出现别名,但是不可能完全消除别名。3定义数据的方法由数据元素组成数据方式的基本类型:1、 顺序:以确定次序连接两个或多个分量;2、 选择:从两个或多个可能的元素中选取一个;3、 重复:把指定的的分量重复零次或多次;F 4、可选:一个分量是可有可无的。4数据字典的用途1、 作为分析工具;2、 包含了对每个数据元素的控制信息;F 3、是开

27、发数据库的第一步。5. 数据字典的特点1、通过名字能方便查询数据定义;F 2、没有冗余;F 3、尽量不重复在规格说明的其他组成部分中已经出现的信息;F 4、容易更新和修改;F 5、能单独处理描述每个数据元素信息;F 6、定义的书写方法简单方便而且严格。v 图形工具层次方框图Warnier 图IPO图3.3 需求规格说明书需求分析应交付的主要文档是需求规格说明。软件需求规格说明的一般格式: 1引言2任务概述3数据描述4功能要求5性能需求6运行需求7其他要求8附录需求分析的评审需求分析评审的方法必须从一致性、完整性、现实性和有效性等四个不同角度验证软件需求的正确性。第四章 概要设计与数据库设计教学

28、内容1. 概要设计的任务与步骤2. 软件设计的概念与原则3. 概要设计的方法面向数据流的设计方法。基本概念、变换分析、事务分析、设计优化原则。面向数据结构的设计方法(Jackson方法)。4概要设计文档与评审5数据库设计教学要求掌握软件设计的概念与原则,概要设计的步骤、方法。学会撰写概要设计的文档并能评审出概要设计文档是否符合要求。概要设计说明书的主要内容及结构。自学要点面向数据流的设计方法、面向数据结构的设计方法、变换分析、事务分析、设计优化原则。学时分配4学时(自学学时:10学时)。41 概要设计的任务与步骤v 概要设计任务1系统分析员审查软件计划、软件需求分析提供的文档,提出候选的最佳推

29、荐方案,用系统流程图,组成系统物理元素清单、成本效益分析和系统进度计划,供专家审定,审定后进入设计。2确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。3编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具。选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等。4概要设计后转入详细设计(又称过程设计,算法设计),其主要任务,根据概要设计提供的文档,确定每一个模块的算法,内部的数据组织,选定工具清晰正确表达算法。编写详细设计说明书,

30、详细测试用例与计划用到如何确定程序的复杂程度的程序图,算法流程图的表述工具,如PAD图,N-S图等。v 概要设计的过程在概要设计过程中要先进行系统设计,复审系统计划与需求分析,确定系统具体的实施方案;然后进行结构设计,确定软件结构。一般步骤如下:S1:设计系统方案S2:选取一组合理的方案S3:推荐最佳实施方案S4:功能分解S5:软件结构设计S6:数据库设计、文件结构的设计S7:制定测试计划S8:编写概要设计文档S9:审查与复审概要设计文档。42 软件设计的概念和原则v 软件设计的概念与原则主要内容包括有:(1)将软件划分成若干独立成分的依据。(2)怎样表示不同的成分内的功能细节和数据结构。(3

31、)怎样统一衡量软件设计的技术质量。v 模块化模块是数据说明、可执行语句等程序对象的集合,模块可以单独被命名的而且可通过名字来访问,例如,过程、函数、子程序、宏等等都可作为模块。v 抽象与逐步求精软件工程过程的每一步都是对软件解法的抽象层次的一次精化。逐步求精与抽象是紧密相关的。v 信息隐蔽和局部化v 模块独立性模块独立性是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。1模块独立性的重要性(1)具有独立的模块的软件比较容易开发出来。这是由于能够分割功能而且接口可以简化,当许多人分工合作开发同一个软

32、件时,这个优点尤其重要。(2)独立的模块比较容易测试和维护。这是因为相对说来,修改设计和程序需要的工作量比较小,错误传播范围小,需要扩充功能时能够“插入”模块。总之,模块独立是优秀设计的关键,而设计又是决定软件质量的关键环节。模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。2耦合耦合是对一个软件结构内各个模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,调用模块的方式,以及通过接口的信息。具体区分模块间耦合程度的强弱的标准如下:(1)非直接耦合(2)数据耦合(3)控制

33、耦合(4)公共环境耦合(5)内容耦合(6)标记耦合(7)外部耦合总之,耦合是影响软件复杂程度的一个重要因素。应该采取的原则是:尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。2内聚内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。(1)偶然内聚(2)逻辑内聚(3)时间内聚(4)过程内聚(5)通信内聚(6)信息内聚(7)功能内聚结构设计原则软件概要设计包括模块构成的程序结构和输入输出数据结构。其目标是产生一个模块化的程序结构,并明确模块间的控制关系,以及定义界面、说明程序的数据进一步调整程序结构和数据

34、结构。改进软件设计、提高软件质量的原则1显著改进软件结构提高模块独立性2模块规模应该适中3适当选择深度、宽度、扇出和扇入4模块的作用域应该在控制域之内5力争降低模块接口的复杂程度6设计单入口单出口的模块7模块功能应该可以预测4.3 面向数据流的设计方法v 基本概念1变换流2事物流3设计过程v 系统结构图(SC图)的组成v 变换分析v 事务分析v 面向数据结构的分析设计方法Jackson系统开发方法(JSD)Jackson系统开发方法(JSD,Jackson System Development)是一种典型的面向数据结构的分析设计方法。Jackson系统开发方法的系统模型就是相互通讯的一组进程的

35、集合。进程间的通讯方式有以下三种:(1)进程同步发生。(2)通过数据通道发送/接收活动发生。(3)访问公用存储信息。1 Jackson图(1)表达基本结构对于种类繁多的程序中使用的数据结构,各数据元素之间的逻辑关系只有顺序、选择、重复三种,所以逻辑数据结构也只有三种。顺序结构选择结构重复结构(2)改进的Jackson图Jackson图的缺点是:用这种图形工具表示选择或重复结构时,选择条件或循环结束条件不能直接在图上表示出来,影响了图的表达能力,也不易直接把图翻译成程序,此外,框间连线为斜线,不易在行式打印机上输出。(3)如何使用Jackson图表示数据结构用Jackson图表示下表所示的二维表

36、格:这个Jackson图首先声明了该学生名册表格由表头和表体两部分组成。其中表头又顺序包括表名和字段名。而表体可由任意行(0行或多行)组成,每行包括学生的姓名、性别、班级和学号。班级是本科的,学号项是本科生学号;班级是研究生的,学号项是研究生学号。表示程序结构例如要用Jackson图表示产生上面的学生名册文件的程序的程序结构:把学生名册生成为一个计算机文件,则该程序结构可以用下图的Jackson图来表示。Jackson伪代码顺序结构顺序结构的伪码如下,其中seq和end是关键字:A seqBCDA end选择结构select、or,和end是关键字,cond1、cond2和cond3分别是执行

37、B、C或D的条件:选择结构对应的伪码如下:A select condIBA or cond2CA or cond3DA end重复结构iter、until、while和end是关键字(重复结构有until和while两种形式),cond是条件,重复结构对应的伪码图象:A iter until(或while) condBA end2 Jackson系统开发方法步骤与实现4.4 概要设计文档评审在概要设计阶段设计人员完成的主要文档是概要设计说明书,它主要规定软件的结构。概要设计说明书的主要内容及结构如下:概要设计说明书一、引言二、任务概述三、总体设计四、接口设计五、数据结构设计六、运行设计七、出错

38、处理设计八、安全保密设计九、维护设计4.5 数据库设计v ER模型即实体联系模型,是最常用的表示概念数据模型的方法。数据模型包括三种互相关联的信息:数据对象,描述对象的属性,描述对象间相互连接的关系。 数据对象 :是需被目标系统所理解的复合信息的表示。所谓复合信息是具有若干不同特征或属性的信息。 属性 :定义了数据对象的特征。它可用来: 为数据对象的实例命名; 描述这个实例; 建立对另一个数据对象的另一个实例的引用。 关系 :各个数据对象的实例之间有关联。实例的关联有三种: 一对一(1:1); 一对多(1:m); 多对多(n:m)。v 数据库设计 1问题描述;2。设计步骤:ER模型;建立关系;

39、规范化。第五章 详细设计与人机界面设计教学内容1 详细设计概述2 详细设计工具1 详细设计规格说明与评审2 人机界面基本概念教学要求掌握详细设计的任务和工具。了解详细设计原则和人机界面基本概念。自学要点详细设计的任务与原则、程序流程图、N-S图、PAD图、判定表和判定树。学时分配4学时(自学学时:8学时)5.1 详细设计概述v 详细设计的任务 详细设计的目的是为软件结构图(SC图或HC图)中的每一个模块确定使用的算法和块内数据结构,并用某种选定的表达工具给出清晰的描述。 这一阶段的主要任务: 1为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述; 2确定每一模

40、块使用的数据结构; 3确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。 在详细设计结束时,应该把上述结果写入详细设计说明书,并且通过复审形成正式文档。交付给下一阶段(编码阶段)的工作依据。4为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常包括输入数据,期望输出等内容。v 详细设计的原则 1由于详细设计的蓝图是给人看的,所以模块的逻辑描述要清晰易读、正确可靠。 2采用结构化设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可读性、

41、可测试性、可维护性。其基本内容归纳为如下几点: (1) 程序语言中应尽量少用GOTO语句,以确保程序结构的独立性。 (2) 使用单人口单出口的控制结构,确保程序的静态结构与动态执行情况相一致。保证程序易理解。 (3) 程序的控制结构一般采用顺序、选择、循环三种结构来构成,确保结构简单。 (4) 用自顶向下逐步求精方法完成程序设计。结构化程序设计的缺点是存储容量和运行时间增加10-20,但易读易维护性好。 (5) 经典的控制结构为顺序,IF THEN ELSE分支,DO-WHILE循环。扩展的还有多分支CASE,DO-UNTIL循环结构,固定次数循环DOWHILE。3选择恰当描述工具来描述各模块

42、算法。5.2 详细设计的工具v 设计工具1图形工具:利用图形工具可以把过程的细节用图形描述出来。2表格工具:可用一张表来描述过程的细节,在这张表中列出了各种可能的操作和相应的条件。3语言工具:用某种高级语言(称之为伪码)来描述过程的细节。(1) 程序流程图程序流程图独立于任何一种程序设计语言,比较直观、清晰,易于学习掌握。但流程图也存在一些严重的缺点。例如流程图所使用的符号不够规范,常常使用一些习惯性用法。特别是表示程序控制流程的箭头可以不受任何约束,随意转移控制。这些现象显然是与软件工程化的要求相背离的。为了消除这些缺点,使用流程图描述结构化程序,必须限制流程图只能使用图5.1所给出的五种基

43、本控制结构。图5.1 流程图的基本控制结构任何复杂的程序流程图都应由这五种基本控制结构组合或嵌套而成。作为上述五种控制结构相互组合和嵌套的实例,图5.2给出一个程序的流程图。图中增加了一些虚线构成的框,目的是便于理解控制结构的嵌套关系。显然,这个流程图所描述的程序是结构化的。 图5.2 嵌套构成的流程图实例(2) N-S图 Nassi和Shneiderman 提出了一种符合结构化程序设计原则的图形描述工具,叫做盒图,也叫做N-S图。为表示五种基本控制结构,在N-S图中规定了五种图形构件。参看图5.3。图5.3 N-S图的五种基本控制结构为说明N-S图的使用,仍用图5.2给出的实例,将它用如图5

44、.4所示的N-S图表示。任何一个N-S图,都是前面介绍的五种基本控制结构相互组合与嵌套的结果。当问题很复杂时,N-S图可能很大。图5.4 N-S图的实例 (3) PADPAD是Problem Analysis Diagram的缩写,它是日本日立公司提出,由程序流程图演化来的,用结构化程序设计思想表现程序逻辑结构的图形工具。现在已为ISO认可。PAD也设置了五种基本控制结构的图式,并允许递归使用。图5.5 PAD的基本控制结构做为PAD应用的实例,图5.6给出了图5.2程序的PAD表示。PAD所描述程序的层次关系表现在纵线上。每条纵线表示了一个层次。把PAD图从左到右展开。随着程序层次的增加,PAD逐渐向右展开。PAD的执行顺序从最左主干线的上端的结点开始,自上而下依次执行。 每遇到判断或循环,就自左而右进入下一层,从表示下一层的纵线上端开始执行,直到该纵线下端,再返回上一层的纵线的转入处。如此继续,直到执行到主干线的下端为止。图5.6 PAD实例(4)判定表当算法中包含多重嵌套的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com