武汉理工软件工程导论复习.docx

上传人:b****1 文档编号:1970145 上传时间:2023-05-02 格式:DOCX 页数:22 大小:784.86KB
下载 相关 举报
武汉理工软件工程导论复习.docx_第1页
第1页 / 共22页
武汉理工软件工程导论复习.docx_第2页
第2页 / 共22页
武汉理工软件工程导论复习.docx_第3页
第3页 / 共22页
武汉理工软件工程导论复习.docx_第4页
第4页 / 共22页
武汉理工软件工程导论复习.docx_第5页
第5页 / 共22页
武汉理工软件工程导论复习.docx_第6页
第6页 / 共22页
武汉理工软件工程导论复习.docx_第7页
第7页 / 共22页
武汉理工软件工程导论复习.docx_第8页
第8页 / 共22页
武汉理工软件工程导论复习.docx_第9页
第9页 / 共22页
武汉理工软件工程导论复习.docx_第10页
第10页 / 共22页
武汉理工软件工程导论复习.docx_第11页
第11页 / 共22页
武汉理工软件工程导论复习.docx_第12页
第12页 / 共22页
武汉理工软件工程导论复习.docx_第13页
第13页 / 共22页
武汉理工软件工程导论复习.docx_第14页
第14页 / 共22页
武汉理工软件工程导论复习.docx_第15页
第15页 / 共22页
武汉理工软件工程导论复习.docx_第16页
第16页 / 共22页
武汉理工软件工程导论复习.docx_第17页
第17页 / 共22页
武汉理工软件工程导论复习.docx_第18页
第18页 / 共22页
武汉理工软件工程导论复习.docx_第19页
第19页 / 共22页
武汉理工软件工程导论复习.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

武汉理工软件工程导论复习.docx

《武汉理工软件工程导论复习.docx》由会员分享,可在线阅读,更多相关《武汉理工软件工程导论复习.docx(22页珍藏版)》请在冰点文库上搜索。

武汉理工软件工程导论复习.docx

武汉理工软件工程导论复习

一.软件工程的基本概念(PPT1-2章)

1.软件危机(产生的原因)

①一方面是与软件本身的特点有关

②另一方面是由软件开发和维护的方法不正确有关

2.软件的特点有哪些?

①软件是一种逻辑实体,具有抽象性

②软件没有明显的制造过程

③软件在使用过程中,没有磨损、老化的问题

④软件对硬件和环境有着不同程度的依赖性

⑤软件的开发至今尚未完全摆脱手工作坊式的开发方式,生产效率低

⑥软件是复杂的,而且以后会更加复杂

⑦软件的成本相当昂贵

⑧大多数软件是自定的,而不是通过已有的构件组装而来的

3.软件工程?

软件工程的目标?

(……)问答题

软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。

它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。

软件工程旨在开发满足用户需要、及时交付、不超过预算和无故障的软件,其主要目标如下:

a)实现预期的软件功能,达到较好的软件性能,满足用户的需求。

b)增强软件过程的可见性和可控性,保证软件的质量。

c)提高所开发软件的可维护性,降低维护费用。

d)提高软件开发生产率,及时交付使用。

e)合理预算开发成本,付出较低的开发费用。

4.软件生存周期模型?

主要的模型类型?

(……)问答题

软件生存周期模型是软件开发全部过程、活动和任务的结构框架。

它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。

主要的模型类型:

瀑布模型、原型法模型、演化模型、螺旋模型、喷泉模型、第四代技术过程模型

5.软件工程强调(文档化、规范化)?

(……)问答题

软件工程强调规范化和文档化。

规范化的目的是使众多的开发者遵守相同的规范,使软件生产摆脱个人生产方式,进入标准化、工程化的生产方式。

文档化是将软件的设计思想、设计过程和实现过程完整地记录下来,以便于后人的使用和维护,在开发过程中各类相关人员借助于文档进行交流和沟通。

另外,在开发过程中产生的各类文档使得软件的生产过程由不可见变为可见,便于管理者对软件生产进度和开发过程进行管理。

在用户最终验收时可以通过对提交的文档进行技术审查和管理审查,保证软件的质量。

二.可行性研究及需求分析

1.可行性研究的目的

可行性研究的目的:

用最小的代价在尽可能短的时间内确定问题是否能够解决。

技术可行性、经济可行性、操作可行性、法律可行性

技术可行性:

(1)风险分析:

在给定的约束条件下,判断能否设计并实现系统所需的功能和性能

(2)资源分析:

论证是否具备系统开发所需的各类管理人员和专业技术人员、软件、硬件资源和工作环境等

(3)技术分析:

当前的科学技术是否支持系统开发的全过程

经济可行性:

系统的经济效益是否能超过它的开发成本(系统效益包括经济效益和社会效益)操作可行性:

确定在当前政治意识形态、法律法规、社会道德、民族意识以及系统运行的组织机构和人员等环境下,系统是否可行。

法律可行性:

是否符合法律的规定

2.需求分析的任务、方法、工具

需求分析其任务是:

对目标系统提出完整、准确、清晰、具体的要求

需求分析的方法:

(1)结构化分析方法(SA):

数据流建模,行为模型。

基本思想:

自顶向下、逐步求精。

常用的工具有:

数据流图(DataFlowDiagram,DFD)、数据字典(DataDictionary,DD)等。

(2)面向对象分析方法(OOA):

结构模型,对系统的建模

结构化分析模型(数据字典三个子模型):

数据模型、功能模型、行为模型。

数据模型包含3种信息:

数据对象、属性、关系。

功能模型可以用数据流图描述;数据流图包含4种图形元素:

数据流、加工处理、数据文件、源点和终点。

需求分析的工具:

①SADT②系统分析辅助工具PSL/PSA

3.数据流图(作用)

1、便于用户表达功能需求和数据需求及其联系;

2、便于两类人员共同理解现行系统和规划系统的框架;

3、清晰表达数据流的情况;

4、有利于系统建模。

4.判断表、判断树

判定表的画法步骤:

(1)列出全部的条件;

(2)计算可能的组合数;(3)将所有的条件组合填入表中;(4)合并某些组合;(5)检查

三.概要设计

1.划分模块的标准(高内聚低耦合)

①模块独立性最大原则②恰当地掌握好模块的大小原则③尽可能把与硬件相关的部分集中在一起放在一个或几个模块内的原则④尽可能消除重复的工作,建立公用模块,以减少冗余的原则⑤保持合理的模块扇入数和扇出数原则

2.模块独立性?

衡量的标准?

(……)

模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。

模块的独立程度可以由两个定性标准度量:

耦合,模块之间的相对独立性的度量;内聚,模块功能强度的度量。

3.启发性规则

深度、宽度、扇出和扇入

深度:

软件结构中控制的层数;

宽度:

软件结构内同一个层次上的模块总数的最大值;

扇出:

一个模块直接控制(调用)其它模块的数目;

扇入:

一个模块被其它模块调用的数目。

深度往往能粗略地标志一个系统的大小和复杂程度。

深度和程序长度之间应该有粗略的对应关系,当然这个对应关系是在一定范围内变化的。

如果层数过多则应该考虑是否有许多管理模块过分简单了,能否适当合并。

一般说来,宽度越大系统越复杂。

对宽度影响最大的因素是模块的扇出。

扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块;扇出过小(例如总是1)也不好。

经验表明,一个设计得好的典型系统的平均扇出通常是3或4(扇出的上限通常是5~9)。

扇出太大一般是因为缺乏中间层次,应该适当增加中间层次的控制模块。

扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。

当然分解模块或合并模块必须符合问题结构,不能违背模块独立原理。

扇入越大则共享该模块的上级模块数目越多,这是有好处的,但是,不能违背模块独立原理单纯追求高扇入。

观察大量软件系统后发现,设计得很好的软件结构通常顶层扇出比较高,中层扇出较少,底层扇入到公共的实用模块中去(底层模块有高扇入)。

4.面向数据流的设计方法

变换设计

事物设计

四.详细设计

1.SA方法(基本思想)

SA方法(结构化分析方法)的基本思想是用抽象模型的概念,运用“抽象-分解”的基本手段,按照软件内部数据传递、变换的关系,自顶向下(TOP-DOWN),逐层分解,直到找到满足功能需要的所有细节为止。

(XX)

结构化的设计方法是基于模块化、自顶向下逐层细化、结构化程序设计等程序设计技术上发展起来的(书本)

2.面向对象分析方法建造的模型(对象模型、行为模型、功能模型)

面向对象分析模型:

对象模型、功能模型、行为模型

3.结构化程序设计的控制结构(顺序、分支、循环)

4.程序流程图、N-S盒图、PAD图、PDL语言

程序流程图的主要优点是对控制流程的描绘很直观,便于初学者掌握。

由于程序流程图历史悠久,为最广泛的人所熟悉,尽管它有种种缺点,许多人建议停止使用它,但至今仍在广泛使用着。

不过总的趋势是越来越多的人不再使用程序流程图了。

程序流程图的主要缺点如下:

(1)程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。

(2)程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制

(3)程序流程图不易表示数据结构。

N-S盒图:

出于要有一种不允许违背结构程序设计精神的图形工具的考虑,Nassi和Shneiderman提出了盒图,又称为N-S图。

它有下述特点:

(1)功能域(即,一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来。

(2)不可能任意转移控制。

(3)很容易确定局部和全程数据的作用域。

(4)很容易表现嵌套关系,也可以表示模块的层次结构。

PAD图由日本日立公司1973年发明以后,已得到一定程度的推广。

它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。

它即克服了传统的流程图不能清晰表现程序结构的缺点,又不像N-S图那样受到把全部程序约束在一个方框内的限制,这就是其优势所在

PSD图的优点:

(1)使用PAD符号所设计出来的程序必然是结构化程序。

(2)PAD图所描绘的程序结构十分清晰。

图中最左面的竖线是程序的主线,即第一层结构。

随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。

PAD图中竖线的总条数就是程序的层次数。

(3)用PAD图表现程序逻辑,易读、易懂、易记。

PAD图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。

(4)容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。

(5)即可用于表示程序逻辑,也可用于描绘数据结构。

(6)PAD图的符号支持自顶向下、逐步求精方法的使用。

开始时设计者可以定义一个抽象的程序,随着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计。

PDL语言:

PDL是一种用于描述功能模块的算法设计和加工细节的语言。

称为过程设计语言。

它是一种伪码。

伪码的语法规则分为“外语法”和“内语法”。

PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法可使用自然语言的词汇。

PDL应该具有下述特点:

(1)关键字的固定语法,它提供了结构化控制结构、数据说明和模块化的特点。

为了使结构清晰和可读性好,通常在所有可能嵌套使用的控制结构的头和尾都有关键字例如,if…(或endif)等等。

(2)自然语言的自由语法,它描述处理特点。

(3)数据说明的手段。

应该既包括简单的数据结构(例如纯量和数组),又包括复杂的数据结构(例如,链表或层次的数据结构)。

(4)模块定义和调用的技术,应该提供各种接口描述模式

PDL作为一种设计工具有如下一些优点:

(1)可以作为注释直接插在源程序中间。

这样做能促使维护人员在修改程序代码的同时也相应地修改PDL注释,有助于保持文档和程序的一致性,提高了文档的质量。

(2)可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。

(3)已经有自动处理程序存在,而且可以自动由PDL生成程序代码(如PDL/Pascal,PDL/C)等。

PDL的缺点是不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。

5.计算McCabe环路复杂性度量(3种方法)

环形复杂度定量度量程序的逻辑复杂度。

有了描绘程序控制流的流图G之后,可以用下述3种方法中的任何一种来计算环形复杂度。

(1)流图中的区域数等于环形复杂度

区域:

由边和结点围成的面积称为区域,

当计算区域数时应该包括图外部未被围起来的那个区域。

(2)流图G的环形复杂度V(G)=E–N+2,

其中,E是流图中边的条数,N是结点数。

(3)流图G的环形复杂度V(G)=P+1

其中,P是流图中判定结点的数目。

五.编码与测试

1.序言性注释的作用

对于理解程序本身具有引导作用

2.软件测试的目的

测试的目标是想以最少的时间和人力找到软件中潜在各种错误和缺陷。

3.集成测试策略(驱动模块、桩模块)

集成测试是测试和组装软件的系统化技术,其主要目标是发现与接口有关的问题。

如:

数据穿过接口时可能丢失;一个模块对另一个模块可能由于疏忽而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有问题等等。

集成测试有两种方法。

1、非渐增式测试方法,即:

先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序进行测试。

2、渐增式测试,即:

先把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。

这种每次增加一个模块的方法实际上同时完成单元测试和集成测试,目前在进行集成测试时普遍采用渐增式测试方法。

4.黑盒测试?

黑盒测试方法(等价类划分、边界值分析、错误推测、因果图法)

黑盒测试是功能测试、数据驱动测试或基于规格说明的测试。

黑盒测试检测的

基本内容有:

(1)功能错误或遗漏;

(2)输入和输出接口的正确性;

(3)数据结构或外部信息访问错误;

(4)性能要求实现情况;

(5)初始化或终止性错误。

黑盒法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。

有两种基本方法:

通过测试、失败测试。

•黑盒测试着重测试软件功能。

黑盒测试并不能取代白盒测试,它是与白盒测试互补的测试方法,它很可能发现白盒测试不易发现的其他类型的错误。

•黑盒测试力图发现下述类型的错误:

①功能不正确或遗漏了功能;②界面错误;③数据结构错误或外部数据库访问错误;④性能错误;⑤初始化和终止错误。

•黑盒测试技术:

等价划分法、边界值分析法、错误推测法、因果图法等。

1等价类划分法(等价分配)

•把所有可能的输入数据(有效的和无效的)划分成若干个等价的子集(称为等价类别或等价区间),使得每个子集中的一个典型值在测试中的作用与这一子集中所有其它值的作用相同.

•可从每个子集中选取一组数据来测试程序。

•等价类别或等价区间是指测试相同目标或者暴露相同软件缺陷的一组测试用例。

如何划分等价类?

有效等价类(合理等价类),无效等价类(不合理等价类)

划分等价类的标准:

覆盖,不相交,代表性

划分等价类的规则:

(1)如果输入条件规定了取值范围,可定义一个有效等价类和两个无效等价类。

(2)如果输入条件代表集合的某个元素,则可定义一个有效等价类和一个无效等价类。

(3)如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类(所有不允许的输入值的集合)。

用等价类划分法设计测试用例步骤:

(1)形成等价类表,每一等价类规定一个唯一的编号;

(2)设计一测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤,直到所有有效等价类均被测试用例所覆盖;

(3)设计一新测试用例,使其只覆盖一个无效等价类,重复这一步骤直到所有无效等价类均被覆盖;

例:

某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。

系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。

如何用等价类划分法设计测试用例,来测试程序的日期检查功能?

测试边界线

测试临近边界的合法数据,以及刚超过边界的非法数据.

越界测试通常简单地加1或很小的数

(对于最大值)和减1或很小的数(对于最小值).

错误推测、因果图法看PPT

5.白盒测试(语句覆盖、判断覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖)

白盒测试,又称结构测试、玻璃盒测试、基于覆盖的测试

白盒测试的程序模块检测类别如下:

(1)程序模块独立执行路径检测;

(2)逻辑判定TRUEORFALSE各种情况检测;

(3)循环检测(循环边界和循环界内执行情况);

(4)程序内部数据结构的正确性。

六.软件维护

影响维护工作量的因素?

(……)

答1)系统大小。

系统越大,功能越复杂,理解掌握起来就越困难,需要的维护工作量越大。

2)程序设计语言。

使用功能强的程序设计语言可以控制程序的规模。

语言的功能越强,生成程序所需的指令数就越少;语言的功能越弱,实现同样功能所需的语句就越多,程序就越大,维护起来就越困难。

3)系统年龄。

老系统比新系统需要更多的维护工作量。

许多老系统在当初并未按照软件工程的要求进行开发,没有文档,或文档太少,或者在长期的维护中许多地方与程序不一致,维护起来困难较大。

4)数据库技术的应用。

使用数据库工具,可有效地管理和存储用户程序中的数据,可方便地修改、扩充报表。

数据库技术的使用可以减少维护工作量。

5)先进的软件开发技术。

在软件开发时,如果使用能使软件结构比较稳定的分析与设计技术(如面向对象分析、设计技术),可以减少一定的工作量。

6)其它。

如,应用的类型、数学模型、任务的难度、IF嵌套深度等等都会对维护工作量产生一定的影响。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2