《软件工程的需求分析.ppt》由会员分享,可在线阅读,更多相关《软件工程的需求分析.ppt(159页珍藏版)》请在三一办公上搜索。
1、软 件 工 程,1,第三章 需求分析,获取需求 1.需求获取原则 2.需求获取技术 3.需求调研方法 4.需求获取步骤 5.需求表达与整理 6.需求确认需求分析 1.需求分析目标 2.需求分析任务 3.需求分析方法 4.需求分析过程,5.需求建模 1)功能建模 2)数据建模 3)行为建模 6.结构化分析方法-E-R图-数据字典-状态-迁移图 7.实例需求规格说明书需求评审,软 件 工 程,2,3.1 需求获取,1.需求获取原则 2.需求获取技术 3.需求调研方法 4.需求获取步骤 5.需求表达与整理 6.需求确认,软 件 工 程,3,3.1.1 需求定义,需求定义就是识别用户的要求系统分析过程
2、的第一步就是识别用户要求。分析员必须考虑以下问题:,功能和性能 可靠性和质量 总的系统目标 成本与进度限制,制造需求 市场与竞争情况 有效的技术 将来可能的扩充,识别希望的功能和性能范围;确定系统的功能、性能、约束和接口;,软 件 工 程,4,3.1.2.需求获取的基本原则,深入浅出 需求获取要尽可能全面、细致。获取的需求是个全集,系统真正实现的是个子集。细致地调研并不表明在分析时将调研内容都纳入到新系统中,但有利于以后的扩充。以流程为主线 在与用户交流的过程中,应该用流程将所有的内容串起来。如信息、组织结构、处理规则等。这样便于交流沟通。,软 件 工 程,5,流程的描述既要有宏观,又要有微观
3、。即要强调总体的业务流程、全生存期的业务流程,又要对流程细化,有分支的业务流程。需求获取可能是软件开发中最困难、最关键、最易出错及最需要交流的方面。表现在:需求的不稳定性:在整个软件生存周期内软件需求会随着时间的推移发生变化;需求的不准确性:用户和开发人员的认识会随着使用系统实现业务流程的实践逐步提高,一开始不可能设想得面面俱到。需求获取只有通过有效的客户/开发者的合作才能成功。,软 件 工 程,6,3.1.3 需求获取技术,需求获取是在问题及其最终解决方案之间架设桥梁的第一步。获取需求的一个必不可少的结果是对项目中描述的客户需求的普遍理解。一旦理解了需求,分析人员、开发人员和客户就能探索出描
4、述这些需求的多种解决方案。需求获取技术包括两方面的工作:建立获取用户要求的方法的框架;支持和监控需求获取的过程的机制。,软 件 工 程,7,1.弄清软件需求的层次,业务需求反映了组织或客户开展相关业务的工作流和业务规则,是对系统、产品高层次的目标要求,与该组织或客户的业务领域有关。用户需求 描述用户使用软件需要完成哪些任务,可通过用例(use case)图或场景说明加以阐明。功能非功能需求 定义了开发人员必须实现的软件功能,而非功能需求如表所示:,软 件 工 程,8,2.产品功能、性能要求及过程要求,软 件 工 程,9,3.1.4.需求调研的方法,调研用户的组织结构、岗位设置、职责定义,从功能
5、上区分有多少个子系统,划分系统的大致范围,明确系统的目标。调研每个子系统的工作流程、功能与处理规则,收集原始信息资料,用数据流来表示物流、资金流、信息流三者的关系。对调研内容事先准备,针对不同管理层次的用户询问不同的问题,列出问题清单。将操作层、管理层、决策层的需求既联系又区分开来,形成一个需求的层次。,软 件 工 程,10,对与用户沟通的情况及时总结归纳,整理调研结果,初步构成需求基线。若基线符合要求,则需求获取完成。需求调研的主要手段:发调查表;召开调查会;向用户领域的专家个别咨询;实地考察,跟踪现场业务流程;查阅与待开发系统有关的资料;使用各种调查工具等。,软 件 工 程,11,由于软件
6、开发项目和组织文化的不同,对于需求开发没有一个简单的、公式化的途径。下面列出9个步骤,用以指导需求获取活动。,3.1.5 需求获取的步骤,软 件 工 程,12,定义项目的视图和范围 包括组织结构图、各部门的岗位/角色列表。确定用户类 包括人员/责任矩阵。确定目标系统的业务工作流 包括物流、资金流、信息流,建立业务工作流模型。运用需求获取技术开发用例(或数据流图)并设置优先级 用以掌握主要业务规则。收集来自用户的质量特性信息和其他非功能需求 将性能、安全性、可靠性等需求和其他设计约束结合业务规则,形成功能需求。,软 件 工 程,13,分类在用例(或数据流图)中涉及的数据 包括数据的组成和数据之间
7、的关系。详细拟订用例(或数据流图)建立功能模型,并进行审查,用以澄清需求获取的参与者对需求的理解。开发并评估界面原型 设想输入设备、输出设备、显示风格、显示方式、输出格式等,建立接口规范和信息流传输规则。从功能描述中开发概念测试用例 用测试用例来验证用例(或数据流图)、功能需求和原型。,软 件 工 程,14,3.1.6.需求整理与表达的方法,采用穷举方法可以避免遗漏。采用归纳方法,通过对各种情况进行综合分类可以使问题条理化。采用抽象方法,可以发现问题的实质,抓住问题的主要矛盾,忽略其次要矛盾。需求整理可以多种手段共用,如组织结构图、业务流程图、多叉树、关系矩阵、文字叙述、表格、图形等。需求描述
8、包括组织结构与岗位定义、业务流程、处理规则、数据项、功能以及上述5个方面的关系。,软 件 工 程,15,3.1.7.需求确认,将整理好的用户需求说明书让用户确认,软 件 工 程,16,3.2 需求分析,需求分析是软件定义时期的最后一个阶段,它的基本任务是准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明书)。即准确地回答“系统必须做什么?”这个问题,软 件 工 程,17,软件开发是要实现目标系统的物理模型。需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统“做什么”的问题。,软 件
9、工 程,18,需要能够表达和理解问题的信息域和功能域 信息流:数据和控制通过一个系统时的变化方式。两个功能之间的数据/控制传递就确定了功能间的接口。信息内容:单个数据或控制对象,它们构成了某个更大的由软件变换生成的信息的集合。信息结构:各种数据和控制项的内部组织。,3.2.1 需求分析的原则,软 件 工 程,19,以层次化的方式对问题进行分解和不断细化,纵向分解,横向分解,软 件 工 程,20,计算机系统工程,基于计算机的系统 系统是某些元素的一个集合或排列,这些元素被组织起来以实现某种方法,过程或借助处理信息进行控制。分析员必须考虑以下问题:基于计算机的系统的系统元素包括硬件、软件、人、数据
10、库、文档和过程。,软 件 工 程,21,基于计算机系统的系统元素,输入,系统,过程,硬件,软件,文档,人,数据库,输出,软 件 工 程,22,软件 计算机程序、数据结构、相关文档;硬件 电子计算设备(如CPU,存储器)和外部机电设备(如传感器、马达等);人 硬件和软件的用户;数据库 一个大型的有组织的信息集合;文档 手册、表格和其它用以描述系统使用和操作的信息;过程 定义每一种系统元素的特定使用步骤,或系统驻留的过程性环境。,软 件 工 程,23,系统的层次结构,基于计算机的系统本身可以成为一个更大的基于计算机系统中的一个元素,并称为那个更大系统的宏元素。,软 件 工 程,24,计算机系统工程
11、,计算机系统工程是一个问题求解活动,目的是揭示、分析所期望的功能,并把它们分配到各个单独的系统元素中去。与用户合作确认用户的目标和约束;导出功能、性能、接口、设计约束和信息结构的表示;将它们分配到每一个系统元素中。,软 件 工 程,25,3.2.2 系统分析的目标,识别用户要求评价系统的可行性进行经济分析和技术分析把功能分配给硬件、软件、人、数据库和其他系统元素建立成本和进度限制生成系统规格说明,形成所有后续工程的基础,软 件 工 程,26,系统建模,为了开发系统模型,使用了“结构模板”。系统工程师把各种系统元素分配到模板内的五个处理区域:用户界面;输入;系统功能与控制;输出;维护与自测试。结
12、构模板能帮助分析员建立一个分层结构。,软 件 工 程,27,系统结构上下文图ACD则位于层次结构的顶层(Architecture Context Diagram),软 件 工 程,28,系统结构上下文图建立了待实现系统与系统运行上下文环境之间的信息边界。ACD 定义了 系统使用的所有信息的外部产生者 由系统建立的所有信息的外部使用者 通过接口进行通信或实施维护与自测试的所有实体。,软 件 工 程,29,例:CLSS,抽出功能有:1)读入条形码输入信息;2)读入脉冲计数器信号;3)译零件码数据;4)数据库查询;5)决定料箱位置;6)对分流机构生成控制信号。,软 件 工 程,30,CLSS的ACD
13、图,软 件 工 程,31,每一个方框表示一个外部实体,即系统信息的产生者或使用者。整个系统(或位于下层的专门子系统)的符号用圆角矩形表示。因此,CLSS在ACD中间的处理与控制区域内表示。在ACD中附加名字的箭头表示外部实体与CLSS系统之间传送的(数据或控制)信息。外部实体“条形码阅读器”产生条形码输入信息。本质上,ACD把任一系统都置于它的外部环境中。,软 件 工 程,32,系统工程师对ACD图中的矩形详细分析,加细ACD图。建立各种专门子系统完成传输线分类系统(CLSS)的功能。专门子系统定义在从ACD导出的系统结构流程图AFD中(Architecture Flow Diagram)。信
14、息流穿越ACD的各个矩形,可帮助系统工程师开发AFD更详细的CLSS“图解”。系统结构流程图给出了各个专门子系统和重要的(数据与控制)信息流。,软 件 工 程,33,软 件 工 程,34,结构模板把子系统处理划分成五个处理区域。每个子系统可以包含一个或多个系统元素(如硬件、软件、人),它们是系统工程师分配给子系统的。系统结构模板还可能包含一个“结构字典”,列出在模板中出现的每一个信息项及其说明。结构字典是需求中“数据字典”的系统级版本。,软 件 工 程,35,软 件 工 程,36,3.2 软件需求分析,需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。
15、,软 件 工 程,37,软 件 工 程,38,需求分析的任务是发现、求精、建模和规格说明的过程。包括确定对系统的综合要求(发现);细化在项目开发计划中规定的软件范围;分析系统的数据要求;创建所需的数据模型、功能模型和控制模型;分析可选择的解决方案,并将它们分配到各个软件成分中去。,3.2.1 需求分析的任务,软 件 工 程,39,需求分析的过程可以分成四个阶段:问题识别(需求获取)刻划出软件的功能和性能需求;明确用户界面需求;指明软件与其他系统元素的接口需求;建立软件必须满足的约束。从系统角度来理解软件并评审用于产生计划估算的软件范围是否恰当;确定对目标系统的需求;提出这些需求实现条件,以及需
16、求应达到的标准;修正系统开发计划。,3.2.2 需求分析的过程,软 件 工 程,40,问题识别的另一项工作是建立分析所需要的通信途径,以保证能顺利地对问题进行分析。,管理人员,用户,分析人员,软件开发组,软件需求说明,软件实施计划,原型,软件实施计划,软件实施计划,软件需求说明,软件需求说明,原型,原型,软 件 工 程,41,分析与综合,导出软件的逻辑模型(需求建模)进行各种要求的一致性检查;逐步细化所有的软件功能;分解数据域,分配给各个子功能;找出系统各成分之间的联系、接口特性和设计限制。判断是否存在不合理的用户要求或用户尚未提出的潜在要求。综合成系统的解决方案,给出目标系统的详细逻辑模型。
17、,软 件 工 程,42,编制需求分析阶段的文档软件需求规格说明;初步的用户手册;确认测试计划;修改和完善软件开发计划。需求评审作为需求分析阶段工作的复查手段,应该对功能的正确性、文档的一致性、完备性、准确性和清晰性,以及其它需求给予评价。,软 件 工 程,43,给出系统的逻辑视图和物理视图 软件需求的逻辑视图给出的是软件要达到的功能和要处理的数据之间的关系,而不是实现的细节。软件需求的逻辑描述是软件设计的基础。软件需求的物理视图给出的是处理功能和数据结构的实际表现形式,这往往是由设备本身决定的,因此推迟到设计阶段考虑。,软 件 工 程,44,5.需求整理与表达的方法,采用穷举方法可以避免遗漏。
18、采用归纳方法,通过对各种情况进行综合分类可以使问题条理化。采用抽象方法,可以发现问题的实质,抓住问题的主要矛盾,忽略其次要矛盾。需求整理可以多种手段共用,如组织结构图、业务流程图、多叉树、关系矩阵、文字叙述、表格、图形等。需求描述包括组织结构与岗位定义、业务流程、处理规则、数据项、功能以及上述5个方面的关系。,软 件 工 程,45,3.3 常用的分析方法,面向数据流的结构化分析方法(SA)面向数据结构的Jackson方法(JSD)面向数据结构的结构化数据系统开发方法(DSSD)面向对象的分析方法(OOA)等,软 件 工 程,46,结构化分析方法最初只是着眼于数据流,自顶向下,逐层分解,建立系统
19、的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。扩充后,将建模技术扩展到数据建模、功能建模和行为建模,以实体-关系图、数据流图和控制流图、状态-迁移图为工具,数据字典为核心,从不同视点建立系统的分析模型。,3.3 结构化分析方法,软 件 工 程,47,结构化分析的分析模型,实体关系图,状态迁移图,数据流图,数据对象描述,加工规格说明,数据字典,控制规格说明,软 件 工 程,48,3.3.1 数据建模,数据模型包括三种互相关联的信息:数据对象,描述对象的属性,描述对象间相互连接的关系。在需求分析阶段描述数据对象和它们之间的关系,使用了E-R图。例如,在教学管理中,一个教师可以教授
20、零门、一门或多门课程,每位学生也需要学习几门课程。因此,教学管理中涉及的对象(实体型)有学生、教师和课程。,软 件 工 程,49,教学数据模型,学号 姓名 专业 性别,学生,职工号姓名专业职称年龄,教师,课程号 课程名 学分 学时,课程,学号课程号成绩,选课,软 件 工 程,50,实例的关联有三种:一对一(1:1);一对多(1:m);多对多(n:m)。这种实例的关联称为“基数”。基数表明了“重复性”。,软 件 工 程,51,E-R图中表示实体关联的符号如下:,一个X与一个Y相关联,一个X与一个或多个Y相关联,一个X与零个或一个Y相关联,一个X与零个,一个或多个Y相关联,一个X与一个Y或Z相关联
21、,一个X与一个Y与Z相关联,软 件 工 程,52,3.3.2 功能建模和数据流图,最初,结构化分析方法仅讨论数据流建模。目标系统被表示成如图所示的数据变换流程图。系统的功能体现在核心的数据变换中。,软 件 工 程,53,1.功能建模的思想,功能建模就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。根据DeMarco的论述,功能模型使用了数据流图来表达系统内数据的运动情况,而数据流的变换则用结构化英语、判定表与判定树来描述。,软 件 工 程,54,数据流图中的主要图形元素,数据加工(数据变换),数据源或数据潭(外部实体),数据流
22、,数据存储文件,软 件 工 程,55,分层的数据流图,软 件 工 程,56,数据流图的层次结构,为了表达数据处理过程,需要采用层次结构的数据流图。按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。顶层流图仅包含一个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出数据底层流图是指其加工不需再做分解的数据流图,它处在最底层中间层流图则表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。,软 件 工 程,57,2.结构化分析方法功能建模的步骤实例 考务处理系统的功能,(1)对考生送来的报名单进行检查;(2)对合格的报名单编好准考证号后将准考证送给考生
23、,并将汇总后的考生名单送给阅卷站;(3)对阅卷站送来的成绩单进行检查,并根据考试中心制定的合格标准审定合格者;(4)制作考生通知单(含成绩及合格/不合格标志)送给考生;(5)按地区进行成绩分类统计和试题难度分析,产生统计分析表。,软 件 工 程,58,软 件 工 程,59,这个数据流图只是一个高层的系统逻辑模型,它反映了目标系统要实现的功能以及系统与外界的关系。该图亦称为上下文图或语境图(Context Diagram)数据流图绘制步骤首先确定系统的输入和输出根据考务处理业务,画出顶层数据流图,以反映最主要业务处理流程,软 件 工 程,60,经过分析,考务业务处理的主要功能应当有登记报名单、统
24、计成绩两大项。主要数据流输入的源点和输出终点是考生、考试中心和阅卷站。然后从输入端开始,根据考务业务工作流,画出数据流流经的各加工框,逐步画到输出端,得到第1层数据流图。,软 件 工 程,61,软 件 工 程,62,软 件 工 程,63,软 件 工 程,64,3.绘制数据流图的原则,数据流图上所有图形符号只限于前述四种基本图形元素;数据流图的顶层图上的数据流必须封闭在外部实体之间;每个加工至少有一个输入数据流和一个输出数据流;在数据流图中,需按层给加工框编号。编号表明该加工所处层次及上下层的亲子关系;,软 件 工 程,65,规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和
25、输出数据流必须一致。此即父图与子图的平衡;如果一个数据文件仅在展开的数据流子图中使用,可以在父图中不画出;可以在数据流图中加入物质流,帮助用户理解数据流图;图上每个元素都必须有名字;数据流图中不可夹带控制流。,软 件 工 程,66,软 件 工 程,67,软 件 工 程,68,3.3.3 行为建模,行为建模给出需求分析方法的所有操作原则,但只有结构化分析方法的扩充版本才提供这种建模的符号。状态迁移图 Petri网,软 件 工 程,69,1.状态迁移图,例如,有关CPU分配的进程的状态迁移。,软 件 工 程,70,状态迁移图是描述系统的状态如何响应外部的事件进行推移的一种图形表示。“”表示可得到的
26、系统状态“”表示从一种状态向另一种状态的迁移。,软 件 工 程,71,2.Petri网,Petri网已广泛地应用于硬件与软件系统的开发中,它适用于描述与分析相互独立、协同操作的处理系统,也就是并发执行的处理系统。Petri网简称PNG(Petri Net Graph),它有两种结点:位置:符号“”,表示系统状态。转移:符号“|”,表示系统中的事件。有向边表示转移的输入,或转移的输出,软 件 工 程,72,标记,或称令牌(token),是表明系统当前处于什么状态的标志。Petri网可能的变化有:,软 件 工 程,73,进程 得到资源 占用资源运行 释放资源 不用资源运行,例如,处理两个进程的同步
27、问题:,软 件 工 程,74,软 件 工 程,75,3.3.4 数据字典,数据字典是结构化分析方法的核心。与各模型的图形表示配合,能清楚地表达数据处理的要求词条描述 对于在模型中每一个被命名的图形元素,均加以定义,其内容有:名字,别名或编号,分类,描述,定义,位置,其它,等。,软 件 工 程,76,(1)数据流词条描述 数据流名:说明:简要介绍它产生的原因和结果 数据流来源:来自何方 数据流去向:去向何处 数据流组成:数据结构 数据量流通量:数据量,流通量,1.词条描述,软 件 工 程,77,(2)数据元素词条描述类型:数字(离散值,连续值),文字(编码类型)长度:取值范围:相关的数据元素及数
28、据结构:(3)数据文件词条描述 数据文件名:简述:存放的是什么数据 输入数据:输出数据:,软 件 工 程,78,数据文件组成:数据结构 存储方式:顺序,直接,关键码 存取频率:(4)加工逻辑词条描述 加工名:加工编号:反映该加工的层次 简要描述:加工逻辑及功能简述 输入数据流:输出数据流:加工逻辑:简述加工程序,加工顺序,软 件 工 程,79,(5)数据源及数据谭词条描述 名称:外部实体名 简要描述:什么外部实体 有关数据流:数目:,软 件 工 程,80,2.数据结构的描述,符 号 含 义 举 例 被定义为 与 x=ab.,.或.|.或 x=a,b,x=a|b.或 m.n 重复 x=a,x=3
29、a8(.)可选 x=(a)“.”基本数据元素 x=“a”.连结符 x=1.9,软 件 工 程,81,存折格式,软 件 工 程,82,存折户名所号帐号开户日性质(印密)1存取行50户名2字母24所号“001”.“999”帐号“00000001”.“99999999”开户日年月日性质“1”.“6”注:“1”表示普通户,“5”表示工资户等印密“0”注:印密在存折上不显示存取行日期(摘要)支出存入余额操作复核,软 件 工 程,83,3.基本加工逻辑说明,对数据流图的每一个基本加工,必须有一个基本加工逻辑说明。基本加工逻辑说明必须描述基本加工如何把输入数据流变换为输出数据流的加工规则。加工逻辑说明必须描
30、述实现加工的策略而不是实现加工的细节。加工逻辑说明中包含的信息应是充足的,完备的,有用的,无冗余的。,软 件 工 程,84,用于写加工逻辑说明的工具,结构化语言 判定表 判定树,软 件 工 程,85,(1)结构化语言,结构化语言的词汇表由 命令动词 数据字典中定义的名字 有限的自定义词 逻辑关系词 IF_THEN_ELSE、SWITCH、WHILE_DO、FOR、DO_WHILE等组成。,软 件 工 程,86,是一种介于自然语言和形式化语言之间的语言。语言的正文用基本控制结构进行分割,加工中的操作用自然语言短语来表示。其基本控制结构有三种:简单陈述句结构:避免复合语句;重复结构:while_d
31、o、for_do 或 do_while结构。判定结构:if_then_else 或switch_do 结构;,软 件 工 程,87,商店业务处理系统中“检查发货单”,if 发货单金额超过$500 then if 欠款超过了60天 then 在偿还欠款前不予批准 else(欠款未超期)发批准书,发货单 else(发货单金额未超过$500)if 欠款超过60天 then 发批准书,发货单及赊欠报告 else(欠款未超期)发批准书,发货单,软 件 工 程,88,(2)判定表,如果数据流图的加工需要依赖于多个逻辑条件的取值,使用判定表来描述比较合适。,软 件 工 程,89,以“检查发货单”为例,软 件
32、 工 程,90,(3)判定树,判定树也是用来表达加工逻辑的一种工具。有时侯它比判定表更直观。,软 件 工 程,91,这是一种有效驾驭风险的技术。在软件开发中,原型是软件的一个早期可运行的版本,它反映最终系统的部分重要特性。探索型:目的是要弄清对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。实验型:这种原型用于大规模开发和实现之前,考核方案是否合适,规格说明是否可靠。,3.4 快速原型化方法,软 件 工 程,92,进化型:这种原型的目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。,原型使用策略,废弃策略 追加策略,软 件 工 程,93,
33、建立快速原型的好处,增进软件者和用户对系统服务需求的理解,使比较含糊的具有不确定性的软件需求(主要是功能)明确化。原型化方法提供了一种有力的学习手段。可以容易地确定系统的性能,确认各项主要系统服务的可应用性,确认系统设计的可行性,确认系统作为产品的结果。有的原型可以直接成为产品,有的略加修改就可成为最终系统的一个组成部分。,软 件 工 程,94,软 件 工 程,95,原型开发技术,可执行规格说明基于场景(scenario)的设计自动程序设计专用语言可复用(reusable)的软件简化假设,软 件 工 程,96,1.可执行规格说明,可执行规格说明是用于需求规格说明的一种自动化技术。使用这种方法,
34、人们可以直接观察他们用语言规定的任何系统性行为。包括 代数规格说明 有限状态模型 可执行的数据流图,软 件 工 程,97,(1)代数规格说明,使用集合、定义于这些集合上的函数和定义于这些函数上的方程来描述对象。规格说明的操作语义用这些方程表示。举例:定义一个无界的栈及其操作,NEW_STACK:StackPUSH:Stack,Element StackPOP:Stack(Element|Undefined)POP(NEW_STACK()UndefinedPOP(PUSH(Stack,elem)elem,软 件 工 程,98,(2)有限状态模型,parnas提出的使用最广泛的一种可执行规格说明形
35、式。从一个初始状态开始接收输入,到产生输出,状态在推移变化。施加在状态元素上的约束确定了有效状态的推移。举例:建立用户程序对话,软 件 工 程,99,软 件 工 程,100,(3)可执行的数据流图,数据流图是基于结构化开发方法的结构化规格说明用一种可执行的语言程序代替定义处理逻辑的结构化英语,数据流图就成为由可执行语言程序模块组成的网络,在一定环境或工具的支持下就可成为一个可以执行的原型系统。,软 件 工 程,101,2.基于场景的设计,场景是指用户界面的原型。一个场景用以模拟在系统运行期间用户经历的事件。它提供了输入处理输出的屏幕格式和有关对话的模型。因此,软件开发人员能够给用户显示系统的逼
36、真的视图,使用户得以判断是否符合他的意图。可在任一场景中使用一套可复用的软件模块,以表达某一方面的要求。,软 件 工 程,102,可使用一种原型语言来描述原型系统。原型开发过程中用这种语言来定义 屏幕 数据项 相关的操作 从系统的外部描述开始,开发与数据库的接口 错误处理和恢复过程等系统的与外部视图一致的细节。,软 件 工 程,103,3.自动程序设计,在程序自动生成环境的支持下,利用计算机实现软件的开发。可以自动或半自动地把用户的非过程式问题规格说明转换为某种高级语言程序:演绎综合手段:基于数学推理的构造式证明。程序变换手段:将一程序转换成另一功能等价的程序,并保持其正确性不变。,软 件 工
37、 程,104,实例推广手段:从实例特征出发,将它推广为待编程序的特征,最后得到程序。过程化手段:研究甚高级语言的编译和知识的过程化。,软 件 工 程,105,4.专用语言,专用语言是应用领域的模型化语言。在原型开发中使用专用语言,可方便用户和软件开发者在计划中的系统特性方面的交流。,软 件 工 程,106,5.软件复用技术,利用可复用的模块,做出适当的组合,就可得到快速构造的原型系统。为了快速地构造原型,这些模块 必须有简单而清晰的界面;应当尽量不依赖其它的模块或数据结构;应具有一些通用的功能。,软 件 工 程,107,6.简化假设,简化假设是在开发过程中使设计者迅速得到一个简化的系统所做的假
38、设。尽管这些假设可能实际上并不能成立,但它们在原型开发过程中可以使开发者的注意力集中在一些主要的方面。,软 件 工 程,108,3.5 数据及数据库需求,在数据字典中,强调对数据存储结构的逻辑设计,并用数据结构表达数据项之间的逻辑关系。但任何一个软件系统都可能有成千上万个数据项,仅仅描述这些数据项是不够的,更重要的是如何把它们以最优的方式组织起来,以满足系统对数据的要求。,用例,软 件 工 程,109,3.5.1 有关数据库的基本概念,在软件系统中需要处理的数据是现实世界中存在的事物及其关联的反映。人们通常将与数据处理有关的的领域分为三个世界:现实世界 信息世界 数据世界现实世界是存在于人们头
39、脑之外的客观世界,现实世界中的事物可分成对象和性质两大类。,软 件 工 程,110,对象可以是人、是物,还可以是概念的东西,例如,大学、城市等。对象还可以指事物与事物间的关联。性质则是指事物的性质或特征。信息世界也叫做观念世界,是现实世界在人们头脑中的反映。客观世界中的事物在信息世界中叫做实体,反映事物之间关联的叫做实体模型。实体是由若干属性的属性值组成。属性是实体某一方面的特征,相应于事物的性质。,软 件 工 程,111,例如,一个学生实体是如下的一个5元组:(951149,袁秋慧,女,19,软件)5元组中每一元素是学生的某一属性的属性值。他们对应的属性集合是:(学号,姓名,性别,年龄,专业
40、)这些属性集合表征了“学生”实体的类型,叫做实体型。同一类型的实体的集合叫做实体集。数据世界则是信息世界中信息的数据化,现实世界中的事物及其关联在数据世界中用数据模型描述。,软 件 工 程,112,描述每一实体的数据称为记录,描述属性的数据叫做数据项或字段。与实体集相对应的称为文件。例如,学生文件就由多个记录组成,这些记录放在一起构成一个二维表。表中每一横排叫做一个记录或元组,每一纵列叫做一个属性。记录由数据项组成,正如实体由若干属性的属性值组成一样。一般数据项沿用属性名。用做属性名时表示观念信息,用做数据项名时表示数据信息。每个数据项包括两个特征:即数据类型和数据长度。,软 件 工 程,11
41、3,为了对文件中的记录有效组织和存取,通常指定一个数据项进行区别,这个数据项叫做关键字,用 _ID 标识。,软 件 工 程,114,3.5.2 E-R方法(Entity-Relationship Approach)和实体模型,在需求分析阶段进行数据库逻辑设计过程中,使用E-R图,可定义一 个实体模型。实体模型是现实世界的纯表示,它不涉及数据世界的数据结构、存取路径、存取效率等问题。因此,它可以转换成数据库中的数据模型。,软 件 工 程,115,3.5.3 数据结构的规范化,信息域分析需要确定数据的内容,每个数据项要用表格列出,最后组织成文件的逻辑结构,即面向应用而不是面向存储的结构。为了便于数
42、据库的设计,常常要对这种结构做一些简化,其中最常见的一种方法就是规范化技术。“规范化”将数据的逻辑结构归结为满足一定条件的二维表(关系)。,软 件 工 程,116,表格中每个信息项必须是一个不可分割的数据项,不可是组项。表格中每一列(列表示属性)中所有信息项必须是同一类型,各列的名字(属性名)互异,列的次序任意。表格中各行(行表示元组)互不相同,行的次序任意。不满足上述要求的二维表或关系,叫做非规范化关系。对于非规范化的关系,必须将它规范化。,软 件 工 程,117,规范化的目的是:消除数据冗余 消除关系中属性的多义性 使关系的“概念”单一化,消除组项或重复组;方便操作 使关系模式更灵活,易于
43、实现接近自然语言的查询方式。,软 件 工 程,118,用教学管理例说明如何规范化,有三个实体型,即课程、学生和教师,用三个关系保存它们的信息:学生(学号,姓名,性别,年龄,专业,籍贯)教师(职工号,姓名,年龄,职称,工资级别,工资)课程(课程号,课程名,学分,学时,课程类型),软 件 工 程,119,为表示实体型之间的关联,又建立两个关系:选课(学号,课程号,听课出勤率,作业完成率,分数)教课(职工号,课程号)这五个关系,组成了数据库的模型。在每个关系中,属性名下加下划线 指明关键字。并规定关键字能唯一地标识一个元组。关系规范化的程度,通常按属性间的依赖程度来区分,并以范式 NF(Normal
44、 Form)来表达。常用的范式分为第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。,软 件 工 程,120,设是一个关系,和是中的两个属性。若对于的任一个值,仅有一个值与之对应,则称的属性函数依赖于属性。例如,,教师(职工号,姓名,年龄,),其中,属性“姓名”,“年龄”等都函数依赖于属性“职工号”。属性可以是复合属性,如:,选课(学号,课程号,听课出勤率,),软 件 工 程,121,如果属性函数依赖于复合属性,而不与的任何真子集函数依赖,则称属性完全函数依赖于复合属性。例如在“选课”关系中,属性“听课出勤率”、“作业完成率”和“分数”等表示某个学生学习某门课程时的学习情况。只有同时
45、指定“学号”和“课程号”,才能说明是哪位学生学习哪门课程。因此,“分数”等属性完全函数依赖于“学号,课程号”。,软 件 工 程,122,判断规范化程度的条件是:关系中所有属性都是“单纯域”,即不出现“表中有表”非主属性完全函数依赖于关键字 非主属性相互独立,即任何非主属性间不存在函数依赖。如果一个关系连条件都不满足,则这个关系是非规范化的。,软 件 工 程,123,如果一个关系仅满足条件,则这个关系满足第一范式(1NF)。如果一个关系满足条件、,但不满足,则这个关系满足第二范式(2NF)。如果一个关系同时满足条件、和,则这个关系表满足第三范式(3NF)。当数据模型达到 3NF,一般情况下就能满
46、足数据库应用的需要。,软 件 工 程,124,数据库分析的过程,在需求分析阶段进行数据库分析的流程,软 件 工 程,125,为开发一个系统所使用的数据库,在开始分析数据库的需求前,分析员必须了解该系统的总目标和范围。然后建立一个完整并高度细化的信息模型。此信息模型应包括一个综合的数据字典,定义所有在开发数据库时用到的数据项。接着数据库分析定义数据库的逻辑特性和物理特性。以信息模型和系统规格说明为指导,定义数据库的逻辑数据结构。,软 件 工 程,126,这种逻辑结构必须适应数据存取、修改、关联性及其它相关需求。一旦逻辑数据结构建立起来,就可以研制数据库的物理结构。物理数据库结构定义文件结构、记录
47、格式、与硬件相关的处理方式以及数据库管理系统的特性。最后,要对模式和物理特性进行完全的评审。,软 件 工 程,127,在数据库分析过程中所考虑的因素之间存在着复杂的相互关联。改变其中的任何一个因素都会(潜在地)影响其它的因素。所以必须在各个因素之间进行折衷。这种折衷包括专用性和通用性的折衷、信息关联程度、扩充潜力及操作特性等方面的折衷。考虑信息关联程度和扩充潜力(包括信息规模和信息内容两方面)主要基于需求分析和设计阶段分派给数据库的任务。,软 件 工 程,128,第三章 需求分析,获取需求 1.需求获取原则 2.需求获取技术 3.需求调研方法 4.需求获取步骤 5.需求表达与整理 6.需求确认
48、需求分析 1.需求分析目标 2.需求分析任务 3.需求分析方法 4.需求分析过程,5.需求建模 1)功能建模 2)数据建模 3)行为建模 6.结构化分析方法-E-R图-数据字典-状态-迁移图 7.实例需求规格说明书需求评审,软 件 工 程,129,软 件 工 程,130,软 件 工 程,131,软件需求规格说明的基本原则:功能与实现分离,描述要“做什么”而不是“怎样实现”要求使用面向处理的规格说明语言,从而得到“做什么”的规格说明。如果目标软件只是一个大系统中的一个元素,那么整个大系统也包括在规格说明的描述之中。规格说明必须包括系统运行的环境。,3.6 需求规格说明的原则,软 件 工 程,13
49、2,系统规格说明必须是一个认识的模型,而不是设计或实现的模型。规格说明必须是可操作的。规格说明必须容许不完备性并允许扩充。规格说明必须局部化和松散的耦合。当信息被修改时,只要修改某个单个的段落,能够很容易地加入和删去一些段落。,软 件 工 程,133,软 件 工 程,134,软 件 工 程,135,软 件 工 程,136,软 件 工 程,137,软 件 工 程,138,软 件 工 程,139,软 件 工 程,140,软 件 工 程,141,软 件 工 程,142,软 件 工 程,143,软 件 工 程,144,软 件 工 程,145,软 件 工 程,146,软 件 工 程,147,软 件 工
50、程,148,软 件 工 程,149,软 件 工 程,150,软 件 工 程,151,软 件 工 程,152,软 件 工 程,153,软 件 工 程,154,软 件 工 程,155,软 件 工 程,156,软 件 工 程,157,软 件 工 程,158,需求评审的内容:系统定义的目标是否与用户的要求一致;系统需求分析阶段提供的文档资料是否齐全;文档中的所有描述是否完整、清晰、准确反映用户要求;与所有其它系统成分的重要接口是否都已经描述;,3.7 需求评审,软 件 工 程,159,主要功能是否已包括在规定的软件范围之内,是否都已充分说明;软件的行为和它必须处理的信息、必须完成的功能是否一致;设计的