GIS工程概论-第四章 GIS软件工程_第1页
GIS工程概论-第四章 GIS软件工程_第2页
GIS工程概论-第四章 GIS软件工程_第3页
GIS工程概论-第四章 GIS软件工程_第4页
GIS工程概论-第四章 GIS软件工程_第5页
已阅读5页,还剩144页未读 继续免费阅读

下载本文档

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

文档简介

第四章GIS软件工程第一节GIS软件工程概述第二节软件生存期模型第三节软件工程方法第四节可行性分析和需求分析第五节总体设计第六节详细设计第七节程序编写与调试第八节软件测试与维护第一节GIS软件工程概述一、软件工程的定义二、GIS软件开发的过程软件是计算机系统中与硬件相互依存,确保硬件设备正常运转的部分,包括程序、数据及其相关文档的完整集合。软件开发非常复杂。1983年IEEE给出的软件工程定义为:“软件工程是开发、运行、维护和修复软件的系统方法”。从学科角度来看,软件工程是一门指导计算机软件开发和维护的工程学科。软件工程项目的基本目标是尽量以最低的开发成本和维护成本,完成能满足用户需求的、易于移植的软件开发任务。1软件工程的定义GIS软件工程概述①软件规格说明,规定软件的功能和运行的限制条件;②软件开发,开发出满足规格说明的软件;③软件确认,确认软件能满足用户的要求;④软件演进,依据用户的新要求,在软件的使用过程中修改软件。2GIS软件开发的过程GIS软件工程概述软件工程过程活动的基本部分GIS软件开发的过程大致分为四个部分,即系统分析、系统总体设计、系统详细设计与开发及系统运行和维护。(具体内容见下面的两页)2GIS软件开发的过程GIS软件工程概述2GIS软件开发的过程GIS软件工程概述第二节软件生存期模型一、软件生存期二、瀑布模型(WaterfallModel)三、原型模型(PrototypeModel)四、螺旋模型(SpiralModel)五、喷泉模型(WaterFountainModel)六、智能模型(IntelligentModel)七、统一软件过程模型(UnifiedProcess)八、敏捷过程模型一个软件产品或软件系统经历孕育、诞生、成长、成熟、衰亡的阶段,一般称为软件生存期。软件生存期包括制定计划、需求分析和定义、软件设计、程序编写、软件测试、运行和维护。软件生存期也可分为可行性分析、需求分析、系统总体设计、系统详细设计与开发和系统运行维护五个阶段。软件生存期模型有很多种,例如瀑布模型、原型模型、螺旋模型、喷泉模型和智能模型等。1软件生存期软件生存期模型瀑布模型是指在软件开发的每个阶段,输入和输出都应当得到确认,否则,回到上一个阶段,或更上一个阶段。2瀑布模型(WaterfallModel)软件生存期模型瀑布模型以里程碑开发原则为基础,提供各阶段的检查站点,满足预算和时间限制,但瀑布模型不灵活,一旦返工,必须付出很高的代价。适合于功能和性能明确、完整、无重大变化的软件开发。2瀑布模型(WaterfallModel)软件生存期模型软件原型化方法是指在软件开发的开始阶段快速分析构造出一个小型的软件系统,满足用户的基本要求,随后,开发者依据用户的评价和反馈,不断试验、纠错、使用、评价和修改,从而提高软件的质量。软件原型模型的基本步骤是:①分析基本需求;②开发原始模型;③程序编制和模型修正,并通过与用户的交流取得对系统要求和开发潜力的新认识,调整系统方案;④修正原型,根据新的用户需求,决定系统是继续改进还是终止。3原型模型(PrototypeModel)软件生存期模型①探索型:主要在目标模糊、开发经验不足的情况下使用,目的达到即被抛弃,原型不作为最终产品;②实验型:主要用于大型软件的开发,系统的形成和发展是逐步完成的,它是高度动态迭代的,每次迭代都要对系统进行规格说明、重新设计、重新实现和重新评价,是对付变化最为有效的方法,这也是与瀑布开发的主要不同点;③进化型:在目标明确的情况下使用,系统易于变化,可以追加新的功能。3原型模型(PrototypeModel)软件生存期模型原型的类型3原型模型(PrototypeModel)软件生存期模型复杂的大型软件,开发一个软件原型往往达不到要求。螺旋模型把瀑布模型和原型模型结合起来,并加入风险分析,弥补了两种模型的不足。在螺旋模型中,多涉及多个软件原型,且在不同原型的开发阶段之前必须进行风险分析。4螺旋模型(SpiralModel)软件生存期模型喷泉模型的最大特点是允许系统的某些部分重复工作,相关的功能在每次迭代中随之加入演化的系统;分析、设计和编码之间不存在明显的界限,喷泉模型主要用于支持面向对象软件的开发过程。5喷泉模型(WaterFountainModel)软件生存期模型智能模型是基于知识的软件开发模型,它把专家系统与其他软件生存期模型结合在一起。智能模型应用基于规则的系统,采用推理机制帮助软件人员完成开发工作。为此,建立了知识库或专家系统,将模型、软件工程知识与特定领域的知识分别存入知识库或专家系统。6智能模型(IntelligentModel)软件生存期模型统一软件过程(UP)包括一系列的周期,每个周期都包括若干次的迭代,并终结于一个系统的发布。UP迭代可以分为4个阶段:(1)开始阶段,前一次或两次迭代构成了开始阶段,这个阶段产生了一个简化的用例模型、一个实验性软件架构和一个项目计划。(2)细化阶段,包括下几轮迭代,在这个阶段,大部分用例被明确,并生成代表软件架构设计的UML框图,软件系统最关键的用例被设计和实现。(3)构建阶段,剩下的用例被迭代地开发并集成进系统。(4)过渡阶段,部署软件系统,这包括用户培训、测试、纠正缺陷和功能提升。7统一软件过程模型(UnifiedProcess)软件生存期模型7统一软件过程模型(UnifiedProcess)软件生存期模型敏捷开发以人为核心,是一种迭代、循序渐进的开发方法。。敏捷过程强调短的迭代周期和小增量的频繁发布,在每次迭代中都或多或少包括需求分析、实施、集成、测试和部署行为。敏捷过程可以看成是瀑布过程的一个垂直切片,每个切片代表一次迭代,一次迭代持续一周到三个月。8敏捷过程模型软件生存期模型8敏捷过程模型软件生存期模型(1)通过尽早和持续地交付有价值的软件来使客户满意。(2)欢迎对需求提出变更,即使到了项目开发的后期,也要善于利用需求变更,帮助客户创造竞争优势。(3)经常性交付可以工作的软件,交付的间隔可以从几个星期到几个月,并且交付的时间间隔越短越好。(4)在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。(5)要善于激励项目人员,给他们提供所需要的环境和支持,并且信任他们能够完成工作。敏捷宣言8敏捷过程模型软件生存期模型(6)团队内或团队间,最具有效果且富有效率的传递方法就是面对面交流。(7)可用的软件是衡量进度的主要指标。(8)敏捷过程提倡可持续的开发速度,责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。(9)坚持不懈地追求技术卓越和良好设计,将会增强敏捷能力。(10)要做到简单,即尽最大可能减少不必要的工作,这是一门艺术。(11)最好的架构、需要和设计出自于有组织的团队。(12)每个一定的时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。8敏捷过程模型软件生存期模型(1)用户必须积极参与。(2)必须授权团队做决定。(3)需求变化,但时间表不变。(4)轻量化、可视化地在较高层次捕获需求。(5)进行小的、迭代增量式开发。(6)专注于软件产品的频繁发布。敏捷原则(7)完成每个功能后再做下一个功能。(8)应用80-20准则(这也叫“足够好就足够”法则)。(9)将测试集成在整个项目的生命周期里,尽早并经常地测试。(10)所有利益相关者的合作方法是至关重要的。8敏捷过程模型软件生存期模型Scrum(

(橄榄球)并列争球的全体前锋)是一种应用广泛的敏捷开发方法,Scrum中的迭代叫做sprint(冲刺),每个sprint持续30天左右。Scrum的一个显著特征是每天15分钟的Scrum会议,会上团队成员会交换进展情况来增进相互了解;另一个显著特征是在每个sprint结束时会有一个团队的反省和回顾。8敏捷过程模型软件生存期模型Scrum将开发过程分为多个Sprint周期,Sprint代表一个2~4周的开发周期。首先,产品需求被分成不同的产品需求积压条目。然后,在Sprint计划会议上,最重要的产品需求积压被首先安排到下一Sprint周期中。每个Sprint周期结束后,把一个可使用的系统交付给客户,同时进行Sprint审查会议。第三节软件工程方法一、结构化方法二、面向对象方法三、敏捷方法四、面向构件、组件和中间件的软件工程方法五、面向代理的软件工程方法六、面向服务的软件工程方法七、软件工程方法的总结结构化方法,也可称为面向功能或面向数据流的软件工程方法。该方法基于模块化的思想,采用“自顶向下,逐步求精”的技术对系统进行划分。结构化分析的步骤始于构建一个顶层数据流图,叫做上下文图,它将系统作为一个单独的过程进行描述,并与外部实体和外部数据存储交互。后续步骤逐步地将复杂过程分解成较简单的过程,即有明确输入、输出、数据结构以及这些过程的算法。1结构化方法软件工程方法面向对象的软件工程方法包括面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP)、面向对象测试(OOT)和面向对象软件维护(OOSM)等主要内容。2面向对象方法软件工程方法类是具有相同属性和服务的一组对象集合,它为属于该类的全部对象提供统一的抽象描述,其内部包括属性和服务两个主要部分。构建类所依据的原则是抽象,即忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性。对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。2面向对象方法软件工程方法①抽象:包括过程抽象和数据抽象,过程抽象是指任何一个完成确定功能的操作序列,也是一个单一的实体;数据抽象是根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这里的操作来修改和观察。②封装:把对象的属性和服务结合为一个不可分的系统单位,并尽可能隐蔽对象的内部细节。③继承:特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。④分类:把基本相同属性和服务的对象划分为一类,用类作为函数对象的抽象描述。面向对象分析的原则2面向对象方法软件工程方法⑤聚类:把一个复杂事物看成若干比较简单事物的组装体;⑥关联:是指通过一个事物联想到另外的事物,表达事物之间的静态联系;⑦消息通信:对象之间只能通过消息进行通信,而不允许在对象之外直接地存取对象内部的属性;⑧粒度控制:人思考问题时有微观和宏观之分,在OOA中应控制所研究问题的相对完整性、独立性,不宜过大也不宜过小;⑨行为分析:问题域中各种行为往往相互依赖、相互交织,OOA中需要控制行为复杂性,需要明确行为的归属和作用范围、行为的依赖关系、行为的起因、并发行为、对象状态对行为的影响。2面向对象方法软件工程方法OOA方法建立的系统模型包括基本模型和补充模型。基本模型就是一个类图,类图的主要构成成分是类、属性、服务、一般-特殊结构、整体-部分结构、实例连接和消息连接。2面向对象方法软件工程方法基本模型的信息可以用3个层次来表达:①对象层:给出系统中所有反映问题域与系统责任的对象,用类符号表达属于点-类的对象,这是构成系统的基本单元;②特征层:给出几个类的属性与服务;③关系层:给出几个类之间的关系,这些关系包括继承关系、组装关系、属性的静态依赖关系、服务的动态依赖关系。2面向对象方法软件工程方法补充模型是主题图、用例和交互图。主题是把一些具有较强联系的类组织在一起而得到的类聚合。用例是对系统功能使用情况的一个文字描述序列,具体地说明活动者描述系统边界向系统发什么信息,系统进行什么处理以及返回什么信息。交互图是一个用例与完成相应功能的系统成分之间的对照图。OOA方法的优点是:①加强了对问题域和责任系统的理解;②改进与分析有关的各类人员之间的交流;③对需求的变化具有较强的适应性;④支持软件复用;⑤贯穿软件生命周期全过程的一致性;⑥有利于用户参与。3敏捷方法软件工程方法敏捷方法是一组轻量级开发方法的总称,它包含了很多具体的开发过程和方法。每一种方法都基于一套原则,这些原则实现了敏捷方法所宣称的理念(敏捷宣言)。主要的敏捷方法(1)极限编程法(ExtremeProgramming,XP):其主要目的是降低需求变化的成本。比如为了能及时得到用户的反馈,XP要求客户代表每天都必须与开发团队成员在一起。同时,XP要求所有的编程都采用结对编程的方式。(2)并列争球法(Scrum):Scrum是一个敏捷开发框架,它由一个开发过程、几种角色以及一套规范的实施方法组成。它可以被运用于软件开发、项目维护,也可以被用来作为一种管理敏捷项目的框架。3敏捷方法软件工程方法(3)水晶法(CrystalClear):每一个不同的项目都需要一套不同的策略、约定和方法论。水晶法正是基于这一理念的一组方法。(4)动态系统开发方法(DynamicSystemsDevelopmentMethod,DSDM):DSDM在普遍的敏捷价值和原则的基础上,定义了更加详细的流程,以涵盖更完整的项目生命周期。同时,每个过程都定义了诸如如何将每个功能模型转化为实际代码、如何将原型交付最终用户使用并审查、如何处理反馈信息等的详细步骤。(5)特征驱动开发法(FeatureDrivenDevelopment,FDD):将用户的功能需求划分成更小的功能特征,然后逐步在每个迭代周期中开发实现这些产品特征。3敏捷方法软件工程方法敏捷方法的两个阶段敏捷方法有两个主要阶段:计划阶段和迭代阶段。在计划阶段,开发团队会和客户代表和用户见面来确认需求,并从需求得出用例。在迭代阶段,开发团队也会生成结构设计和计划来开发和部署用例。3敏捷方法软件工程方法XP的核心实践(1)团队意识。(2)项目规划。(3)小型发布。(4)客户验收。(5)集体代码所有。(6)程序设计标准/程序设计规约。(7)恒定速率。(8)系统隐喻。(9)持续集成。(10)测试驱动开发。(11)重构。(12)简单的设计。(13)结对编程。4面向构件、组件和中间件的软件工程方法软件工程方法软件工程中的构件是指一个具有规范接口和确定的上下文依赖的组装单元,它能够独立部署或第三方组装。基于构件的软件工程开发的整个过程,在完成体系结构设计后,并不立即开始详细设计,而是确定哪些部分可由构件组装而成。如果现有构件的组装无法满足需求,就只能采用传统的或面向对象的软件工程方法开发新构件。面向构件的方法4面向构件、组件和中间件的软件工程方法软件工程方法(1)构件识别。通过接口规约以及其他约束条件,判断构件是否能在新系统中复用。构件识别分为发现和评估两个阶段。(2)构件适配。针对不同的应用需求,用户可以选择独立开发构件或选择可复用的构件进行组装。(3)构件组装。构件必须通过某些良好定义的基础设施才能组装成目标系统。(4)构件演化。基于构件的系统演化往往表现为构件的删除、替换或增加,其关键在于如何充分测试新构件以保证其正确工作,且不对其他构件的运行产生负面影响。基于构件的开发过程的活动4面向构件、组件和中间件的软件工程方法软件工程方法组件技术的思想在于创建和利用可重用的软件组件来解决应用软件的开发问题,只规定组件的外在表现形式,而不关心其内部实现方法。优点:①已有的大量组件模型减少了用户开发的工作量,使开发周期大大缩减;②工作量的大大降低也同时降低了开发成本;③增加软件的灵活性,可以针对使用者的不同需求,只需要更换、修改应用中的一个或几个组件就可以实现;④降低软件维护费用,基于组件开发的应用软件维护只需要通过修改组件来实现,而不需要对整个软件进行全方位的大规模修改。面向组件的方法4面向构件、组件和中间件的软件工程方法软件工程方法中间件能使处于应用层中的各个应用成分之间实现跨网络协同工作,根据中间件在系统中所起的作用和采用的技术不同,可以把中间件分为不同类别:①数据访问中间件,是在数据服务器中建立数据应用资源互操作的模式,实现异构环境下数据库联接或文件系统联接的中间件,数据访问中间件在所有的中间件中是应用最广泛、技术最成熟的一种;②远程过程调用中间件,在客户/服务器计算方面,程序员编写客户方的应用,需要时可以调用位于远端服务器上的过程,而且这种调用可以跨不同操作系统平台;面向中间件的方法4面向构件、组件和中间件的软件工程方法软件工程方法③消息中间件,能在不同平台之间通信,实现分布式系统中可靠的、高效的、实时的跨平台数据传输,适用于需要在多个进程之间进行可靠的数据传送的分布式环境;④面向对象的中间件,是对象技术和分布式计算发展的产物,它提供一种通讯机制,透明地在异构的分布计算环境中传递对象请求,而这些对象可以位于本地或者远程机器;⑤其他的中间件技术还包括安全中间件、移动中间件和网络即插即用中间件等。面向中间件的方法5面向代理的软件工程方法软件工程方法面向代理(Agent)是一个处于特定环境中,能感知并灵活、自主适应环境,可以代理设计者或使用者实现一定任务的具有较高自治能力的计算机实体。面向代理软件工程(Agent-OrientedSoftwareEngineering,AOSE)是在面向过程技术、面向对象技术、面向构件技术的基础上发展起来的,Agent软件工程的核心思想是将代理作为工程化软件系统的主要设计观念。代理技术用来描述具有自适应和自治能力的硬件、软件或其他任何自然物和人造物。5面向代理的软件工程方法软件工程方法(1)通信模块。通信模块不断地监测来自外界或其系统中其他软件代理的信息流,并对外部信息流进行合法性检测。对于有效的消息,通信模块将其提交给调度模块做进一步处理。(2)承诺业务处理集合。承诺业务处理集合是软件代理可处理的所有业务集合。它是调度模块决定是否接收通信模块传递消息的重要依据。(3)调度模块。对于那些不在承诺业务处理集合范围内的消息,调度模块将予以拒绝;对于那些承诺的业务处理,调度模块将根据消息的类型和内容从知识库中获取问题求解规则,然后依据规则的定义,调用构件库中的一个或多个构件来处理外界请求,将处理结果传递给通信模块传递给外界。软件代理的组成5面向代理的软件工程方法软件工程方法(4)数据库。在业务处理过程中,软件代理自身状态的变化记录在数据库中,业务处理所需要的所有内部数据也都存储在数据库中。(5)知识库。知识库记录了软件代理求解问题所需要的所有知识,包括描述性知识和判断性知识。描述性知识描述了应用领域内各对象的特征及结构,而判断性知识是与应用领域有关的业务处理规则。(6)构件库。构件库的思想就是从业务处理过程中提取具有共性的数据和操作,并按照对象的属性和特点设计成一个个构件,然后封装成一个个处理动作,最后由调度模块组成某个软件代理所需要的业务处理流程。软件代理的组成6面向服务的软件工程方法软件工程方法面向服务的体系结构(ServiceOrientedArchitecture,SOA)是一个组件模型,将应用程序的不同服务进行拆分,并用这些服务之间定义良好的接口和契约联系起来。SOA能够帮助软件工程师们理解企业级架构中的各种组件的开发、部署形式,它帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。在面向服务的软件工程中把服务当做软件开发的基本组成部分,可以组合并配置服务来创建新的复合服务。服务组合的基础通常是一个工作流。7软件工程方法的总结软件工程方法第四节可行性分析和需求分析一、可行性分析二、需求分析用最小的代价在尽可能短的时间内,确定问题是否能够并值得被解决。资源和时间是有限的,在GIS工程开始时必须进行风险分析和可行性分析,两者是密切相关的。1可行性分析可行性分析和需求分析可行性分析的目的可行性分析主要考虑的因素经济可行性、技术可行性、法律可行性和方案可行性等。可行性分析的结果可以用相应的可行性研究报告阐述。1可行性分析可行性分析和需求分析影响GIS软件开发是否可行的因素①分析现有GIS软件的优缺点;②分析GIS软件使用对象的要求;③分析技术方法的可行性;④选择需要开发的所有模块,并分析已有算法的实用性;⑤地理空间数据管理模式的选择;⑥估计开发成本和时间;⑦提交可行性分析报告。1可行性分析可行性分析和需求分析GIS软件开发的可行性分析步骤可行性分析的调查分析方法通过对现行GIS软件的调查,发现现行系统存在的问题;初步确定将要建立GIS软件的主要目标和功能;估计新建GIS软件可能带来的效益;通过对用户的资金、数据资料、系统效益和技术力量等方面进行调查分析,来判断建立GIS软件是否可行。①通过用户调查,弄清用户有什么问题、需要什么;②理清部门、业务、业务流程、数据之间的关系;③构思一个概念级别的系统方案,包括业务流程模型、数据模型、系统结构;④将用户需求转换成与技术无关的需求规范。2需求分析可行性分析和需求分析需求分析做什么?①准备工作:拟定调查表格和访谈提纲,指定项目参与人员,制定工作进度计划,并预约用户;②组织现状调查:概括性地了解组织的结构、使命、业务和信息化程度,所在行业的竞争状态,组织目前面临的挑战,主要与组织管理层和少数用户代表进行交流;③用户需求调查:使用问卷、访谈、研讨等方式,了解用户的信息化现状、业务需求以及用户对软件的期望,并对已有的数据资源和文档资料进行整理、汇总;2需求分析可行性分析和需求分析需求分析的过程④用户需求分析:根据组织的实际情况,使用多种方法对调查资料进行分类、简化和抽象,获得部门、应用和数据的组合表,并描述应用和数据的结构与流程;⑤需求分析报告撰写:在需求调查和分析的过程中,就开始撰写需求分析报告,经过讨论、审查多个环节的反复修改,逐步完善报告书,明确地定义用户需求;⑥需求分析报告的确认:用户代表和组织管理层确认需求分析报告,如果报告书的内容存在问题,需要进行修改和补充,直到用户确认。2需求分析可行性分析和需求分析需求分析的过程1、业务需求业务需求反映了组织机构对软件系统项目业务处理方面的需求。业务需求分析是撰写项目建议书、提出项目立项的重要依据,是从整体层次分析项目,作为项目启动的重要依据。2、用户需求用户需求描述了用户为工作任务必须使用的功能和数据。用户需求分析需要详细描述用户需求,并依此归纳功能需求和相关数据,往往使用非技术的语言进行描述,同时不能引起歧义。2需求分析可行性分析和需求分析需求分析的内容3、功能需求功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。4、系统需求系统需求包括采用何种硬件、软件;选择何种配置;如何进行系统集成,满足用户的业务和功能需求。5、性能需求性能需求包括系统处理能力、系统可靠性、系统可扩展性和系统安全性需求等。2需求分析可行性分析和需求分析常见的用户需求的调查方法有用户访谈、问卷调查、会议研讨、现场考察等,这些是直接获取用户资料和信息的方法。此外,还可以使用咨询关键人物、进行文档(记录或报告)分析、网络搜索相关资料、与同行专家交谈、收集参考文献、阅读同类报告书等方法间接获取用户资料和信息。原因:GIS软件工程启动和规划阶段,要获得大量的用户信息,包括组织结构、目标、业务、人员等。2需求分析可行性分析和需求分析用户需求的调查方法2需求分析可行性分析和需求分析需求分析的考虑因素2需求分析可行性分析和需求分析需求分析的考虑因素结构化分析是一种面向数据流的分析方法,在结构化需求分析中主要解决的是“需要系统做什么”的问题,描述软件功能需求的工具是数据流图和数据字典。采用结构化分析方法,开发人员定义系统需要做什么,需要存储和使用哪些数据,需要什么样的输入和输出,以及如何将这些功能结合起来。这种分析方法打破了各项业务之间的界限,在全局范围内以功能、数据或者数据流为中心来进行分析。2需求分析可行性分析和需求分析结构化的需求分析方法结构化分析工具一般包括:数据流图、数据字典、结构化语言、判定树和判定表。2需求分析可行性分析和需求分析结构化分析工具数据流图以图形的方式表示数据从输入到输出的移动变换过程,有四个基本的图形元素:加工、输入源和输出汇点、数据流向、数据存储;数据词典定义数据流图中被命名的图形元素;判定表用于数据处理时需要一组条件才能判断的情况;判定树也是用来表达加工逻辑的一种工具。用面向对象方法进行需求分析的基本任务是:运用面向对象方法对问题域和系统功能进行分析和理解,找出描述问题域及系统功能所需的类及对象,定义这些类和对象的属性与服务,以及它们之间形成的结构、静态联系和动态联系。最终目标是得到用户需求,并能反映问题域和系统功能的OOA模型及其详细说明。2需求分析可行性分析和需求分析面向对象的需求分析方法(1)获取客户系统需求:可以采用用例的方法来收集客户的需求,由分析人员识别使用该系统的不同行为者,根据这些行为者如何使用系统,或者根据其希望系统提供什么功能形成用例集合,每个用例就是实现系统功能的独立子功能,所有行为者要求的所有用例就构成了系统的完整需求。(2)确定对象和类:从问题域或者用例描述中抽取相应的对象,并从中抽象出类,一组具有相同属性和操作的对象可以定义为一个类。确定对象和类的基本过程是:查找对象;筛选对象并确定关联;标识对象的属性并定义操作;识别类之间的关系。2需求分析可行性分析和需求分析面向对象的需求分析方法基本步骤用例是一个活动者使用一项功能时所进行的交互过程的文字描述序列。用例将构成对系统外部可见行为的穷举式描述。用例对OOA的意义可概括如下几点:(1)用例是对用户需求(主要是功能需求)的规范化描述。(2)用例集中地体现了系统功能,即人们期望系统对外部世界呈现的行为。(3)用例是建立交互图的依据。通过交互图,可以严格地对照检查系统的每一项功能需求是否都得到满足,以及这些需求是落实到哪些类中解决的。2需求分析可行性分析和需求分析在面向对象的需求分析中,最常用的统一建模语言(UnifiedModelingLanguage,UML)是面向对象开发系统的产品进行说明、可视化和编制文档的一种标准语言,主要的图示包括用例图、顺序图、状态图、协作图和活动图。用例图主要回答了两个问题:一是谁用软件;二是软件有哪些功能。2需求分析可行性分析和需求分析顺序图描述了对象之间消息发送的先后顺序,强调时间顺序,主要用途是把用例表达的需求转化为更加正式的精细表达,更有效地描述如何分配各个类的职责以及各类具有相应职责的原因。2需求分析可行性分析和需求分析状态图由状态变迁、事件和活动组成,用来描述类的对象所有可能的状态以及事件发生时状态的转移条件。协作图描述了收发消息的对象的组织关系,强调对象之间的合作关系。活动图是状态图的一种特殊情况,这些状态大多处于活动状态,描述了活动到活动的控制流。2需求分析可行性分析和需求分析交互图是一种详细表示对象之间以及对象与系统外部的活动者之间动态联系(即行为依赖关系)的图形。2需求分析可行性分析和需求分析GIS软件工程用户需求分析报告包含:背景介绍、项目目标与范围、组织与业务、地理范围、用户情况、功能需求列表、所需地图数据列表、所需表格数据列表、数据库需求描述、界面需求描述、软件选择、硬件选择、项目进度及其所需资源和花费等。GIS软件工程的用户需求分析报告最核心的内容是:需要开发的应用、功能、数据,也常常包括空间地理数据的需求、集成和维护的需求。2需求分析可行性分析和需求分析用户需求分析报告第五节总体设计一、总体设计的步骤二、结构化总体设计方法三、面向对象总体设计方法四、软件架构设计五、安全功能设计六、GIS用户界面设计七、总体设计文档(1)制定规范。确定需求的优先顺序;选择合适的设计方法;规范设计文档的标准;规定编码、接口、命名等的规则。(2)根据用户需要,确定系统的逻辑模型。(3)系统结构设计。将系统分解为一组模块,各个模块分别满足所提出的需求。(4)将分解出来的模块,按照是否能满足正常的需求进行分类;对不能满足正常需求的模块需要进一步调查研究,修改系统结构;分析模块之间的调用关系和接口;评价模块划分的质量。1总体设计的步骤总体设计总体设计的步骤(5)算法设计。确定和评估算法的性能;算法和模块之间的控制方法;外部信号的接收和发送形式。(6)数据结构设计。确定系统的文件结构、数据库模式和子模式;数据的完整性和安全性设计。(7)界面设计。(8)可靠性设计。确定软件的可靠性指标和相应措施。(9)编写总体设计文档。1总体设计的步骤总体设计总体设计的内容主要包括体系结构设计、构件(模块)设计、数据设计、界面设计,相当于寻找实现目标系统的各种不同方案。总体设计的结构化方法是基于模块化、自顶向下逐层细化程序设计技术基础上发展起来的。体系结构设计模型定义软件中各个主要结构元素之间的关系,确定一种架构模式。构件(模块)设计将一个复杂系统按功能进行模块划分,建立模块的层次结构及调用关系,确定模块间的接口及人机界面等。数据设计是将需求分析阶段产生的信息模型转化为实现软件的数据结构过程,数据对象、数据之间的关系以及数据的内容是数据设计活动的基础。界面设计定义软件内部的通信与系统的交互以及人机操作界面等。1总体设计的步骤总体设计总体设计的内容(1)从GIS软件的需求规格说明中弄清数据流加工的过程,得到数据流图。(2)根据数据流图决定问题的类型,然后针对不同的类型分别进行分析处理。(3)由数据流图推导出GIS软件的初始结构图。(4)利用一些调控性原则来改进GIS软件的初始结构图,直到得到符合要求的结构图为止。(5)修改和补充数据词典。2结构化总体设计方法总体设计结构化方法的总体设计步骤数据流程图表述了数据流动、存储、处理的逻辑关系,也称为逻辑数据流程图。绘制数据流程图时的注意事项:①关于层次的划分:随着处理的分解,功能越来越具体,数据存储、数据流越来越多,怎样划分层次,划分到什么程度,没有绝对标准,一般认为展开的层次与管理层次一致,也可以划分得更细;②检查数据流程图:尽管我们对问题的理解有不正确、不确切的地方,但还是应该根据我们的理解,用数据流程图表达出来,进行核对,逐步修改;③提高数据流程图的易理解性。2结构化总体设计方法总体设计数据流程图从功能设计出发把系统进行模块化的分解,由主程序调用分解的子程序模块来实现完整的系统功能。以需求分析的结果为依据划分模块,并组成模块的层次结构。在系统的功能确定后,可以进一步细化系统的功能,并建立模型图。2结构化总体设计方法总体设计模块化数据是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材,是信息的表现形式和载体。数据设计包括:①选择数据对象的逻辑表达方式;②确定涉及数据结构的模块;③建立数据规格说明。2结构化总体设计方法总体设计数据及文件的设计数据文件设计过程包括:数据元素的整理、分析数据之间的关系、文件的逻辑设计、文件特点的分析、文件组织方法的确定、文件的存储介质选择、文件记录格式、文件存取时间和文件存储容量。记录的布局应当考虑的问题包括:记录的长度、数据项的顺序、数据项的属性、预留空间、估计的存取时间、文件容量。另外,若数据存储在数据库中,则需要确定数据库读写数据的方式和方法。2结构化总体设计方法总体设计数据及文件的设计①减少设计复杂性:通过将一些大目标的实现转化为一些相对独立的小目标来实现;②结构独立:将功能性程序划分成多个相对独立的程序模块,可以保证在解决被划分的问题时能够花费较小的开销;③易于进行软件修改:它能够非常方便地进行软件的修改,包括改正错误和实现新需求;④易于开发和维护;⑤加强了可重用代码的能力。2结构化总体设计方法总体设计结构化方法的优点面向对象方法是建立在数据抽象和面向对象的基础上,将数据和其对应的操作封装在一个抽象数据类型(或者对象)中的方法。整个系统可以看成是对象的集合,每一个对象都有自己的功能集合。面向对象的设计方法是一种自底向上和自顶向下相结合的方法,基本思想是将软件系统所面对的问题按其自然属性进行分割,并尽可能按人们的思维方式进行描述,建立每个对象的模型和联系。面向对象的设计方法更接近于面向问题,而不是对程序的描述,这种形式更便于程序设计人员与应用人员的交流。3面向对象总体设计方法总体设计(1)发现对象、定义它们的类。(2)识别对象的内部特征:定义属性、定义服务。(3)识别对象的外部关系:建立一般-特殊结构、建立整体-部分结构、建立实例连接、建立消息连接。(4)划分主题,建立主题图。(5)定义用例、建立交互图、发现活动者。((4)、(5)两个活动建立OOA补充模型,在有些情况下可以省略)。3面向对象总体设计方法总体设计面向对象方法的总体设计过程(6)建立详细说明(这是对模型的详细定义与解释,可以作为独立的活动,更自然的做法是分散在其它活动之中)。(7)原型开发(这个活动应该在OOA过程中反复进行)。3面向对象总体设计方法总体设计UML事物是对模型中最具有代表性的成分的抽象,UML中的事物主要有四种:结构事物、行为事物、分组事物、注释事物。3面向对象总体设计方法总体设计结构事物结构事物是UML模型中的名词,是模型的静态部分,描述概念或物理元素。①类(class),在图形上,把一个类画成一个矩形,通常矩形中写有类的名称、类的属性和类的操作。②接口(interface),是描述一个类或构件的一个服务操作集。③协作(collaboration),定义了一个交互,协作是一组类、接口和其他元素的群体。④用例(usecase),在图形上,把一个用例画成一个实线椭圆,通常仅包含它的名称。⑤主动类(activeclass),是指其对象至少拥有一个进程或线程,因此它能够启动控制活动。⑥构件(component),是系统中物理的、可替代的部件,它遵循且提供一组接口的实现。通常构件是一个描述了一些逻辑元素(如类、接口和写作)的物理包。⑦节点(node),是在运行时存在的物理元素,它表示了一种可计算的资源,它通常至少有一些记忆能力和处理能力。3面向对象总体设计方法总体设计3面向对象总体设计方法总体设计行为事物行为事物(behavioralthing)是UML模型的动态部分,它们是模型中的动词,描述了跨越时间和空间的行为,共有两类主要的行为事物。①交互(interaction)是由在特定语境中共同完成一定任务的一组对象之间交换的信息组成的一种行为。②状态机(statemachine)描述了一个对象或一个交互在生命期内响应事件所经历的状态序列以及它们对事件的响应,是一种行为。3面向对象总体设计方法总体设计分组事物与注释事物分组事物(groupingthing)是UML模型中负责分组的部分。在所有的分组事物中,最主要的分组事物是包(package)。包是把元素组织成组的机制,结构事物、行为事物甚至其他的分组事物都可以放进包中。注释事物(annotationalthing)是UML模型的解释部分,这些注释事物用来描述、说明和标注模型的任何元素,其中一种主要的注释事物称为注解(note)。3面向对象总体设计方法总体设计UML中的关系(1)依赖(dependency)是指两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)。(2)关联(association)是一种结构关系,它描述了一组链,链是对象之间的连接。聚合是一种特殊的关联,它描述了整体和部分间的结构关系。(3)泛化(generalization)是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。(4)实现(realization)是类元之间的语义关系,其中的一个类元指定了由另一个类元保证执行的契约。3面向对象总体设计方法总体设计实例连接(instanceconnection)用于表达对象之间的静态联系。所谓静态联系是指最终可通过对象属性来表示的一个对象对另一个对象的依赖关系。线一端所标的数表明本端的一个对象将和另一端几个对象建立连接,即它是本端对另一端的要求。一个GIS工程可以包含0到多个图层;而某个特定应用层只能属于某个GIS工程。实例连接也可以带有属性,也可以把这种实例连接定义为一个类。UML中的实例连接4软件架构设计总体设计架构设计过程4软件架构设计总体设计(1)N层架构。把系统组件组织成一些相对独立、松耦合的层。每层都有一个明确定义的功能,这样就减少了变化对其他层的影响,这对于交互式系统的设计很有用。(2)客户端—服务器架构。这个架构由一个服务器向若干客户端提供服务。(3)主程序和子程序架构。将系统的组件组织成树形架构,其中计算始于主程序,然后由其子孙沿着树向下进行,这对于设计转换型或面向工作流的系统很有用。常见的架构类型4软件架构设计总体设计(4)事件驱动的系统架构。一个基于状态的控制器,控制一些组件并与它们交互。控制器知道这些组件,反之亦然,但是这些组件之间互相隔离,组件之间的通信需通过控制器,这对于设计事件驱动的嵌入式系统很有用。(5)持久性框架架构。这种架构隐藏了数据库和文件系统,将它们与使用它们的对象解耦。也就是说,对象意识不到这类存储设备的存在,因此,所有对数据库和文件系统的改变都不会对对象有影响。常见的架构类型4软件架构设计总体设计软件体系结构经历了多个发展阶段:从主机/终端(Host/Terminal,H/T)体系结构,到客户机/服务器(Client/Server,C/S)体系结构、浏览器/服务器(Browser/Server,B/S)体系结构和多层体系结构等。1、H/T体系结构早期的软件大多采用H/T体系结构。20世纪70年代出现了主机/多用户系统,尽管本质上一台计算机在工作,但是多个终端用户可以同时上机,并行操作,每个终端都在特定时间内独占主机资源。典型软件体系结构4软件架构设计总体设计2、C/S体系结构C/S模式应用系统包括客户端运行系统,也包括服务器端运行系统,所以是二层结构。在这种C/S体系结构中存在“胖客户机”或者“胖服务器”。在处理复杂应用时,客户端与后台数据库服务器数据交换频繁,易造成网络瓶颈,为解决这类问题,出现了三层结构。4软件架构设计总体设计3、B/S体系结构B/S结构不需要针对某一操作系统(如Windows、Linux等)进行专门的终端程序开发及维护,也无须客户进行任何软件的安装,只需对服务器端进行开发,实现了应用程序的共享。B/S三层结构是一种逻辑上的结构,物理上分多少层可以根据需求来决定。4、多层体系结构每个体系结构可以演化出更多的体系结构,例如B/S体系架构可以演化为多层模式。4软件架构设计总体设计大多数基于Web决策支持系统(DecisionSupportSystem,DSS)的设计围绕三层或更高层的架构,三层架构是在简单的两层模型基础上在中间插入一个动态处理层,其中决策支持功能被专用的Web服务器上运行的应用程序脚本或包处理。ESRI公司的ArcWeb服务向用户提供了种类繁多的地理内容,包括基础地图、业务数据、兴趣点,以及如天气等信息的动态数据等。Web架构4软件架构设计总体设计比较典型的网格体系结构主要有两个:1)IanFoster提出的五层沙漏结构,2)以IBM等为代表的IT企业界结合WebService所提出的开放网络服务结构(OpenGridServerArchitecture,OGSA)。网格服务体系结构4软件架构设计总体设计1、五层沙漏结构根据网格中组成部分与共享资源的距离,把实现共享资源的操作、管理和使用的功能分散布置在五个不同的层次,叫五层沙漏结构的网络体系结构。构造层是物理或逻辑实体,控制局部的资源。连接层是网络中事物处理、安全通信与授权控制的核心协议。资源层共享、控制单一资源,实现资源的注册、分配与监视等。汇集层汇集、协调各种资源,供虚拟组织的应用程序共享与调用。应用层即指网格中的用户应用程序层,应用程序通过调用各层提供的API及网格上的各种资源来提供不同的应用服务。4软件架构设计总体设计2、开放网格服务体系结构建造OGSA的两大支撑技术是Globus和WebService。Globus认为,在网格环境中,所有可用于共享的主体都是资源,如计算机、高性能网络设备、昂贵的仪器、大容量的存储设备、各种数据、软件、分布式文件系统、数据库等均是资源。因此,资源的概念在网格环境中可以被理解为对用户有价值的东西。实际上,Globus主要研究资源的访问接口,即如何把资源安全、有效、方便地提供给用户使用。它的主要工作是建立一套支持网格计算的通用协议,提供一系列支持网格计算的服务和开发工具。4软件架构设计总体设计网格地理信息服务的体系结构有网格环境、网格地理信息服务部署、网格地理信息服务工具和应用四个层次组成。4软件架构设计总体设计2000年之后,面向服务的架构(Service-OrientedArchitecture,SOA)成为面向对象模型的替代模型,它具备分布式、跨平台、互操作和松散耦合等特点。发展过程见插图。面向服务的架构4软件架构设计总体设计SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过服务之间定义良好的接口和契约联系起来。SOA是按需连接资源的系统,是一种用于构建分布式系统的构架方法和理念,它的核心是依据这种方法构建的引用可以将功能作为服务交付给用户。SOA架构4软件架构设计总体设计在面向服务架构中,业务流程被分解为原子或组合式的服务。通过企业服务总线(EnterpriseServiceBus,ESB)实现服务的接入、组合和转换。ESB简单来说就是用来连接各个服务节点的一根管道。为了集成不同系统,不同协议的服务,ESB做了消息的转化解释和路由工作,让不同的服务互联互通。4软件架构设计总体设计另一种典型的架构是云计算架构,按照其提供服务能力及层次不同,分为三种形式SaaS(Software-as-a-Service,软件即服务)PaaS(Platform-as-a-Service,平台即服务)IaaS(Infrastructure-as-a-Service,基础设施即服务)云计算架构4软件架构设计总体设计SaaS是一个典型的云端服务架构,主要是通过共享数据库表、独立数据库实例或独立数据库系统,以及采用NOSQL(mangodb)等方式实现多租户的软件架构,即每个企业或团队用户都是作为一个租户来使用云端软件服务的。PaaS定位于通过互联网为用户提供一整套开发、运行和运营应用软件的支撑平台。就像在个人计算机软件开发模式下,程序员可能会在一台装有Windows或Linux操作系统的计算机上使用开发工具开发并部署应用软件一样。IaaS是指把IT基础设施作为一种服务通过网络对外提供。在此格式下,用户不需要自己构建存储而采用租用形式,降低费用。IaaS提供商为企业搭建信息化所需要的所有网络基础设施及软件、硬件运作平台。5安全功能设计总体设计地理信息安全就是防止地理信息资产被故意或偶然,非授权泄露、更改、破坏,以确保信息的完整性、保密性和可用性。安全功能设计的原则:(1)木桶原则。(5)等级性原则。(2)整体性原则。

(6)发展的原则。(3)安全性评价与平衡原则。(7)易操作性原则。(4)标准化与一致性原则。安全功能的设计原则5安全功能设计总体设计在系统安全模块(功能)设计过程中常包括以下几个层次:硬件安全、数据安全、系统安全、用户安全、应用安全等。详细内容:(1)硬件安全包括服务器等计算机安全、网络设备安全、外设安全及其他设备安全等。(2)数据安全包括数据使用安全、迁移安全、更新安全、备份安全、恢复安全等。(3)系统安全包括风险评估、病毒防范、非法入侵检测、系统安全审计等。(后续)安全功能设计的措施5安全功能设计总体设计(4)用户安全包括角色安全、权限安全、身份认证安全、用户认证安全等。例如对重要数据的用户读写权限控制,对于重要数据必须校验用户名,判断是否有权限使用数据读写模块,若无权限,则不能进入该模块。(5)应用安全包括访问控制、用户授权、单点登录、安全策略等。例如登录密码控制,进入系统时,需输入用户名及密码,正确才能进入。用户和密码的设置,可以通过系统管理员协调控制。5安全功能设计总体设计安全管理制度大力加强信息的安全管理制度建设,主要针对人员、设备、网络、系统以及数据五个方面设立管理制度。6GIS用户界面设计总体设计人机界面(Human-ComputerInterface,HCI)是人与计算机之间传递、交换信息的媒介,它集中体现了计算机系统的输入输出功能,以及用户对系统各个部件进行操作的控制功能。人机界面是用户与程序沟通的唯一途径,要能为用户提供方便有效的服务。人机界面设计的三大原则是:置界面于用户的控制之下、减少用户的记忆负担、保持界面的一致性。人机界面设计原则6GIS用户界面设计总体设计(1)使用的简单性。(2)学习的难易程度:人机界面中所用术语的标准化和一致性。(3)操作速度:快速的系统响应和较低的系统成本。(4)人机界面应具有容错能力。(5)复杂程度:考虑到用户的特点、能力、知识水平不同,因而对不同的用户应有不同的界面形式。(后续)人机界面设计考虑的因素6GIS用户界面设计总体设计(6)用户可以根据需要制定和修改界面方式。(7)系统能够按照用户的希望和需要,提供不同详细程度的系统响应信息,包括反馈信息、提示信息、帮助信息、出错信息等。(8)用户界面的可靠性。(9)开发的难易程度。人机界面设计考虑的因素6GIS用户界面设计总体设计GIS用户界面的主要特点如下:(1)用户多,难以都满足要求。(2)处理的数据量大,用户等待时间长。(3)地理空间信息的可视化方法多,界面的要求不同。(4)地理空间信息的查询方式多样,界面设计得比较复杂。GIS用户界面离不开常用的人机界面成份,例如菜单、对话框、窗口等。在GIS中图形和图像是常用的用户界面形式,GIS软件需要有一个图形窗口显示操作结果,命令行界面起到控制台的作用。GIS用户界面的特点与构成6GIS用户界面设计总体设计1、用户类型分析首先需要弄清什么类型的用户将要使用这个界面。用户特性分析的目的是要详细了解所有用户的技能和经验,以便能够预测他们对不同的界面设计会做出什么反应,针对用户的能力设计或更改界面。2、用户工作分析分析人员必须先了解GIS的应用领域和相关的业务流程。分析用户的观点,并且建立相应的用户思维模型。用户工作分析是系统内部活动的分解,采用自顶向下的方法,逐步进行功能分解。GIS用户界面的设计过程6GIS用户界面设计总体设计3、系统功能分解系统功能可以用数据流图和数据词典描述。在每个任务中,需要确定人和计算机的任务分配。任务分配会产生人的任务网络和计算机的任务网络。这两种网络都可以用数据流图来设计,其主要步骤是:①检查数据流图,标出哪些是单独由计算机完成的任务、哪些是单独由人完成的任务、哪些是由两者共同完成的任务。②对于共同完成的任务,将任务的每一个动作分配给计算机或人。③构成新的计算机的任务网络和人的任务网络。④ 计算机与人的协同动作需要再进一步细化,以确定人和计算机如何交互。6GIS用户界面设计总体设计4、工作方式设计任务需求与用户的能力要相匹配。在做工作设计时,应该检查任务流程以确认不会出现任务过载。如果有多个任务同时需要用户给予注意,往往由于命令的时间冲突而使用户陷入困境,结果出现任务过载,导致任务完不成。另一方面,即使任务流程计划得很好,在一般操作过程中不再会出现任务过载,但是由于错误和意外的发生,错误处理过程计划得不完全、无条理,也会出现任务过载。6GIS用户界面设计总体设计(1)地图显示区。地图主体显示区域,视野大小和地物详细程度由缩放和图层操作决定。地图显示区一般位于地图页面的正中位置。(2)工具条。经过统计发现,工具条主要位于在地图显示区上方,其次是左上方或位于地图下方,只有少数系统工具条设计在地图两侧。网络地图工具条的按钮形式多样,有图标类、文字类、图标文字兼有类等。(3)图层控制区。大多数地图操作区都有图层控制区。通过选择图层调整地图显示内容和详细程度。图层控制区习惯性设在地图显示区的左、右两侧,有的系统采用下拉式图层复选窗口。(后续)地图操作区用户界面6GIS用户界面设计总体设计(4)查询区。查询区功能具体包括检索空间范围选项、比较灵活,可以在地图显示区的上下左右各个方向。(5)信息提示区。查询地址列表、专题内容列表等,它常与查询区或图层控制区并列。地图操作区用户界面6GIS用户界面设计总体设计除基本功能区的设计外,交互制图区也是非常必要的,例如加点、画线、常用地图列表、保存地图、调出地图等功能。为了方便用户操作,要提供一些额外的操作,如漫游、放大显示、缩小显示、指定地图显示范围、设定地图显示比例尺和自由组织地图要素等。地理空间数据的输入和操作必然涉及图形图像界面,同时需要其它多种界面类型的配合。地理空间数据操作界面6GIS用户界面设计总体设计(1)输入确认。用户确认后才能把当前输入的数据存储,方便用户检查。(2)删除确认。当用户删除数据时,必须让用户确认。(3)取消确认。允许用户对自己的操作进一步考虑。(4)输入内容在屏幕上尽量保持一览性。(5)允许用户进行反复编辑,提供UNDO功能。(6)自动格式化,允许用户以较自由的方式输入数据,系统自动进行规范。(7)提示输入范围和格式。(后续)界面设计需要考虑的主要因素6GIS用户界面设计总体设计(8)验证,系统应当验证所有输入数据的合理性,并提供必要的验证信息。(9)提供用户可选的输入数据,系统可以列出所有的选项,供用户选择。(10)尽量使用先进的技术,例如光学字符自动识别、条形码、声音数据输入等技术。(11)突出显示当前输入的目标和状态,如节点、顶点的显示。(12)图形编辑功能中,应当容易选择目标。(13)系统应当能在一定精度范围内自动纠正用户输入的误差,例如规则图形的输入、节点的匹配等。(14)提供图形的ZOOM和滚动等浏览功能。7总体设计文档总体设计(1)引言:编写的目的、背景、定义、参考资料。(2)总体设计:需求规定、运行环境、基本设计概念和处理流程、软件结构。(3)接口设计:用户接口、外部接口、内部接口。(4)运行设计:运行模块组合、运行控制、运行时间。(5)系统数据结构设计:逻辑结构设计、物理结构设计、数据结构与程序的关系。(6)系统出错处理设计:出错信息、补救措施、系统恢复设计。总体设计说明书的主要内容第六节详细设计一、结构化的详细设计二、面向对象的详细设计1结构化的详细设计详细设计GIS软件详细设计的任务包括:确定GIS软件各个子模块内的算法和数据组织方式;选择某种过程的表达形式来描述各种算法;进行详细设计评审。结构化方法的详细设计也称过程设计或程序设计,程序流程图或程序框图是软件开发者非常熟悉的一种算法表达工具。(标准化符号键插图)1结构化的详细设计详细设计结构化程序的五种控制结构①顺序型:由几个连续的加工步骤依次排序构成;②选择型:由某个逻辑判断式的取值决定选择两个加工中的一个;③先判定(while)型循环:在循环控制条件成立时,重复执行特定的加工;④后判断(until)型循环:重复执行某些特定的加工,直至控制条件成立;⑤多情况选择(case)型,又称作分支型:多个不相交的选择型组合。1结构化的详细设计详细设计问题分析图(ProblemAnalysisDiagram,PAD)是由程序流程图演化而来。类似的流程图有N-S图(由Nassi

和Shneiderman提出)。在N-S图中,①表示按顺序限制性处理A,再执行处理B;②表示若条件P取真值,则执行“T”下A的内容;否则执行“F”下B的内容。若B是空操作,则拉下一个箭头“↓”;③是先判断P,再执行S;④先执行S,再判断P;⑤给出了多出口判断的图形表示,P为控制条件,根据P的取值,相应地执行其值下面各框的内容。1结构化的详细设计详细设计当程序中有多重嵌套的条件选择时,使用判定表的效果比较好。判定表由四部分组成:左上半部分是所有条件、左下半部分是所有的处理方法、右上半部分是条件组合的取值、右下半部分是条件组合相对应的动作,判定表右半部分的每一列实质上是一条规则。2面向对象的详细设计详细设计总体设计已经根据分析阶段的领域模型建立相关的类,以及类之间的关系接口。详细设计需要对每个类展开详细的描述,包括属性和方法的细化。类的设计描述包括两部分:①协议描述:定义每个对象类可以接收的消息,建立一个类的界面;②实现描述:说明每个操作的实现细节,这些操作包含在对象类的消息中,描述的内容包括属性定义、类接口描述、类实例的可能状态之间的有效变换集。2面向对象的详细设计详细设计总体设计是高层描述数据的组织,而详细设计包含更多的数据结构信息,同时要说明每个对象的接口,规定每个操作的操作符号,以及对象的命名、每个对象的参数、方法的返回值。在很多情况下,可以通过顺序图获得这些信息,对象的接口是所有方法(操作)名字的集合,主要内容包括:(1)对象内部的详细描述。(2)对象名字和引用类说明。(3)私有数据结构、数据项和类型。(4)实现每个方法的描述。第七节程序编写与调试一、程序编写二、程序调试三、代码管理1程序编写程序编写与调试(1)一般尽量选择高级语言。(2)要符合详细设计的思想。(3)选择通用程序语言。因为GIS软件既包括数据、图形处理及分析,还包括对各种软硬件的控制等,任何一种专用型的高级语言都无法完全胜任。(4)考虑到程序的执行效率以及对某些特殊硬件的控制和操作要求,可以针对特定的模块采用混合编程,达到程序的特别目的。(5)考虑编码和维护成本。选择合适的高级语言以降低编码量及日常维护工作中的困难程度。(后续)选择程序设计语言的主要考虑因素1程序编写程序编写与调试(6)根据系统开发的不同规模,选择合适的高级语言。比如对于一个大型的GIS,就应选择易于项目管理的高级语言。(7)根据不同的开发平台选择不同的语言。(8)系统的兼容性、移植性等。选择程序设计语言的主要考虑因素1程序编写程序编写与调试公认的良好编程风格一般包括以下几项内容:(1)选择适当的位置尽可能加入必要的注释,注解对于程序的阅读及调试都有很大的作用。(2)变量名等标识符应能表达内容含义,不同变量在同一语句中声明时,应按字母先后顺序排列。(3)语句书写应有层次感,便于理解。例如采用缩进排列、避免使用大量的嵌套结构、不将多个语句放在同一行中书写、避免复杂的条件测试等。(4)数据输入和输出格式力求统一、简单,并加以必要的说明。2程序调试程序编写与调试程序的调试方法包括:强行排错(打印内存中相关的数据、设置打印语句、利用调试工具)、回溯法排错、归纳法排错、演绎法排错。一般对于小程序,可以采用回溯法进行调试。一旦发现错误,先分析错误的征兆,确定最先发现“症状”的位置。然后,人工沿程序控制流程,反向追踪源程序代码,直至找到错误根源或者确定错误产生的范围。对于规模较大的程序,需要借助调试工具来进行调试。在调试大规模程序的时候,也可以把它拆分成许多个小程序,然后逐一对小程序进行调试,这样节省了时间,也提高了效率。多线程程序调试的方法主要有查看运行日志、设置特定断点等。2程序调试程序编写与调试在对代码进行修改时应该注意以下几点:(1)在修改一个错误的时候还要查看其邻近是否有别的错误。(2)修改错误的时候要注意不能只修改了错误的征兆或这个错误的表象,而没有修改错误的本质。(3)当心修改一个错误同时可能会引入新的错误,这就是修改可能会带来的副作用。因此在修改了错误之后,必须进行更大范围的测试,以确认是否引进了新的错误。(4)修改错误的过程也是程序重新设计的过程,一般来说,程序设计过程中能用的方法在修改错误的时候都可以使用。3代码管理程序编写与调试使用源代码管理技术来管理共享资源,源代码管理可以保护团队资源不会被意外删除,保护单个开发人员的更改不会被盲目或无意的覆盖,还可以按版本来维护所有项目文件的历史记录。当前较为流行的代码管理软件有VSS(VisualSourceSafe)、SVN(Subversion)和GitHub等。VSS简便易学、费用较低,但功能基本,安全性不高;SVN是开放源代码的版本控制系统,安全性和版本功能较强,但没有稳定的技术支持;GitHub是一个面向开源及私有软件项目的托管平台,是全球最大的社交编程及代码托管网站。3代码管理程序编写与调试软件开发过程中所产生的一系列技术文档在软件质量保障和软件可维护性等方面起到了无可替代的作用,这也就使得技术文档的管理成为软件开发管理过程中重要的一部分。文档管理中应重点考虑:(1)形成统一的编码风格。如果代码帮助和辅助文档很少,可能程序员过了一段时间之后连自己的代码都看不懂了。因此,有必要形成统一的编码风格,为项目扩展奠定良好的基础。(2)形成统一的文档风格和文档检索体系。(3)软件测试应有规范和标准,不能全凭技术部经理的主观意愿。(4)自定义算法或者网络协议应有详细规范文档记载。第八节软件测试与维护一、测试原则二、测试计划三、测试类型四、面向对象测试五、自动化测试六、第三方测试七、软件维护1测试原则软件测试与维护软件测试是使用人工或自动手段来运行或测定某一个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差异。原则如下:(1)测试应当尽早,不断地进行。(2)测试示例应当由测试数据和预期结果两部分组成。(3)程序员应当避免测试自己的程序。(4)测试示例应当包含合理和不合理的输入条件。(5

温馨提示

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

评论

0/150

提交评论