软件工程复习资料武汉大学.doc





《软件工程复习资料武汉大学.doc》由会员分享,可在线阅读,更多相关《软件工程复习资料武汉大学.doc(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程期末复习第一章 软件工程概述一、 一、重点掌握的内容: 软件与软件工程的基本概念二、 二、 一般掌握内容: 软件生存周期及软件开发的各种模型。三、 三、主要知识点:软件:软件定义由以下三部分组成:(1) (1) 在运行中能提供所希望的功能与性能的指令集(即程序);(2) (2) 使程序能够正确运行的数据结构;(3) (3) 描述程序研制过程、方法所用的文挡。软件是一种产品,同时又是开发与运行产品的载体。作为一种产品,它表达了由计算机硬件表达的计算潜能。作为开发运行产品的载体,软件是计算机工作的基础、信息通信的基础,也是创建与控制其他程序的基础。软件的特点: 软件是一种逻辑实体,而不是具
2、体的物理实体,因而它具有抽象性。 软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。在软件的运行与使用期间,没有硬件那样的机械磨损、老化问题。软件的开发与运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。软件的开发至今尚未完全摆脱手工的开发方式。软件的开发费用越来越高,成本相当昂贵。软件的分类:软件依据不同的标准,可划分为不同的分类。软件工程:是指导计算机软件开发与维护的工程学科。采用工程的概念、原理、技术与方法来开发与维护软件,把经过时间考验而证明正确的管理技术与当前能够得到的最好的技术方法结合起来。软件工程准则可以概括为六条基本原理:(
3、1)用分阶段的生存周期计划严格管理;(2)坚持进行阶段评审;(3)实行严格的产品控制;(4)采用现代程序设计技术;(5)应能清楚地审查结果;(6)合理安排软件开发小组的人员。软件危机:指的是软件开发与维护过程中遇到的一系列严重问题。软件工程的基本内容:软件工程学的内容可包括理论、结构、方法、工具、环境、管理、规范等。软件生存期也可以分为三个大的阶段:计划阶段。开发阶段与维护阶段。软件开发模型:软件开发模型是跨越整个软件生存周期的系统开发、运作、维护所实施的全部工作与任务的结构框架。瀑布模型即生存周期模型,由B.M.Boehm提出,是软件工程的基础模型。其核心思想是按工序将问题化简,将功能的实现
4、与设计分开,便于分工协作。采用结构化的分析与设计方法,将逻辑实现与物理实现分开。此外,还有螺旋模型、第四代技术模型、原型模型、构件组装模型、混合模型等软件开发模型。第二章 可行性研究系统流程图:系统流程图是描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序,文件,数据库,表格,人工过程等等)。系统流程图表达的是部件的信息流程,而不表示对信息进行加工处理的控制过程。系统流程图的功能:1制作系统流程图的过程是系统分析员全面了解系统业务处理概况的过程,它是系统分析员作进一步分析的依据。2系统流程图是系统分析员、管理人员、业务操作人员相互交流的工具。3系统分析员可
5、直接利用系统流程图画出可以实现计算机处理的部分。4可利用系统流程图来分析业务流程的合理性。可行性研究的任务:是用最小的代价在尽可能短的时间内确定问题是否能够解决。一般说来,应从经济可行性、技术可行性、运行可行性、法律可行性与开发方案等方面研究可行性。可行性研究的步骤:可行性研究的步骤分为九个步骤。成本效益分析:成本效益分析的目的是要从经济角度分析开发一个特定的新系统是否可行,从而帮助使用部门负责人正确地做出是否投资于这项开发工程的决定。几种度量效益的方法:1.货币的时间价值;2投资回收期;3纯收入。第三章 需求分析需求分析的方法:需求分析方法由对软件的数据域与功能域的系统分析过程及其表示方法组
6、成,它定义了表示系统逻辑视图与物理视图的方式,大多数的需求分析方法是由数据驱动的,也就是说,这些方法提供了一种表示数据域的机制,分析员根据这种表示,确定软件功能及其他特性,最终建立一个待开发软件的抽象模型,即目标系统的逻辑模型。面向数据流的需求分析方法:结构化分析方法是面向数据流进行需求分析的方法。结构化分析方法使用数据流图DFD与数据字典DD来描述,面向数据流问题的需求分析适合于数据处理类型软件的需求描述。其核心思想是分解化简问题,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。具体来说,结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功
7、能要求的所有可实现的软件为止。重点掌握结合实例画数据流图与定义数据字典。需求分析的任务:它的基本任务是准确地回答“系统必须做什么?”这个问题。需求分析所要做的工作是深入描述软件的功能与性能,确定软件设计的限制与软件同其它系统元素的接口细节,定义软件的其它有效性需求。需求分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。一般说来,需求分析阶段的任务包括下述几方面:确定对系统的综合需求对系统的综合需求主要有:系统功能需求、系统性能需求、运行需求、将来可能提出的需求。分析系统的数据需求导出系统的逻辑模型就是在理解当前系统“怎样做”
8、的基础上,抽取其“做什么”的本质,明确目标系统要“做什么”,可以导出系统的详细的逻辑模型。具体做法是:首先确定目标系统与当前系统的逻辑差别;然后将变化部分看作是新的处理步骤,对功能图(一般为数据流图)及对象图进行调整;最后由外及里对变化的部分进行分析,推断其结构,获得目标系统的逻辑模型。通常用数据流图、数据字典与主要的处理算法描述这个逻辑模型。修正系统开发计划在经过需求分析阶段的工作,分析员对目标系统有了更深入更具体的认识,因此可以对系统的成本与进度做出更准确的估计,在此基础上应该对开发计划进行修正。开发原型系统使用原型系统的主要目的是,使用户通过实践获得关于未来的系统将怎样为他们工作的更直接
9、更具体的概念,从而可以更准确地提出与确定他们的要求。需求分析的步骤:1.调查研究;2分析与综合;3书写文档;4需求分析评审需求分析的原则:其基本原则可概括为: (1)必须能够表达与理解问题的数据域与功能域;(2)按自顶向下、逐层分解问题;(3)要给出系统的逻辑视图与物理视图。第四章 概要设计概要设计任务:系统分析员审查软件计划、软件需求分析提供的文档,提出最佳推荐方案,用系统流程图,组成系统物理元素清单,成本效益分析,系统的进度计划,供专家审定,审定后进入设计。确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方
10、法与策略。 编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具。选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等。概要设计过程:概要设计要先进行系统设计,复审系统计划与需求分析,确定系统具体的实施方案;然后进行结构设计,确定软件结构。 软件设计的概念与原则:将软件划分成若干独立成分的依据。如何表示不同的成分内的功能细节与数据结构。如何统一衡量软件设计的技术质量。 其中有几个概念:1.模块化:就是把程序划分成若干个模块,每个模块具有一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,实现问题的要求。2. 抽
11、象:就是抽出事物的本质特性而暂时不考虑它们的细节。3. 信息隐蔽:模块中所包括的信息不允许其它不需要这些信息的模块调用。4. 信息局部化:是指把一些关系密切的软件元素物理地放得彼此靠近。5. 模块独立性:是软件系统中每个模块只涉及软件要求的具体子功能,而与软件系统中其他的模块接口是简单的。模块独立的概念是模块化、抽象、信息隐蔽与局部化概念的直接结果。6. 耦合:是对一个软件结构内各个模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,调用模块的方式,以及通过接口的信息。7. 内聚:标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽与局部化概念的自然扩展。概要设计的方法:面向数据流的
12、设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。面向数据流的设计要解决的任务,就是上述需求分析的基础上,将DFD图映射为软件系统的结构。换句话说,这类设计方法允许把用DFD图表示的系统逻辑模型方便地转换成对于软件结构的初始设计描述。理解基本概念:信息流(包括变换流与事务流)、抽象与逐步求精;模块化与信息隐藏;软件总体结构、数据结构与软件过程。面向数据结构的分析设计方法:Jackson系统开发方法(JSD): Jackson系统开发方法(JSD,Jackson System Development)是一种典型的面向数据结构的分析设计方法,它是以信息驱动的,是将信息转换成软件的程序结
13、构。 Warnier方法 :Warnier程序设计方法是由法国人J.D.Warnier提出的另一种面向数据结构的设计方法,又称为逻辑构造程序的方法,简称LCP(Logical Construction of Programs)方法。Warnier方法的原理与Jackson方法类似,也是从数据结构出发设计程序,但是这种方法的逻辑更严格。第五章 详细设计详细设计的任务:详细设计就是要在概要设计的结果的基础上,考虑“怎样实现”这个软件系统,直到对系统中的每个模块给出足够详细的过程性描述。主要任务如下:为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;确定每一模块使
14、用的数据结构;确定模块接口的细节,包括对系统外部的接口与用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。详细设计的方法:程序流程图、N-S图、PAD图、HIPO图程序流程图:程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。它独立于任何一种程序设计语言,比较直观与清晰地描述过程的控制流程,易于学习掌握。在流程图中只能使用下述的五种基本控制结构。顺序型;选择型; while型循环;
15、 until型循环; 多情况型选择。N-S图:Nassi与Shneiderman提出了一种符合结构化程序设计原则的图形描述工具,称为盒图,又称为N-S图。在N-S图中,为了表示五种基本控制结构,规定了五种图形构件。顺序型; 选择型; WHILE重复型; UNTIL重复型; 多分支选择型。PAD图:它是用结构化程序设计思想表现程序逻辑结构的图形工具。PAD也设置了五种基本控制结构的图示,并允许递归使用。HIPO图:HIPO图是由一组IPO图加一张HC图组成。它是美国IBM公司在软件设计中使用的主要表达工具。HC图是层次图(Hierarchy chart)的英文缩写,用于表示软件的分层结构。HC图
16、中的每一个模块,均可用一张IPO图来描述。IPO 图由输入、处理与输出三个框组成,需要时还可以增加一个数据文件框,这种图形的优点,是能够直观地显示输入处理输出三者之间的联系。详细设计的原则:原则是过程描述是否易于理解、复审与维护,进而过程描述能够自然地转换成代码,并保证详细设计与代码完全一致。详细设计规格与评审:详细设计说明书的框架及评审。第六章 面向对象的分析与设计方法面向对象的基本概念: 面向对象不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。而面向对象方法是一种运用对象、类、继承、封装
17、、聚合、消息传送、多态性等概念来构造系统的软件开发方法。面向对象方法的基本思想是,从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。面向对象的几个重要概念:对象、消息、方法性、继承性、封装性等。面向对象方法的基本特征: 从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位。事物的静态特征(即可以用一些数据来表达的特征)用对象的属性表示,事物的动态特征(即事物的行为)用对象的服务(或操作)表示。对象的属性与服务结合为一体,成为一个独立的实体,对外屏蔽其内部细节(称作封装)。对事物进行分类。把具有
18、相同属性与相同服务的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。通过在不同程度上运用抽象的原则(较多或较少地忽略事物之间的差异),可以得到较一般的类与较特殊的类。特殊类继承一般类的属性与服务,面向对象方法支持对这种继承关系的描述与实现,从而简化系统的构造过程及其文档。复杂的对象可以用简单的对象作为其构成部分,称作聚合。对象之间通过消息进行通信,以实现对象之间的动态联系。通过关联表达对象之间的静态关系。面向对象分析方法:目前出现有OOA与OOD方法。面向对象设计方法:OOA与OOD的职责划分是:OOA针对问题域运用OO方法,建立一个反映问题域的OOA模型,不考虑与系统的具体
19、实现有关的因素(例如采用什么编程语言、图形用户界面、数据库等等),从而使OOA模型独立于具体的实现。OOD则是针对系统的一个具体的实现运用OO方法。其中包括两方面的工作,一是把OOA模型直接搬到OOD(不经过转换,仅作某些必要的修改与调整),作为OOD的一个部分;二是针对具体实现中的人机界面、数据存储、任务管理等因素补充一些与实现有关的部分。这些部分与OOA采用相同的表示法与模型结构。第七章 编码程序设计语言的特点: 程序设计语言是人与计算机交流的媒介。软件工程师应该了解程序设计语言各方面的特点,以及这些特点对软件质量的影响,以便在需要为一个特定的开发项目选择语言时,能作出合理的技术抉择。其特
20、点表现为九个方面:名字说明;类型说明;初始化;程序对象的局部性;程序模块;循环控制结构;分支控制结构; 异常处理;独立编译。编程风格:编码风格又称程序设计风格或编程风格,实际上指编程的原则。表现为四个方面:源程序文档化,数据说明的方法,语句结构与输入输出方法。源程序文档化:源程序文档化又可从四个方面来阐述,符号名的命名;程序的注释;标准的书写格式;数据说明:数据说明的次序应当规范化。使数据属性容易查找,也有利于测试,排错与维护。语句结构:语句构造力求简单、直接,不能为了片面追求效率而使语句复杂化。可从以下几方面注意:1使用标准的控制结构;2尽可能使用库函数;3程序编写首先应当考虑清晰性;4注意
21、使用GOTO语句;输入输出方法:输入输出的方式与格式应当尽量作到对用户友善(User Friendly),尽可能方便用户的使用。程序效率:程序效率是指程序的执行速度及程序占用的存储空间。影响程序效率的因素是多方面的。编程安全:提高软件质量与可靠性的技术大致可分为两类,一类是避开错误技术,即在开发的过程中不让差错潜入软件的技术;另一类是容错技术,即对某些无法避开的差错,使其影响减至最小的技术;避开错误技术是进行质量管理,实现产品应有质量所必不可少的技术,也就是软件工程中所讨论的先进的软件分析与开发技术与管理技术。但是,无论使用多么高明的避开错误技术,也无法做到完美无缺与绝无错误,这就需要采用容错
22、技术。实现容错的主要手段是冗余与防错程序设计。面向对象程序设计步骤:面向对象的设计方法一般适用于软件设计与实现阶段。其基本步骤是:建立软件系统的动态模型;建立软件系统的静态模型;实现。 第八章 软件质量与质量保证软件质量:软件质量是各种特性的复杂组合。软件质量反映了以下三方面的问题:(1)软件需求是度量软件质量的基础。不符合需求的软件就不具备质量。(2)在各种标准中定义了一些开发准则,用来指导软件人员用工程化的方法来开发软件。如果不遵守这些开发准则,软件质量就得不到保证。(3)往往会有一些隐含的需求没有明确地提出来。例如,软件应具备良好的可维护性。如果软件只满足那些精确定义了的需求而没有满足这
23、些隐含的需求,软件质量也不能保证。软件质量保证策略:为了在软件开发过程中保证软件的质量,主要采取下述措施:审查;复查与管理复审;测试。结构化的软件测试:软件测试在程序员对每一个模块的编码之后先做程序测试,再做单元测试,然后再进行集成(综合或组装)测试,系统测试,验收(确认)测试,平行测试,人工测试,其中单元测试的一部分己在编码阶段就开始了。测试:就是用已知的输入在已知环境中动态地执行系统(或系统的“部件”)。如果测试结果与预期结果不一致,则很可能是发现了系统中的错误。软件测试:软件测试是对软件计划、软件设计、软件编码进行查错与纠错的活动(包括代码执行活动与人工活动)。程序测试:是对编码阶段的语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 复习资料 武汉大学

限制150内