资源描述
2020/5/19,1,第3章概要设计,3.1概要设计的概念概要设计在软件工程中处于上流作业的设计工程的位置,概要设计是软件设计工程中的一个非常重要的作业步骤。概要设计和详细设计构成了设计工程。,2020/5/19,2,3.1.1设计工程的概念,设计工程就是把需求分析过程中确定下来的用户需求定义书(What=做什么)变为能够进行实际操作的设计说明书(How=怎样做)的工程。设计工程是一个将系统的需求规格转换成软件系统的说明过程。从多个可能的思路中找到最佳的解决方案。其任务包括构建系统框架,设计系统功能,描述系统流程,建立系统的数据模型、接口模型及界面模型,形成系统的逻辑结构,告诉程序员软件系统应该“怎样做”。,2020/5/19,3,设计工程又被分为外部设计和内部设计的两大类。与用户的接口设计和与外部系统的接口相关的设计称为外部设计(从用户的角度看得到的)采用什么样的结构和方法去实现外部设计书的功能的设计称为内部设计(从开发者的角度看得到的)。长期以来,人们通常把外部设计称为概要设计,把内部设计称为详细设计。概要设计和详细设计在软件开发的过程中处于上流工程作业的位置。,2020/5/19,4,总体设计:对整个系统的结构做的广泛设计,也叫概念设计。细节设计:底层设计,包括具体的程序细节的设计。,2020/5/19,5,系统设计的目标系统分析:解决“做什么”系统设计:解决“怎么做”,系统设计的目标和任务,2020/5/19,6,系统设计的任务问题结构(系统需求)系统结构从系统分析说明书出发,形成系统的具体设计方案。,系统设计的目标和任务,映射,2020/5/19,7,软件设计的目标和任务,根据用信息域表示的软件需求,以及功能和性能需求,进行数据设计系统结构设计过程设计,2020/5/19,8,数据设计侧重于数据结构的定义。系统结构设计定义软件系统各主要成份之间的关系。过程设计则是把结构成分转换成软件的过程性描述。在编码步骤,根据这种过程性描述,生成源程序代码,然后通过测试最终得到完整有效的软件。,2020/5/19,9,数据字典,数据流图,E-R图,加工小说明,流,程,描,述,处理描述,数,据,对,描述,象,数据设计,模块结构设计,接口设计,过程设计,分析模型,设计模型,平台设计,系统设计模型,2020/5/19,10,软件设计任务,从工程管理的角度来看,软件设计分两步完成。概要设计,即总体设计。将软件需求转化为数据结构和软件的系统结构。详细设计,即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。,2020/5/19,11,2020/5/19,12,3.1.2概要设计的内容和设计过程,1、概要设计的任务系统结构设计功能模块和子系统划分用户界面和接口设计数据库设计安全性设计作出新系统的功能说明书系统移植设计运用/故障处理设计调整开发计划验收确认,2020/5/19,13,2020/5/19,14,3.2系统结构的设计,3.2.1体系结构设计原则合适性结构稳定性模块可扩展性代码可复用性,2020/5/19,15,3.2.2体系结构设计的步骤,系统体系结构设计的主要过程包括设计准备、设计策划、需求再确认、文档编写以及设计评审五个关键环节。其中策划设计方案包括界定设计约束条件、确定设计策略、分解设计任务三个主要环节,如图所示。,2020/5/19,16,2020/5/19,17,1、设计准备,设计准备阶段的工作主要包括以下几方面内容:制定设计小组在设计过程中应该共同遵守的标准和规范;体系结构设计人员首先应仔细阅读需求文档,明确设计工作的范围和任务;根据设计目标确定最适合的设计方案、方法和工具;编制设计工程的阶段性开发计划。,2020/5/19,18,2、界定影响系统设计的约束边界,本系统需要遵循的相关标准或规范;系统实现所依赖的软硬件环境的约束;本系统与其他系统间的接口要求;系统采用通讯协议方面的约束;用户界面的约束;软件质量的约束,2020/5/19,19,3、系统策划与组织,设计模式,根据本产品的功能性需求和非功能性需求,确定体系结构设计模式。设计模式的确定是结构设计中最重要的环节,一个好的模式能为系统的扩充、复用等策略提供良好的支持。系统设计模板的确定,就像写书时首先应确定大纲内容一样,编写系统设计文档之前也应首先确定系统的内容及其组织编排方式,这主要从结构、功能、性能、接口、信息模块以及进度、经费等方面着重考虑。,2020/5/19,20,4、分解系统设计任务,按照确定的体系结构设计模式,将一个复杂的系统分解成为若干子系统,确定每个子系统的功能,建立并确定与软件需求间的对应关系以及各个子系统之间的关系,绘制系统的总体结构图。将子系统分解成若干个模块,确定每个模块完成的功能以及模块之间的调用关系,并确定模块间的调用接口。,2020/5/19,21,3.2.3系统平台的选择,系统平台的选择对软件系统的体系结构有很大的影响。近年来,随着开放式计算机系统的发展,系统平台的选择范围变得越来越宽,系统平台的设计也增加了很多困难。为了设计出最恰当的系统平台,建立一个明确的基准显得越来越重要了。,2020/5/19,22,“系统平台”就是确定系统部件的构成和各个部件之间的接口方法。(硬件、网络、使用的中间件/框架、数据的配置和存取方式、应用的部件(2层/3层)等。例图3.11系统设备配置概念图,2020/5/19,23,1、从业务面来看系统平台的需求事项应用类型的识别信息的集中处理和分散处理的需求系统性能的要求可靠性的要求系统的生命周期系统运行体制的要件,2020/5/19,24,2、从信息技术的发展动向来看系统平台的选择硬件、软件的扩展性/可靠性/开放性/性能开发工具的发展动向,2020/5/19,25,系统结构与开发平台,一般技术选型要明确以下信息:主要硬件环境,如:数据库服务器和应用服务器采用IBM的RS/6000系列的S85。操作系统,如:数据库服务器和应用服务器采用IBM的AIX,客户机采用WIN2000。应用系统内的各种服务器软件,如:应用服务器采用WebSphere,数据库服务器采用DB2。开发语言及开发工具,如:开发语言是MicrosoftVisualC+6.0.CASE(计算机辅助设计)软件,如:PowerDesigner,Visio,2020/5/19,26,体系的选取有如下几点关键问题:,1.是单机还是客户机/服务器系统?2.是常规应用开发还是底层开发(是否有单片机系统)?3.客户机最大点数是多少?4.是否提供给第三方API接口?5.网络(或数据通信)是什么连接方式?6.客户机是胖客机还是瘦客户机?7.数据文件的保存方式(文本、本地数据库、大型数据库)?我们必须针对以上的问题的回答,进行相应系统体系的取选。在取选的过程中,很多现实大型系统实际是多种体系混合的。,2020/5/19,27,2020/5/19,28,3.3功能模块和子系统的划分,在传统的软件工程学科中,模块化“功能独立,并且可以被集成”已成为一种普遍被接受的方法。系统功能的模块化设计不仅可以减少系统的复杂性,使系统便于修改,而且还容易实现一个系统不同部分的并行开发。,2020/5/19,29,3.3.1功能模块的划分1、模块设计的原则软件制造工程中2.2.12、系统功能模块的设计(1)接口定义“整体纽带”(2)数据结构与程序流程的确定(3)确定模块之间的组织关系,2020/5/19,30,3.3.2子系统的划分所谓子系统的划分,就是把开发设计的对象按适当的规模进行细化。使大规模的开发系统变为多个中小规模的子系统的集合。大规模系统开发过程中,要随时进行各个工程的人员和业务之间的调整。,2020/5/19,31,子系统划分的有效之处有以下几个方面:容易理解开发系统业务的总体概要;能够减少系统设计的复杂性;多个子系统的设计开发可以同步进行,以缩短开发周期。,2020/5/19,32,在应用系统的开发过程中,我们首先按照需求分析阶段所得到的数据流程图DFD进行子系统划分,同时考虑业务流程,功能集合,使用者的类别,减少接口等因素进行子系统分割处理。一般来讲,按照业务流程和处理功能集合来划分子系统,在各种业务处理的关连性不强的情况下,对于系统概要和处理功能的理解很有好处,大规模开发系统多采用这种原则。,2020/5/19,33,有些时候,我们也需要按使用者的种类和权限或者使用时间(例如:日处理,月度处理,年度处理等)来划分子系统。有些情况下,也要综合考虑各个方面的因素,划分出合理的子系统。子系统划分得好,能够减少窗体和数据库操作之间的接口,提高开发效率,确保开发系统的质量,提高用户的满意度。,2020/5/19,34,当然,不论采用怎样的方式,子系统之间的接口或多或少都要存在,在系统概要设计阶段,要充分考虑好子系统之间的接口问题,做好相应的设计文档,2020/5/19,35,3.4容易理解的用户接口设计,对顾客满意度的影响很大,是概要设计过程中最重要的内容之一。用户接口设计主要包含用户界面设计、报表设计、模块之间的接口设计和模块与其他外部实体的接口设计等作业内容。以下主要介绍用户界面的窗体设计、报表设计和接口设计的基本方法。,2020/5/19,36,3.4.1用户界面窗体设计,用户认识的软件系统,就是显示在画面窗体的用户界面和打印出来的数据报表。因此,用户界面的质量直接关系到软件受用户的青睐程度,关系到软件系统的性能能否充分发挥,能否使用户高效率、轻松愉快满意地使用软件系统进行工作。是用户最能够调毛病的地方,2020/5/19,37,1、用户界面窗体设计原则,用户界面适合于软件的功能使用的简单性和易理解性界面中的所有元素(如菜单、工具条等)醒目无误、直观,不易让人误解;通过向用户提供视觉或听觉的反馈,保持用户和界面的双向交流;所有的界面元素应当提供充分而必要的提示,如当鼠标移动到工具条上的某个图标按钮时,应当在该图标旁边出现功能提示;,2020/5/19,38,提供上下文敏感的求助系统;界面结构能够清晰地反映所处理业务的工作流程,以便用户按部就班地进行操作;对于复杂的用户界面,最好提供界面“向导”,及时让用户知道自己在界面结构中所处的位置。例如对于基于Web的应用软件,应该在界面上显示“当前位置”,否则用户很容易在众多的页面中迷失方向。,2020/5/19,39,一致性原则,在同一系统的用户界面中,所有的菜单选择、命令输入、数据显示和其他功能应始终保持同一种形式和风格;采用统一的标号、约定俗成的缩写和预先定义好的颜色;保证信息显示方式与数据输入方式的协调一致。,2020/5/19,40,及时反馈信息,一个友好的用户界面应对用户的所有输入都立即做出反馈。无论系统给予用户的反馈信息多么简单,重要的是,要告诉用户要做的每一项操作。当系统进行长时间处理时,用户界面应提供用户等待信息及系统运行状态信息,避免用户对系统运行状态不了解而引起的操作失误。,2020/5/19,41,出错处理,用户在使用软件的过程中,不可避免地会出现一些错误的操作。在设计用户界面时必须考虑出错处理,常见的错误处理方式有:提供对输入数据进行校验的功能。当用户输入错误数据时,及时提醒用户改正数据;隐藏掉当前状态下用户不可操作的命令,以消除用户操作时的混乱;提供撤消功能,以方便用户撤消不期望的操作;当用户执行的是具有破坏性的操作时,应当提醒用户进行确认。,2020/5/19,42,灵活性,考虑到用户的特点、计算机应用水平,应当使用户界面能够满足不同用户的需求。对不同的用户,可提供不同的界面形式。有时,也可以让用户根据需要和自己的喜好定制和修改界面显示风格。,2020/5/19,43,2、用户界面设计(GUI)的准备,GUI(GraphicalUserInterface)设计是一个多学科的活动。事先构造出来的“用户友好”的GUI画面设计式样程序员根据开发环境进行一些适当的调整注意不要为了实现某种效果而严重降低人机对话的响应时间,这样反而会影响用户的满意度。,2020/5/19,44,2020/5/19,45,辅窗体采用多种形式和形状,主要有以下几种:对话框;标签夹;下拉式列表;消息框。,2020/5/19,46,2020/5/19,47,3、演示版(DEMO)作成,类型1进行系统设计方案的可视化效果的演示。类型2在确定了用户接口的要件定义和设计方案的基础上,进行新的需求要件研讨和提案时进行演示版开发。类型3确定设计式样的过程中,开发真正使用的系统的部分功能的演示版。,2020/5/19,48,演示版制作时的注意事项:,使用户理解GUI的基本概念不要使用纸张进行交流和确认要向用户说明演示版的功能与真正的开发系统之间的差别要确保具有决定权的用户参与尽可能在现场解决问题要向用户说明有关技术方面的评价,2020/5/19,49,4、用户界面设计书的作成,按照标准化的设计方法,对于与画面控制紧密相关的部分作出处理流程图、窗体处理关联图等相关图形的设计书是很有实际应用效果的。教材106-113,2020/5/19,50,窗体处理关联图窗体处理关联图描述了应用系统中使用的所有主要画面窗体的名称、处理流程、各个窗体之间有什么样的调用关系,或者,窗体打开/关闭时的切换方法,各个窗体调用时的控制方法的描述等。为后阶段的设计和开发人员对系统整体概况的理解提供了一个很好的关联图。见书106图3.16,2020/5/19,51,菜单画面的层次关系图描述应用系统内的各种功能中,各级菜单画面的层次结构。功能控制的矩阵图MDI等的应用开发时,决定出与菜单条的各个项目和各个对话框之间的控制关系。打开一个对话框时,要根据需要确定哪些菜单功能项目可以使用,哪些项目不能使用。见书98页图3.16,2020/5/19,52,5、用户界面的式样设计,用户登录确认画面主菜单画面数据显示画面条件输入画面数据录入修改画面确认画面见书100104页,2020/5/19,53,2020/5/19,54,3.4.2用户界面的报表式样的设计,定制式报表的设计主要是输出数据项目的内容,位置,类型和长度。一般不用设计输出项目的名称和提示信息。首先要搞清楚专用票据的样式,确保输出数据的内容被打印到指定的位置或表格中去,不能把票据上的数据项目名称和提示信息覆盖了,图3.22是一个专用票据的式样设计的例子。,2020/5/19,55,3.4.3模块间的接口设计,模块间的接口也叫内部接口,它是由模块之间传递的数据和程序设计语言的特性共同决定的一般来说,分析模型中包含了足够的信息用于模块间的接口设计。在将数据流程图转换为软件结构图时,数据流程图中每个变换的输入和输出箭头必须映射到与该变换对应的模块接口上。内部接口的复杂度通常与模块之间的耦合度相关,内部接口的说明在程序设计详细说明书中描述。,2020/5/19,56,3.4.4模块的外部接口设计,模块与外部实体之间的接口叫做外部接口。外部接口设计起始于分析模型的数据流程图,首先分析数据流程图中的每个外部实体,外部实体的数据和控制需求确定下来以后,就可以设计外部接口了。模块的内部和外部设计接口设计必须要考虑数据验证和错误处理问题,2020/5/19,57,3.4.5用户接口的一致性和统一性3.4.6连接其他系统的接口设计作为系统之间的接口设计方法,有EAI(EnterpriseApplicationIntegration),它提供了进行系统之间的连接所需要的数据分类的功能,提供了在各个系统中进行数据格式变换的数据转换功能,或者把这些功能进行组合的辅助功能。见图3.27,2020/5/19,58,3.4.7设计的评价和试运行系统,用户接口设计,不仅有用户界面窗体设计和报表设计,还有响应时间和出错处理等重要的评价因素。关于用户界面窗体设计,如果使用开发工具,可以简单快捷地做出用户界面窗体,确认多个窗体连接运行的效果把关键部分的运行效果做出来让用户进行确认和评价,可以使用户通过概要设计阶段的成果物就能找出系统设计的遗漏事项。图3.24,2020/5/19,59,3.5编码设计,编码设计的目的主要是为了提高系统运行效率,确保系统安全性。数据编码多用于数据存取处理时的关键字项目,编码设计是软件系统设计的重要内容。利用有效的编码体系,可以使设计开发人员更容易与用户进行交流,使设计文档资料的记述简单易懂。表3.5编码设计的方法,2020/5/19,60,3.6安全设计,表3.6列出了信息安全的3个要素和在软件系统中的相关对策。在软件开发过程中的信息保密保护对策,特别是对数据存取的控制处理是很重要的。,2020/5/19,61,2020/5/19,62,最近的安全对策,2020/5/19,63,历来的安全对策,2020/5/19,64,数据库的恢复管理,2020/5/19,65,数据库的存取控制,2020/5/19,66,2020/5/19,67,2020/5/19,68,1、安全保存对策,输入数据的安全保存数据库的安全保存向前恢复回滚处理排它控制存取控制流程控制推论控制密码控制2、可靠性对策3、安全对策4、存取权限管理,2020/5/19,69,3.6.2网络安全对策,1、保护密码防止篡改的对策暗号加密认证2、黑客攻击病毒感染防火墙安全协议计算机病毒防止策略,2020/5/19,70,3.7数据库设计,数据库设计的目的为信息系统在数据库服务器上建立一个好的数据模型数据库设计的内容(数据库设计三个阶段)数据库需求分析(概念模型)数据库概念设计(ER、DD)(逻辑模型)数据库物理设计其他因素性能设计、存储设计、安全设计,2020/5/19,71,数据库设计的三个阶段,数据库设计的流程,用户,开发者,数据需求分析,概念数据模型设计,逻辑数据模型设计,物理数据模型设计,调查分析,实体-联系模型,关系模型,在选定的DBMS平台上,数据库文件,数据需求,2020/5/19,73,关系数据库规范化,所有非平凡数据结构分解为二维表方式并指定关键字第一范式当关键字不止一个属性时,必须确保每个非关键字属性完全函数依赖于整个关键字第二范式所有非关键字属性彼此独立第三范式,2020/5/19,74,(1)规范化形式,第一范式如果在一个数据结构中没有重复出现的数据项或空白值数据项,就称该数据结构是规范的。任何满足规范化要求的数据结构都称为第一规范形式,记为1NF。,2020/5/19,75,例:不规范转为规范,.,.,.,职工基本情况,职工简明表,关键字:职工号,2020/5/19,76,如果一个规范化的数据结构的所有非关键字数据项完全函数依赖于它的整个关键字,则称该数据结构是第二范式的,记为2NF。转化为第二范式的方法是:对于若干个关键字由若干个数据项组成的数据结构,必须确保所有的非关键字数据元素依赖于整个关键字。即去掉部分依赖关系,把它分解成若干个都是2NF的数据结构。,第二范式,2020/5/19,77,部分依赖:假设ABC分别是同一个数据结构R中的三个元素或分别是R中若干个数据元素的集合。C依赖于AB的子集,则称C部分依赖于AB。否则,称为C完全依赖于AB。AB-C,A-C则AB-C例如,(学号,课程号)-成绩(学号,课程号)-姓名,第二范式(续),p,p,f,2020/5/19,78,例:第一范式转为第二范式,材料供应商库存的关系如下:,材料编号材料名称规格供应商名称供应商地址价格库存量库存占用资金,关键字:材料编号+供应商名称,材料名称、规格、供应商地址不完全依赖于关键字,不是2NF,2020/5/19,79,例:第一范式转为第二范式,分解成三个2NF的数据结构,材料编号*供应商名称*价格库存量库存占用资金,材料编号*材料名称规格,供应商名称*供应商地址,1.材料库存,2.材料库存,3.供应商,2020/5/19,80,如果一个数据结构中任何一个非关键字数据项都不传递依赖于它的关键字,则称该数据结构是第三范式的,记为3NF。传递依赖:假设ABC分别是同一个数据结构R中的三个元素或分别是R中若干个数据元素的集合,如果C依赖B,而B依赖于A,那么C自然依赖于A,即称C传递依赖A。A-B,B-C则A-(传递)C去掉传递依赖关系,就是3NF。,第三范式,2020/5/19,81,例:第二范式转为第三范式,因为价格与库存量、库存占用资金都是非关键字,但库存量依赖于价格和库存占用资金,所以非3NF.上例转为第三范式:去掉多余的“库存占用资金”,而在程序中加以解决即可。,材料编号*供应商名称*价格库存量,材料编号*材料名称规格,供应商名称*供应商地址,1.材料库存,2.材料库存,3.供应商,2020/5/19,82,(2)数据结构规范化设计的步骤,非规范化的数据(有重复的数据),1NF(没有重复的数据),2NF(所有的非关键字均完全依赖于整个关键字),3NF(所有的非关键字均完全依赖于整个关键字,且只依赖于整个关键字),把所有非规范化的数据结构分解成若干个二维表形式的数据结构,并指定一个或若干个关键字,若关键字由不止一个元素组成,必须保证所有的非关键字数据元素依赖于整个关键字,否则去掉部分依赖关系。,检查所有非关键字数据元素是否彼此独立,如果不是,去掉传递依赖关系,通过去除冗余的数据元素,构成都是3NF的数据结构。,2020/5/19,83,数据库设计实例工厂管理系统,2020/5/19,84,数据库设计实例工厂管理系统,本实例说明用E-R图进行概念结构设计,并运用转换策略设计关系模式的过程。数据需求描述概念设计逻辑设计,2020/5/19,85,a数据需求描述,考虑一个机械制造厂的工厂技术部门和工厂供应部门。工厂技术部门关心的是产品性能参数、产品由哪些零件组成、零件的材料和耗用量等;工厂供应部门关心的是产品的价格、使用材料的价格和库存量等。,2020/5/19,86,b概念设计,产品,组成,零件,产品号,产品名,性能参数,零件号,零件名,m,n,零件数,耗用量,材料名,图1技术部门的分E-R图,2020/5/19,87,b概念设计(续),使用,材料,价格,库存量,m,n,产品,仓库,仓库号,仓库名,n,类别,地点,存放,材料号,材料名,m,产品号,产品名,价格,存放量,耗用量,图2供应部门的分E-R图,2020/5/19,88,b概念设计(续),使用,材料,价格,库存量,m,n,产品,仓库,仓库号,仓库名,n,类别,地点,存放,材料号,材料名,m,产品号,产品名,价格,存放量,耗用量,图3集成的初始E-R图,性能参数,组成,零件,零件号,零件名,m,零件数,耗用量,n,消耗,m,n,2020/5/19,89,b概念设计(续),材料,价格,产品,仓库,仓库号,仓库名,n,类别,地点,存放,材料号,材料名,m,产品号,产品名,价格,存放量,图4改进的E-R图,性能参数,组成,零件,零件号,零件名,m,零件数,耗用量,n,消耗,m,n,2020/5/19,90,产品号*产品名价格性能参数,材料号*材料名价格,仓库号*仓库名类别地点,1.产品,3.材料,4.仓库,c逻辑设计,零件号*零件名,2.零件,产品号*零件号*零件数,5.组成,零件号*材料号*消耗量,6.消耗,材料号*仓库号*存放量,7.存放,1NF,2020/5/19,91,仓库号*仓库名类别地点,4.仓库,c逻辑设计(改进),仓库号*仓库名类别,4-1.仓库,类别*地点,4-2.仓库地点,分解成,2020/5/19,92,3.7.4数据库设计的注意事项,1、基本的注意点数据库设计的前提、数据库的配置2、分布式数据库的设计数据库的逻辑的分布形态水平分布式垂直分布式数据分割数据库的开放性,2020/5/19,93,3、数据库的容量/性能的预测数据量数据库数目用户数目数据传输量4、故障处理策略镜像存储数据备份当前数据恢复数据复制,2020/5/19,94,
展开阅读全文