桃园文印室1计算机科学学院软件工程(二)班软件工程导论复习资料2星光二班第一章软件工程概述重点掌握的内容:软件和软件工程的基本概念一.什么是软件?1.满足功能要求和性能的指令或计算机程序集合;2.处理信息的数据结构;3.描述程序功能以及程序如何操作和使用所要求的文档;软件的特点:软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。软件是通过人们的智力活动,把知识与技术转换成信息的一种产品,是在研制、开发中被创造出来的在软件运行和使用的期间,没有硬件那样的机械磨损、老化问题软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件的开发至今尚未完全摆脱手工的开发方式软件的开发费用越来越高,成本相当昂贵。二.软件危机以及产生软件危机的原因?1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势。软件产品“供不应求”。2.软件成本在计算机系统总成本中所占的比例逐年上升。3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生。4.软件产品的质量不容易保证。5.软件产品常常是不可维护的。6.软件产品的重用性差,同样的软件多次重复开发。7.软件通常没有适当的文档资料。产生软件危机的原因可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术。三、软件危机1、软件危机定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。2、软件危机的两个主要问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。3、软件危机的典型表现:(1)对软件开发成本和进度的估计常常很不准确。(2)用户对“已完成的”软件系统不满意的现象经常发生。(3)软件产品的质量往往靠不住。(4)软件常常是不可维护的。桃园文印室2计算机科学学院软件工程(二)班软件工程导论复习资料2星光二班(5)软件通常没有适当的文档资料。(6)软件成本在计算机系统总成本中所占的比例逐年上升。(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。软件工程1、软件工程定义:软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地、高效的开发出高质量的软件并有效地维护它,这就是软件工程。软件工程准则可以概括为7条基本原则:用分阶段的生命周期计划严格管理;坚持进行阶段评审实行严格的产品控制采用现代程序设计技术应能清楚地审查结果合理安排软件开发小组的人员承认不断改进软件工程实践的必要性3、软件工程方法学,三要素:方法、工具和过程4、软件生命周期(概念、三时期,八阶段)软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成。软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。软件开发时期分为4阶段:总体设计、详细设计、编码和单元测试、综合测试五、软件开发模型:软件开发模型是跨越整个软件生存周期的系统开发、运作、维护实施的全部工作和任务的结构框架。1)瀑布模型瀑布模型即生存周期模型,由B.M.Boehm提出,是软件工程的基础模型。其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作。采用结构化的分析与设计方法,将逻辑实现与物理实现分开。特点阶段的顺序性和依赖性(规范化)推迟实现的观点(系统化)质量保证(阶段评审)存在问题不适合需求模糊的系统(需求的迷糊性和不确定性)适用于操作系统、编译系统、数据库管理系统等系统软件的开发快速原型模型:所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。快速原型模型的第一步是快速建立一个能反映用户桃园文印室3计算机科学学院软件工程(二)班软件工程导论复习资料2星光二班主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌3)增量模型:是瀑布模型的顺序特征与快速原型法德迭代特征相结合的产物。这种模型把软件看成一系列相互联系的增量,在看法过程的各次迭代中,每次完成其中的一个增量。4)喷泉模型5)微软过程六、思考:你认为“软件就是程序”这一个观点正确吗?如果不正确,请批驳之。1.请从以下几个方面结合自己的经验实例加以论述。软件就是程序的观点是不正确的,因为软件等于程序加文档加数据。(1)文档是软件的一个非常重要的组成部分,在软件的开发过程中起着非常重要的作用。(2)在软件开发的每一个阶段都应有相应的文档。它是开发人员与用户以及开发人员与项目管理人员之间交流的媒介(3)文档是软件在不同阶段的表现形式。(4)程序与文档必须一致,文档才有价值。(5)文档质量直接决定软件质量的高低。(6)文档也是软件测试和维护的依据。在没有文档或文档不全的情况下对大型软件进行测试与维护是不可思议的事情。(7)文档是软件可重用的依据。2、有人说:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。对否?请解释你的回答。答:对,第二章可行性研究重点掌握的内容:可行性研究的系统流程图一般内容:可行性研究的任务和步骤,成本效益分析一、可行使研究:桃园文印室4计算机科学学院软件工程(二)班软件工程导论复习资料2星光二班1、可行性研究的任务:是用最小的代价在尽可能短的时间内确定问题是否能够解决。一般来说,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案等方面研究可行性可行性研究的目的:在明确了所要研究问题定义之后,分析员应该在明确目标系统所有限制和约束的前提下,去确定该问题是否值得去解决。(或就是用最小代价在尽可能短的时间内确定问题是否能够解决。)2、可行性研究过程:1)复查系统规模和目标2)研究目前正在使用的系统3)导出新系统的高层逻辑模型4)进一步定义问题5)导出和评价供选择的解法6)推荐行动方针7)草拟开发计划8)书写文档提交审查3、系统流程图的定义和作用:可行性研究对现有系统做概括的物理模型描述,如用图形工具表示则更加直观简洁。系统流程图是描绘物理系统的传统工具,它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等)。系统流程图表达的是部件的信息流程,而不是对信息进行加工处理的控制过程。在可行性研究过程中,利用系统流程图来描述所建议系统的物理模型。4、数据流程图的定义和作用:数据流程图有两个特征:抽象性和概括性。抽象性指的是数据流程图把具体的组织机构、工作场所、物质流都去掉,只剩下信息和数据存储、流动、使用以及加工情况。概括性则是指数据流程图把系统对各种业务的处理过程联系起来考虑,形成一个总体5、数据流程图的组成元素数据流图可以用来抽象地表示系统或软件。它从信息传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。6、数据流程图的组成:外部实体(外部实体是指系统之外的人或单位,它们和本系统有信息传递关系)数据流,处理、数据存储。如何绘制数据流程图(1)识别系统的输入和输出,画出顶层图(2)画系统内部的数据流、加工与文件,画出一级细化图桃园文印室5计算机科学学院软件工程(二)班软件工程导论复习资料2星光二班(3)加工的进一步分解,画出二级细化图(4)其它注意事项7、数据流程图的注意点1)每个处理都必须有流入的数据流和流出的数据流,如果没有,是错误的。(数据守恒)2)每个数据存储应该有流入的数据流和流出的数据流,如果缺了一种,是Warning的;缺两种就错了。3)、数据流只能在处理与处理、数据存储或者外部实体之间流动。、数据存储到数据存储、外部实提到外部实体、外部实提到数据存储之间的数据流都是错误的。4)、一个处理可以细分成多个子处理,分成若干个层次(均匀分解)5)、良好命名系统流程图与数据流程图有什么区别?答:1)系统流程图描述系统物理模型的工具,数据流程图描述系统逻辑模型的工具。2)系统流程图从系统功能的角度抽象的描述系统的各个部分及其相互之间信息流动的情况。3)数据流程图从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的工作状况。三、数据流图:!!!!!!!!!!!!!!!!!!1、组成符号:4中基本图形符号正方形、圆角矩形、开口矩形2、数据流图的基本要点是描绘“做什么”,而不是考虑“怎么做”。3、一套分层的的数据流图由顶层、底层、和中间层组成。4、画分层数据流图基本原则与注意事项:a.自外向内,自顶向下,逐层细化,完善求精。b.保持父图与子图的平衡。也就是说,父图中某加工的输入数据流中的数据必须与它的子图的输入数据流在数量和名字上相同。c.保持数据守恒。也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。d.加工细节隐藏。根据抽象原则,在画父图时,只需画出加工和加工之间的关系,而不必画出各个加工内部的细节。e.简化加工间关系。在数据流图中,加工间的数据流越少,各加工就越相对独立,所以应尽量减少加工间输入输出数据流的数目。f.均匀分解。应该使一个数据流中的各个加工分解层次大致相同。桃园文印室6计算机科学学院软件工程(二)班软件工程导论复习资料2星光二班g.适当地为数据流、加工、文件、源/宿命名,名字应反映该成分的实际意义,避免空洞的名字。h.忽略枝节。应集中精力于主要的数据流,而暂不考虑一些例外情况、出错处理等枝节性问题。i.表现的是数据流而不是控制流。j.每个加工必须既有输入数据流,又有输出数据流.在整套数据流图中,每个文件必须既有读文件的数据流又有写文件的数据流,但在某一张子图中可能只有读没有写或者只有写没有读。小结:一个软件系统,其数据流图往往有多层。如果父图有N个加工(Process),则父图允许有0~N张子图,但是每张子图只能对应一张父图。在一张DFD图中,任意两个加工之间可以有0条或多条名字互不相同的数据流;在画数据流图时,应该注意父图和子图的平衡,即父图中某加工的输入输出数据流必须与其输入输出流在数量和名字上相同。DFD信息流大致可分为两类:交换流和事务流。9、数据字典1).数据字典是在数据流程图的基础上,对数据流程图中的各个元素进行详细的定义与描述,起到对数据流程图进行补充说明的作用。2).数据字典的内容包括:数据流、数据流分量(即数据元素)、数据存贮、处理逻辑和外部实体。3).数据字典的作用是什么?对用户来讲,数据字典为他们提供了数据的明确定义;对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑模型。数据字典的实现:P4910、成本效益分析:成本/效益分析的目的是要从经济角度分析开发一个特定的新系统是否可行,从而帮助使用部门负责人正确地做出是否投资与这项开发工程的决定。几种度量效益的方法:货币的时间价值、投资回收期、纯收入第三章需求分析一、重点掌握的内容那:需求分析的方法和面向数据流的分析方法二、一般掌握的内容:桃园文印室7计算机科学学院软件工程(二)班软件工程导论复习资料2星光二班需求分析的任务和原则三知识点:1、为什么要做需求分析可行性分析研究阶段已经粗略的描述了用户的需求,甚至还提出了一些可行的方案,但是,许多细节被忽略了,在最终目标系统中是不能忽略、遗漏任何一个微小细节的,所以,可行性研究不能代替需求分析。2、需求分析的方法:需求分析方法由对软件的数据域和功能域的系统分析过程及其表示方法组成,它定义了表示系统逻辑视图和物理视图的方式,大多数的需求分析方法是由数据驱动的,也就是说,这些方法提供了一种表示数据域的机制,分析员根据这种表示,确定软件功能及其特性,最终建立一个待开发软件的抽象模型,即目标系统的逻辑模型。3、需求分析的任务:它的基本任务是准确地回答“系统必须做什么?”这个问题。需求分析所要做的工作是深入描述软件的共能和性能,确定软件设计的