需求的困难本章主要内容分析建模与规格说明ER图数据规范化状态转换图其他图形工具需求文档验证软件需求需求管理过程业务建模-需求的传统描述方法任何一个软件系统本质上都是信息处理系统。信息处理系统的基本功能是把输入数据转变成输出。系统输入输出3.4.1模型和建模分析员需要一组模型来充分描述信息系统的需求不同的模型分别显示了问题和解决方案的不同部分3.4.1模型和建模模型由一组图形符号及规则组成。对客观事物的一种抽象化的表示,以便对事物充分理解。模型的作用建立模型的过程能帮助分析员澄清和改良设计系统往往很复杂,模型能很好表示各部分之间的关系模型便于项目组成员之间交流模型有助于和系统用户之间进行交流并促进理解建立的模型可以作为以后的维护和升级时的文档3.4.1模型和建模模型的类型数学模型:描述系统技术方面的一系列数学公式描述模型:描述系统某些方面的叙述性的备忘录、报表或列表等图形模型:描述系统的图表或系统某些方面的示意性表示3.4.1模型和建模什么是模型化方法是通过抽象、概括和一般化,把研究的对象或问题转化为本质(关系或结构)相同的另一对象或问题,从而加以解决的方法。模型化方法要求所建立的模型能真实反映所研究对象的整体结构、关系或某一过程、某一局部、某一侧面的本质特征和变化规律。3.4.1模型和建模结构化分析是一种建模过程从不同角度抽象出目标系统的特性;精确地表示系统的构造;验证模型是否满足用户对目标系统的需求.目标系统的逻辑模型上下文模型系统模型,可以理解为目标系统在关联信息系统中的地位。数据模型数据对象、联系,用实体联系图(ERD)表示功能模型数据加工,用数据流图(DFD图)或控制流图(CFD)表示行为模型事件及状态,用状态转换图(STD图)表示DataDictionary(DD)EntityRelationshipDiagramDataFlowDiagramStateTransitionDiagram(ERD)(DFD)(STD)3.4.1模型和建模需求分析应遵循的三条基本原则分解:捕获问题空间的“整体/部分”关系抽象:捕获问题空间的“一般/特殊”关系投影:捕获问题空间的多维“视图分析模型的主要目标描述用户需要建立创建软件设计的基础定义软件完成后可被确认的一组需求3.4.1模型和建模用于分析和设计的模型分析阶段创建的模型协作图时序图用例图类图状态图ERDDFD结构化英语/伪代码数据元素定义数据流定义事件列表设计阶段创建的模型界面设计报表设计数据库设计结构图系统流程图网络图分布图3.4.2结构化分析方法可行性研究阶段主要考虑系统是否有可行的解决方案,忽略了许多实际的数据元素.结构化分析方法是面向数据流自顶向下逐步求精,并进行需求分析.将可行性研究阶段获得的高层DFD图进一步细化,把数据流和数据存储定义到元素级.使用数据流图数据流图DFD以图形方式刻画业务系统中的数据处理过程和数据流数据流图的优点必不过早的着手系统的技术实现进一步了解系统和子系统的相互关系通过数据流图与用户交流当前系统知识分析建议的系统以确定是否定义了必要的数据和过程3.4.2结构化分析方法1.从DFD图的输出端着手分析系统的基本功能是产生相应的输出,输出数据决定了系统必须具有的最基本的组成元素.输出数据由哪些元素组成?调查访问.每个输出数据元素从哪里来?外部输入.根据系统元素计算出来.沿输出端向输入端回溯确定每个数据元素的来源.确定产生输出的算法.3.4.2结构化分析方法(Cont.)2.从DFD图的输入端着手复查请用户对分析结果进行仔细复查从DFD输入端,分析员借助于DFD,DD,IPO向用户解释输入数据如何一步一步转变成输出数据.听取用户的意见,补充遗漏部分,修改不正确部分.1和2反复进行,不断细化DFD图,DD和IPO图,直到所有系统元素都十分清楚.分析追踪数据流程图用户复查细化数据流程图有补充修正无补充修正需要分解不需分解3.4.3需求分析过程示意Step1:通过对现实环境的调查,获得当前系统的物理模型学生学生购书申请购书单发票领书单书107张教务科206王会计室206李出纳员303赵教材科学生购买教材的物理模型3.4.3需求分析过程示意(cont.)Step2:去掉具体模型中的非本质因素,抽象出当前系统的逻辑模型学生购买教材的逻辑模型学生学生购书申请购书单发票领书单书审查有效性开发票开领书单发书3.4.3需求分析过程示意(cont.)Step3:分析当前系统与目标系统的差别,建立目标系统的逻辑模型计算机售书系统的逻辑模型学生学生购书单发票领书单审查并开发票开领书单无效书单3.4.3需求分析过程总结逻辑模型物理模型目标系统当前系统逻辑模型物理模型模型化抽象化实例化具体化导出当前系统到目标系统过程图3.4.3需求分析过程总结(cont.)逻辑模型(本质模型、概念模型)物理模型(实施模型、技术模型)现行系统描述重要的业务功能,无论系统是如何实施的。描述现实系统是如何在物理上实现的。目标系统描述新系统的主要业务功能和用户新的需求,无论系统应如何实施。描述新系统是如何实施的(包括技术)。3.5结构化分析结构化开发方法是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速,自然和方便。结构化方法总的指导思想自顶向下、逐步求精。它的基本原则是功能的分解与抽象。结构化开发方法的组成70年代初结构化程序设计方法SP法(StructuredProgram)70年代中结构化设计方法SD法(StructuredDesign)70年代末结构化分析方法SA法(StructuredAnalysis)SA,SD,SP法相互衔接,形成了一整套开发方法。若将SA,SD法结合起来,又称为结构化分析与设计技术(SADT技术)。3.5.1上下文模型和数据流图描述逻辑模型的图形工具,表示数据在系统内的变化。实体(Entity)处理(Process)数据流(DataFlow)数据存储(DataStore)实体名P1.0处理名D2DataStorename数据流名还有一些辅助的图例TAB*CTAB*CTAB+CTAB+CTABC+TABC+*与+或互斥+上下文分析问题领域和外部元素之间的关系信息安全系统自动柜员机系统维护系统支行柜台系统使用数据库支行账户系统账户数据库ATM系统的上下文图实例考务处理系统功能对考生送来的报名单进行检查;对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷站;对阅卷站送来的成绩单进行检查,并根据考试中心制定的合格标准审定合格者;制作考生通知单(含成绩及合格/不合格标志)送给考生;按地区进行成绩分类统计和试题难度分析,产生统计分析表。顶层数据流图学生考务中心阅卷站考务处理系统报名表不合格报名表准考证考生通知单统计分析合格标准考生名单成绩表错误成绩单0层数据流图P1登记报名单P2统计成绩报名单不合格报名单准考证考生通知单考生名册成绩统计表合格标准成绩清单错误成绩清单考生名单一层数据流图(a)P1.1考生报名检查P1.2编准考证号P1.3汇总考生报名单不合格报名单准考证合格的报名单考生名册考生名单一层数据流图(b)P2.5试题难度分析P2.4成绩分类统计正确的成绩单分类统计表考生通知单试题得分清单难度分析表合格标准成绩清单错误成绩清单经审定的成绩清单P2.1检查成绩清单P2.2审定合格者P2.3制作成绩单考生名册S2132.22.12.33.13.2顶层(不编号)0层1层DFD的建模DFD可以用来表示一个系统或软件在任何层次上的抽象。较大型软件系统DFD分成多层(子图、父图概念),可以表示数据流和功能的进一步的细节。绘制DFD应遵循的原则是:最初的数据流图应该真实地描绘用户当前的实际情况,即当前的人工数据处理情况。由外向里绘制DFD由顶向下绘制DFDI.由外向里绘制DFD画系统的输入输出即顶层数据流图,一般只有一个加工,即待开发系统画系统的内部即画下层数据流图,从0开始,采用自顶向下,由外向内的原则。画处理的内部II由顶向下绘制DFD(1)编号(2)父图与子图的平衡父图中某个加工的输入输出数据流应该同相应的子图的输入输出相同(相对应),分层数据流图的这种特点称为子图与父图“平衡”。(3)局部数据存储当数据存储作为某些加工之间的交界面时,数据存储必须画出来,一旦数据存储作为数据流图中的一个独立成份画出来了,那么他同其他成份之间的联系也应同时表达出来(4)分解的程度一般每一个加工每次分解最多不要超过7个子加工,分解应分解到基本加工为止。DFD的检查与改进DFD的检查。(1)数据流的输入和输出(每个加工至少一个输入数据流和一个输出数据流)(2)父图和子图的平衡(子图的输入输出数据流同父图相应加工的输入输出数据流必须一致)(3)文件使用是否合理。特别注意输入/出文件的数据流。DFD的改进(1)简化处理间的联系(加工间的数据流越少,独立性越强,易理解性越好)。(2)分解的均匀。(3)适当地命名(各成分名称无二义性,准确、具体)。DFD质量评估黑洞---带有输入数据的但并不用其产生输出数据的“处理”或数据存储客户查询可用条目新订单可用条目细节目录订单条目订单事务订单库存条目产品条目带有不必要数据输入的处理—一个黑洞√√××DFD质量评估黑洞---带有输入数据的但并不用其产生输出数据的“处理”或数据存储带有不必要数据输入的处理DFD质量评估奇迹---没有足够数据元素作为输入或产生来源的一个“处理”或“数据存储”教员产生班级列表学生班级列表有不可能的数据输出的处理—一个奇迹×DFD质量评估奇迹---没有足够数据元素作为输入或产生来源的一个“处理”或“数据存储”带有不可能的数据输出的处理DFD质量评估3.1.2创建一个新的会员账号雇员会员账号3.1.3冻结会员账号编号3.1.1生成一份雇员银行结算表雇员应收账部门现有帐号新帐号状态冻结账号通知雇员地址雇员状态银行结算表会员应用这个过程没有输出这个过程没有输入账目数据从哪里来DFD典型错误DFD质量评估DFD图常见错误总结非法的数据流B1B2改正错误后的数据流B1B2需要一个过程在外部实体之间交换数据流DS2DS1需要一个过程从一个数据存储移动数据到另一个数据存储DS1DS2B1需要一个过程从一个数据存储中表现数据DS1DS1B1B1DS1B1DS1需要一个过程修改/使用一个数据存储5.创建数据流模型的原则“先全局后局部,先整体后细节,先抽象后具体”通常可将这种分层的DFD图,分为顶层、中间层、底层。具体步骤:1.先确定系统范围,画出顶层的DFD图,其中只包含一个代表目标软件系统整体处理功能的转换。2.按照“强内聚、松耦合”原则逐个对处理功能进行精化。与此同时,逐步完成对数据流的精化,并针对被精化的处理功能生成下一级数据流图。3.在精化过程中必须保持各级数据流图的平衡。4.精化过程适可而止,避免设计软件设计细节。5.画各层DFD图时,“由外向内”数据流图和程序流程图的不同1.数据流图只关心系统必须做什么,而不关心系统怎么做;而程序流程图必须考虑怎么做的问题。2.数据流图中的处理一般不考虑时序问题,即数据流图不表示过程的序列;而程序流程图必须说明每一步需要做什么,根据此程序流程图编写的程序,计算机才能以确定的次序一步步运行。3.数据流图中流动的只有数据流,没有控制流;而程序流程图中除数据流之外,还有控制流在流动。如满足某一条件,转向这一步,否则转向另一步等。4.数据流图既不反映判断和控制条件,也不反映循环过程。经过初步的需求分析,得到系统功能要求:1、监视病员的病症(血压、体温、脉搏等)。2、定时更新病历。3、病员出现异常情况时报警。4、随机地产生某一病员的病情报告。实例:医院病房监护系统产生病情报告监视病情更新病历系统功能要求:1、监视病员的病症