资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第1章 概述,软件,已处于信息技术的核心位置,软件产业,已成为信息产业中独立的支柱产业,软件业的发展造就了一个个,“,童话,”,。软件工厂成为了科技时代的浪尖。,自从,1968,年首次软件工程一词以来,软件工程已成为计算机软件的一个重要分支和研究方向。,第1章 概述,工程将理论和所学的知识应用于实践的科学。,软件工程应用计算机科学、数学及管理科学等原理,开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。,软件工程是一门交叉性学科。,软件工程的主要内容,软件工程的基本概念,软件开发模型,软件开发各阶段的任务、技术、方法,软件过程,软件工具,软件工程管理,软件质量保证,软件工程环境,软件经济学,软件的概念,程序、软件与软件产品,独唱-小合唱-合唱-万人大合唱,|,简单程序 较复杂程序 软件,软件定义:软件=程序+数据+文档,程序:按事先设计的功能和性能需求执行的指令序列,数据:是程序能正常操纵信息的数据结构,文档:与程序开发、维护和使用有关的图文材料,软件的特点,软件是逻辑实体。具有抽象性。软件的形态不可见,必须通过观察、分析、思考、判断来了解其功能、性能和其它特性。,软件是人脑思维的产物,其生产过程与硬件不同开发过程的质量控制及软件产品保护问题。,软件的开发和运行受计算机系统限制软件移植问题。,软件的开发技术落后,手工开发方式仍占统治地位,开发效率低。,软件的特点,软件的失效率与硬件不同。,失效率,时间,硬件失效率曲线,失效率,时间,软件失效率曲线,软件的特点,软件的复杂性越来越高,对软件人员的要求越来越高,出现了软件复杂性与软件技术发展的不适应现象。,软件复杂性,差距,软件需求与软件技术发展现状,软件需求,时间,软件技术,软件技术进步落后于需求增长,软件的特点,软件的特点,软件的开发研制成本高,自年代以来,已大大超过硬件成本。,计算机系统软、硬件成本比例的变化情况,硬件,年份,软件,年,年,年,成本,软件的特点,相当多的软件工作涉及社会因素,如机构、体制、管理方式等,包括人的观念及心理,都直接影响软件工作的成败。,软件的分类,按功能,按规模,按工作方式,按使用频度,按失效影响,系,统,软,件,支,撑,软,件,应,用,软,件,按服务对象,软件的分类,按功能,按规模,按工作方式,按使用频度,按失效影响,按服务对象,微,型,软,件,小,型,软,件,大,型,软,件,甚,大,型,软,件,极,大,型,软,件,软件的分类,按功能,按规模,按工作方式,按使用频度,按失效影响,按服务对象,实,时,处,理,软,件,分,时,软,件,交,互,式,软,件,批,处,理,软,件,软件的分类,按功能,按规模,按工作方式,按使用频度,按失效影响,按服务对象,产,品,软,件,项,目,软,件,软件的分类,按功能,按规模,按工作方式,按使用频度,按失效影响,按服务对象,使,用,频,度,低,使,用,频,度,高,软件的分类,按功能,按规模,按工作方式,按使用频度,按失效影响,按服务对象,不,良,影,响,严,重,影,响,软件开发的发展过程,程序设计阶段 50至60年代,程序系统阶段 60至70年代,软件工程阶段 70年代以后,计算机应用发展,软件数量多规模大,软件成本高质量低,个体化软件开发方法,软件维护困难,软件危机,软件工程,软件危机,定义,计算机软件的开发和维护过程所遇到的一系列严重问题。,表现,对软件开发成本和进度的估算很不准确,用户很不满意,质量很不可靠,没有适当的文档,软件成本比重上升,供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势,软件危机,原因,客观:软件本身特点,逻辑部件,规模庞大,主观:不正确的开发方法,忽视需求分析,错误认为:软件开发=程序编写,轻视软件维护,软件危机,解决途径,组织管理,工程项目管理方法,技术措施,软件开发技术与方法,软件工具,软件工程,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术方面研究如何更好地开发和维护计算机软件的学科。,定义:,软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来即软件工程。,软件工程,软件工程的基本原理,(自“软件工程”提出后,专家和学者们陆续提出了100多条关于软件工程的准则或“信条”,有专家归纳出了确保开发质量和效率的原理的最小集合7条基本原理):,1)用分阶段的生命周期严格管理;,2)坚持进行阶段评审;,3)实行严格的产品控制;,4)采用现代程序设计技术;,5)结果应能清楚地审查;,6)开发小组人员应少而精;,7)承认不断改进软件工程实践的必要性,。,软件工程三要素,软件工程,三个要素,方法,工具,过程,提供一系列软件开发技术。包括完成开发过程中各方面任务的方法并用某种特殊的语言或图形来描述。,软件工程三要素,软件工程,三个要素,方法,工具,过程,软件工具为软件方法提供了自动的或半自动的支撑环境。将多种工具集成在一起可构成计算机辅助软件工程(,CASE),的软件开发支撑系统。,软件工程三要素,软件工程,三个要素,方法,工具,过程,软件过程是将软件工程的方法和工具综合起来,进行软件开发。,方法、工具和过程:,软件工程方法为软件开发提供了,“,如何做,”,的技术,软件工具为软件工程方法提供了自动的或半自动的软件支撑环境,软件工程过程定义了:,方法使用的顺序,要求交付的文档资料,为保证质量和适应变化所需要的管理,软件开发各个阶段完成的里程碑,软件工程的三要素,软件工程项目的基本目标,付出较低的开发成本,达到要求的软件功能,取得较好的软件性能,开发的软件易于移植,需要较低的维护费用,能按时完成开发工作,及时交付使用,软件工程基本,原则,抽象,采用分层次抽象,自顶向下、逐层细化的办法控制软件开发过程的复杂性,。,信息隐蔽,将模块设计成,“,黑箱,”,,实现的细节隐藏在模块内部,不让模块的使用者直接访问。这就是信息封装,使用与实现分离的原则。,模块化,如,C,语言程序中的函数过程,,C+,语言程序中的类。模块化有助于信息隐蔽和抽象,有助于表示复杂的系统。,局部化,要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块之间具有松散的耦合,模块内部具有较强的内聚。这有助于控制解的复杂性。,确定性,软件开发过程中所有概念的表达应是确定的、无歧义性的、规范的。,一致性,整个软件系统的各个模块应使用一致的概念、符号和术语。程序内部接口应保持一致。软件和硬件、操作系统的接口应保持一致。系统规格说明与系统行为应保持一致。用于形式化规格说明的公理系统应保持一致。,软件工程基本,原则,完备性,软件系统不丢失任何重要成分,可以完全实现系统所要求功能的程度。为了保证系统的完备性,在软件开发和运行过程中需要严格的技术评审。,可验证性,开发大型的软件系统需要对系统自顶向下、逐层分解。系统分解应遵循系统易于检查、测试、评审的原则,以确保系统的正确性。,软件工程基本,原则,软件工程过程和软件生命期,软件工程过程:,软件工程过程是为获得软件产品,在软件工具支持下由软件人员完成的一系列软件工程活动。,软件工程过程内容,软件工程过程特性,1)软件规格说明:规定软件的功能及运行限制,2)软件开发:产生满足规格说明的软件,3)软件确认:对软件能否满足用户要求进行确认,4)软件演进:为满足用户的变更要求的演进,软件工程过程和软件生命期,软件工程过程:,软件工程过程是为获得软件产品,在软件工具支持下由软件人员完成的一系列软件工程活动。,软件工程过程内容,软件工程过程特性,1)可理解性;2)可见性;,3)可支持性;4)可接受性;,5)可靠性;6)健壮性;,7)可维护性;8)速度。,软件工程过程和软件生命期,软件生命期(,Life cycle):,一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程称为软件生存期或叫生命期。,生命期的划分:,制定计划,需求分析和定义,软件设计,程序编写,软件测试,运行/维护,定义阶段,开发阶段,维护阶段,软件生存期模型,瀑布模型,原型模型,螺旋模型,喷泉模型,构件组装模型,统一过程模型,第四代技术,瀑布模型,计划,需求分析,设计,编码,测试,运行、维护,定义,阶段,开发,阶段,维护,阶段,原型模型,原型模型也称快速原型模型.,原型模型的基本思想是:,软件开发人员在与用户进行需求分析时,以比较小的代价快速建立一个能够反映用户主要需求的原型系统,让用户在计算机上进行操作,在实践过程中提出改进意见,开发人员根据用户的意见,对原型进行补充和完善,然后再由用户试用、评价、提出建议,重复这一过程,直到用户对开发的原型系统满意为止。,原型模型,原型开发,原型评价,最终系统设计,用户,反馈,原型模型,螺旋模型,螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即:,制定计划,确定软件目标,选定实施方案,弄清项目开发的限制,风险分析,分析所选方案,考虑如何识别和消除风险,实施工程,实施软件开发,客户评估,评价开发工作,提出修正建议,螺旋模型,螺旋模型,特点,瀑布模型+快速原型+风险分析,迭代过程,一个螺旋,式周期,确定目标,选择方案,选定完成目标的策略,风险角度分析该策略,启动一个开发阶段,评价前一步的结果,,,计划下一轮的工作,喷泉模型,迭代,重复,演进,无间隙,各阶段间无明显界限,喷泉模型,构件组装模型,构件组装模型,特点:,面向对象,基于构件库,融合螺旋模型特征,支持软件开发的迭代方法,软件重用,统一过程模型,Rational,统一过程(,Rational Unified Process,RUP),是由,Rational,公司开发的一种软件过程,它的开发过程有如下3个主要特点:,是一种用例(,Use,case,),驱动的软件开发过程,是以体系结构(,Architecture,),为中心的过程,迭代(,Iterative,),开发与增量(,Incremental,),开发相结合的过程,第四代技术,“第四代技术”,(4,GT),包含了一系列的软件工具,其特点是:能使软件工程师在较高级别上说明软件的某些特征,然后利用工具将开发者的说明自动生成源代码,并且软件被说明级别越高,其建造程序的速度就越快。,基于4,GT,的开发过程如下:,像其他范型一样,,4,GT,也是从需求收集这一步开始。,制订一个系统的设计策略。,应用,4,GL,的生成功能,自动生成所期望的代码。,进行测试,完成相关文档,并完成其他软件工程范型中同样要求的所有集成活动,得到最终产品。,软件开发方法简述,软件开发方法是指软件开发过程中所应遵循的方法和步骤。,局部软件开发方法:针对某些活动的开发方法,全局软件开发方法:覆盖开发全过程的方法,考虑如下的几个因素:,(1)对该软件开发方法是否已具有经验,或有已受过训练的人员;,(2)为软件开发提供的软件硬件资源及可使用的工具的情况;,(3)该开发方法在计划、组织和管理方面的可行性;,(4)对开发项目所涉及领域的知识的掌握情况。,软件开发方法简述,1、结构化方法,结构化方法也称为面向功能的软件开发方法或,Yourdon,方法,是由,E.Yourdon,和,L.Constantine,提出的.,结构化分析方法,SA:,对软件进行需求分析,结构化设计方法,SD:,进行总体设计和详细设计,结构化编程,SP,特点:,按照功能分解的原则,自顶向下、逐步求精,直到实现软件功能为止。该方法简单、实用。,软件开发方法简述,1、结构化方法,主要问题:,(1),它以功能分解为基础,而用户的功能是经常改变的,必然导致系统的框架结构不稳定。,(2),从数据流程图到软件结构图之间的过渡有明显的断层,导致设计回溯到需求有困难。,软件开发方法简述,2、面向数据结构的开发方法,面向数据结构的软件开发方法有两种:,Warnier,方法:,由,JDWarnier,提出的结构化数据系统开发方法(,DSSD),;,Jackson,方法:,由,M.A.Jackson,提出的,Jackson,系统开发方法(,JSD),。,面向数据结构的软件开发方法,基本思想,是:从目标系统的输入输出数据结构入手,导出程序的基本框架结构,在此基础上,对细节进行设计,得到完整的程序结构图。,软件开发方法简述,3、面向对象的方法,面向对象方法的优点:,(1)将现实世界问题向面向对象解空间直接映射,实现对现实世界的直接模拟。,(2)以数据为中心,而不是基于对功能的分解,使得软件结构相对稳定,软件的重用性、可靠性、可维护等特性都较好。,软件开发方法简述,3、面向对象的方法,影响较大的,面向对象方法有:,(,1),Booch,方法:该方法的分析能力较弱,是一种偏重设计的方法。,(2),OMT,方法:通过建立对象模型、动态模型、功能模型,来实现对整个系统分析和设计工作。,(3),OOSE,方法:最大特点是用用例(,UseCase),与外部角色的交互来表示系统功能,用例贯穿于整个开发过程。,(4),CoadYourdon,的面向对象分析和设计方法:即,OOA,和,OOD,方法,它是最早的面向对象的分析和设计方法之一。,(5),UML:,统一建模语言,,,国际对象管理组织,OMG,已批准将,UML1.1,作为面向对象技术的标准建模语言。,软件开发方法简述,4、,可视化开发方法,可视化开发方法是随着图形用户界面的兴起而发展起来的,是通过事件驱动实现应用软件的工作。,可视化开发方法的优点:,(1)简化了图形用户界面的设计和编码工作,将开发的注意力主要集中在程序的执行逻辑和工作流程上。,(2)软件开发简单,易学、易上手。,(3)专业或非专业人员都能参与软件开发活动。,软件工程的最新发展动向,软件形式语言的研究,构件技术,质量管理,第二章 软件计划,可行性研究,系统流程图,软件计划,成本/效益分析,可行性研究,一、目的,可行性研究的目的是用最小的代价在尽可能短,的时间内确定问题是否能够解决。,可行性研究的目的不是解决问题,而是确定问题,是否值得解决。怎样达到这个目的呢?当然不能靠主,观猜想而只能靠客观分析,必须分析几种主要的可能,解法的利弊,从而判定原定的系统目标和规模是否现,实。系统完成后所能带来的效益是否大到值得投资开,发这个系统的程度。因此,,可行性研究实质上是要进,行一次大大压缩简化了的系统分析和设计的过程。,也,就是在较高层次上以较抽象的方式进行系统分析和设,计的过程。,可行性研究,二、可行性研究集中在如下四个最为敏感的方面:,1.经济可行性,这个系统的经济效益能超过它的开发成本吗?,2.技术可行性,使用现有的技术能实现这个系统吗?分析技术冒险的各种因素,例如有关的技术是否已进步到足以支持该系统?能否有胜任开发该系统的熟练技术人员?为开发项目的所有硬、软件资源是否能按期得到?,可行性研究,3.操作可行性,系统的操作方式在这个用户组织内行得通吗?,4.法律可行性,确定由于开发软件项目是否会侵犯他人、集体或国家的利益,是否会违反国家的法律,并由此承担法律责任。可行性研究最根本的任务是对以后的行动方针提出建议,如果问题没有可行的解,分析员应该建议停止这项开发工程以避免时间、资源、人力和金钱的浪费。如果问题值得解,分析员应该推荐一个较好的解决方案,并未工程制定一个初步的计划。,可行性研究,三、可行性研究需要的时间长短取决于工程的规模。,一般说来,可行性研究的成本只是工程总成本的510。,可行性研究,四、可行性研究的步骤,1、复查系统规模和目标,分析员访问关键人员,仔细阅读和分析有关的材料,以便改正含糊或不正确的叙述,清晰的描述对目标系统的一切限制和约束,2、研究目前正在使用的系统,新系统必须解决旧系统中存在的问题,运行使用旧系统所需要的费用是一个重要经济指标,如果新系统不能增加收入或减少使用费用,那么从经济角度看新系统就不如旧系统。,可行性研究,注意了解并记录现有系统和其它系统之间接口情 况,这是设计新系统时的重要约束条件。,常见的错误做法是花费过多时间去分析现有的系统。,3.导出新系统的高层逻辑模型,优秀的设计过程通常总是从现有的物理系统出发,导出现有系统的逻辑模型(,数据流图和业务流程图,),在参考现有系统的逻辑模型,设想目标系统的逻辑模型,最后根据目标系统的逻辑模型建造新的物理系统。,可行性研究,4.重新定义问题,新系统的逻辑模型实质上表达了分析员对新系统必须做什么的看法,用户是否也有同样的看法呢?分析员应该和用户一起再次复查问题定义、工程规模和目标。,这次复查应把数据流图和数据字典作为讨论的基础。,可行性研究的前四个步骤实质上构成一个循环,分析员定义问题,分析这个问题,导出一个试探性的解,在此基础上再次定义问题,再一次分析这个问题,修改这个解,继续这个循环过程,直到提出的逻辑模型完全符合系统目标。,可行性研究,5、导出和评价供选的解法,导出供选择的解法的最简单的途径,是从技术角度出发考虑解决问题的不同方案。,依次从技术可行性、操作可行性、经济可 行性三个方面考虑。,6、,推荐一个方案并说明理由,7、推荐行动方针,8、书写文档提交审查,请用户和使用部门的负责人仔细审查。,可行性研究,系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件(程序、文档、数据库和人工过程等)。,系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,它用来表示物理数据流图而不是程序流程图。,系统流程图,1、系统流程图的符号,:如表2-1、2-2所示(书),2、系统流程图举例:如图2-1、2-2所示(书),3、分层,描绘复杂的系统时,比较好的方法是分层次地描绘这个系统。,(1)绘制高层次的系统流程图,描绘系统总体概貌,表明系统的关键功能。,(2)然后分别对每个关键功能进行详细描述,画在单独的一页纸上。,系统流程图,4、系统流程图的作用:,(1)系统分析员可利用系统流程图直接拟出可以由实现计算机处理的部分,(2)通过用系统流程图来分析业务流程的合理性。,(3)系统流程图还是系统分析员、管理人员和业务操作人员相互交流的工具。,系统流程图,软件计划以可行性研究报告为基础,由软件人员和用户共同确立软件的功能和限制,提出软件计划任务书。,一个典型的软件计划计划书的内容应该包括如下四个方面:,1、软件范围,软件计划的第一个任务是确定软件需求描述,主要包括功能、性能、可靠性和接口等问题。,2、环境资源,包括软件、硬件和人,每种资源均从资源的描述,对资源要求的日程表时间以及对资源应用的持续时间三个方面来说明。,制定软件计划,3、,进度安排,计划者要协调可用资源与项目的工作量,考虑各项任务之间的互相依赖,而在可能时间时就并行地安排工作,预见潜在的问题或瓶子口,并提供意外事故处理等。,进度安排的主要内容,进度安排的主要工作是制定软件进度表,以明确开发各阶段的任务和时间安排情况。软件进度表的内容包括:,软件的任务划分情况;各任务的起始时间和结束时间;,各任务的工作量和所需的人数;各任务之间的衔接关系;,各任务所需的资源情况;各任务完成后所应提交的文档;,对各任务的审查和审查记录等。,制定软件计划,3、进度安排,软件进度计划的编制方法,甘特图法,甘特图(,Gantt Chart),又称线条图,是一种对各项活动进行计划调度与控制的图表,它具有简单、醒目和便于编制等特点。一般甘特图的横方向表示时间,纵方向列出工作。,甘特图的描述符号和示例如图2-4、2-5所示(书)。,特点:,能够动态反映软件项目开发进展的情况。,难以反映多个任务之间存在的复杂的逻辑关系。,制定软件计划,3、进度安排,软件进度计划的编制方法,网络计划法,网络计划法是用网状图表安排与控制各项活动的方法,可通过对网状图的分析,方便地确定完成整个工程至少需要多少时间,以及哪些子工程是影响工程进度的关键。一般适应于工作步骤密切相关、错综复杂的工程项目的计划管理。,网络计划法的描述符号和示例如图2-6、2-7所示(书)。,制定软件计划,成本效益分析的目的:,是从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地做出是否投资于这项开发工程的决定。,成本/效益分析,1、成本估算技术,常用的成本估算方法:,(1),基于代码行的成本估算方法,(2)任务分解成本估算,(3)经验统计估算模型,参数方程,动态多变量参数模型,COCOMO,模型(,constructive Cost Model),自动估算工具,成本,/,效益分析,成本,/,效益分析,2、,成本效益分析的方法,在估计开发成本的基础上,对运行费用和新系统将带来的经济效益进行分析。运行费用取决于系统的操作费用,(,操作员人数,工作时间,消耗的物资等等,),和维护费用。系统的经济效益等于因使用新系统而增加的收入加上使用新系统可以节省的运行费用。,通过比较新系统的开发成本和经济效益,从经济角度判断这个系统是否值得投资。,对成本/效益分析考虑的问题有:,1、货币的时间价值,2、投资回收期,3、纯收入,4、投资回收率,第3章 需求分析,需求分析的概念和任务,获取需求的方法,结构化分析方法,原型法,软件需求分析概述,从开发工作的流程来看,需求分析是软件计划的下一工作步骤,它为软件设计阶段提供一个软件需求规格说明书。,软件计划,需求分析,软件功能,软件作用范围,成本、资源估算,软件规格说明,软件开发工作流程,1、需求的概念,比较权威的定义是,IEEE,软件工程标准词汇表中的需求定义:,用户解决问题或达到目标所需的条件或权能(,Capability)。,系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。,一种反映上面(1)或(2)所描述的条件或权能的文档说明。,软件需求分析概述,2、需求的层次,需求可分解为4个层次:业务需求、用户需求、功能需求和非功能需求。,业务需求,:,业务需求是反映组织机构或客户对软件高层次的目标要求。这项需求是用户高层领导机构决定的,它确定了系统的目标、规模和范围。,用户需求,:,用户需求是用户使用该软件要完成的任务。,功能需求,:,功能需求定义了软件必须实现的功能。,非功能需求:非功能需求是对功能需求的补充。,软件需求分析概述,3、需求分析的目标和任务,需求分析的目标,构造一个完全地、精致 地目标系统逻辑模型;,确定设计约束和定义软件有效性要求。,软件规格说明,软件需求分析概述,需求分析的任务,需求分析阶段研究的对象是软件项目的用户要求,其任务是借助当前系统的逻辑模型,调查研究、分析综合,并通过抽象思维、逻辑推理导出目标系统的,逻辑模型,,解决系统,“,作什么,”,的问题,并将结果准确表达。,3、需求分析的目标和任务,软件需求分析概述,返回,软件开发项目是要实现目标系统的物理模型,包括确定待开发软件系统的元素,将功能和信息结构分配到系统元素中。,逻辑模型,忽视实现机制与细节,只描述系统要完成的功能和要处理的信息,。,软件需求分析概述,实现步骤:,(1)分析现实世界,充分理解当前系统,并用一个具体模型描述,获得当前系统的物理模型。,(2)在理解当前系统,“,怎么做,”,的基础上,抽取,“,作什么,”,的本质,抽象出系统的逻辑模型。,(3)分析目标系统与当前系统逻辑上的差别,导出目标系统的逻辑模型。,(4)对目标系统逻辑模型进行补充,以求完整地描述。,软件需求分析概述,当前系统,逻辑模型,物理模型,目标系统,模型化,物理模型,怎么做,具体化,抽象化,逻辑模型,做什么,实例化,导出,理解需求,表达需求,由当前系统建立目标系统模型过程,软件需求分析概述,需求分析的过程,需求分析阶段的工作有以下四个方面:,问题识别,分析与综合,编制需求分析阶段文档,需求分析评审,软件需求分析概述,需求获取,功能,要,求,性能,要,求,运行和扩充要求,维护要求,系统文档规格要求,问题识别包括:,软件需求分析概述,问题识别包括:,确定软件需求,经济可行性,技术可行性,法律可行性,对不同方案进行比较选择,进行可行性研究,软件需求分析概述,问题识别包括:,确定软件需求,进行可行性研究,建立分析的通讯关系,管理人员,用户/需求者,分析人员,软件组,软件计划,软件需求规格说明,原型,软件需求分析概述,编写需求规格说明,(1)需求规格说明,包含对目标软件系统的外部行为的完整描述、需求验证标准以及用户在性能、质量、可维护性等方面的要求。,(,2,)用户手册,包括用户界面描述以及有关目标系统使用方法的初步构想。,(,3,),在需求分析中,确立测试标准,,作为系统开发目标是否完成的验收依据。,(4)修改的项目开发计划,是根据新的分析结果,对可行性分析和软件计划阶段中制订的初步的项目开发计划作必要的修改、补充和完善。,软件需求分析概述,需求验证,由专家、分析人员、开发人员、用户组成评审组,对需求分析所得的结果 进行评审。,完整性,正确性,一致性,必要性,无歧义性,可验证性,优先级的划分,软件需求分析概述,获取需求的方法,需求分析至今仍是公认为的软件开发中最为困难、亟待解决的一个问题。,1、存在问题,(1)对需求的理解问题。,(2)分析人员与用户的通信问题。,(3)用户需求的可变性问题。,分析方法和分析工具问题。,2、常用方法,(1)访谈,:,正式的和非正式的访谈,(2)问卷调查,问卷调查即把需要调查的内容制成表格交给用户填写。该方法对需要调查大量人员的意见时,十分有效。,(3)情景分析,情景分析就是对目标系统解决某个具体问题的方法和结果,给出可能的情景描述,以获知用户的具体需求。,(4)实地考察,(5)构造原型,获取需求的方法,3、需求分析的原则,(1)解决逻辑问题,需求分析是对问题的识别和说明过程,分析员要回答的是“系统必须做什么”的问题,而不是“系统应该怎么做”的问题。,(2)以运行环境为基础,需求分析工作应以具体的运行环境为基础,实事求是,。,(3)用户参与的原则,需求分析工作是系统分析人员同用户不断交互的过程。,(4)构造高质量的需求规格说明,需求规格说明是需求分析工作重要的完成标志。,获取需求的方法,4、需求分析方法概述,不管采用哪种方法进行需求分析,都应满足如下基本要求。,必须能理解问题的数据域和功能域,数据域一般描述为:数据内容、数据结构和数据流。,其中,数据内容就是数据项,数据结构就是数据项的组织形式,数据流是数据通过系统时的变化方式。,对数据进行的一系列的转换即系统应实现的功能和子功能。两个功能之间的数据传递就确定了功能之间的接口。,获取需求的方法,4、需求分析方法概述,不管采用哪种方法进行需求分析,都应满足如下基本要求。,必须能按自顶向下、逐层分解的方式对问题进行分解和不断细化,.,分解是将求解的复杂问题,分解为若干相对简单问题求解的组合。分解的目的是为了降低问题求解的复杂性,将复杂问题分解成一些小的、容易控制和理解的子问题不仅便于理解,还可以将子问题划分给不同的开发小组,分别完成,然后再装配起来形成一个完整的系统。更重要的是可以促进软件开发走向构件开发的道路。,获取需求的方法,4、需求分析方法概述,不管采用哪种方法进行需求分析,都应满足如下基本要求。,要给出系统的逻辑视图和物理视图,软件需求的逻辑视图,描述的是软件要达到的功能和要处理的信息之间的关系,但没有描述实现的细节。,软件需求的物理视图,给出的是处理功能和信息结构的实际表现形式,需考虑实际的环境和具体的设备。,获取需求的方法,结构化分析方法,结构化分析方法:,是面向数据流进行需求分析,,以结构化的方式进行系统的分析方法。适用于分析大型的数据处理系统。,该方法的,特点,是利用数据流图来帮助人们理解问题,对问题进行分析。即利用图形工具来模拟数据处理过程。,该方法的,核心是数据流图,。,数据流图是一种用来表示信息流程和信息变换过程的图解方法,它将系统看成是由数据流联系的各种功能的组合。数据流图可以方便的描述用数据流的流动联系的各种功能。通过各种功能的输入/输出结果,表现现有系统或待开发系统的功能。,此外,:,用,数据字典,定义数据流图中的各项数据;,结构化英语、判定树和判定表,对数据流图中的基本功能进行描述。,通过将系统分解成多层处理后,在较低层次上,可以看到数据流图的高层次加工的细节和相关的数据流。结构化分析方法的实质就是采用一组分层的数据流图及相应的数据字典作为系统的模型。,结构化分析方法从总体上看是一种强烈依赖数据流的自顶向下的建模方法,它不仅是需求分析技术,也是完成规格说明文档的技术手段。,结构化分析方法,结构化分析方法(,structured analisys),结构化分析法,使用的工具,数据字典,数据流图,结构化英语,判定表或判定数,表达系统内部数据的运动情况,结构化分析法,使用的工具,数据字典,数据流图,结构化英语,判定表或判定数,定义系统的数据。,结构化分析方法(,structured analisys),结构化分析法,使用的工具,数据字典,数据流图,结构化英语,判定表或判定数,描述数据加工。,结构化分析方法(,structured analisys),数据流图,1、组成元素:四种基本图形符号,圆框:表示从输入到输出的数据流中的一个加工,在框内注明加工的名称;,方框:表示数据的源点或数据的汇点,即外部实体,在框内注明实体的名称;,箭头:表示被加工数据的路径和流向,即数据流,可用名词和或名词性短语命名;,双杠:表示数据存储,可以是一个记录或一个数据文件,可用名词和或名词性短语命名。,结构化分析方法(,structured analisys),数据流描述,DFD,中各成分的接口。数据流的方向可以:,从加工流向加工:,从加工流向数据存储;,从源点流向加工;,从加工流向终点。,数据流:,结构化分析方法(,structured analisys),数据流的含义:,(1)数据流是一组成分已知的数据。可以是一个数据,也可以是一组数据。,(2)两个加工之间可以有多个数据流。当数据流间毫无关系,也不是同时流出(或同时到达时)如果强制和为一个数据流会使问题含糊不清。,(3)数据流应有良好的命名,它不仅作为数据的标识,还有利于深化对系统的认识。,数据流:,结构化分析方法(,structured analisys),(4)同一数据流可流向不同加工,不同加工也可流出相同的数据流。(合并与分解)。,(5)流入/流出简单存储的数据流不需要命名。因为数据存储名已有足够的信息来表示数据流的意义。,(6)数据流不代表控制流。数据流反映了处理的对象,控制流是一种选择或用来影响加工的性质,而不是对它进行加工的对象。,数据流的含义,:,数据流:,结构化分析方法(,structured analisys),加工是对数据执行某种操作或变换,是把输入数据流变成输出数据流的一种变换。每个加工应有一个名字代表它的意义。分层的,DFD,中每个加工还应进行编号。,加工,结构化分析方法(,structured analisys),数据存储可以表示文件、文件的一部分、数据库的元素或记录的一部分等。数据可以存储在磁盘、磁带、存储器和其他任何介质上。应对数据文件进行命名。在,DFD,中应注意指向数据文件的箭头的方向(可以是双向的)。,数据存储,结构化分析方法(,structured analisys),源点和终点是代表系统之外的人、物或组织。它们发出或接受系统的数据,其作用是提供系统和外界环境之间关系的注释性说明,说明数据的来龙去脉,使数据流图更清晰。,源点和终点,结构化分析方法(,structured analisys),数据流图实例,顾客,验证,订单,图书目录文件,顾客档案,顾客信,用情况,汇总对,各出版社,的要求,订单,待处理订单文件,出版社档案文件,正确订单,一批订单,书目、地址,订货存根文件,订货存根,出版社,对出版社,的订单,图书预定系统的数据流图,结构化分析方法(,structured analisys),数据流图的画法:,基本原则:,数据流图中所有图形符号必须是四种元素之一;,数据流图的主图必须含有四种元素,缺一不可;,数据流图的主图必须封闭在外部实体之间,实体可以有多个;,加工框至少有一个输入数据流和一个输出数据流;,任何一个数据流子图必须与它的父图上的一个加工框对应,两者的输入/输出数据流必须一致;,图中的每一个元素都必须有名字。,结构化分析方法(,structured analisys),数据流图的画法:,基本原则:,可以在数据流图中加入物质流;,不可在数据流图中夹带控制流;,初画时,可忽略一些细节。,注意:,画数据流图时,不考虑初始化,暂不考虑出错路径等细节,不画控制流和控制信息。基本原则是,“,先外后内,”,。,结构化分析方法(,structured analisys),画数据流图的步骤:,1、找外部实体,找到外部实体即可确定系统与外部世界的界面,也就可确定数据流源和数据终点;,2、找出外部实体的输入和输出数据流;,3、画出外部实体;,4、从外部实体的输出流(源)出发,按照系统的逻辑需要,逐步画出一系列逻辑加工框,直至数据终点;,5、按照一般原则进行检查和修改;,6、按上述步骤画出所需的子图。,结构化分析方法(,structured analisys),控制系统复杂性的基本思想:,对大型,、复杂系统,最困难的是处理复杂性。在软件工程中,控制复杂性的主要手段是,“,分解,”,和,“,抽象,”,。,SA,方法采用这种,“,分解,”,和,“,抽象,”,的手段来对付复杂。,结构化分析方法(,structured analisys),如何表示系统的功能呢?,“,采用自顶向下逐层分解,”,的方法。,对系统作了合理的分解后,在最下层就可以分别理解系统的每一个细节,并为每一个细节写下小说明,再将所有小说明组织起来,即得到整个系统的系统说明书。这种逐层分解也体现了抽象的原则,使人们不至于一下子就被许多细节淹没,而是有控制的逐步了解更多的细节,有利于理解问题。,结构化分析方法(,structured analisys),S,2,1,3,F,F,F,F,2.2,2.3,2.4,2.1,3.2,3.1,3.3,F,DFD/L0,DFD/L1,1.2,F,1.1,1.3,DFD/L2.1,DFD/L2.2,DFD/L2.3,分层数据流图,结构化分析方法(,structured analisys),父图和子图的平衡,3.1,3.2,3.3,N,X,P,Q,S,T,1,2,3,A,B,M,S,C,N,父图,子图,结构化分析方法(,structured analisys),M,3.1,3.2,3.4,N,X,P,Q,S,3.3,检查,输出,计算,A,C,D,E,X0,时,数据流图例:,结构化分析方法(,structured analisys),数据字典,数据字典是对数据流图上的每一个成分进行定义和说明的工具。数据字典中有关系统的详细信息,是以后进行系统设计及维护的重要依据。,数据字典编写的基本要求:,1、对数据流图上的各种元素的定义必须明确,一致且易理解。,2、命名、编号应与数据流图一致。,3、对数据流图的成分定义与说明无遗漏,无同名异义,或异名同义。,4、格式规范,文字精练,符号正确。,结构化分析方法(,structured analisys),数据字典中的条目包括6种形式:,1、数据项:数据处理中基本的不可分割的逻辑单位。(如材料号等),2、数据结构:描述数据流或数据存储的逻辑组成。,3、数据流:定义数据流图中的数据流,包括名字、编号、来源去向、包含的数据结构名等。,4、数据存储:说明存储文件的名称、编号,组成、记录数等。,5、处理功能:说明加工的名称、编号,输入/输出数据流,加工逻辑概括描述等。,6、外部实体:说明外部实体的名称、编号,输入/输出数据流等。,结构化分析方法(,structured a
展开阅读全文