软件工程第二章需求_第1页
软件工程第二章需求_第2页
软件工程第二章需求_第3页
软件工程第二章需求_第4页
软件工程第二章需求_第5页
已阅读5页,还剩131页未读, 继续免费阅读

下载本文档

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

文档简介

1、软件工程1第第2 2章章 需需 求求 分分 析析 本章要点 : 需求分析的任务和原则可行性研究的任务和步骤结构化分析分析方法和面向对象分析方法需求建模与规格说明软件需求验证软件工程2本章学习目标 :了解需求分析的任务和原则 掌握可行性研究的步骤 掌握结构化分析方法和面向对象分析方法 了解需求建模与规格说明 了解软件需求验证方法和有关工具 软件工程31需求分析的任务 需求分析的基本任务是准确地回答“系统做什么?”这个问题。目标系统提出完整、准确、清晰、具体的要求。需求分析阶段的具体任务 一、确定对系统的综合要求。 对系统的综合要求有下述四个方面: 1系统功能要求 应该划分出系统必须完成的所有功能

2、。 Note:描述所有的功能、功能间的逻辑关系和业务流程。软件工程42系统性能要求 主要包括系统运行物理环境、网络环境等,压力,抗疲劳等方面。例如,联机系统的响应时间(即对于从终端输入的一个“事务”,系统在多长时间之内可以做出响应),系统需要的存储容量以及后援存储,重新启动和安全性等方面的考虑都属于性能要求。3运行要求 这类要求集中表现为对系统运行时所处环境的要求。例如,支持系统运行的系统软件是什么,采用哪种数据库管理系统,需要什么样的外存储器和数据通信接口等。 软件工程54将来可能提出的要求 应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。这样做的目的是在设

3、计过程中对系统将来可能的扩充和修改预做准备,以便一旦需要时能比较容易地进行这种扩充和修改。二、分析系统的数据要求 任何一个软件系统本质上都是信息处理系统,系统必须处理的信息和系统应该产生的信息在很大程度上决定了系统的面貌,对软件设计有深远影响,因此,必须分析系统的数据要求,这是软件需求分析的一个重要任务。分析系统的数据要求通常采用建立概念模型的方法。软件工程6复杂的数据由许多基本的数据元素组成,数据结构表示数据元素之间的逻辑关系。利用数据词典可以全面准确地定义数据,但是数据词典的缺点是不够形象直观。为了提高可理解性,常常利用图形工具辅助描绘数据结构。常用的图形工具有层次方框图和Warnier图

4、。 三、导出系统的逻辑模型综合上述两项分析的结果可以导出系统的详细的逻辑模型,通常用数据流图、数据词典和主要的处理算法描述这个逻辑模型。 四、修正系统开发计划根据在分析过程中获得的对系统的更深入更具体的了解软件工程7可以比较准确地估计系统的成本和进度,修正以前制定的开发计划。五、开发原型系统在计算机硬件和许多其他工程产品的设计过程中经常使用样机。建造样机通常有两个主要目的:检验关键设计方案的正确性及系统是否真正满足用户的需要。对于软件系统的开发,使用“样机”(更正确的名称应该是原型系统)的主要目的是,使用户通过实践获得关于未来的系统将怎样为他们工作的更直接更具体的概念,从而可以更准确地提出和确

5、定他们的要求。 Note:“辽宁号”软件工程82需求分析的原则 需求分析的前提是准确、完整地获取用户需求。向问题领域的专家学习,进行用户需求检查是需求分析的第一步。用户需求通常可以分为功能需求和性能需求两类。功能需求定义了系统应该做什么,系统要求输入什么信息,输出什么信息,以及如何将输入变换为输出。性能需求则定义了软件运行的状态特征,如系统运行效率,可靠性,安全性,可维护性等等。 综合起来,应该获取用户需求的内容包括:(1)物理环境。系统运行的设备地点、位置是集中式的还是分布式的,对环境的要求如何(如温度、湿度,电磁场干扰等)。(集中、局部集中、分布式) 软件工程9(2)系统界面。要求与其他系

6、统进行数据交换的内容与格式,终端用户的类型与熟练程度,用户对界面的特定要求,用户操作的易接受性等。(3)系统功能。系统应该完成的功能以及何时完成,对于系统运行速度、响应时间或者数据吞吐量的要求,系统运行的权限规定,系统可靠性要求,是否要求可移植,未来扩充或者升级的要求。(4)数据要求。输入输出数据的种类与格式,计算必须达到的精度,数据接收与发送的频率,数据存储的容量和可靠性,数据或者文件访问的控制权限,数据备份的要求。软件工程10(5)系统文档规格。系统要求交付什么文档,各类文档的编制规范和预期使用对象。(6)系统维护要求。系统出错后可以允许的最大恢复时间,对错误修改的回归测试要求,系统运行日

7、志规格,是否允许对系统修改,系统变化如何反映到设计中。在获取需求过程中遇到的典型问题及其解决方法是:(1)如何理解问题。大多数情况下,软件开发人员不是问题领域的行家。但是要准确、完整的获取需求必须对问题具有深入的理解与把握。许多问题即使是用户业务人员也可能没有自觉的认识。(2)分析员与用户的通信问题。分析员对问题的理解软件工程11必须从信息处理要求出发,而用户更多的考虑是本身的业务领域。与用户建立相互信任、有效的沟通是分析员的首要任务。(3)用户需求的可变性。用户需求通常是不断变化的,而软件开发人员则希望将需求冻结在某一时刻。影响用户需求变化的因素可以是用户领域的业务扩充或者转移,市场竞争的要

8、求,用户主管人员的变更等。现实情况是分析员只能接受需求不断变化的事实,应该千方百计地使其工作适应需求的变化。 现实世界是复杂多变的。为了将现实世界中问题的求解映射为信息处理模型,对问题进行分解与抽象是普遍有效的基本法则。 软件工程123可行性研究 3.1可行性研究的任务 可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。确定问题是否值得去解。首先需要进一步分析和澄清问题定义。在问题定义阶段初步确定的规模和目标,如果是正确的就进一步加以肯定,如果有错误就应该及时改正,如果对目标系统有任何约束和限制,也必须把它们清楚地列举出来。 在澄清了问题定义之后,分析员应该导出系统的逻辑

9、模型。然后从系统逻辑模型出发,探索若干种可供选择的主要解法(即系统实现方案)。对每种解法都应该仔细研究它的 可行性,一般说来,至少应该从下述三方面研究每种解法的可行性: 软件工程13(1)技术可行性使用现有的技术能实现这个系统吗?(2)经济可行性这个系统的经济效益能超过它的开发成本吗?(3)操作可行性系统的操作方式在这个用户组织内行得通吗(列举国内企业软件使用率不高的问题)? 分析员应该为每个可行的解法制定一个粗略的实现进度。要求列举出那些是不可行的因素,对于不可行因素那些可以解决的,那些是可行因素,最终形成结论。软件工程143.2可行性研究的步骤 一、复查系统规模和目标 分析员访问关键人员,

10、仔细阅读和分析有关的材料,以便对问题定义阶段书写的关于规模和目标的报告书进一步复查确认,改正含糊或不确切的叙述,清晰地描述对目标系统的一切限制和约束。二、研究目前正在使用的系统 现有的系统是信息的重要来源。显然,如果目前有一个系统正被人使用,那么这个系统必定能完成某些有用的工作,因此,新的目标系统必须也能完成它的基本功能;另一方面,如果现有的系统是完美无缺的,用户自然不会提出开发新系统的要求,因此,现有的系统必然有某些缺点,新系统必须能解决旧系统中存在的问题。 软件工程15 应该仔细阅读分析现有系统的文档资料和使用手册,也要实地考察现有的系统。三、导出新系统的高层逻辑模型 优秀的设计过程通常总

11、是从现有的物理系统出发,导出现有系统的逻辑模型,再参考现有系统的逻辑模型,设想目标系统的逻辑模型,最后根据目标系统的逻辑模型建造新的物理系统。四、重新定义问题 新系统的逻辑模型实质上表达了分析员对新系统必须做什么的看法。用户是否也有同样的看法呢?分析员应该和用户一起再次复查问题定义、工程规模和目标,这次软件工程16复查应该把数据流图和数据词典作为讨论的基础。五、导出和评价供选择的解法 分析员应该从他建议的系统逻辑模型出发,导出若干个较高层次的(较抽象的)物理解法供比较和选择。导出供选择的解法的最简单的途径,是从技术角度出发考虑解决问题的不同方案。在数据流图上划分不同的自动化边界,从而导出不同物

12、理方案的方法。 当从技术角度提出了一些可能的物理系统之后,应该根据技术可行性的考虑初步排除一些不现实的系统。 软件工程17其次可以考虑操作方面的可行性。 接下来应该考虑经济方面的可行性。分析员应该估计余下的每个可能的系统的开发成本和运行费用,并且估计相对于现有的系统而言这个系统可以节省的开支或可以增加的收入。 最后为每个在技术、操作和经济等方面都可行的系统制定实现进度表,这个进度表不需要(也不可能)制定得很详细,通常只需要估计生命周期每个阶段的工作量。六、推荐行动方针 根据可行性研究结果应该做出的一个关键性决定是否继续进行这项开发工程。分析员必须清楚地表明他对这个关键性决定的建议。 (如何形成

13、方案?)软件工程18七、草拟开发计划 分析员应该进一步为推荐的系统草拟一份开发计划,除了工程进度表之外还应该估计对各种开发人员(系统分析员,程序员,资料员等等)和各种资源(计算机硬件,软件工具等等)的需要情况,应该指明什么时候使用以及使用多长时间。此外还应该估计系统生命周期每个阶段的成本。最后应该给出下一个阶段(需求分析)的详细进度表和成本估计。八、书写文档提交审查 应该把上述可行性研究各个步骤的结果写成清晰的文档,请用户和使用部门的负责人仔细审查,以决定是否继续这项工程以及是否接受分析员推荐的方案。 软件工程193.3系统流程图 系统流程图是描绘物理系统的传统工具。系统流程图就是表示整个系统

14、处理事物的基本过程。 系统流程图是系统分析员在做系统构架阶段,或者说,在接触实际系统时,对未来构建的信息处理系统的一种描述。这种描述是相对简单且完全的,涉及到未来系统中使用的处理部件,如磁盘,显示器,用户输入以及处理过程的先后顺序表示等。系统流程图还可以用来表示现有的信息系统处理过程涉及的各个部件以及次序。 软件工程203.3系统流程图 一、符号 当以概括的方式抽象地描绘一个物理系统时,仅仅使用一些基本符号就够了,其中每个符号表示系统中的一个部件。 当需要更具体地描绘一个物理系统的时候还需要使用一些扩展的系统符号,利用这些符号可以把一个广义的输入输出操作具体化为读写存储在特殊设备上的文件(或数

15、据库),把一般的处理具体化为特定的程序或手工操作等等。 Note:解释为什么要用符号,强调符号的重要性软件工程21符号名 称说 明处理能改变数据值或数据位置的加工或部件,例如,程序、处理机、人工加工等都是处理 输入输出表示输入或输出(或既输入又输出),是一个广义的不指明具体设备的符号。 连接指出转到图的另一部分或从图的另一部分转来,通常在同一页上 换页连接指出转到另一页图上或由另一页图转来。 数据流用来连接其他符号,指明数据流动方向。 软件工程22图2.2系统符号符号名 称 穿孔卡片表示用穿孔卡片输入或输出,也可表示一个穿孔卡片文件。 文档通常表示打印输出,也可表示用打印终端输入数据。 磁带磁

16、带输入输出,或表示一个磁带文件。 联机存储表示任何种类的联机存储,包括磁盘、磁鼓、软盘和海量存储器件等。 磁盘磁盘输入输出。也可表示存储在磁盘上的文件或数据库。 磁鼓磁鼓输入输出,也可表示存储在磁鼓上的文件或数据库。 显示CRT终端或类似的显示部件,可用于输入或输出,也可既输入又输出。 人工输入人工输入数据的脱机处理,例如,填写表格。 人工操作人工完成的处理,例如,会计在工资支票上签名。 辅助操作使用设备进行的脱机操作。 通信链路通过远程通信线路或链路传送数据。 软件工程23案例一: 介绍系统流程图的最好方法可能是通过一个具体例子说明它的用法。下面是一个简单的例子。某装配厂有一座存放零件的仓库

17、,仓库中现有的各种零件的数量以及每种零件的库存量临界值等,数据记录在库存清单主文件中。当仓库中零件数量有变化时,应该及时修改库存清单主文件,如果某种零件的库存量少于它的库存量临界值,则应该报告给采购部门以便定货,规定每天向采购部门送一次定货报告。该装配厂使用一台小型计算机处理更新库存清单主文件和产生定货报告的任务。零件库存量的每一次变化称为一个事务,通过放在仓库中的CRT终端输入到计算机中;系统中的库存清单程序对事务进行处理,更新存储在磁盘上的库存清单主文件,并且把必要的定货信息写在磁带上。最后,每天由报告生成程序读一次磁带,并且打印出定货报告。软件工程24事务库存清单程序订 货信息报告生成程

18、序订货报告库存清单主文件库存清单系统的系统流程图磁盘处理文档显示软件工程25案例二: 工资管理子系统的系统流程图 工资由每月主文件更新模块,扣款文件模块两部分组成,每月由人事变动通知单、房租变动通知单、电费扣款通知单、其他扣款通知单几部分构成,最终要打印出每个人的工资单和工资汇总表。软件工程26二、案例二: 文档软件工程27案例三: 网上购物系统流程图:软件工程28案例三: 软件工程29请设计出如下事务的系统流程图课堂作业1.校园一卡通食堂部分流程图2.银行自动柜员机系统流程图软件工程30三、分层 面对复杂的系统时,一个比较好的方法是分层次地描绘这个系统。首先用一张高层次的系统流程图描绘系统总

19、体概貌,表明系统的关键功能。然后分别把每个关键功能扩展到适当的详细程度,画在单独的一页纸上。这种分层次的描绘方法便于阅读者按照从抽象到具体的过程逐步深入地了解一个复杂的系统。 软件工程314需求分析方法 4.1结构化分析方法 结构化分析技术是70年代中期由EYourdon等人倡导的一种面向数据流的分析方法。按照TDemarco的定义,“结构化分析就是使用数据流图、数据词典、判定表和判定树等工具,来建立一种新的、称为结构化说明书的目标文档。”这里的结构化说明书,就是需求规格说明书。结构化分析技术将软件系统抽象为一系列的逻辑加工单元,各单元之间以数据流发生关联。按照数据流分析的观点,系统模型的功能

20、是数据变换,逻辑加工单元接受输入数据流,使之变换成输出数据流。数据流模型常用数据流图表示。 软件工程324.1.1 建立功能模型 数据流程图,又称数据流图,它是以图形的方式来表达数据处理系统中信息的变换和传递过程。作为一种描述手段,它可以模拟手工的、自动的以及两兼而有之混合的数据处理过程。数据流程图有三个重要属性: 可以表示任何一个系统(人工的、自动的或混合的)中的信息流程。 每个圆圈可能需要进一步分解以求得对问题的全面理解。 着重强调的是数据流程而不是控制流程。Note:数据流图以图形的方式表达问题中信息变换和传递的过程;软件工程33数据流程图中的基本符号有:1、数据流数据流是有名字有流向的

21、数据,在数据流程图中,数据流用标有名字的箭头来表示,如图2.1中的工资调整表、工资发放表等。 2、加工加工又称处理逻辑,表示数据所进行的加工或变换,图2.4中以标有名字的圆圈代表加工。指向加工的数据流是该加工的输入数据,离开加工的数据流是该加工的输出数据,如图2.4中的工资计算、取款等。软件工程343、文件 文件是数据暂存的处所,可对文件进行必要的存取,在图中以标有名字的双直线段表示,如图2.1中的工资册、工资汇总表等。对文件的存取分别以指向或离开文件的箭头表示。由于文件的内容能顾名思义,因而对其进行存取的箭头即使没有名字也不会造成混乱。4、数据源及数据终点表明数据处理过程的数据来源或数据去向

22、的标志称为数据源及数据终点,在数据流程图中均以命名的方框来表示,软件工程35工资汇总表工资发放表工资条工资计算工资册取款总 务人 事工资汇总工资分配开户银行职工统筹医疗费房租费水电费托儿费工资调整表调入人员工资单调出人员调出单病事假扣款单工资费用分配表工资发放工资处理数据流程图加工文件数据流工资汇总表工资发放表工资条工资处理数据流程图加工文件数据流案例一:企业(科)工资数据流程图。软件工程36案例二:企业(科)档案管理数据流程图。软件工程37案例二:企业(科)档案管理数据流程图。软件工程38一般情况下,为了表达数据处理的数据加工过程,只用一个数据流程图是不够的。对稍为复杂一些的实际问题,常以层

23、次结构的数据流程图来表示。任何系统都是有层次的结构,如果按照层次结构对系统进行逐步分解,就能很清楚地表达和理解整个系统。在每一个层次上,最核心的部分就是数据加工乃其相关的数据流。除了上述4种基本成分外,数据流程图还有几种附加成分,例如,星号“”表示几股数据流之问是“与”的关系,加号“+”表示“或”的关系,号表示从几股数据流中选取一股,即表示“互斥”的关系。软件工程39有关材料统计报表材料分类明细帐材料采购付款凭证材料核算采购合同收料凭证发料凭证材料汇总表图2.5顶层数据流程图软件工程40把材料核算处理功能进行分解。一般材料核算包括采购核算、储存核算、发出核算等,据此,我们画出如图2.5所示的第

24、一层数据流程图。分解后的子图中生出了一些新的数据流和文件,它们是顶层数据流程图中加工“材料核算”内部的数据流和文件,与其外部元素没有联系。在“材料核算”被分解后,这些数据流和文件成了一些子加工的界面。分别把第一层数据流程图中的几个核算处理(加工)再进行分解,可画出第二层数据流程图。图2.5为其中的加工“材料发出核算”进行功能分解得到第二层数据流程图,其他如材料采购核算、材料储存核算等,都可以用同样的方法讲行分解扩展,画出相应的数据流程图。 软件工程41图2.5、图2.6和图2.7画出了3种不同层次的信息流程,表示出需求分析一层比一层更为具体细致。软件工程42收料凭证采 购核算储 存核算发出核算

25、材料汇总核算材料采购付款凭证采购合同发料凭证材料明细帐材料汇总表材料明晰分类帐有关材料统计报表材料采购合同执行情况材料采购成本材料采购明细帐材料发出凭证生成用料应摊材料成本差异表其他用料存储材存储材料明细料明细帐帐生产材料分配表图2.6第一层数据流程图有关材料统计报表材料分类明细帐材料采购付款凭证材料核算采购合同收料凭证发料凭证材料汇总表软件工程43图2.7第二层数据流图生 产 用料 分 配表材 料 发出凭证材料发出凭证按用途归类按产品分配车间管理用料企业管理用料辅助生产用料材料明细表生产用料应摊材料成本差异软件工程44 数据流程图是一种图解方法,它在软件需求分析中是非常有用的。然而,如果它的

26、作用与程序流程图(框图)混淆的话,也会引起混乱。数据流程图描绘的是信息流,没有明显的控制说明(例如条件或循环),它不是一个用圆圈表示的程序流程图。软件工程45在推导面向软件的数据流时有几个非常有用而简单的准则:1、 一层数据流程图应当是基本系统模型。2、应当仔细说明原始的输入输出文件。3、所有箭头和圆圈均应加上标注(使用有意义的名字)。4、必须维持信息的连续性。 5、每一次只应当只细化一个圆圈(加工)。6、可以在数据流程图中加上物质流。有助于帮助用户理解该数据流程图。软件工程46在画分层数据流程图时,要特别注意下面几个问题:1、加工的编号方法 加工的编号遵循两条原则:第一,从加工的编号能知道该

27、加工处在哪一层分解;第二,从加工编号知道该加工是从父图中哪个加工分解得来的。2、分解程度 分解程度问题包括两个方面, 其一是每个加工每次分解成几个子加工比较恰当; 其二是分解深度,即分解的层数问题。这两个问题之间有一定的联系。经验表明,一个加工的分解(宽度)以不超过7个子加工比较合适。软件工程473、父图和子图之间的平衡多层数据流程图中的父图和子图之间的数据流必须保持一致(或称保持“平衡“),亦即,父图中出现的输入数据流和输出数据流都应在子图中出现,以保证加工过程的连续性和一致性。有时,当在子图中对父图的数据流做了分解后,检验父图和子图的平衡还需借助于数据词典。因为“自顶向下”逐层对数据流程图

28、的分解,实际上不仅是对加工进行分解,同时也对数据流进行分解。软件工程48课堂作业1.请设计出校园一卡通食堂刷卡消费两层数据流程图;2.请设计出ATM的数据流程图。软件工程49补充内容数据流程图的设计要点:(重点)数据流程图的设计要点:(重点)1、 自外向内,自顶向下,逐层细化,完善求精;2、 保持父图与子图的平衡。也就是说,父图中某加工的输入输出数据必须与它们子图的输入输出数据流在数量和名字上相同;3、 保持数据守恒。即一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者通过该加工能产生的数据;4、 根据抽象原则,加工细节隐蔽(每个阶段的任务),只需画出加工和加工之间的关系

29、即可;5、 均匀分解。应该使一个数据流中的各个加工分解层次大致相同;6、 每个加工必须既有输入数据流,又有输出数据流;软件工程50补充内容注意要点:注意要点: 数据存储与数据流都是数据,仅仅所处的状态不同。前者是处于静止状态的数据,而后者则是处于运动中的数据。 数据流程图的基本要点是描绘“做什么(软件生命周期那个阶段的工作?)”而不考虑“怎么做”,因此通常在数据流图中忽略出错处理,也不包括诸如打开或关闭文件之类的内务的处理。 在数据流图中应该描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件(控制流?)软件工程51补充内容数据流程图的主要作用是:(总结)数据流程图的主要作用是:(总结)1

30、、便于用户表达功能需求和数据需求及其联系;2、便于两类人员共同理解现行系统和规划系统的框架;3、清晰表达数据流的情况;4、有利于系统建模。软件工程524.1.2 建立数据模型 在需求分析阶段则既要分析用户的数据要求(即需要哪些数据、数据之间有什么联系、数据本身有什么性质、数据的结构等等),又要分析用户的处理要求(即对数据进行哪些处理、每个处理的逻辑功能等等)。 为了把用户的数据要求清晰明确地表达出来,系统分析员通常建立一个概念性的数据模型(也称为信息模型)。概念性数据模型是一种面向问题的数据模型,是按照用户的观点来对数据和信息建模。它描述了从用户角度看到的数据,它反映了用户的现实环境,且与在软

31、件系统中的实现方法无关。最常用的表示概念性数据模型的方法,是实体一联系方法(EntityRelationship Approach)。这种方法用ER图。软件工程53描述现实世界中的实体,而不涉及这些实体在系统中的实现方法。用这种方法表示的概念性数据模型又称为ER模型。通常,软件系统中有许多数据是需要长期保存的,为减少数据冗余,简化修改数据的过程,应该对数据进行规范化。ER模型中包含“实体”、“关系(联系)”和“属性”等三个基本成分,下面分别介绍这三个基本成分:1实体 实体是客观世界中存在的且可相互区分的事物。实体可以是人也可以是物;可以是具体事物也可以是抽象概念。例如,职工、学生、课程、教师、

32、思想等都是实体。在ER图中用矩形框 代表实体。 软件工程542关系(联系)客观世界中的事物彼此间往往是有关系的。例如,教师与课程间存在“教”这种关系,而学生与课程间则存在“学”这种关系。关系可分为三类:(1)一对一关系(11) 例如,一个部门有一个经理,而每个经理只在一个部门任职,则部门与经理的关系是一对一的。 (2)一对多关系(1N)例如,某校教师与课程之间存在一对多的关系“教”,即每位教师可以教多门课程,但是每门课程只能由一位教师来教。软件工程55(3)多对多关系(MN)例如,学生与课程间的关系(“学”)是多对多的,即一个学生可以学多门程,而每门课程可以有多个学生来学。在ER图中,用连接相

33、关实体的菱形框表示关系。3属性属性是实体或关系所具有的性质。通常一个实体由若干个属性来刻画。例如,“学生”实体有学号、姓名、性别、系、年级等属性;“教师”实体有教工号、姓名、性别、职称、职务等属性;“课程”实体有课程号、课名、学时、学分等属性。软件工程56关系也可能有属性。例如,学生“学”某门课程所取得的成绩,既不是学生的属性也不是课程的属性。由于“成绩”既依赖于某名特定的学生又依赖于某门特定的课程,所以它是学生与课程之间的关系“学”的属性。N1NM教师教工号性别姓名职称职务学生课程教学姓名性别系年级学号成绩课程号课名学时学分图2.8某校教学管理ER图软件工程57 在ER图中用椭圆形 或圆角矩

34、形 表示实体(或关系)的属性,并用无向边把实体(或关系)与其属性连接起来。 人们通常就是用实体、关系和属性这三个概念来理解现实问题的,因此,ER模型比较接近人的习惯思维方式。此外,ER模型使用简单的图形符号表达系统分析员对问题域的理解,不熟悉计算机技术的用户也能理解它,因此,ER模型可以作为用户与分析员之间有效的交流工具。 软件工程58案例1:一个机械制造厂的管理系统。首先按技术部门和供应部门设计局部E-R图。技术部门关心的是产品的性能参数,及由哪些零件组成,零件的材料和耗用量等;供应部门关心的是产品的价格,使用材料的价格及库存量等。 软件工程59软件工程60软件工程61案例三:软件工程62案

35、例四:软件工程63请设计出新生报到注册系统的E-R图课堂作业软件工程64初步E-R图由于存在冗余的信息,会破坏数据库的完整性,给数据库的管理带来麻烦,以至引起数据不一致的错误。因此,必须消除数据上的冗余和联系上的冗余,消除冗余后的E-R图 软件工程65补充内容(关系数据库)数据库分为关系数据库、网状数据库、层次数据库软件工程664范式通常用“范式(Normal Forms)”定义消除数据冗余的程度。第一范式(1 NF)数据冗余程度最大,第五范式(5 NF)数据冗余程度最小。但是,范式级别越高,存储同样数据就需要分解成更多张表,因此,“存储自身”的过程也就越复杂。第二,随着范式级别的提高,数据的

36、存储结构与基于问题域的结构间的匹配程度也随之下降,因此,在需求变化时数据的稳定性较差。第三,范式级别提高则需要访问的表增多,因此性能(速度)将下降。从实用角度看来,在大多数场合选用第三范式都比较恰当。 软件工程671第一范式 在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库. 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范

37、式(1NF)中表的每一行只包含一个实例的信息。例如,对于图3-2 中的员工信息表,不能将员工信息都放在一列中显示,也不能将其中的两列或多列在一列中显示;员工信息表的每一行只表示一个员工的信息,一个员工的信息在表中只出现一次。简而言之,第一范式就是无重复的列 软件工程682第二范式 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。如 员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是惟

38、一的,因此每个员工可以被惟一区分。这个惟一属性列被称为主关键字或主键、主码 软件工程693第三范式。 满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性 软件工程70要求设计学生关系表要

39、求设计学生关系表Student(Student(学号学号, , 姓名姓名, , 年龄年龄, , 所所在学院在学院, , 学院地点学院地点, , 学院电话学院电话) ),关键字为单一关键字,关键字为单一关键字 学号学号 案例一:存在如下决定关系:存在如下决定关系: ( (学号学号) () (姓名姓名, , 年龄年龄, , 所在学院所在学院, , 学院地点学院地点, , 学院电话学院电话) )这个数据库是符合这个数据库是符合2NF2NF的,但是不符合的,但是不符合3NF3NF,因为存在如下决定关系:,因为存在如下决定关系: ( (学号学号) () (所在学院所在学院) () (学院地点学院地点,

40、, 学院电话学院电话) ) 即存在非关键字段即存在非关键字段 学院地点学院地点 、 学院电话学院电话 对关键字段对关键字段 学号学号 的传递函的传递函数依赖。数依赖。 它也会存在它也会存在数据冗余、更新异常、插入异常和删除异常数据冗余、更新异常、插入异常和删除异常的情况,读者可的情况,读者可自行分析得知。自行分析得知。 把学生关系表分为如下两个表:把学生关系表分为如下两个表: 学生:学生:( (学号学号, , 姓名姓名, , 年龄年龄, , 所在学院所在学院) ); 学院:学院:( (学院学院, , 地点地点, , 电话电话) )。 这样的数据库表是符合第三范式的,消除了数据冗余、更新异常、插

41、入这样的数据库表是符合第三范式的,消除了数据冗余、更新异常、插入异常和删除异常。异常和删除异常。 软件工程71要求设计学生每门课程成绩和课程信息表要求设计学生每门课程成绩和课程信息表课堂作业:要求设计学生基本信息和已借的图书表要求设计学生基本信息和已借的图书表软件工程724.1.3 建立行为模型 状态转换图通过描述状态以及导致系统改变状态的事件来表示系统的行为,它没有表示出系统所执行的处理,只表示了处理结果可能的状态转换。STD用带标记的矩形表示状态,用箭头表示从一种状态到另一种状态的变换,箭头上的文本标记表示引起变换的条件。状态状态A A引起状态转换的事件该事件引起的动作软件工程73分析建模

42、是实现真实世界模型向计算机模型转换的核心环节,也是一种处理软件复杂性的有效手段。在需求开发阶段,分析建模的关键是针对用户需求建立抽象的分析模型,从而有助于开发人员理解用户需求,同时增强自然语言的需求规格说明。分析模型往往采用一些图形化的表示方式,从数据、功能和行为等不同角度表达用户需求。 结构化分析是面向数据流进行需求分析的方法,经过20多年的发展,已经成为广泛应用的技术之一。结构化分析方法以数据词典为核心,采用实体关系图、数据流图和状态转换图等图形来表达需求,直观明了且易于理解和掌握。 软件工程744.1.4 数据词(字)典 尽管数据流图给出了系统数据流向和加工等情况,但其各个成分的具体含义

43、仍然不清楚或不明确,因此,在实际中常采用数据词典这一基本工具对其作进一步的详细说明。 数据词典(Data Dictionary,简称DD)和数据流图密切配合,能清楚地表达数据处理的要求 。数据词典用于对数据流图中出现的所有成分给出定义,它使数据流图上的数据流名字、加工名字和数据存贮名字具有确切的解释。每一条解释就是一条词条,按一定的顺序将所有词条排列起来,就构成了数据词典,就象日常使用的英汉词典、新华词典一样。软件工程754.1.4 数据词(字)典 数据词典的条目可以分成四大类,即: 数据流条目。 文件条目。 数据项条目。 加工条目。Note:不同条目描述的栏目不一样软件工程76数据词典中的数

44、据构成如图2.10所示的层次关系。这些数据元素的定义通常用定义式的形式给出。数据词典中数据的层次关系数据流数据流文件文件数据结构数据结构数据元素数据元素软件工程77通常,在数据词典的定义式中可能出现的符号及其含意是(设x和a、b都是数据元素): x=a+b x由a和b构成 x=ab x由a或b构成 x=(a) 数据元素a在x中可出现,也可不出现 x=a x由0个或多个重复的a构成Note: x=(a) 和x=a的区别Note: x=(a) 和x=a的区别软件工程781、数据流条目数据流条目主要说明数据流条目是由哪些数据项组成的,以及数据在单位时间内的流量,它的来源、去向等。数据流条目格式如下:

45、 数据流名: 组 成: 流 量: 来 源: 去 向:软件工程79例如:数据流“银行对账单”条目:条目格式如下: 数据流名:银行对帐单 组 成:月份日期银行支票金额 流 量:2张3天,每张约40笔数据 来 源:开户银行 去 向:资金管理组软件工程802、文件条目文件条目主要说明文件由哪些数据项组成,存储方式和存取频率等。条目格式如下: 文件 名: 组 成: 存储方式: 存储频率:软件工程81例如:文件“现金日记账”条目如下:文件名:现金日记账 组 成:月份日期摘要收入支出结存 存储方式:顺序 存储频率:20笔天软件工程823、数据项条目 数据项名: 类 型: 长 度: 取值范围:数据项条目主要说

46、明数据项类型、长度、取值范围等。软件工程83例如:数据项“凭证号”条目和数据项“经办人”条目如下: 数据项名:凭证号 类 型:数值 长 度:6位(含小数一位) 取值范围:1000.04999.9 note:小数点占一位软件工程844、加工条目加工条目主要说明加工的输入数据、输出数据及其加工逻辑等。条目格式如下: 加工 名: 输入数据: 输出数据: 加工逻辑: 软件工程85例如加工“工资分配”条目:加工名:工资分配输入数据:工资结算单(汇总表)输出数据:工资费用分配表加工逻辑:各车间根据工资结算单,按产品种类或批别,分别分配管理人员工资和生产工人工资,并按比例提取福利基金。 软件工程86 和数据

47、流程图的层次概念相类似,一个数据词典的定义式不宜包含过多的项,这可以采取逐级定义的定义式,使得一些复杂的数据元素自顶向下多层定义,直到最后给出无需定义的基本数据元素。例如:日期=年+月+日数据词典就是这样构造起来的一组定义式。必要时,定义式之间还可能有一些特定的注释行出现,以利于理解。常用的词典相似,数据词典所收集的数据定义,都按词典的编辑方法顺序排列,以方便使用。Note: 不允许出现一个数据元素有多个定义的现象。 软件工程87数据词典的使用 在结构化分析的过程中,可以通过名字,方便地查阅数据的定义;同时可按各种要求,随时列出各种表,以满足分析员的需要。还可以按描述内容(或定义)来查询数据的

48、名字。通过检查各个加工的逻辑功能,可以实现和检查在数据与程序之间的一致性和完整性。在以后的设计与实现阶段以至于到维护阶段都需要参考数据词典进行设计、修改和查询 软件工程88收料凭证采购核算储存核算发出核算材 料汇 总核算材料采购付款凭证采购合同发 料 凭证材 料 明 细帐材 料 汇 总表材料明晰分类帐有关材料统计报表材料采购合同执行情况材 料 采 购 成本材料采购明细帐材料发出凭证生成用料应摊材料成本差异表其他用料存储材存储材料明细料明细帐帐生 产 材料 分 配表图2.6第一层数据流程图课堂作业:请设计出储存核算部分的数据词典软件工程894.2面向对象分析方法与UML 4.2.1面向对象分析方

49、法 面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO方法,它是建立在对象概念(对象、类和继承)基础上的方法。 面向对象方法成为90年代的主流开发方法,其原因主要在于: 1从认知学的角度来看,面向对象方法符合人们对客观世界的认识规律 2面向对象方法开发的软件系统易于维护,其体系结构易于理解、扩充和修改 3面向对象方法中的继承机制有力支持软件的复用 软件工程90一、面向对象的基本概念Peter Coad和Edward Yourdon提出用下列等式来认识面向对象方法: 面向对象=对象(Obiect) +分类(Classification) +继承(Inheri

50、tance)+通过消息的通信(Communication With Messages)可以说,采用这4个概念开发的软件系统是面向对象的。1对象 对象是指一组属性以及这组属性上的专用操作的封装体。属性通常是一些数据,有时它也可以是另一个对象。 软件工程91对象中的属性只能通过该对象所提供的操作来存取或修改。操作也称为方法或服务,它规定了对象的行为,表示对象所能提供的服务。封装是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的,封装的目的是使对象的使用者和生产者分离,使对象的定义和实现分开。一个对象通常可由对象名、属性和操作三部分组成。 2类 类是一组具有相同属性和

51、相同操作的对象的集合。一个类中的每个对象都是这个类的一个实例。 不必为每个对象逐个定义,只需对类作出定义,而对类的属性的不同赋值即可得到该类的对象实例,类和软件工程92对象之间的关系类似于程序设计语言中的类型和变量之间的关系。通常把一个类和这个类的所有对象称为类及对象,或称为对象类。 一个类可以定义为另一个更一般的类的特殊情况,如“轿车”类是“汽车”类的特殊情况,我们称一般类是特殊类的父类,特殊类是一般类的子类。这样可以形成类的一种一般一特殊的层次关系。在这种一般一特殊的关系中,子类可以继承其父类(或祖先类)的所有属性和操作,同时子类中还可以定义自己特有的属性和操作。所以子类的属性和操作是子类

52、中的定义部分和其祖先类中的定义部分的总和。继承是类间的基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和软件工程93操作外,还可以对父类(或祖先类)中的操作重新定义其实现方法。 如果一个子类只有惟一一个父类,这个继承称为单一继承。如果一个子类有一个以上的父类,这种继承称为多重继承。 3消息传递 消息传递是对象间通信的手段,一个对象通过向另一个对象发送消息来请求其服务。一个消息通常包括接收对象名、调用的操作名和适当的参数(如果有必要的话)。消息只告诉接收对象需要完成什么操作,但并不指示接收者怎样完成操作。消息完全由

53、接收者解释,接收者独立决定采用什么方法完成所需的操作。 软件工程944多态性 多态性是指同一个操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。例如“画”操作,作用在“矩形”对象上,则在屏幕上画一个矩形,作用在“圆”对象上,则在屏幕上画一个圆。也就是说,相同操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的这个操作去执行,从而产生不同的结果。 与多态性密切相关的一个概念就是动态绑定(亦称动态定连)。传统的程序设计语言的过程调用与目标代码的连接(即调用哪个过程)放在程序运行前进行(称为静态绑定),而动态绑定则是把这种连接推迟到运行时才进行。 软件工程95二、面向对象分析

54、面向对象分析(ObjectOrientedAnalysis,OOA)的目标是完成对所解问题的分析,确定待建的系统要做什么,并建立系统的模型。为达到这一目标,必须完成6 项任务: (1)在客户和软件工程师之间沟通基本的用户需求。 (2)标识类(包括定义其属性和操作)。 (3)刻画类的层次结构。 (4)表示类(对象)之间的关系。 (5)为对象行为建模。 软件工程96 (6)递进地重复任务(1)至任务(5),直至完成建模。 其中任务(2)至任务(4)刻画了待建系统的静态结构,任务(5)刻画了系统的动态行为。 面向对象分析的一般6个步骤: (1)获取客户对系统的需求:包括标识场景(Scenario)和

55、用例(IJse Case),以及建造需求模型。 (2)用基本的需求为指南来选择类和对象(包括属性和操作)。 (3)定义类的结构和层次。 (4)建造对象关系模型。 软件工程97(5)建造对象一行为模型。(6)利用用例场景来复审分析模型。三、面向对象设计 面向对象设计(Object-OrientedDesign,OOD)是将OOA所创建的分析模型转化为设计模型。与传统的开发方法不同,OOD和OOA采用相同的符号表示,OOD和OOA没有明显的分界线,它们往往反复迭代地进行。在OOA时,主要考虑系统做什么,而不关心系统如何实现。在OOD时,主要解决系统如何做,因此需要在OOA的模型中为系统的实现补充一

56、些新的类,或在原有类中补充一些属性和操作。OOD时应能从类中导出对象,以及这些对象如何互相关联,还要描述对象间的关系、行为以及对象间的通信如何实现。 软件工程98OOD同样应遵循抽象、信息隐蔽、功能独立、模块化等设计准则。 面向对象设计的一般步骤如下: (1)系统设计。将子系统分配到处理器。选择实现数据管理、界面支持和任务管理的设计策略。为系统设计合适的控制机制。复审并考虑权衡。 软件工程99(2)对象设计。 在过程级别设计每个操作。 定义内部类。 为类属性设计内部数据结构。(3)消息设计。 使用对象间的协作和对象关系模型,设计消息模型。(4)复审。 复审设计模型,并在需要时迭代。 目前有许多

57、种面向对象方法,例如Coad &Yourdon方法、OMT方法、Booch方法等。 软件工程1004.2.1统一的建模语言 一、UML概述 1994年Booch和Rumbaugh在Rional software Corporation开始了UML的工作,其目标是创建一个“统一的方法”,他们把Booch一93和OMIT一2统一起来,于1995年发布了UM0.8(Unified Method)。 OOSE的创始人jacobson加盟到这项工作中,他们以 Booch方法、OMT方法、OOSE方法为基础,吸收了其他流派的长处,于1996年6月、10月、1997年1月、11月分别推出了UML0.

58、9,UML0.91,UML1.0,UMLl.1。 1997年11月,国际对象管理组织OMG(Object Management Group)批准把UML1.1作为基于面向对象技术的标准建模语言。 软件工程101一个系统往往可以从不同的角度进行观察,从一个角度观察到的系统,构成系统的一个视图(View),每个视图是整个系统描述的一个投影,说明了系统的一个特殊侧面。若干个不同的视图可以完整地描述所建造的系统。视图并不是一种图表(Graph),它是由若干幅图(Diagram)组成的一种抽象。每种视图用若干幅图来描述,一幅图包含了系统某一特殊方面的信息,它阐明了系统的一个特定部分或方面。由于不同视图之

59、间存在一些交叉,因此一幅图可以作为多个视图的一部分。一幅图由若干个模型元素组成,模型元素表示图中的概念。UML语言建立在面向对象的基础上,它采用面向对象的概念和范型。UML语言的体系结构建立在四层元模型结构之上,这4层元模型分别为:元一元模型、元模型、软件工程102模型、用户对象。1元一元模型层元一元模型(Metameta model)是建立元模型体系结构的基础结构(Infrastructure)。元一元模型定义描述元模型的语言,是任何模型的基础,用于对概念的形式化。2元模型层元模型层(Meta model)定义描述模型的语言。在UML语言的元模型中,定义了面向对象的范型的概念,如“对象类”、

60、“属性”、“操作”、“组件”等,它们是元模型层的元对象。元模型是元一元模型的一个实例。例如,“对象类”、“软件工程103属性”、“操作”分别是“元对象类”、“元属性”、“元操作”的实例。“对象类”是对一组具有共同的结构特征、行为特征、关系和语义的对象的描述。“对象”是“对象类”的一个实例。“关联”是对一组具有共同的结构特征、行为特征、关系和语义的链接的描述,“链接”用于为两个或多个实体(对象类)之间具有共同特征的关系建立模型。“链接”是“关联”的一个实例,“链接”用于为两个或多个对象之间的关系实例建立模型。 3模型层模型(Model)是元模型的一个实例,在模型层定义用于描述信息领域的语言。模型是对现实

温馨提示

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

评论

0/150

提交评论