版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5
章软件设计与结构化设计2录目CONTENTS5.1
软件设计的基本概念5.2软件体系结构5.3结构化设计概述5.4结构化设计与结构化分析的关系5.5结构化设计方法5.6接口设计5.6
数据设计5.7
过程设计5.8
软件设计评审5.1软件设计的基本概念45.1软件设计的基本概念
5.1.1软件设计的意义和目标5.1.2软件设计的原则5.1.3软件设计的分类55.1软件设计的基本概念
做什么怎么做0102完成了需求分析,回答了软件系统能“做什么”的问题,软件的生命周期就进入了设计阶段。软件设计是软件开发过程中的重要阶段,在此阶段中,开发人员将集中研究如何把需求规格说明书里归纳的分析模型转换为可行的设计模型,并将解决方案记录到相关的设计文档中。实际上,软件设计的目标就是要回答“怎么做”才能实现软件系统的问题,也可以把设计阶段的任务理解为把软件系统能“做什么”的逻辑模型转换为“怎么做”的物理模型。软件设计在软件开发中处于核心地位。65.1软件设计的基本概念
5.1.1软件设计的意义和目标1.设计必须实现所有包含在分析模型中的明确需求,而且必须满足用户期望的所有隐含需求2.对于程序员、测试人员和维护人员而言,设计必须是可读的、可理解的指南3.设计必须提供软件的全貌,从实现的角度说明数据域、功能域和行为域评价良好设计演化的特征McGlaughlin提出软件设计在软件开发过程中处于核心地位,它是保证质量的关键步骤。设计为我们提供了可以用于质量评估的软件表示,设计是我们能够将用户需求准确地转化为软件产品或系统的唯一方法。软件设计是所有软件工程活动和随后的软件支持活动的基础。软件设计是一个迭代的过程,通过设计过程,需求被变换为用于构建软件的“蓝图”75.1软件设计的基本概念
1.模块化模块是数据说明、可执行语句等程序对象的集合,是构成程序的基本构件,可以被单独命名并通过名字来访问。在面向过程的设计中,过程、函数、子程序、宏都可以作为模块;在面向对象的设计中,对象是模块,对象中的方法也是模块。模块化就是把系统或程序划分为独立命名并且可以独立访问的模块,每个模块完成一个特定的子功能。模块集成起来可以构成一个整体,完成特定的功能,进而满足用户需求。5.1.2软件设计的原则->模块化.抽象.逐步求精.信息隐藏.复用性设计.灵活性设计
85.1软件设计的基本概念
5.1.2软件设计的原则->模块化.抽象.逐步求精.信息隐藏.复用性设计.灵活性设计
在模块化的过程中,要注意以下几点。(1)模块的规模要适中。(2)提高模块的独立性,降低模块间的耦合程度。(3)提高模块的内聚程度。(4)加强模块的保护性。95.1软件设计的基本概念
5.1.2软件设计的原则->模块化.抽象.逐步求精.信息隐藏.复用性设计.灵活性设计
在模块化的过程中,要注意以下几点。(1)模块的规模要适中。(2)提高模块的独立性,降低模块间的耦合程度。(3)提高模块的内聚程度。(4)加强模块的保护性。105.1软件设计的基本概念
5.1.2软件设计的原则->模块化.抽象.逐步求精.信息隐藏.复用性设计.灵活性设计
在模块化的过程中,要注意以下几点。(1)模块的规模要适中。(2)提高模块的独立性,降低模块间的耦合程度。(3)提高模块的内聚程度。(4)加强模块的保护性。115.1软件设计的基本概念
5.1.2软件设计的原则->模块化.抽象.逐步求精.信息隐藏.复用性设计.灵活性设计
2.抽象
抽象是人们认识复杂的客观世界时所使用的一种思维工具。抽象主要是为了降低问题的复杂度,以得到问题领域中较简单的概念,好让人们能够控制其过程或以宏观的角度来了解许多特定的事态。
抽象在软件开发过程中起着非常重要的作用。一个庞大、复杂的系统可以先用一些宏观的概念构造和理解,然后再逐层地用一些较微观的概念去解释上层的宏观概念,直到最底层的元素。125.1软件设计的基本概念
5.1.2软件设计的原则->模块化.抽象.逐步求精.信息隐藏.复用性设计.灵活性设计
3.逐步求精在面对一个新问题时,开发人员可暂时忽略问题非本质的细节,而关注于与本质相关的宏观概念,集中精力解决主要问题,这种认识事物的方法就是逐步求精。逐步求精是抽象的逆过程。开发人员认识问题时逐步求精的过程,同时也是抽象程度逐渐降低的过程。按照逐步求精的思想,程序的体系结构是按照层次结构,逐步精化过程细节而开发出来的。可见,求精就是细化,它与抽象是互补的概念。135.1软件设计的基本概念
5.1.2软件设计的原则->模块化.抽象.逐步求精.信息隐藏.复用性设计.灵活性设计
4.信息隐藏信息隐藏与模块化的概念相关。当一个系统被分解为若干个模块时,为了避免某个模块的行为干扰同一系统中的其他模块,应该让模块仅仅公开必须让外界知道的信息,而将其他信息隐藏起来,这样模块的具体实现细节相对于其他不相关的模块而言就是不可见的,这种机制就叫做信息隐藏。信息隐藏提高了模块的独立性,加强了外部对模块内部信息进行访问的限制,它使得模块的局部错误尽量不影响其他模块。信息隐藏有利于软件的测试和维护工作。通常,模块的信息隐藏可以通过接口来实现。模块通过接口与外部进行通信,而把模块的具体实现细节(如数据结构、算法等内部信息)隐藏起来。一般来说,一个模块具有有限个接口,外部模块通过调用相应的接口来实现对目标模块的操作。API145.1软件设计的基本概念
5.1.2软件设计的原则->模块化.抽象.逐步求精.信息隐藏.复用性设计.灵活性设计
5.复用性设计
软件复用(重用)就是将已有的软件成分用于构造新的软件系统。可以被复用的软件成分一般称作可复用构件,无论对可复用构件原封不动地使用还是作适当的修改后再使用,只要是用来构造新软件,则都可称作复用。软件复用不仅仅是对程序的复用,它还包括对软件生产过程中任何活动所产生的制成品的复用,如软件开发计划、可行性研究报告、分析模型、设计模型、源程序`、测试用例等等。如果是在一个系统中多次使用一个相同的软件成分,则不称作复用,而称作共享;对一个软件进行修改,使它运行于新的软硬件平台也不称作复用,而称作软件移值。155.1软件设计的基本概念
5.1.2软件设计的原则->模块化.抽象.逐步求精.信息隐藏.复用性设计.灵活性设计
降低耦合并提高内聚建立抽象不要将代码写死抛出异常使用并创建可复用的代码在设计(尤其是面向对象的设计)中引入灵活性的方法灵活性设计,简而言之就是软件在面对需求修改时的随机应变能力,可以体现在修改程序代码的工程量等方面。抽象是软件设计的关键因素。设计模式、软件架构等可以用来实现更高抽象层次的编程,以达到软件的灵活性165.1软件设计的基本概念
5.1.3软件设计的分类活动任务观点.工程管理观点软件设计活动任务工程管理1.数据设计
2.体系结构设计3.接口设计4.构件设计和部署设计。1.概要设计(总体设计)2.详细设计175.1软件设计的基本概念
5.1.3软件设计的分类活动任务观点.工程管理观点软件设计活动任务工程管理数据设计、体系结构设计、接口设计、构件设计和部署设计。1)数据设计创建在高抽象级别上表示的数据模型和信息模型。然后,数据模型被精化为越来越多和实现相关的特定表示,即基于计算机的系统能够处理的表示。2)体系结构设计为我们提供软件的整体视图,定义了软件系统各主要成份之间的关系。3)接口设计告诉我们信息如何流入和流出系统以及被定义为体系结构一部分的构件之间是如何通信的。4)构件设计完整的描述了每个软件构件的内部细节,为所有本地数据对象定义数据结构,为所有在构件内发生的处理定义算法细节,并定义允许访问所有构件操作的接口。5)部署设计指明软件功能和子系统如何在支持软件的物理计算环境内分布。185.1软件设计的基本概念
5.1.3软件设计的分类活动任务观点.工程管理观点软件设计活动任务工程管理概要设计确定软件的结构以及各组成部分之间的相互关系。它以需求规格说明书为基础,概要地说明软件系统的实现方案,包括:目标系统的总体架构每个模块的功能描述、数据接口描述及模块之间的调用关系数据库、数据定义和数据结构等其中,目标系统的总体架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素之间的相互作用、指导元素集成的模式以及这些模式的约束组成。195.1软件设计的基本概念
5.1.3软件设计的分类活动任务观点.工程管理观点软件设计活动任务工程管理详细设计确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。它对每个模块的功能和架构进行细化,明确要完成相应模块的预定功能所需要的数据结构和算法,并将其用某种形式描述出来。详细设计的目标是得到实现系统的最详细的解决方案,明确对目标系统的精确描述,从而在编码阶段可以方便地把这个描述直接翻译为用某种程序设计语言书写的程序。在进行详细设计的过程中,设计人员的工作涉及到的内容有过程、数据和接口等。过程设计主要是指描述系统中每个模块的实现算法和细节数据设计是对各模块所用到的数据结构的进一步细化接口设计针对的是软件系统各模块之间的关系或通信方式以及目标系统与外部系统之间的联系5.2软件体系结构什么是软件体系结构?软件体系结构是系统的一个或多个结构,它包括1)软件的组成元素(组件)2)这些(组件)元素的外部可见特性3)这些元素(组件)之间的相互关系软件体系结构不仅指定了系统的组织结构和拓扑结构,也显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。什么是软件体系结构?软件体系结构描述的对象是直接构成系统的抽象组件。它由功能各异、相互作用的部件按照层次构成,包含了系统的基础构成单元、单元之间的相互作用关系、在构成系统时它们的合成方法以及对合成约束的描述。具体来说,部件包括客户端、服务器、数据库、程序包、过程、子程序等一切软件的组成部分。相互作用的关系可以是过程调用、消息传递、共享内存变量、客户端/服务器的访问协议、数据库的访问协议等。软件体系结构的作用
设计软件的体系结构在设计阶段非常重要。软件体系结构就好比软件系统的骨骼,如果骨骼确定了,那么软件系统的框架就确定了。设计软件体系的过程中应当包含以下几项:1)定义基本构件、构建打包方式以及相互作用的方式2)明确系统如何实现功能、性能、可靠性、安全性等各个方面需求3)尽量使用已有的构件软件体系结构的作用
软件体系结构在软件开发过程中的作用如下:2)便于开发人员与用户的沟通
开发人员与系统设计人员、用户以及其他有关人员之间进行有效沟通,可以达成某些一致。应用软件体系结构的思想方法可以更好划分范围,规划时间成本,应对客户不够明确的需求。1)规范软件开发的基本架构体系结构一般与需求密切相关,明确的需求可以产生明确的规格,使设计出来的软件结构更清晰。需求的变更也需要考虑,明确的变更趋势可以提早在设计中体现。软件体系结构的作用
3)模块化、层次化设计有利于减少返工提高效率,模块越独立越好,尽量把有明确需求的应用划分为独立模块,减少模块之间的交集。层次化设计就是一层一层分割,利用分层处理复杂功能,下层执行简单功能,上层调用功能,可以有效杜绝层次之间的交集。4)便于系统开发前后期的筹备与服务利用体系结构的思想开发产品不仅可以规范流程,节省时间,还能留下大量开发文档、产品类型框架、软件开发标准流程等资料,为今后的售前咨询和售后服务提供参考。
两种常用的软件体系结构如图所示树形结构网状结构软件体系结构的作用典型的软件体系结构风格
典型的软件体系结构风格
软件体系结构风格包含4个关键要素:1)提供一个词汇表2)定义一套配置规则3)定义一套语义解释规则4)定义对基于这种风格的系统进行的分析根据以上4要素框架,Garlan和Shaw对通用软件体系结构风格的进行分类,每种体系结构风格有各自的应用领域和优缺点。所谓软件体系结构风格,是描述某一特定应用领域中系统组织方式的惯用模式。数据流风格
数据到达即被激活处理工作,无数据时不工作。一般来说,数据的流向是有序的。在纯数据流系统中,处理之间除了数据交换,没有任何其他的交互。主要研究近似线性的数据流,或在限度内的循环数据流。其中包括批处理序列、管道/过滤器。调用
∕
返回风格
各个构件通过调用其他构件和获得返回参数来进行交互,配合完成功能。包括主程序/子程序、面向对象风格、层次结构。主程序子程序子程序子程序独立构件风格
这种风格的主要特点是:事件的触发者并不知道哪些构件会被这些事件影响,相互保持独立,这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用各个构件之间彼此无连接关系,各自独立存在,通过对事件的发布和注册实现关联,其中包括进程通讯、事件系统虚拟机风格
它创建了一种虚拟的环境,将用户与底层平台隔离开来,或者将高层抽象和底层实现隔离开来。其中包括解释器、基于规则的系统仓库风格
仓库是存储和维护数据的中心场所。在仓库风格中存在两类构件,表示当前数据的状态的中心数据结构和一组对中心数据进行操作的独立构件。其中包括数据库系统、超文本系统、黑板系统。客户端/服务器体系结构
客户端/服务器(Client/Server,简称C/S)体系结构是为了共享不对等的资源而提出来的,是20世纪90年代成熟起来的技术,C/S体系结构定义了客户端如何与服务器连接,以将数据和应用系统分部到多个处理机上。C/S体系结构有3个主要的组成部分。服务器:负责给其子系统提供服务,如数据库服务器提供数据存储和管理服务,文件服务器提供文件管理服务,搜索服务器提供数据检索等。客户端:通常是独立的子系统,通过向服务器请求约定的资源获取数据。一台服务器可以同时为许多客户端提供服务。网络:连接服务器和客户端。有时客户端和服务器位于同一台物理主机上,但多数情况下它们分布在不同主机上。网络可以有各种形式,包括有线和无线等。
客户端/服务器体系结构C/S系统的设计必须考虑应用系统的逻辑结构在逻辑上,我们通常将应用系统划分为3层,即数据管理层、应用逻辑层和表示层数据管理层主要处理数据存储和管理操作应用逻辑层处理与业务相关的逻辑表示层处理用户界面以及用户的交互在集中式系统中,不需要将这些清楚地分离,但在分布式系统中,不同层常常被部署在不同的主机上,因此必须严格地分离不同层。
客户端/服务器体系结构C/S体系结构C/S体系结构通常有两层或三层,也可根据需要划分为更多层两层C/S结构一般有两种形态:瘦客户端模型。在瘦客户端模型中,数据管理和应用逻辑都在服务器端执行,客户端只负责表示部分胖客户端模型。在这种模型中,服务器只负责对数据的管理。客户端上的软件实现应用逻辑以及与系统的交互
随着软件复杂度不断提高,胖客户端模型逐渐暴露出以下缺点:开发成本高。C/S体系对客户端的配置要求较高,增加系统成本,且会使客户端越来越臃肿用户界面风格不一,使用繁杂,不利于推广使用软件移植困难,采用不同开发工具和平台开发的软件之间一般不兼容,有时不得不因此开发针对另一平台的版本软件维护和升级困难,由于应用程序安装在客户端上,需要维护时必须升级和维护所有客户端客户端/服务器体系结构在两层C/S结构需要考虑如何将三个逻辑层映射到两个系统,在瘦客户端模型存在伸缩性和性能问题,在胖客户端模型则存在系统管理问题
三层C/S结构就避免了这个问题,将数据管理层和应用逻辑层分别放在两个物理层或物理主机上,客户端仍然保留在客户端上。对于三层C/S结构,各层的功能或指责如下:表示层表示层是应用系统的用户界面部分,担负着用户与应用程序之间的对话功能。通常采用图形界面的方式呈现应用逻辑层应用逻辑层为应用系统的主体,包含全部的业务逻辑。比如数据处理,用户管理,与其他系统交互,以及记录系统日志等。通常是应用服务器。数据层数据层一般只负责数据的存取、管理和维护(如备份等),通常是关系型数据库服务器客户端/服务器体系结构浏览器/服务器(Browser/Server,简称B/S)结构是三层应用结构的一种实现,其具体结构为浏览器/Web服务器/数据库服务器
三层结构的优点:通过合理划分三层结构,使之在逻辑上保持相对独立,提高系统的可维护性和可扩展性。能够更灵活选用相应的平台和应用系统,使之在处理负荷能力和处理特性上分别适应各层的要求,并具有良好的可升级性和开放性。应用各层可以独立并行开发,每层可以根据特点选用合适的开发语言。安全性相对较高,因为应用层屏蔽了用户直接访问数据库的权利,使得未授权用户或黑客难以绕过应用层获取数据但三层结构必须精心设计通信模块,以避免通信称为瓶颈限制服务器的发挥。客户端/服务器体系结构模型-视图-控制器
MVC(Model-View-Controller)模型由TrygveReenskaug博士在20世纪70年代提出,并最早在面向对象编程语言Smalltalk-80中实现MVC强调将用户的输入、数据模型和数据表示方式分开设计,一个交互式应用系统由模型、视图、控制器3部分组成,分别对应内部数据、数据表示和输入/输出控制部分模型-视图-控制器
模型模型对象代表应用领域中的业务实体和业务逻辑规则,是整个模型的核心,独立于外在的显示内容和显示形式。模型对象的变化通过事件通知视图和控制器对象。采用了发布者/订阅者方式,模型是发布者,视图和控制器是订阅者。对于模型来说,并不知道自己对应的视图控制器;但控制器可以通过模型提供的接口改变模型对象,接口内封装了业务数据和行为。
视图视图对象代表GUI对象,以用户熟悉和需要的格式表现模型信息,是系统与外界的交互接口。视图订阅模型可以感知模型的数据变化,并更新自己的显示。视图对象也可以包含子视图,用于显示模型的不同部分。在多数的MVC实现技术中,视图和控制器常常是一一对应的。控制器控制器对象处理用户的输入,并给模型发送业务事件,再将业务事件解析为模型应执行的动作;同时,模型的更新与修改也将通过控制器来通知视图,保持视图与模型的一致。MVC的整个处理流程为:系统拦截到用户请求,根据相应规则(多数采用路由技术),将用户请求交给控制器,控制器决定哪个模型来处理用户的请求模型根据业务逻辑处理完毕后将结果返回给控制器然后控制器将数据提交给视图;视图把数据组装之后,呈现给用户模型-视图-控制器其中,模型处理所有的业务逻辑和规则,视图只负责显示数据,控制器负责用户的请求,这样将业务和表现层分离,以便业务代码可以被用于任何相似的业务中,视图代码也可以根据需要随意替换。5.3结构化设计概述5.3结构化设计概述
一二三从软件需求规格说明书出发设计软件系统的整体结构确定每个模块的实现算法以及编写具体的代码概要(总体)设计阶段&过程(详细)设计阶段概要设计:体系结构设计、数据设计及接口设计。过程设计:它详细地设计每个模块,确定完成每个模块功能所需要的算法和数据结构。设计决策决定成果设计决策将决定软件维护的难易程度设计是软件开发过程中决定软件产品质量的关键阶段。5.4结构化设计与结构化分析的关系465.4
结构化设计与结构化分析的关系
数据设计体系结构设计接口设计过程设计数据对象描述处理规格说明控制规格说明状态转换图数据流图实体—关系图数据字典要进行结构化的设计,必须依据结构化分析的结果,结构化设计与结构化分析的关系如图所示。图的左边是用结构化分析方法所建立的模型,图的右边是用结构化设计方法所建立的设计模型。475.4
结构化设计与结构化分析的关系
结构化软件设计的具体步骤如下:1)从需求分析阶段的数据流图出发,制订几个方案,从中选择合理的方案。2)采用某种设计方法,将一个复杂的系统按功能划分成模块化的层次结构。3)确定每个模块的功能、模块间的调用关系,建立与已确定的软件需求的对应关系。4)系统接口设计,确定模块间的接口信息。5)数据结构及数据库设计,确定实现软件的数据结构和数据库模式。6)基于以上,并依据分析模型中的处理(加工)规格说明、状态转换图及控制规格说明进行过程设计。7)制订测试计划。8)撰写软件设计文档。5.5结构化设计方法495.5
结构化设计方法
5.5.1表示软件结构的图形工具5.5.2面向数据流的设计方法5.5.3面向数据结构的设计方法505.5
结构化设计方法
5.5.1表示软件结构的图形工具1.层次图和HIPO图
2.结构图
通常使用层次图描绘软件的层次结构。在层次图中一个矩形框代表一个模块,框间的连线表示调用关系(位于上方的矩形框所代表的模块调用位于下方的矩形框所代表的模块)。每个方框可以带编号,像这样带编号的层次图称为HIPO(HierarchyInput-Process-Output)图,如图所示。515.5.1表示软件结构的图形工具1.层次图和HIPO图
2.结构图结构图是描绘软件结构的图形工具,图中一个方框代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)表示模块的调用关系。在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息。如果希望进一步标明传递的信息是数据还是控制信息,则可以利用注释箭头尾部的形状来区分:尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息。5.5
结构化设计方法
525.5.1表示软件结构的图形工具1.层次图和HIPO图
2.结构图有时还会用一些附加的符号,如用菱形表示选择或者条件调用,用弧形箭头表示循环调用,如图所示。选择/条件调用循环调用5.5
结构化设计方法
53
5.5.2面向数据流的设计方法面向数据流的设计方法是常用的结构化设计方法,多在概要设计阶段使用。它主要是指依据一定的映射规则,将需求分析阶段得到的数据描述从系统的输入端到输出端所经历的一系列变换或处理的数据流图转换为目标系统的结构描述。在数据流图中,数据流分为变换型数据流和事务型数据流两种。所谓变换,是指把输入的数据处理后转变成另外的输出数据。信息沿输入路径流入系统,在系统中经过加工处理后又离开系统,当信息流具备这种特征时就是变换流。所谓事务,是指非数据变换的处理,它将输入的数据流分散成许多数据流,形成若干个加工,然后选择其中一个路径来执行。5.5
结构化设计方法
54
5.5.2面向数据流的设计方法1.变换型数据流2.事务型数据流通常,在一个大型系统中,可能同时存在变换型数据流和事务型数据流。对于变换型数据流,设计人员应该重点区分其输入和输出分支,通过变换分析将数据流图映射为变换结构,从而构造出目标系统的结构图。针对变换型数据流的设计可以分为以下几个步骤:(1)区分变换型数据流中的输入数据、变换中心和
输出数据,并在数据流图上用虚线标明分界线。(2)分析得到系统的初始结构图。(3)对系统结构图进行优化。变换型数据流5.5
结构化设计方法
55
5.5.2面向数据流的设计方法1.变换型数据流2.事务型数据流对于事务型数据流,设计人员应该重点区分事务中心和数据接收通路,通过事务分析将数据流图映射为事务结构。针对事务型数据流的设计可以分为以下几个步骤:(1)确定以事务为中心的结构,找出事务中心、接
收数据、处理路径这三个部分。(2)将数据流图转换为初始的系统结构图。(3)分解和细化接收分支和处理分支事务型数据流5.5
结构化设计方法
5.5.3面向数据结构的设计方法56
软件结构设计软件结构描述输入数据结构输出方法:Jackson方法和Warnier方法面向数据结构的设计方法就是根据数据结构设计程序处理过程的方法,具体地说,面向数据结构的设计方法按输入、输出以及计算机内部存储信息的数据结构进行软件结构设计,从而把对数据结构的描述转换为对软件结构的描述。使用面向数据结构的设计方法时,分析目标系统的数据结构是关键。5.5
结构化设计方法
5.5.3面向数据结构的设计方法57
Jackson方法把数据结构分为3种基本类型:顺序型结构、选择型结构和循环型结构在顺序型结构中,数据由一个或多个元素组成,每个元素按照确定的次序出现一次。在顺序型图示中,数据A由B、C和D3个元素顺序组成。在选择型结构中,数据包含两个或多个元素,每次使用该数据时,按照一定的条件从罗列的多个数据元素中选择一个。在选择型图示中,数据A根据条件从B或C或D中选择一个,元素右上方的符号“°”表示从中选择一个。在循环型结构中,数据根据使用时的条件由一个数据元素出现零次或多次构成。在循环型图示中,数据A根据条件由元素B出现零次或多次组成。元素B后加符号“*”表示重复。5.5
结构化设计方法
5.5.3面向数据结构的设计方法58
Jackson方法把数据结构分为3种基本类型:顺序型结构、选择型结构和循环型结构运用Jackson图表达选择型或循环型结构时,选择条件或循环结束条件不能在图上直接表现出来,并且如果框间连线为斜线,不易在打印机上输出,所以产生了改进的Jackson图,其基本逻辑符号如图所示。5.5
结构化设计方法
5.5.3面向数据结构的设计方法59
运用Jackson图进行程序设计有如下优点:(1)可以清晰地表示层次结构,易于对自顶向下的结
构进行描述。(2)结构易懂、易用,并且比较直观形象。(3)不仅可以表示数据结构,也可以表示程序结构运用Jackson图进行程序设计的步骤:(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson结构来表示这些数据结构。(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。(3)按照一定的规则,从描绘数据结构的Jackson图导出描绘程序结构的Jackson图。(4)列出基本操作与条件,并把它们分配到程序结构图的适当位置。(5)用伪代码表示程序。5.5
结构化设计方法
5.6接口设计615.6
接口设计
5.6.1接口设计概述5.6.2界面设计625.6
接口设计
5.6.1接口设计概述软件系统业务功能部署………………接口子系统OUTINERROR模块接口接口外部系统接口软件系统结合业务、功能、部署等等因素将软件系统逐步分解到模块,那么模块与模块之间就必须根据各模块的功能定义对应的接口。概要设计(总体设计)中的接口设计主要用于子系统/模块之间或内部系统与外部系统进行各种交互。接口设计的内容应包括功能描述、接口的输入输出定义、错误处理等。软件系统接口的种类以及规范很多,可以有API、服务接口、文件、数据库等等,所以设计的方法也有很大的差异。但是总体来说接口设计的内容应包括通讯方法、协议、接口调用方法、功能内容、输入输出参数、错误/例外机制等。从成果上来看,接口一览表以及详细设计资料是必须的资料。635.6
接口设计
5.6.1接口设计概述接口设计一般包括3个方面:(1)用户接口--用来说明将向用户提供的命令和它们的语法结构以及软件回答信息(2)外部接口--用来说明本系统同外界的所有接口的安排包括软件与硬件之间的接口、
本系统与各支持软件之间的接口关系(3)内部接口--用来说明本系统之内的各个系统元素之间的接口的安排。645.6
接口设计
5.6.2界面设计
界面设计是接口设计中的重要组成部分。用户界面的设计要求在研究技术问题的同时对人加以研究。TheoMandel在其关于界面设计的著作中提出了3条“黄金原则”。1)置用户于控制之下2)减少用户的记忆负担3)保持界面一致
这些黄金原则实际上构成了指导用户界面设计活动的基本原则。655.6
接口设计
5.6.2界面设计1创建系统功能的外部模型确定为完成此系统功能人和计算机应分别完成的任务考虑界面设计中的典型问题借助CASE工具构造界面原型实现设计模型评估界面质量23456界面设计是一个迭代的过程,其核心活动包括:665.6
接口设计
5.6.2界面设计在界面的设计过程中先后涉及4个模型终端用户对未来系统的假想(systemperception或user'smodel)由人机工程师(或软件工程师)创建的用户模型(usermodel)系统实现后得到的系统映象(systemimage)由软件工程师创建的设计模型(designmodel)1234675.6
接口设计
5.6.2界面设计在界面设计中,应该考虑4个问题。1)系统响应时间:指当用户执行了某个控制动作后(如,点击鼠标器等),系统做出反应的时间(指输出信息或执行对应的动作)。系统响应时间过长、不同命令在响应时间上的差别过于悬殊,用户将难以接受。2)用户求助机制:用户都希望得到联机帮助,联机帮助系统有两类,集成式和叠加式,此外,还要考虑诸如帮助范围(仅考虑部分还是全部功能)、用户求助的途径、帮助信息的显示、用户如何返回正常交互工作及帮助信息本身如何组织等一系列问题。3)出错信息:应选用用户明了、含义准确的术语描述,同时还应尽可能提供一些有关错误恢复的建议。此外,显示出错信息时,若辅以听觉(如铃声)、视觉(专用颜色)刺激,则效果更佳。4)命令方式:键盘命令曾经一度是用户与软件系统之间最通用的交互方式,随着面向窗口的点选界面的出现,键盘命令虽不再是唯一的交互形式,但许多有经验的熟练的软件人员仍喜爱这一方式,更多的情形是菜单与键盘命令并存,供用户自由选用。5.7数据设计695.7
数据设计
数据设计就是将需求分析阶段定义的数据对象(E-R图、数据字典)转换为设计阶段的数据结构和数据库,包括两个方面。1)程序级的数据结构设计:采用(伪)代码的方式定义数据结构(数据的组成、类型、缺省值等信息);2)应用级的数据库设计:采用物理级的E-R图表示。DataBase数据结构705.7
数据设计
数据库有以下主要特点:1)实现数据共享2)数据冗余度减少3)数据的独立性4)数据实现集中控制5)数据一致性和可维护性,以确保数据的安全性和可靠性6)故障可修复性715.7
数据设计
数据的基本结构分三个层次,反映了观察数据库的三种不同角度。1)物理数据层是数据库的最内层,是物理存储设备上实际存储的数据的集合。这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的位串、字符和字组成。2)概念数据层是数据库的中间一层,是数据库的整体逻辑表示。指出了每个数据的逻辑定义及数据之间的逻辑联系,是存储记录的集合。它所设计的是数据库所有对象的逻辑关系,而不是它们的物理关系,是数据库管理员概念下的数据库。3)逻辑数据层是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。数据库基本结构物理数据层概念数据层逻辑数据层725.7
数据设计
验证设计物理设计逻辑设计概念设计需求分析数
据库设计过程735.7
数据设计
数据库设计是指根据用户的需求,在某一具体的数据库管理系统上,设计数据库的结构和建立数据库的过程。一般,数据库的设计过程大致可分数据库设计为5个步骤,如下所示。1)需求分析;调查和分析用户的业务活动和数据的使用情况,弄清所用数据的种类、范围、数量以及它们在业务活动中交流的情况,确定用户对数据库系统的使用要求和各种约束条件等,形成用户需求规约。2)概念设计;对用户要求描述的现实世界(可能是一个工厂、一个商场或者一个学校等),通过对其中信息的分类、聚集和概括,建立抽象的概念数据模型。这个概念模型应反映现实世界各部门的信息结构、信息流动情况、信息间的互相制约关系以及各部门对信息储存、查询和加工的要求等。所建立的模型应避开数据库在计算机上的具体实现细节,用一种抽象的形式表示出来。745.7
数据设计
3)逻辑设计;主要工作是将现实世界的概念数据模型设计成数据库的一种逻辑模式,即适应于某种特定数据库管理系统所支持的逻辑数据模式。与此同时,可能还需为各种数据处理应用领域产生相应的逻辑子模式。这一步设计的结果就是所谓“逻辑数据库”。4)物理设计;根据特定数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(包括文件类型、索引结构和数据的存放次序与位逻辑等)、存取方法和存取路径等。这一步设计的结果就是所谓“物理数据库”。5)验证设计;在上述设计的基础上,收集数据并具体建立一个数据库,运行一些典型的应用任务来验证数据库设计的正确性和合理性。一般,一个大型数据库的设计过程往往需要经过多次循环反复。当设计的某步发现问题时,可能就需要返回到前面去进行修改。因此,在做上述数据库设计时就应考虑到今后修改设计的可能性和方便性。755.7
数据设计
3)逻辑设计;主要工作是将现实世界的概念数据模型设计成数据库的一种逻辑模式,即适应于某种特定数据库管理系统所支持的逻辑数据模式。与此同时,可能还需为各种数据处理应用领域产生相应的逻辑子模式。这一步设计的结果就是所谓“逻辑数据库”。4)物理设计;根据特定数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(包括文件类型、索引结构和数据的存放次序与位逻辑等)、存取方法和存取路径等。这一步设计的结果就是所谓“物理数据库”。5)验证设计;在上述设计的基础上,收集数据并具体建立一个数据库,运行一些典型的应用任务来验证数据库设计的正确性和合理性。一般,一个大型数据库的设计过程往往需要经过多次循环反复。当设计的某步发现问题时,可能就需要返回到前面去进行修改。因此,在做上述数据库设计时就应考虑到今后修改设计的可能性和方便性。5.8过程设计775.8
过程设计
5.8.1程序流程图5.8.2N-S图5.8.3PAD图5.8.4过程设计语言785.8
过程设计
5.8.1程序流程图流程图是对过程、算法、流程的一种图形表示,它对某个问题的定义、分析或解法进行描述,用定义完善的符号来表示操作、数据、流向等概念。流程图分为数据流程图、程序流程图、系统流程图、程序网络图和系统资源图5种。这里主要介绍程序流程图。程序流程图也称为程序框图,是一种比较直观、形象地描述过程的控制流程的图形工具。它包含5种基本的控制结构:顺序型、选择型、先判定型循环(WHILE-DO)、后判定型循环(DO-WHILE)和多分支选择型。流程图的基本符号795.8
过程设计
5.8.1程序流程图流程图的控制结构805.8
过程设计
5.8.1程序流程图程序流程图的主要优点是:采用简单规范的符号,画法简单结构清晰,逻辑性强便于描述,容易理解程序流程图的主要缺点是:不利于逐步求精的设计图中可用箭头随意地对控制进行转移,与结构化程序设计精神相悖不易于表示系统中所含的数据结构当目标系统比较复杂时,流程图会变得很繁杂、不清晰815.8
过程设计
5.8.2N-S图N-S图是由Nassi和Shneiderman提出的,又被称为盒图,是一种符合结构化程序设计原则的图形工具。N-S图的基本符号如图所示。825.8
过程设计
5.8.2N-S图N-S图用类似盒子的矩形以及矩形之间的嵌套来表示语句或语句序列。N-S图内部没有箭头,因此,它所表示的控制流程不能随便进行转
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 客运车辆驾驶员操作测试考核试卷含答案
- 观赏鱼养殖工操作能力测试考核试卷含答案
- 消毒员岗前工艺分析考核试卷含答案
- 纯三氧化钨、仲钨酸铵、兰钨制取工岗前规章制度考核试卷含答案
- 四年级数学上册第六单元第五课时《秋游》教学设计
- 护理实践中的伦理决策与沟通技巧
- 2025年辽宁省公需课学习-全民健身计划实施方案1636
- 八年级语文下册第1课《社戏》导学案
- 2026年工业园区管委会招聘试题及参考答案
- 2026年非煤矿山安全管理试题及答案
- 绝缘子串分布电压耐受测试
- 2024年山西新华书店集团有限公司招聘笔试参考题库含答案解析
- 樱与刀:日本民间故事集
- 智能制造企业制造成熟度能力域打分表
- 3000 吨-年果蔬干、果蔬脯生产加工项目环评报告表
- 卢氏去世前后纳兰性德词风变化探究
- 欧姆龙cx-programmer操作手册
- GB/T 42756.1-2023卡及身份识别安全设备无触点接近式对象第1部分:物理特性
- 土地复垦-损毁预测
- 应用写作写作四要素
- GA/T 1772-2021机动车查验场地设置规范
评论
0/150
提交评论