《软件工程》课件第四章-需求分析.ppt
第四章 系统分析,主要内容,2.1 系统分析2.2 需求分析2.3 结构化分析方法2.4 快速原型化方法2.5 需求定义与评审,2.1 系统分析,如何识别、获取需求?你能够采取何种手段与用户进行交流沟通?何为需求建模?你如何理解模型与建模?,2.1 系统分析,基于计算机的系统的系统元素包括硬件、软件、人、数据库、文档和过程。系统分析的目标识别用户要求评价系统的可行性,进行经济和技术分析把功能分配给硬件、软件、人、数据库和其它系统元素建立成本和进度限制生成系统规格说明,识别用户要求,分析员必须考虑以下问题:识别希望的功能和性能范围;确定系统的功能、性能、约束和接口;,功能和性能 可靠性和质量 总的系统目标 成本与进度限制,制造需求 市场与竞争情况 有效的技术 将来可能的扩充,2.2 软件需求分析:“做什么?”,需求分析的过程是开发人员与用户共同协商,准确地定义未来系统的目标,确定为了满足用户的需求系统必须做什么。并且使用软件开发人员和用户都能理解的语言准确地表达出来,即用 规范的形式准确地表达用户的需求。,软件需求重要性例子,“喂,是Jack吗?我是人力资源部的Tom,我们在使用你编写的职员系统时遇到一个问题,一个职员想把她的名字改成Sparkle Starlight,而系统不允许,你能帮帮忙吗?”“她嫁给了一个姓Starlight的人吗?”Jack问道。“不,她没有结婚,而仅仅是要更改她的名字,”Tom回答,“就是这问题,好象我们只能在婚姻状况改变时才能更改姓名。”“当然这样,我从没想到谁会莫名其妙地更改姓名,我也不记得你曾告诉我系统需要处理这样的事情。”Jack说。Tom说:“我想你当然知道每个人只要愿意都可以随时合法更改其姓名。但不管怎样,你在本周五之前解决这问题,否则Sparkle不能支付她的帐单。”“这不是我的错!我现在正忙着做一个新的系统,还要做一些别的需求变更请求。很抱歉,只能下周才能修改。”,故事带给我们的启示,影响:作为客户,很恼火,因为软件系统不能进行一项基本的操作。哪怕开发者给其解决了,也不会感谢他。作为开发者,也很烦人,迫使你增加了当前的工作,又要你优先处理。原因:由于收集、编写、协商、修改需求过程的手续或方法失误带来的。这里是非正式信息的收集、未确定或不明确的功能、未发现或未经交流的假设、不完善的需求文档,以及突发的需求变更过程所造成的。解决办法:重视需求分析,派经验丰富的人员做,最大程度的减少类似情况发生。,需求分析是一项软件工程活动,其目的是:清楚地理解所要解决的问题,完整地获取用户要求;刻划出软件的功能和性能;指明软件与其他系统元素的接口;建立软件必须满足的约束。,1.软件需求分析的目的,需求分析的特点,老问题:问题的复杂性交流障碍(讲究技巧和原则)不完备性和不一致性需求易变性(动态性),派经验丰富的人去干!,系统分析员,软件需求的任务理解、分解、表达、评审,1.问题识别:双方确定问题的综合需求。功能需求:系统必须做什么?性能需求:做得怎样?例:response time,memory,back-up memory,环境需求:运行环境、软硬件配置等。用户界面需求可靠性、安全性、保密性、可移植性和可维护性等方面的需求。将来可能提出的要求,共同理解!,软件需求的任务,2.分析与综合:导出软件的逻辑模型。对获取的需求进行一致性的分析检查,在分析、综合中逐步细化软件功能,划分成各个子功能。也对数据域进行分解,分配到各个子功能上,并用图文结合的形式,建立起新系统的逻辑模型。,软件需求的任务,3.编写文档:编写需求说明书 编写初步用户使用手册 编写确认测试计划 修改完善项目开发计划,需求文档,软件需求的任务,需求分析研究的对象是用户的要求。必须全面理解用户的各项要求,准确表达被接受的用户要求。只有经过确切描述的软件需求才能成为软件设计的基础。,4.技术审查和管理复审,软件需求的任务,验证需求的一致性验证需求的完整性验证需求的现实性验证需求的有效性,方法:人工审查 开发原型系统探索型 使用软件工具 完整性、一致性,基线,4.技术审查和管理复审,软件需求分析的原则需要能够表达和理解问题的信息域和功能域 信息流:数据和控制通过一个系统时的变化方式。两个功能之间的数据/控制传递就确定了功能间的接口。信息内容:单个数据或控制对象,它们构成了某个更大的由软件变换生成的信息的集合。信息结构:各种数据和控制项的内部组织。描述作为外部事件结果的软件行为,建立行为模型对描述信息、功能和行为的模型进行分解,用层次的方式展示细节,需求分析的步骤,需求获取需求提炼:分析建模(导出软件逻辑模型)需求描述:编写需求验证,需求获取的目的 清楚地理解所要解决的问题 完整地获取用户需求学习用户的有关业务知识,在用户帮助下了解用户的软件或子系统业务流程,结合软件开发和应用的经验提出新的用户需求。,方法:进行调查研究调查研究的目的:是了解用户的真正需要调查研究的方法访谈:正式访谈和非正式访谈。分发调查表。开会讨论确认的方法。,建立分析小组 领域专家:主角 系统分析员:导演,某出版社系统调查表,某出版社系统调查表,需求获取的内容,业务需求 反映了组织或客户对系统、产品高层次的目标要求,它们一般在项目视图和范围文档中给予说明。用户需求 描述用户使用软件需要完成哪些任务,它们可通过使用实例图或脚本说明加以阐明。功能非功能需求 定义了开发者必须实现的软件功能,而非功能需求如表所示:,非功能性需求表:,2.两类需求包括的内容,(1)功能(2)性能(3)环境(4)界面(5)用户或人的因素(6)文档(7)数据(8)资源(9)安全保密(10)软件成本消耗与开发进度(11)质量保证,系统做什么?系统何时做什么?系统何时及如何修改或升级?,软件开发的技术性指标。例如:存储容量限制、执行速度、相应时间、吞吐量,硬件:机型、外设、接口、地点、分布、温度、湿度、磁场干扰等。软件:操作系统、网络、数据库,有来自其它系统的输入吗?到自其它系统的输出吗?对数据格式有规定吗?对数据存储介质有规定吗?,用户类型?各种用户熟练程度?需受何种训练?用户理解、使用系统的难度?用户错误操作系统的可能性?,需哪些文档、针对哪些读者,输入、输出数据的格式?接收、发送数据的频率?数据的准确性和精度?数据流量?数据需保持的时间?,软件运行时所需的数据、软件。内存空间等资源。软件开发、维护所需的人力、支撑软件、开发设备等,需对访问系统或系统信息加以控 制吗?如何隔离用户之间的数据?用户程序如何与其它程序和操作?系统隔离?系统备份要求?,开发有规定的时间表吗?软硬件投资有无限制?,系统的可靠性要求?系统必须监测和隔离错误吗?规定系统平均出错时间?出错后,重启系统允许的时间?系统变化如何反映到设计中?维护是否包括对系统的改进?系统的可移植性?,需求获取过程,需求获取包括以下活动:发现和分析问题 发现问题症结,并分析问题的原因/结果关系。获取需求 根据对问题的理解定义需求。使用调查研究方法收集信息;遵循需求获取框架,按照三个成分观察:即数据、过程和接口。需求归档 以草稿形式归档调查结果。形式有用例、决策表、需求表等。,需求获取技术的基本特征,好的需求获取技术,对于规范需求获取活动,高效准确地获取需求定义,是十分重要的。好的需求获取技术,应具有如下基本特征:提供便于沟通的工具,如易于理解的语言和直观的图表;提供定义系统边界(交互)的方法;提供支持抽象的机制,如“分解”、“映射”等;,软件工程,29,鼓励分析员使用面向问题的术语思考问题,编写文档;为分析员提供多种可供选择的解决方案;适应需求的变化。适于以上特征的需求获取方法:基于数据流图的结构化分析方法;基于用例(use case)的建模方法。需求获取技术的关键点在于:深入浅出 需求获取要尽可能全面、细致。,软件工程,30,需求获取技术的关键点在于:深入浅出 需求获取要尽可能全面、细致。获取的需求是个全集,系统真正实现的是个子集。分析时的调研内容并不都纳入到新系统中,目的在于以后的扩充。以流程为主线 在与用户交流的过程中,应该用流程将所有的内容串起来。如信息、组织结构、处理规则等。这样便于交流沟通。流程描述有宏观,也有微观。既要强调总体的业务流程、全生存周期的业务流程,又要对流程细化,有分支的业务流程。,需求获取应遵循的原则,抽象和分解是在人们认识世界和改造世界的长期实践中总结出来的行之有效的原则,在需求获取的过程中需遵循的三个原则:分解:捕获问题空间的整体 部分关系。如问题子问题分解;b.抽象:捕获问题空间的一般化 特殊化关系。如问题的不同变型;c.投影:捕获问题空间的多维视图。即从不同角度考察。,需求获取的步骤,软件开发项目和组织文化的不同,对于需求开发没有一个简单的、公式化的途径。下面9个步骤,针对信息系统的需求获取。定义项目的视图和范围 包括组织结构图、各部门的岗位/角色列表。确定用户类 包括人员/责任矩阵。确定目标系统的业务工作流 包括物流、资金流、信息流,建立业务工作流模型。,运用需求获取技术开发反映主要业务规则的用例(或数据流图)并设置优先级。收集来自用户的质量特性信息和其他非功能需求 将性能、安全性、可靠性等需求和其他设计约束结合业务规则,形成功能需求。分类在用例(或数据流图)中涉及的数据 包括数据的组成和数据之间的关系。详细拟订用例(或数据流图)的规格说明,建立功能模型,并进行审查,用以澄清需求获取的参与者对需求的理解。开发并评估界面原型 设想输入设备、输出设备、显示风格、显示方式、输出格式等,建立接口规范和信息流传输规则。从功能描述中开发概念测试用例 用测试用例来验证用例(或数据流图)、功能需求和原型。,需求获取可能是软件开发中最困难、最关键、最易出错及最需要交流的方面。表现在:需求的不稳定性:在整个软件生存周期内软件需求会随着时间的推移发生变化;需求的不准确性:用户和开发人员的认识会随着使用系统实现业务流程的实践逐步提高,一开始不可能设想得面面俱到。需求获取只有通过有效的客户/开发者的合作才能成功。,需求整理与表达的方法,采用穷举方法可以避免遗漏。采用归纳方法,通过对各种情况进行综合分类可以使问题条理化。采用抽象方法,可以发现问题的实质,抓住问题的主要矛盾,忽略其次要矛盾。需求整理可以多种手段共用,如组织结构图、业务流程图、多叉树、关系矩阵、文字叙述、表格、图形等。需求描述包括组织结构与岗位定义、业务流程、处理规则、数据项、功能以及上述 5 个方面的关系。,4.需求建模,需求建模是为了分析需求,以确定项目的确切需求。需求建模遵循三个原则:划分:描述需求的整体部分关系;抽象:描述需求的一般化特殊化关系;投影:描述需求的多维视图;定义系统模型要区分逻辑模型和物理模型。常用模型有数据建模、功能建模和过程建模。,常用的分析方法,功能分解法面向数据流的结构化分析方法(SA)面向数据结构的Jackson方法(JSD)面向数据结构的结构化数据系统开发方法(DSSD)面向对象的分析方法(OOA)等,需求分析的方法,功能分解法:系统功能子功能功能接口。过程抽象观点,很难与软件设计明确分离。基点放在功能上,不稳定,难以适用需求的变化。功能框图,层次方框图:用树形结构的一系列多层次的矩形框描绘数据的层次结构。,产 品,硬 件,软 件,服 务,处理机,存储器,外部设备,系统软件,应用软件,软件服务,硬件维修,培训,操作系统,编译程序,软件工具,注意:层次方框图即可以表示数据的层次结构,也可以表示程序的层次结构,结构化分析方法最初只是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。扩充后,将建模技术扩展到数据建模、功能建模和行为建模,以实体-关系图、数据流图和控制流图、状态-迁移图为工具,数据字典为核心,从不同视点建立系统的分析模型。,2.3 结构化分析方法,需求分析的方法,结构化分析方法:由数据流和数据字典构成,适于数据处理领域问题。但该方法的一个难点是确定数据流之间的变换,而且数据字典的规模也是一个问题,对数据结构的强调很少。,数据流图:描绘系统的逻辑模型,图中没有具体的物理元素,只是描绘信息在系统中流动和处理的情况。设计数据流图只需考虑系统必须完成的基本逻辑功能,完全不需要考虑如何具体的实现这些功能。,结构化分析的组成结构数据字典(DD):模型核心(中心库)E-R图(ERD):数据建模的基础数据流图(DFD)指明数据在系统中移动时如何被变换;描述对数据流进行变换的功能;DFD中每个功能的描述包含在加工规约。状态变迁图(STD)指明作为外部事件的结果,系统将如何动作。,将分析模型转换为软件设计,数据字典,数据流图,E-R图,状态变迁图,加,工,规,约,控制规约,数,据,对,描 述,象,数 据 设 计,体系结构设计,接口设计,过程设计,分析模型,设计模型,软件工程,45,1.数据建模,数据模型包括三种互相关联的信息:数据对象,描述对象的属性,描述对象间相互连接的关系。在需求分析阶段描述数据对象和它们之间的关系,使用了E-R 图。例如,在教学管理中,一个教师可以教授零门、一门或多门课程,每位学生也需要学习几门课程。因此,教学管理中涉及的对象有学生、教师和课程。,教学数据模型,实例的关联有三种:一对一(1:1);一对多(1:m);多对多(n:m)。这种实例的关联称为“基数”,基数表明了“重复性”。,2.功能建模和数据流,最初,结构化分析方法仅讨论数据流建模,目标系统被表示成如图所示的数据变换流程图。系统的功能体现在核心的数据变换中。,顶层数据流图(上下文环境图),结构化分析方法(SA方法)-面向数据流自顶向下逐步求精进行需求分析的方法。,沿数据流图回朔,用户复查,细化数据流图,修正开发计划,书写文档,审 查和复审,分析过程,自顶而下逐层分解的分析策略 从系统的基本模型(把整个系统看成一个加工)开始,逐层地对系统进行分解。每分解一次,加工的数据量就多一些,每个加工的的功能也要更具体一些。继续重复这种分解,直到所有的加工都足够简单,不必再分解为止。通常把不需要再分解的加工称为“基本加工”,把这种分解方法称为“自顶而下,逐层细化”。,分层的数据流图,数据流图,1.符号(四种基本符号),数据的源点或终点,数据处理,数据存储,数据流,图形中的附加符号,表示数据流之间是“与”关系(同时存在)表示数据流之间是“或”关系 表示只能从几个数据流中选一个(互斥关系),描述银行取款过程的数据流图,3、画数据流图的步骤,画顶层数据流图画分层数据流图画总的数据流图,购书单,教材购销系统,例:教材购销系统的数据流程图(1)首先画出系统的输入输出,也就是画出它的顶层数据流图。,学生,领书单,缺书单,进书通知,书库保管员,购书单,缺书单,销售教材,采购教材,1,2,(2)画出系统的内部,即画出下一层的数据流图。,教材存量表,学生,F1,缺书登记表,F2,书库保管员,进书通知,教材入库信息,领书单,1.2,(3)分解上层图中的加工,画出下层数据流图。,无效书单,教材存量表,F1,开发票,F2,缺书登记表,学生,各班学生用书表,F3,售书登记表,F4,1.1,审查有效性,1.3,登记并开领书单,学生,1.5,补售教材,1.4,登记缺书,购书单,发票,领书 单,有效购书单,教材入库信息,按书号汇总缺书,2.1,2.3,第三层DFD(1层)采购子系统(2.0),待购教材表,F5,教材一览表,F6,书库保管员,进书通知,教材存量表,F1,2.2,按出版社统计缺书,修改教材库存和待购量,F2,缺书登记表,缺书单,教材入库信息,61,画分层DFD图的基本原则,加工分解的原则自然性 均匀性分解度,数据守恒与数据封闭原则,子图与父图的“平衡”,合理使用文件,检查和修改数据流图的原则,数据流图上所有图形符号只限于前述四种基本图形元素数据流图的主图必须包括前述四种基本元素,缺一不可数据流图的主图上的数据流必须封闭在外部实体之间每个加工至少有一个输入数据流和一个输出数据流在数据流图中,需按层给加工框编号。编号表明该加工所处层次及上下层的亲子关系规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。此即父图与子图的平衡可以在数据流图中加入物质流,帮助用户理解数据流图图上每个元素都必须有名字数据流图中不可夹带控制流初画时可以忽略琐碎的细节,以集中精力于主要数据流,画数据流时需注意的问题,不要把控制流作为数据流 如:下图中读下张卡属于控制流,不应画出。不要标出激发条件,合法卡片,卡片信息,读入卡片,卡片校验,读下张卡,工资单,工资率,计算工资,每月1号,职工档案,分层DFD图的改进,DFD图必须经过反复修改,才能获得最终的目标系统的逻辑模型(目标系统的DFD图)。可从以下方面考虑DFD图的改进:1、检查数据流的正确性 数据守恒 子图、父图的平衡 文件使用是否合理。特别注意输入/出文件的数据流。2、改进DFD图的易理解性 简化加工之间的联系(加工间的数据流越少,独立性越强,易理解性越好)。改进分解的均匀性。适当命名(各成分名称无二义性,准确、具体)。,64,绘制数据流图的几个问题,65,合理地命名:数据流程图中对每一个元素都要命名,恰当地命名有助于数据流程图的理解与阅读。命名原则:为了避免引起错觉,为每个元素所取的名字要能反映该元素的整体性内容,而不只是它的部分内容。每个元素的名字都能有唯一地标识该元素。避免用空洞的名字,要具体的含义。如果发现难以为某个数据流或加工命名时,这往往是数据流图分解不当的征兆,可重新分解。,绘制数据流图的几个问题(二),66,编号的设置子图的编号是父图相应的加工的编号。子图中加工编号由父图号、小数点与局部号组成。,绘制数据流图的几个问题(三),父图-子图平衡:模型分解时必须保持父图的输入输出数据流和子图输入输出数据流相同。,67,父图-子图平衡,68,父图-子图平衡,69,父图-子图平衡补充说明,70,借助数据字典判断:,绘制数据流图的几个问题(三),71,局部数据存储 局部数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口。在子图中出现的数据存贮,可以不出现在父图中,画父图时只需画出处理逻辑之间的联系,不必画出各个处理逻辑内部的细节,有助于实现信息隐蔽。,库存记录,局部数据存储的使用,出现在加工之间的界面时,才画出来。,72,绘制数据流图的几个问题(四),73,加工的分解与分细的程度为提高数据流图的易理解性,注意合理分解。分得太细,则使得层次太多;分得太快,则达不到分层的目的。从管理的层次结构原理来看,一个领导人管理他的下属一般不超过7人,故在分解一层时不宜超过7个加工。一个加工分解到基本加工为止。基本加工:能表达系统所有的逻辑功能和必要的数据输入与输出,这些功能与数据的描述能使用户清楚地理解,并且还能使以后的系统设计人员看到每一个加工,有一个明确的概念,并据此能设计程序模块实现这些加工。注意子加工的独立性和匀称性。,数据流图实例功能描述:对考生送来的报名单进行检查合格的报名单编好序号后将准考证返送给考生,并将汇总后的考生名单送给阅卷站对阅卷站送来的成绩进行检查,并根据考试中心制定的合格标准审定合格者制定考生通知单(含成绩合格、不合格的标志)发送给考生按地区进行成绩分类统计和试题难度分析,产生统计分析表汇报给考试中心,74,考务处理系统顶层数据流图,75,根据考务处理业务,画出顶层数据流图,以反映最主要业务处理流程及系统与外界的关系。经过分析,考务业务处理的主要功能应当有登记报名单、统计成绩两个主要数据流。输入的源点和输出终点是考生、考试中心和阅卷站。然后从输入端开始,根据考务业务工作流,画出数据流流经的各加工框,逐步画到输出端,得到第 0 层数据流图。,考务系统0层数据流图,77,考务系统一层数据流图 审核报名单子系统,78,考务系统一层数据流图 统计成绩子系统,79,检查成绩清单,2.1,审定合格者,2.2,考生名册,正确成绩清单,制作通知单,2.3,分析统计成绩,2.4,分析试题难度,2.5,试题得分清单,考生通知单,难度分析表,合格标准,分类统计表,成绩清单,错误成绩清单,经审定的成绩清单,数据流图的优缺点,80,总体概念强,每一层都明确强调“干什么”,“需要什么”,“给出什么”。可以反映出数据的流向和处理过程。由于自顶向下分析,容易及早发现系统各部分的逻辑错误,也容易修正。容易与计算机处理相对照。不直观,一般都要在作业流程分析的基础上加以概括、抽象、修正来得到。如果没有计算机系统帮助的话,人工绘制太麻烦,工作量较大。,几种流程图的比较,81,与业务流程图的区别系统流程图中不仅有数据流,还有物质流、资金流。数据流程图仅以数据流的形态来反映一个组织中整个管理业务的过程。与系统结构图的区别程序结构图反映模块之间的控制关系,以及模块之间的调用关系,而数据流图则不反映控制关系、调用关系、控制流,只画数据流。与程序流程图的区别程序流程图中的处理框之间有严格的时间上的顺序,也就先执行哪个处理框,起始点以及终止点等。而数据流程图只反映数据的流向、加工和必要的数据存储,它不反映加工的先后的时间顺序。,课堂作业,82,假如要分析一家公司的营销系统。其采购部门每天须要按销售部门提供的定货单(须定的货物)向供应商采购货物。每种货物的数量都存放在数据存储货物库存中,销售和采购使每种货物数量发生的变化能够在此数据存储中及时被反映出来。具体功能如下:1、销售部门根据顾客的定货单来确定订货,若可发货则产生发货单,并修改相应库存、制订报表,否则登记缺货,并报采购部门;2、采购部门在接到消息后按照货物进行汇总,并确定订货单,进行购货,货物购进后修改库存并将到货通知发送销售部门进行发货。,IPO 图:输入处理输出(Input Process Output)图的简称。,【例】招聘考试成绩管理系统的 IPO 图。,3.行为建模,行为建模给出需求分析方法的所有操作原则,但只有结构化分析方法的扩充版本才提供这种建模的符号。数据流图不描述时序关系,控制和事件流通过行为模型描述。在描述系统或各个数据对象的行为时,采用状态迁移图。通过描述系统或对象的状态,以及引起系统或对象状态转换的事件来表示系统或对象的行为。,状态迁移图,例如,有关处理器分配的进程状态迁移。,状态迁移图是描述系统的状态如何响应外部的事件进行推移的一种图形表示。“”表示可得到的系统状态“”表示从一种状态向另一种状态的迁移。,Petri网,Petri网已广泛地应用于硬件与软件系统的开发中,它适用于描述相互独立、协同操作的处理系统,也就是并发执行的处理系统。Petri网简称PNG(Petri Net Graph),它有两种结点:位置:符号“”,表示系统状态。转移:符号“|”,表示系统中的事件。有向边“”表示向转移的输入,或从转移的输出。标记,或称令牌(token),是表明系统当前处于什么状态的标志。,Petri网可能的变化有:,例如,处理两个进程PR1和PR2的同步问题(此时两个进程共用一个资源R):,数据字典,数据字典(Data Dictionary,DD)数据字典是结构化分析方法的核心,与各模型的图形表示配合,能清楚地表达数据处理的要求。是对实体-关系图、状态转换图和数据流图中出现的所有数据对象、属性、关系、状态、数据流、文件、处理等元素的定义的集合。数据字典的内容.数据项.数据流.数据存储.加工处理.外部项,(1)数据流词条描述,数据流名:说明:简要介绍作用即它产生的原因和结果数据流来源:来自何方数据流去向:去向何处数据流组成:数据结构数据量流通量:数据量,流通量,数据流条目说明举例,数据流名:购书申请单别名:无说明:学生购书时填写的项目数据流来源:学生数据流去向:加工1“审查并开发票”数据流组成:(学号)姓名书号数量数据流量:1000次/周 高峰值:开学期间1000次/天,(2)数据元素词条描述,数据元素名:类型:数字(离散值,连续值),文字(编码类型)长度:取值范围:相关的数据元素及数据结构:,数据元素条目说明举例,数据项名:货物编号 别名:G-No,G-num 简述:本公司的所有货物的编号 类型:字符串 长度:10 取值范围及含义:第1位:JG(进口/国产)第24位:LB01.LB29(类别)第57位:“A00”.“A99”(规格)第810位:“001”.“999”(品名编号),(3)数据文件词条描述,数据文件名:简述:存放的是什么数据输入数据:输出数据:数据文件组成:数据结构存储方式:顺序,直接,关键码存取频率:,数据文件条目说明举例,文件名:库存记录别名:无简述:存放库存所有可供货物的信息组成:货物名称编号生产厂家单价库存量组织方式:索引文件,以货物编号为关键字查询要求:要求能够立即查询,(4)加工逻辑词条描述,加工名:加工编号:反映该加工的层次简要描述:加工逻辑及功能简述输入数据流:输出数据流:加工逻辑:简述加工程序,加工顺序,加工逻辑条目描述举例,加工逻辑名:查阅库存 编号:1.2 激活条件:接收到合格订单时 优先级:普通 输入:合格订单 输出:可供货订单、缺货订单 加工逻辑:,(5)源点及汇(终)点词条描述,名称:外部实体名简要描述:什么外部实体有关数据流:数目:,5.数据结构的描述,符号 含 义 举 例 被定义为 与 x=a+b.,.或.|.或 x=a,b,x=a|b.或 m.n 重复 x=a,x=2a9(.)可选 x=(a)“.”基本数据元素 x=a.连结符 x=1.9,存折户名所号帐号开户日性质(印密)1 存取行50户名 2 字母24所号 001.999帐号 00000001.99999999开户日年月日性质“1”.“5”注:“1”表示普通户“5”表示工资户等印密“0”注:印密在存折上不显示存取行日期(摘要)支出存入余额操作复核,数据字典与图形工具,应遵守以下约定:可以用图形工具描述的尽量用图形描述。有关数据的组成在数据字典中描述。有关数据的加工细节在数据字典中描述。编写数据字典时不能有遗漏和重复,要避免不一致性。数据字典中的条目的排列要有一定规律,方便查阅。如按英文字母表顺序或按汉字笔画顺序排列或按功能分类等;数据字典的要易于更新修改。,数据字典与数据流图等图形工具应相辅相成、互相配合,既要互相补充又要避免冗余。,【例】写出招聘考试成绩统计系统的数据字典,1、数据项定义:考生准考证号姓名性别出生年月地址1课程名成绩3总分名次专业代号录用否录用单位 考生文件分两种:一种按准考证号码次序排列,另一种按考生成绩总分由高到低排列。专业代号1法律/2行政学/3财经学 录用通知书准考证号专业姓名录用单位 考生成绩单准考证号姓名专业1课程名成绩3总分2、处理算法:排序:(1)三个专业的考生分别按总分由高到低的次序排序,输出成绩单,供录用参考。(2)按准考证号的顺序将考生成绩单打印出来,一份给招干委员会留底,另一份发给考生。录用原则:各专业按考生成绩总分从高分到低分的次序录用,总分相同时专业课成绩高的优先。,【例】写出医疗费管理系统数据字典,1、数据项职工部门名职工号姓名当日明细账报销日期部门名职工号姓名校外门诊费校内门诊费住院费总额余额子女医疗费子女总额医疗费总账部门名职工号姓名校外门诊费校内门诊费住院费总额余额子女医疗费子女总额余额限额总额(小于 0 时,取 为0)医疗费明细账当日明细账2、操作说明(1)输入数据时只需输入职工号,就可在职工库中查找出该职工所属部门名及姓名,显示在屏幕上供核对,并将医疗费总账中该职工今年内今日前已报销的医疗费总额和余额显示出来。(2)输入当日报销的校外门诊费、校内门诊费、住院费、子女医疗费后,计算机自动算出该职工的医疗费总额和余额。(3)核对:算出当日所有职工报销的各类医疗费的分类总和及所有总和,供出纳员核对。若发现错误应进入“修改”模块进行修改。核对正确后可进入“累加”模块。(4)累加:把职工当天报销的各类医疗费与以前报销的分类累加并算出总额。,6.基本加工逻辑说明,对数据流图的每一个基本加工,必须有一个基本加工逻辑说明。基本加工逻辑说明必须描述基本加工如何把输入数据流变换为输出数据流的加工规则。加工逻辑说明必须描述实现加工的策略而不是实现加工的细节。加工逻辑说明中包含的信息应是充足的,完备的,有用的,无冗余的。描述加工逻辑说明的工具:结构化语言、决策表、决策树。,(1)结构化语言,结构化英语的词汇表由 英语命令动词 数据词典中定义的名字 有限的自定义词 逻辑关系词 IF_THEN_ELSE、CASE_OF、WHILE_DO、REPEAT_UNTIL等组成。,分层(1)外层:用来描述控制结构,采用简单、选择、重复三种基本结构 A、顺序结构:又叫简单结构,它尽量要采取简单语句避免复合语句。B、选择结构:又叫判定结构,一般用if_then_else或case_of 结构 C、重复结构:一般用while_do(do_while)语句或repeat_until语句(2)内层:一般采用祈使语句的自然语言短语,使用数据字典中的名词和有限的自定义词,其动词含义要具体,尽量不用形容词和副词来修饰,还可以使用一些简单的算术运算和逻辑运算符号。,商店业务处理系统中“检查发货单”,IF 发货单金额超过$500 THEN IF 欠款超过了60天 THEN 在偿还欠款前不予批准 ELSE(欠款未超期)发批准书,发货单 ENDIFELSE(发货单金额未超过$500)IF 欠款超过60天 THEN 发批准书,发货单及赊欠报告 ELSE(欠款未超期)发批准书,发货单 ENDIFENDIF,(2)判定表,如果数据流图的加工需要依赖于多个逻辑条件的取值,使用判定表来描述比较合适,以“检查发货单”为例,例:优惠折扣,某商业公司的销售策略规定:不同的购货量、不同的顾客可以享受不同的优惠。具体办法是:年购货额在5万元以上且最近三个月无欠款的顾客可享受15%的折扣;近三个月有欠款,但是本公司十年以上的老顾客,可享受10%的折扣;若不是老顾客,只有5%的折扣;年购货额在5万元以下无折扣。,举例:优惠折扣,1.识别判断条件,并列出所有的条件及条件值;C1(交易额)=50000元、50000元C2(信誉好)近三个月无欠款、有欠款C3(老顾客)交易10年以上、10 年以下2.建立条件组合数三种条件,每种各有二种情况,共有8种组合3.识别每个独立步骤A1:折扣 15%A2:折扣 10%A3:折扣 5%A4:无折扣,4.设计判断表格,举例:优惠折扣,5.合并与简化,举例:优惠折扣,5.合并与简化,举例:优惠折扣,(3)判定树,判定树也是用来表达加工逻辑的一种工具。有时侯它比判定表更直观。,例:优惠折扣的判定树,三种表达工具的比较,(1)从工具的难易程度讲,判定树最容易,而判定表难度较高。(2)对于逻辑验证,判定表最好,而判定树较差。(3)对于直观表达逻辑结构,判定树最好,而判定表最差。(4)作为程序设计说明,结构化语言最好,判定树最差。(5)对于机器可读性,结构化语言最好,判定树最差。(6)对于可修改性,结构化语言最好,而判定表的可修改性是最低。,综上所述,可以得出的结论:对于一个不太复杂的判断逻辑,即条件只有2-3个,条件组合及行动在10-15个之间,使用决策树最好。对于一个复杂的判断逻辑(条件多,组合多,相应的动作也多),使用决策表最好。对于一个处理逻辑既包含了一般的顺序执行动作,又包含了判断或循环逻辑,则使用结构化语言最好。,三种表达工具的比较,练 习,交易所规定给经纪人的手续费计算方法如下:总手续=基本手续费+交易中的每股价格和股数有关的附加手续费如交易额少于1000元,则基本手续费为交易额的8.4%;如交易额在1000-10000元之间,则基本手续费为交易额的5%+34;如交易额大于10000元,则基本手续费为交易额的4%+134;当每股售价低于14元时,附加手续费为基本手续费的5%(买入卖出数是100的倍数),否则附加手续费为基本手续费的9%(不是100的倍数);,这是一种有效驾驭风险的技术。通过原型可以增进软件者和用户对系统服务需求的理解,使比较含糊的具有不确定性的软件需求(主要是功能)明确化。可以容易地确定系统的性能,确认各项主要系统服务的可应用性,确认系统设计的可行性,确认系统作为产品的结果。有的原型可以直接成为产品,有的略加修改就可成为最终系统的一个组成部分。,2.4 快速原型化方法,探索型:目的是要弄清对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。实验型:这种原型用于大规模开发和实现之前,考核方案是否合适,规格说明是否可靠。进化型:这种原型的目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。,1.原型分类,软件工程,125,2.原型使用策略,软件原型支持需求工程的两项活动:需求获取需求有效性验证其他用途:用户培训系统测试原型开发主要分类:进化式原型开发抛弃式原型开发,1)进化式原型开发,基本思路是:先给出一个系统的最初实现,让用户去使用和评价,不断进行细化和改善,经过多次这样的反复过程后形成最终的完善的系统。,2)抛弃式原型开发,基本思路是:原型的根本作用是弄清楚需求和为风险评估提供补充信息。通过评估后,原型被抛弃,重新规划和实施系统的开发。,3.原型开发技术,可执行规格说明基于场景(scenario)的设计自动程序设计专用语言可复用(reusable)的软件简化假设,1)可执行规格说明,可执行规格说明是用于需求规格说明的一种自动化技术。使用这种方法,人们可以直接观察他们用语言规定的任何系统性行为。包括代数规格说明有限状态模型可执行的数据流图,软件工程,130,代数规格说明,使用集合、定义于这些集合上的函数和定义于这些函数上的方程来描述对象。规格说明的操作语义用这些方程表示。举例:定义一个无界的栈及其操作,NEW_STACK:StackPUSH:Stack,Element StackPOP:Stack(Element|Undefined)POP(NEW_STACK()UndefinedPOP(PUSH(Stack,elem)elem,有限状态模型,parnas提出的使用最广泛的一种可执行规格说明形式。从一个初始状态开始接收输入,到产生输出,状态在推移变化。施加在状态元素上的约束确定了有效状态的推移。举例:建立用户程序 对话,软件工程,132,可执行的数据流图,数据流图是基于结构化开发方法的结构化规格说明。用一种可执行的语言程序代替定义处理逻辑的结构化英语,数据流图就成为由可执行语言程序模块组成的网络,在一定环境或工具的支持下就可成为一个可以执行的原型系统。,2)基于场景的设计,场景是指用户界面的原型。一个场景用以模拟在系统运行期间用户经历的事件。它提供了输入处理输出的屏幕格式和有关对话的模型。因此,软件开发人员能够给用户显示系统的逼真的视图,使用户得以判断是否符合他的意图。分析员与用户的沟通往往通过演示场景。可在任一场景中使用一套可复用的软件模块,以表达某一方面的要求。,3)自动程序设计,在程序自动生成环境的支持下,利用计算机实现软件的开发。可以自动或半自动地把用户的非过程式问题规格说明转换为某种高级语言程序:演绎综合手段:基于数学推理的构造式证明。程序变换手段:将一程序转换成另一功能等价的程序,并保持其正确性不变。实例推广手段:从实例特征出发,将它推广为待编程序的特征,最后得到程序。过程化手段:研究甚高级语言的编译和知识的过程化。,专用语言是应用领域的模型化语言。在原型开发中使用专用语言,可方便用户和软件开发者在计划中的系统特性方面的交流。,4)专用语言,5)软件复用技术,利用可复用的模块,做出适当的组合,就可得到快速构造的原型系统。为了快速地构造原型,这些模块必须有简单而清晰的界面;应当尽量不依赖其它的模块或数据结构;应具有一些通用的功能。,6)简化假设,在开发过程中为使设计者迅速得到一个简化的系统,可以预设一些使得问题简化的假设。尽管这些假设可能实际上并不能成立,但它们在原型开发过程中可以使开发者的注意力集中在一些主要的方面。,2.5 验证软件需求,从哪几个方面验证软件需