《结构化分析》PPT课件.ppt
《《结构化分析》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《结构化分析》PPT课件.ppt(114页珍藏版)》请在三一办公上搜索。
1、第三部分、结构化分析,传统的软件工程方法学采用结构化分析技术完成系统分析(问题定义、可行性研究、需求分析)的任务。所谓“结构化”,就是用一组标准的准则和工具来完成某项工作。具体说到结构化分析,它主要有以下几个要点:采用自顶向下功能分解的方法;强调逻辑功能而不是实现功能的具体方法;使用图形表达系统分析的结果。,1 问题定义,本阶段任务:在短时间内对客户的需求有比较准确的估计:软件的目标、规模,要点:哪些内容不需要实现,划清项目的范围 必须形成书面报告提交给用户审查,可行性研究的目的就是,用最小的代价在尽可能短的时间内研究并确定所面临的问题是否能够解决。任务:导出新系统的逻辑模型,从模型出发提出若
2、干种实现方案,对每种方案进行可行性分析和提出实现进度,最后提出建议。,2 可行性研究的任务,一般说来,至少应该从下述三方面研究每种解法的可行性。(1)技术可行性:使用现有的技术能实现这个系统吗(2)经济可行性:这个系统的经济效益能超过它的开发成本吗(3)操作可行性:系统的操作方式在这个用户组织内行得通吗(4)法律可行性:必要时还应该进一步从法律、社会效益等更广泛的角度研究每种解法的可行性。分析员应该为每个可行的解法制定一个粗略的实现进度。,当然,可行性研究最根本的任务是对以后的行动方针提出建议。如果问题没有可行的解,分析员应该建议停止这项开发工程,以避免时间、资源、人力和金钱的浪费;如果问题值
3、得解,分析员应该推荐一个较好的解决方案,并且为工程制定一个初步的计划。可行性研究需要的时间长短取决于工程的规模,一般说来,可行性研究的成本只是预期的工程总成本的5%10%。,情景:2010年,我国南方某公司为了节省人工成本,欲开发一系统软件,预计软件总成本为1000万元,软件估计可使用5年。由于使用了该软件,该公司每年大概可以节省250万元成本。决策:假设你是该公司财务总监,你会如何抉择?,货币的时间价值 通常用利率的形式表示货币的时间价值。假设年利率为i,如果现在存入P元,则n年后可以得到的钱数为:F=P(1+i)n 这也就是P元钱在n年后的价值。反之,如果n年后能收入F元钱,那么这些钱的现
4、在价值是P=F/(1+i)n,成本效益分析,一般说来,人们投资于一项事业的目的是为了在将来得到更大好处。开发一个系统也是一种投资,期望将来获得更大的经济效益。经济效益通常表现为减少运行费用和增加收入。成本效益分析的目的正是要从经济角度分析开发一个特定的新系统是否划算,从而帮助使用部门负责人正确地作出是否投资于这项开发工程的决定。,软件开发成本主要表现为人力消耗,乘以平均工资则得到开发费用。成本估计不是精确的科学,因此应该使用几种不同的估计技术以便相互校验。1.代码行技术 代码行技术是比较简单的定量估算方法,它把开发每个软件功能的成本和实现这个功能需要用的源代码行数联系起来。通常根据经验和历史数
5、据估计实现一个功能需要的源程序行数。当有以往开发类似软件的历史数据可供参考时,这个方法是非常有效的。一旦估计出源代码行数以后,用每行代码的平均成本乘以行数就可以确定软件的成本。每行代码的平均成本主要取决于软件的复杂程度和工资水平。,1 成本估计,应用代码行技术的一个例子,首先把软件开发工程分解为若干个相对独立的任务。再分别估计每个单独的开发任务的成本,最后累加起来得出软件开发工程的总成本。估计每个任务的成本时,通常先估计完成该项任务需要用的人力(以人月为单位),再乘以每人每月的平均工资而得出每个任务的成本。最常用的办法是按开发阶段划分任务。如果软件系统很复杂,由若干个子系统组成,则可以把每个子
6、系统再按开发阶段进一步划分成更小的任务。,2.任务分解技术,典型环境下各个开发阶段需要使用的人力的百分比,对于刚才提到的过程控制系统的例子,使用任务分解技术估计该系统的开发成本,得到的结果如表。相对比可以看出,用不同估计技术得到的结果有些差异。,成本效益分析的第一步是估计开发成本、运行费用和新系统将带来的经济效益。而系统的经济效益等于因使用新系统而增加的收入,加上使用新系统可以节省的运行费用。因为运行费用和经济效益两者在软件的整个生命周期内都存在,总的效益和生命周期的长度有关,所以应该合理地估计软件的寿命。以后在进行成本效益分析时一律假设生命周期为5年。比较新系统的开发成本和经济效益,应从经济
7、角度判断这个系统是否值得投资,但是,投资是现在进行的,效益是将来获得的,不能简单地比较成本和效益,应该考虑货币的时间价值。,3 成本效益分析方法,例如,修改一个已有的库存清单系统,使它能在每天送给采购员一份定货报表。修改已有的库存清单程序并且编写产生报表的程序,估计共需5000元;系统修改后能及时定货将消除零件短缺问题,估计因此每年可以节省2500元,五年共可节省12 500元。但是,不能简单地把5000元和12 500元相比较,因为前者是现在投资的钱,后者是若干年以后节省的钱。假定年利率为12%,利用上面计算货币现在价值的公式可以算出修改库存清单系统后每年预计节省的钱的现在价值,如表所示。,
8、将来的收入折算成现在值,投资回收期 通常用投资回收期衡量一项开发工程的价值。所谓投资回收期就是使累计的经济效益等于最初投资所需要的时间。显然,投资回收期越短就能越快获得利润,因此这项工程也就越值得投资。例如,修改库存清单系统两年以后可以节省4225.12元,比最初的投资(5000元)还少774.88元,第三年以后将再节省1779.45元。774.881779.450.44,因此,投资回收期是2.44年。投资回收期仅仅是一项经济指标,为了衡量一项开发工程的价值,还应该考虑其他经济指标。,纯收入 衡量工程价值的另一项经济指标是工程的纯收入,也就是在整个生命周期之内系统的累计经济效益(折合成现在值)
9、与投资之差。这相当于比较投资开发一个软件系统和把钱存在银行中(或贷给其他企业)这两种方案的优劣。如果纯收入为零,则工程的预期效益和在银行存款一样,但是开发一个系统要冒风险,因此从经济观点看这项工程可能是不值得投资的。如果纯收入小于零,那么这项工程显然不值得投资。例如,上述修改库存清单系统,工程的纯收入预计是9011.9450004011.94(元),4 可行性研究过程,典型的可行性研究过程有下述八个步骤:1.复查系统规模和目标2.研究目前正在使用的系统3.导出新系统的高层逻辑模型4.进一步定义问题 可行性研究的前四个步骤实质上构成一个循环。分析员定义问题,分析这个问题,导出一个试探性的解;在此
10、基础上再次定义问题,再一次分析这个问题,修改这个解;继续这个循环过程,直至提出的逻辑模型完全符合系统目标。,5.导出和评价供选择的解法6.推荐行动方针7.草拟开发计划8.书写文档提交审查,5 需求分析的任务,为了开发出真正满足用户需求的软件产品,首先必须确切地知道用户的需求。需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么”这个问题。需求分析的任务还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。,可行性研究阶段产生的文档,特别是数据流图,是需求分析的出发点。需求分析的结果是系统开发的基础,关系到工
11、程的成败和软件产品的质量。因此,必须用行之有效的方法对软件需求进行严格的审查验证。,需求分析阶段的具体任务。1.确定对软件系统的综合要求 对系统的综合要求主要有下述四个方面。(1)系统功能要求 应该划分出系统必须完成的所有功能。(2)系统性能要求 例如,联机系统的响应时间(即对于从终端输入的一个“事务”,系统在多长时间之内可以做出响应),系统需要的存储容量以及后援存储,重新启动和安全性等方面的考虑都属于性能要求。,(3)运行要求 这类要求集中表现为对系统运行时所处环境的要求。例如,支持系统运行的系统软件是什么,采用哪种数据库管理系统,需要什么样的外存储器和数据通信接口等。(4)将来可能提出的要
12、求 应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。这样做的目的是在设计过程中对系统将来可能的扩充和修改预做准备,以便一旦需要时能比较容易地进行这种扩充和修改。,3.导出系统的逻辑模型 综合上述两项需求分析的结果,可以导出系统详细的逻辑模型。通常用数据流图、数据字典和主要的处理算法描述这个逻辑模型。,2.确定对系统的数据要求 任何一个软件系统本质上都是信息处理系统,系统必须处理的信息和系统应该产生的信息对软件设计有深远影响,因此,必须分析系统的数据要求,这是软件需求分析的一个重要任务。分析系统的数据要求通常采用建立概念模型的方法。,4.修正系统开发计划 根据在
13、需求分析过程中获得的对软件系统更深入、更具体的认识,可以较准确地估计系统的成本和进度,从而可以修正在前一个阶段所制定的开发计划。5.开发原型系统 在需求分析过程中使用原型系统的主要目的是,使得用户通过实践获得关于未来的系统将怎样为他们工作的更直接更具体的概念,从而可以更准确地提出和确定他们对所开发的软件的要求。,建立原型系统作为一种应该采取的策略的理由如下:由于人类认识能力的局限性,用户往往不能预先提出全部要求;在用户和系统分析员之间存在固有的通信鸿沟,分析员常常误解了用户的需求;用户需要一个可运行的系统模型,以便获得有关未来系统的实践经验;在软件开发过程中重复和反复是必要的和不可避免的;目前
14、已经有快速建立原型系统的工具可供选用。,功能需求性能需求可靠性和可用性需求出错处理需求接口需求 描述应用系统与通信环境的格式约束 描述在设计或实现应用系统时遵循的条件限制逆向需求 系统不应该做什么将来可能提出的要求,6 需求分析的过程,结构化分析方法(简称SA方法)就是面向数据流自顶向下逐步求精进行需求分析的方法。通过可行性研究已经得出了目标系统的高层数据流图,需求分析的目的之一就是把数据流和数据存储定义到元素级。,典型的需求分析过程主要由下述步骤组成。1.沿数据流图回溯 2.请用户复查 3.细化数据流图,随着分析过程的进展,经过发现问题和解答问题的反复循环,分析员越来越深入具体地定义了目标系
15、统,最终得到对系统数据和功能需求的满意了解。图粗略地概括了上述分析过程。,需求分析的基本过程,4.修正开发计划5.书写文档 系统规格说明 数据要求 用户系统描述 修正的开发计划6.审查和复审,7 与用户沟通的方法,软件需求分析过程总是从两方或多方之间的沟通与交流开始。通常,用户对他们所面临的问题有亲身体会,知道必须做什么,但是往往不能完整准确地表达出他们的要求,更不知道怎样利用计算机软件解决他们的问题;软件开发人员知道怎样用软件实现人们的要求,但是对特定用户的具体要求并不完全清楚。这样就需要相互沟通和交流信息。,原型系统是促进沟通的重要手段,快速建立软件原型是最准确、最有效、最强大的需求分析技
16、术。除了通过原型系统相互沟通之外,还访谈和简易的应用规格说明技术两种典型技术。,1 访谈 访谈(或称为会谈)是最早开始运用的获取用户需求的技术,也是迄今为止仍然广泛使用的主要的需求分析技术。访谈有两种基本形式,分别是正式的和非正式的访谈。当需要调查大量人员的意见时,向被调查的人员分发调查表是一个十分有效的做法。在对用户进行访谈的过程中使用情景分析技术往往非常有效。所谓情景分析就是对用户运用目标系统解决某个具体问题的方法和结果进行分析。,情景分析的用处主要体现在下述两个方面:它能在某种程度上演示产品的行为,从而便于用户理解,而且还可能进一步揭示出一些系统分析员目前还不知道的需求。由于情景分析较易
17、为用户所理解,因此,使用这种技术能保证用户在需求分析过程中始终扮演一个积极主动的角色。需求分析的目标是了解用户的真正需求,而这一信息的惟一来源是用户,因此,让用户起积极主动的作用对需求分析工作获得成功是至关重要的。,使用传统的访谈技术定义需求时,用户和开发者往往有意无意地区分“我们和他们”。由于不能做到像同一个团队的人那样同心协力地识别和精化需求,这种方法的效果有时并不理想(经常发生误解,还可能遗漏重要的信息)。为了解决上述问题,人们研究出了一种面向团队的需求收集法,称为简易的应用规格说明技术。这种方法提倡用户与开发者密切合作,共同标识问题,提出解决方案的要素,商讨不同的方法并指定基本的需求。
18、今天,简易的应用规格说明技术已经成为信息系统界使用的主流技术。,2 简易的应用规格说明技术,尽管存在许多不同的简易应用规格说明方法,但是它们遵循的基本准则是相同的:在中立地点举行由开发者和用户双方出席的会议。制定准备会议和参加会议的规则。提出一个议事日程,这个日程应该足够正式以便能够涵盖所有要点,同时这个日程又应该足够非正式,以便鼓励自由思维。由一个“协调人”来主持会议,他既可以是用户也可以是开发者还可以是从外面请来的人。使用一种“定义机制”(例如,工作表、图表等)。目标是标识问题、提出解决方案要素、商讨不同的方法以及在有利于实现目标的氛围中指定初步的需求。,8 分析建模与规格说明,1 分析建
19、模 系统分析,特别是需求分析的主要任务,是理解用户的需求定义所要开发的目标系统。为了更好地理解问题,人们常常采用建立模型的方法。模型就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。,1:必须理解和表示问题的信息域,建立数据模型 2:必须定义软件应完成的功能,要求建立功能模型 3:必须表示作为外部事件结果的软件行为,建立行为模型,需求建模数据模型:实体-联系图(ER图)功能模型:数据流图(DFD)行为模型:状态转换图,从技术的角度看,软件工程实质上是从一系列建模活动开始的,这些建模活动导致对要求开发的软件要有完整的需求规格
20、说明和全面的设计表示。结构化分析就是一种建立结构化的分析模型的活动。从不同角度描述或理解软件系统,需要不同的模型。结构化分析主要建立功能模型和数据模型。,2 软件需求规格说明书 由国家标准局发布的国家标准GB8567-88“计算机软件产品开发文件编制指南”,规定了在需求分析阶段应写出两份文档,分别是“软件需求说明书”和“数据要求说明书”。,9 验证软件需求,9.1 至少从四个方面验证软件需求 需求分析阶段的工作结果是开发软件系统的重要基础,大量统计数字表明,软件系统中15%的错误起源于错误的需求。为了提高软件质量,确保软件开发成功,降低软件开发成本,一旦对目标系统提出一组要求之后,必须严格验证
21、这些需求的正确性。一般说来,应该从下述四个方面进行验证:一致性 完整性 现实性 有效性,跳过,9.2 验证软件需求的方法1.验证需求的一致性 当需求分析的结果是用自然语言书写的时候,除了靠人工技术审查验证软件系统规格说明书的正确性之外,目前还没有其他更好的“测试”方法。但是,这种非形式化的规格说明书是难于验证的。,2.验证需求的现实性 为了验证需求的现实性,分析员应该参照以往开发类似系统的经验,分析用现有的软、硬件技术实现目标系统的可能性。必要的时候应该采用仿真或性能模拟技术,辅助分析软件需求规格说明书的现实性。,3、4:验证需求的完整性和有效性 只有目标系统的用户才真正知道软件需求规格说明书
22、是否完整、准确地描述了他们的需求。因此,检验需求的完整性,特别是证明系统确实满足用户的实际需要,只有在用户的密切合作下才能完成。只有当他们有某种工作着的软件系统可以实际使用和评价时,才能完整确切地提出他们的需要。使用原型系统是一个比较现实的替代方法,开发原型系统所需要的成本和时间可以大大少于开发实际系统所需要的。用户通过试用原型系统,也能获得许多宝贵的经验,从而可以提出更符合实际的要求。,9.3 用于需求分析的软件工具 为了更有效地保证软件需求的正确性,特别是为了保证需求的一致性,需要有适当的软件工具支持需求分析工作。这类软件工具应该满足下列要求。(1)必须有形式化的语法(或表),因此可以用计
23、算机自动处理使用这种语法说明的内容;(2)使用这个软件工具能够导出详细的文档;(3)必须提供分析(测试)规格说明书的不一致性和冗余性的手段,并且应该能够产生一组报告指明对完整性分析的结果;(4)使用这个软件工具之后,应该能够改进通信状况。,10 系统流程图,系统流程图是描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等等)。系统流程图表达的是信息在系统各部件之间流动的情况,而不是对信息进行加工处理的控制过程,因此尽管系统流程图使用的某些符号和程序流程图中用的符号相同,但是它却是物理数据流图而不是程序流程图。,当以概括的方式抽
24、象地描绘一个系统时,仅使用图2.2中列出的基本符号就够了,其中每个符号表示系统中的一个部件。,10.1 系统流程图的符号,当需要更具体地描绘一个物理系统时,还需要使用图中列出的系统符号。,假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件应该列出下述数据:零件编号,零件名称,定货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过放在仓库中的终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。,图中每个符号用黑盒子形式定义了组成系统的一个部件,然而并没有指明每个部件的具体工作过程;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构化分析 结构 化分 PPT 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5568158.html