软件工程导论复习

第1章  软件工程学概述 

1.1 软件危机

软件危机:软件不等于程序,软件包括程序、数据、相关文档,软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件危机主要包含两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

产生软件危机的原因与软件本身特点有关、软件开发与维护的方法不正确有关,所以提出了软件工程学的方法,虽然不能解决软件本身的特点,但是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,软件工程学的一个重要目标就是:提高软件的可维护性,减少维护的代价。

消除软件危机:需要一系列综合措施,既要有必要的组织管理措施,也要有先进成熟的技术措施。

软件的生命周期:把一个软件从定义、开发、使用、维护,直到最终被废弃的这个漫长时期称为软件开发的生命周期。

1.2 软件工程

软件工程方法学:传统方法学 、面向对象方法学。  

 

1.3 软件生命周期

 软件定义(总目标;可行性;采用的策略及系统完成的功能;需要的资源和成本,并且制定工程进度表):

        问题定义(Problem Definition)、

        可行性研究(Feasibility Study)、

        需求分析(Requirements Analysis);

软件开发(具体设计和实现):

        总体设计(Preliminary/High-Level Design)、

        详细设计(Detailed Design)、

        编码和单元测试(Implementation and Unit Testing)、

        综合测试((Integration and System Testing);

(前两个又称系统设计,后两个称系统实现)

运行维护(Operation and Maintenance):

软件持久地满足用户的需要。

可行性研究、需求分析、总体设计、详细设计、实现、维护

数据流图、软件结构图、PAD图分别属于软件开发的(详细设计)阶段。

以下哪项不属于软件维护的类型(C)评估性维护

1.4 软件过程

1.4.1软件过程模型(再把每个模型是啥自己在理解一下): 

1.4.2瀑布模型(Waterfall Model功能和需求明确)按部就班一步一步去

 

1.4.3快速原型模型(Rapid Prototyping Model需求模糊或不确定)

快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。

若某系统开发初期,需求并未完全确定,有较大的变更的可能,则采用(快速原型模型)模型开发较为合适。

1.4.4增量模型(Incremental Model时效性、商业软件)

1.4.5螺旋模型 (Spiral Model不适合客户开发,适用于内部开发和大型项目的开发)

使用原型及其他方法来尽量降低风险,把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。

1.4.6喷泉模型(Fountain Model面向对象)

用面向对象方法学开发软件时,工作重点应该放在生命周期中的分析阶段。

1.5习题

1基本的软件过程包括需求分析、概要设计、详细设计、编码、测试、运行和维护等几个阶段。其中,_____A___阶段对每个模块要完成的工作进行具体描述,为源程序编写打下基础。

A.详细设计

B.概要设计

C.需求分析

D.编码

2软件设计是指要表达出怎样做出规定的软件,即将需求转换为可以实现的技术方案。软件设计最终结果是产生___D_____。

A.软件需求说明书

B.软件评测报告

C.“源程序”与“可执行程序模块”

D.软件设计说明书

3基本的软件过程包括需求分析、概要设计、详细设计、编码、测试、运行和维护等几个阶段。其中,____D____阶段把各项需求转换成软件的体系结构。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应。

A.需求分析

B.编码

C.详细设计

D.概要设计

4(多选)下列关于瀑布模型的说法正确的是(BC)

‎A.传统瀑布模型仅能依次经过需求、设计、编码、测试、集成和维护这一路径进行项目开发,不能从后一阶段返回到前面的阶段。(可以)

B.瀑布模型在每一阶段都会生成相应的文档。

C.瀑布模型要求需求在最初阶段就要完整和明确。

5原型化方法是用户和设计者之间执行的一种交互构成,适用于___A_____系统。

A.需求不确定性高的

B.实时

C.需求确定的

D.管理信息

6(多选)下列关于快速原型模型的说法正确的是(BC)B有一点不确定

‏A.快速原型模型要求需求在最初阶段就要完整和明确。

B.快速原型模型在每一次迭代过程中可以采用瀑布模型。

C.相比瀑布模型,快速原型模型需要获取方和用户更多的参与。

7下列软件开发模型中,以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型是(C)。

A.快速原型模型

B.瀑布模型

C.喷泉模型

D.增量模型

二 填空题

1软件开发时期包括(系统设计)和(系统实现)两个阶段。

三 判断题

1为了保证开发进度,软件只需要在最终完成后再进行确认即可。X

2当软件的一个版本被淘汰时,则该软件的生存周期就结束了。X

第2章 可行性研究

2.1 可行性研究的任务

可行性研究的目的不是解决问题,而是确定问题是否值得去解决。其成本只是预期的工程共成本的5-10%

从下述3个方面研究每种解法的可行性:

2.2 可行性研究过程

型的可行性研究过程有下述8个步骤:

1.复查系统规模和目标

2.研究目前正在使用的系统(系统流程图)

3.导出新系统的高层逻辑模型(数据流图、数据字典)

4.进一步定义问题

5.导出和评价供选择的解法(成本/效益分析)

6.导出和评价供选择的解法(推荐行动方针)

7.草拟开发计划

8. 书写文档提交审查

2.3 系统流程图(根据自然语言描述的场景画出系统流程图)

系统流程图是概括地描绘物理系统的传统工具,

作用:在可行性分析时,用概括的方式表达对现有的系统的认识;描述项目的大概业务处理流程。

eg.某装配厂有一座存放零件的仓库,仓库中现有的各种零件的数量以及每种零件的库存量临界值等数据记录在库存清单主文件中。当仓库中零件数量有变化时,应该及时修改库存清单主文件,如果哪种零件的库存量少于它的库存量临界值,则应该报告给采购部门以便订货,规定每天向采购部门送一次订货报告。

该装配厂使用一台小型计算机处理更新库存清单主文件和产生订货报告的任务。零件库存量的每一次变化称为一个事务,由放在仓库中的CRT终端输入到计算机中;系统中的库存清单程序对事务进行处理,更新存储在磁盘上的库存清单主文件,并且把必要的订货信息写在磁带上。最后,每天由报告生成程序读一次磁带,并且打印订货报告

2.4 数据流图(DFD)

数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。数据流图中没有任何具体的物理部件,只是描绘数据在软件中流动和被处理的逻辑过程;    是系统功能的逻辑表示,便于分析员和用户的通信;经常用数据流图建立软件系统的功能模型。数据存储:不仅包含硬盘、U盘,人脑当中,实际打印的纸张当中。

星号(*):表示数据流之间是“与”关系,同时存在

加号(+):表示“或”关系

⊙号:表示从中选一个,互斥的关系

说明 :

数据流图中应该描述所有可能的数据流向  

处理不一定是一个程序  

一个数据存储并不等同于一个文件  

数据存储和数据流都是数据,仅仅是所处状态不同,前者是处于静止状态的数据,后者处于运动中的数据  

数据流图的基本要点是“做什么”,而非“咋样做”  

数据源点和终点相同时,重复画,不用一个  

如果代表一个事物的同样符号在图中出现n次,则在符号的角上画(n-1)条短斜线作标记

 例子:

说明怎样画数据流图

假设一家工厂的采购部每天需要一张订货报表,报表按零件编号排序,表中列出所有需要再次订货的零件。对于每个需要再次订货的零件应该列出下述数据:零件编号,零件名称,订货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给订货系统。当某种零件的库存数量少于库存量临界值时就应该再次订货。

1.源点/终点:

因为采购部每天需要一张订货报表,所以终点是采购员,通过放在仓库中的CRT终端把事务报告给订货系统,所以源点是仓库管理员。

2.处理:

“采购部需要报表”,显然他们还没有这种报表,因此必须有一个用于产生报表的处理。

事务的后果是改变零件库存量然而任何改变数据的操作都是处理,因此对事务进行的加工是另一个处理。

3.数据流:

系统把订货报表送给采购部,因此订货报表是一个数据流;事务需要从仓库送到系统中,显然事务是另一个数据流。

4.数据存储:

产生报表和处理事务这两个处理在时间上明显不匹配--每当有一个事务发生时立即处理它,然而每天只产生一次订货报表。因此,用来产生订货报表的数据必须存放一段时间,也就是应该有一个数据存储。并不是所有数据存储和数据流都能直接从问题描述中提取出来。例如,“当某种零件的库存数量少于库存量临界值时就应该再次订货”,这个事实意味着必须在某个地方有零件库存量和库存量临界值这样的数据。因为这些数据元素的存在时间应该比单个事务的存在时间长,所以认为有一个数据存储保存库存清单数据是合理的。*号是是在问题描述中隐含的成分。

 

2.5 数据字典(配合数据流)

数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。

由对下列4类元素的定义组成:数据流、数据流分量、数据存储、处理。

 

2.6 成本/效益分析

货币的利息:货币是有时间价值的。

第3章  需求分析(系统必须做什么)

3.1需求分析的任务

可行性研究文档,是需求分析的出发点,需求分析的结果则是系统设计的基础,关系到工程的成败和软件产品的质量,需求分析结束以前,系统分析员应该写出软件需求规格说明书

3.1.1 确定对系统的综合要求 

3.1.2分析系统的数据要求

 3.1.3导出系统的逻辑模型

3.1.4  修正系统开发计划(甘特图) 

3.2与用户沟通获取需求的方法

3.2.1 访谈(正式/非正式)

3.2.2 面向数据流自顶向下求精

数据流图画出来以后,和用户一起逆向分析,分析出来后沿着数据流图正向去检查。

3.2.3简易的应用规格说明技术(用户推到主角)

3.2.4快速建立软件原型(快速/容易修改)

3.3分析建模与规格说明(数据模型、功能模型、行为模型

模型:就是为了理解事物而对事务做出的一种抽象,是对事务的一种无歧义的书面描述。为了开发复杂的系统,应从不同角度(模型)抽象出目标系统的特性(数据模型、功能模型、行为模型)。

数据模型:E-R图

功能模型:数据流图

行为模型:状态转换图

实体联系图,描绘数据对象及数据对象之间的关系,是用于建立数据模型的图形。

数据流图是建立功能模型的基础。

状态转换图描绘了系统的各种行为模式和在不同状态间转换的方式。

3.4实体联系图(数据模型)给自然语言要会画

数据模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系。

1.银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单业务员输入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并打印出存款单储户;如果是取款,而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并打印出利息清单给储户。请用数据流图描绘本系统的功能,并用实体关系图描绘系统中的数据对象。

2.办公室复印机的工作过程大致如下:未收到复印命令时处于闲置状态,一旦接收到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令。如果执行复印命令时发现缺纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告,等待维修人员来排除故障,故障排除后回到闲置状态。请用状态转换图描绘复印机的行为。

3..为方便旅客,某航空公司拟开发一个机票预订系统。旅行社把预订机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对无误即印出机票给旅客

4. 目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还可能会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,试写出问题定义,并且分析开发这个系统的可行性。
医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。

3.5数据规范化

3.6状态转换图(行为模型)

状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。此外,状态图还指明了作为特定事件的结果系统将做哪些动作。

状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。状态规定了系统对事件的响应方式。在状态图中定义的状态主要有:初态(即初始状态)、终态(即最终状态)和中间状态。在一张状态图中只能有一个初态,而终态则可以有0至多个。初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表示。 中间状态用圆角矩形表示,可以用两条水平横线把它分成上、中、下3个部分。上面部分为状态的名称,这部分是必须有的;中间部分为状态变量的名字和值,这部分是可选的;下面部分是活动表,这部分也是可选的。状态图既可以表示系统循环运行过程,也可以表示系统单程生命期。

事件是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象。事件就是引起系统做动作或(和)转换状态的控制信息。

活动表的语法格式如下: 事件名(参数表)/动作表达式其中,“事件名”可以是任何事件的名称。在活动表中经常使用下述3种标准事件:entry, exit和do。entry事件指定进入该状态的动作,exit事件指定退出该状态的动作,而do事件则指定在该状态下的动作。需要时可以为事件指定参数表。活动表中的动作表达式描述应做的具体动作。

 

3.7其他图形工具(层次方框图,Warnier图-数据模型; IPO图-数据流图的变种)

层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。   顶层是一个单独的矩形框,代表完整的数据结构。   底层各框代表组成这个数据的实际数据元素。

法国科学家Warnier提出的表示信息层次结构的一种图形工具,Warnier图可以表明信息的逻辑组织,也就是说,它可以指出一类信息或一个信息元素是重复出现的,也可以表示特定信息在某一类信息中是有条件地出现的。Warnier图也用树形结构描绘信息,但是这种图形工具比层次方框图提供了更丰富的描绘手段。

3.8验证软件需求 

3.9习题

1如果数据规范化满足第二范式,则其必定满足(第三范式)。

2在软件工程中,推荐使用的数据规范化为(第三)范式。

3在状态图中的活动表,有三种标准事件,分别为(do)、(entry)、(exit)

4接上题,其中(entry)指定进入该状态的动作,(exit)指定退出该状态的动作,(do)指定该状态下的动作。

5 除了数据流图,E-R图和状态图,在需求分析时还可以使用的其他三种图形化工具分别为(层次方框图)、(Warnier图)、(IPO图)。

6接上题,其中(IPO)图可以用来描述算法,即数据流图中的“处理”。

7 验证需求完整性和有效性的现实方法是,使用(原型系统)技术。

8.软件需求是对待开发产品或系统的功能描述。(x)

第5章  总体设计 

总体设计的必要性:站在全局高度,花较少成本,分析对比多种可能的实现方案和软件结构,选出最佳方案和最合理的软件结构,从而用较低成本开发较高质量的软件系统

 5.1   设计过程    

5.2   设计原理(在软件设计过程中应该遵循的基本原理)    

5.2.1模块化(大小要合理):

模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。模块是构成程序的基本构件。把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。这就是模块化的根据。

5.2.2抽象:(特殊到一般)

把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。或者说抽象就是抽出事物的本质特性而暂时不考虑它们的细节。

5.2.3逐步求精:(一般到特殊)

逐步求精定义为为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。

5.2.4信息隐藏和局部化:

应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。局部化是指把一些关系密切的软件元素物理地放得彼此靠近。

5.2.5模块独立(高内聚、低耦合)

1)耦合(数据耦合.控制.特征.公共环境.内容)

        尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,应该坚决避免使用内容耦合

2)内聚:(功能.顺序.通信.过程.时间.逻辑.偶然)

。 

 

5.3   启发规则    

 

5.4   描绘软件结构的图形工具 (层次图和HIPO和结构图)

更适合用于描绘软件结构

更适合用于检查设计正确性和评价模块独立性 

观察下面的软件结构图,请回答结构图的深度,第3层的宽度,指定模块的扇入(I)和扇出(N);

5;5;比如说N,扇入为1,扇出为4。 

5.5   面向数据流的设计方法(数据流图转化成层次图)

数据流图具有变换特性:一条输出通路;具有事务特性:多条输出通路

例子 :汽车数字仪表板的设计 假设的仪表板将完成下述功能。

(1) 通过模数转换实现传感器和微处理机接口。

(2) 在发光二极管面板上显示数据。

(3) 指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等。

(4) 指示加速或减速。

(5) 超速警告:如果车速超过55英里/小时,则发出超速警告铃声。

在软件需求分析阶段应该对上述每条要求以及系统的其他特点进行全面的分析评价,建立必要的文档资料,特别是数据流图 。数据流图是圆角矩形/矩形。

输入模块逆着数据流图向上画,越靠近中心的层次越高,

画出来后用上面的设计原理和启发式规则进行适当的修正。

5.6习题

1.软件设计一般分为两个阶段,分别是(C)

A 概要设计和初步设计

B 详细设计和过程设计

C 概要设计和详细设计

D概要设计和总体设计

2以下不是模块化思想优点的是(C)

A、使得软件结构清晰,提高了软件结构的可读性和可理解性

B、提高软件的可靠性

C、软件各模块间通信基本不耗性能。

D、有助于软件开发的组织管理

3(多选)采用模块化的思想进行系统设计时,以下说法正确的是(CD)

A、各个模块间的信息应该彼此互相独立,不能访问

B、为了降低系统维护的成本,避免因某个模块修改中导致的错误传播到系统中的其他部分,应该保持模块的独立性,隐藏模块中的一切信息

C、在模块中使用局部数据元素有助于实现信息隐藏

D、编写系统的不同模块时,可以根据实际需要自由命名局部变量

4(多选)模块独立是以下哪些概念的直接结果AD

A、模块化

B、抽象

C、逐步求精

D、信息隐藏和局部化

6 (多选)变换型数据流图中包括ABD

A、输入流

B、输出流

C、事务中心

D、变换流

二 填空题

1总体设计由两个阶段组成,分别是(系统设计),(结构设计)。

2 逐步求精的重要性在于Miller法则。Miller认为,一个人能够把注意力集中在(7±2)个知识块上。

三 判断题

1 较小的模块更加容易设计和开发。因此,在总体设计划分系统模块时,应该使模块尽可能的小。x

2 软件设计根据实际可有可无,软件开发主要是根据需求把代码编写出来。x

3 变换型和事务型数据流图的设计过程完全相同。x

4 计算器分为“加减乘除”4项独立的功能,体现了设计原理的(模块化)思想。

5将“小学生,中学生,大学生”的共性集中起来,暂时不考虑其差异,体现了设计原理的(抽象)思想。

6在系统开发过程中,使用“自然语言—>伪代码—>代码”这一过程,体现了设计原理的(逐步求精)思想。

7使用关键字private声明类中的成员变量(属性),体现了设计原理的(信息隐藏)思想。

8 在某网络购物系统中,将“收货地址”和“联系电话”放在相邻的物理存储中,体现了设计原理的(局部化)思想。

9在总体设计时,应考虑模块的独立性。理想的模块应做到高(内聚),低(耦合)。

10(接第9题)计算器“加减”2项功能放在了1个函数中实现,违反了模块独立思想的(高内聚)。

11(接第9题)计算器“加”1项功能分散在2个函数中实现,违反了模块独立思想的(低耦合)。

第6章  详细设计(如何具体地实现)

6.1   结构程序设计

        如果一个程序的代码块仅仅通过顺序、选择、循环这三种基本控制结构进行连接,并且每个代码块只有一个入口和出口,则称这个程序是结构化的,结构程序设计时尽可能少用GO TO语句的程序设计方法。

顺序、分支IF_THEN_ELSE(if_case)、DO_CASE(switch_case)、循环DO_WFILE(while/for)、 DO_UNTIL(do_case)

避免使用go-to语句,但是可以用LEAVE(/BREAK).

6.2   人机界面设计(选学)    

6.3   过程设计的工具   (程序流程图.盒图N-S.PAD图.判定树表.伪代码) 

6.3.1程序流程图 

6.3.2盒图

 

6.3.3PAD问题分析图

 

6.3.4判定表

 

6.3.5判定表

 

 6.3.6 过程设计语言(PDL伪码)

6.3.7题

某校对于各种不同职称教师,根据是本校专职教师还是外聘兼职教师决定其讲课的每课时津贴标准。本校专职教师每课时津贴费:教授50元,讲师30元,助教10元。外聘兼职教师每课时津贴费上浮50%:教授75元,讲师45元。试根据下述自然语言描述,画出其判定表、和判定树。

6.4   面向数据结构的设计方法(Jackson方法和Warnier方法)

根据数据结构设计程序处理过程的方法

6.4.1Jackson图

6.4.2 改进的Jackson图

6.4.3Jackson法

Jackson结构程序设计方法基本上由下述5个步骤组成。

(1) 分析并确定输入数据输出数据逻辑结构,并用Jackson图描绘这些数据结构。(结构化表示数据)

(2) 找出输入数据结构和输出数据结构中有对应关系的数据单元。(所谓有对应关系是指有直接的因果关系,程序中可以同时处理的数据单元。对于重复出现的数据单元必须重复的次序和次数都相同才可能有对应关系。)

(3)用下述3条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图。(数据结构->程序结构)

① 为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框

② 根据输入数据结构中剩余每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框

③ 根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框

(4) 列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置。

(5) 用伪码表示程序。 Jackson方法中使用的伪码和Jackson图是完全对应的,下面是和3种基本结构对应的伪码。

顺序:

A seq

B

C

D

A end

选择/分支:

A select 条件1

B

A or 条件2

C

A or 条件3

D

A end

循环:

A iter until/while 条件

B

A end

例子:

 

 

 sum是保存空格数量的变量,totalsum是保存空格总数的变量,pointer是指示当前分析的字符在字符串中的位置的变量,字符串结束:该字符串的所有字符都已经处理完成;文件结束:文件已经全部处理完成。

        Jackson把两张描述数据结构的Jackson图结合成一张描述程序结构的Jackson图 

Jackson方法介绍及题目参考答案:https://www.ixigua.com/6901538678573629963?id=6903783454685692419&logTag=2784d8a77203b7acfcb5 

6.5   程序复杂程度的定量度量

6.5.1McCabe方法

6.5.2Halstead方法

6.6习题

1.关于软件详细设计正确的有ABCD

A、软件详细设计要执着专注、要精益求精、要一丝不苟、要追求卓越

B、软件详细设计必须有严谨的态度,要有严格的规程和标准,不能有半点马虎将就

C、软件详细设计要精雕细琢、精耕细作、不忘初心、坚守理想

D、软件详细设计要追求卓越、勇于创新、要向更高、更好、更精的方向努力

2. 在结构程序设计中有三种基本控制结构,分别为(顺序)、(选择)、(循环)。最好不要使用(GOTO)语句。

判断题:

1 Jackson图可以表示数据结构,也可以用来表示程序的结构。V

第7章  实现(编码和测试)

7.1   编码  

选择程序设计语言+编码风格(使源程序代码的逻辑简明清晰,易读易懂,应该从哪5个方面:程序内部文档、数据说明、语句构造、输入输出、效率)

 

7.2   软件测试基础 

测试的正确定义是“为了发现程序中的错误而执行程序的过程;

好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;

成功的测试是发现了至今为止尚未发现的错误的测试。

测试方法:黑盒测试、白盒测试

大型软件系统的测试过程基本上由单元测试、子系统测试、系统测试、验收测试(在这个测试步骤中发现的往往是系统需求说明书中的错误)和平行运行(同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果)等五个步骤组成。

测试方案不仅仅是测试时使用的输入数据(称为测试用例),还应该包括每组输入数据预定要检验的功能,以及每组输入数据预期应该得到的正确输出。

7.3   单元测试 开发者(最小单元——模块)

在单元测试期间着重从以下5个方面对模块进行测试。

 

1.模块接口

2.局部数据结构

3.重要的执行通路

4.出错处理通路

5.边界条件

测试方法:代码审查(一次可发现多个错误)、计算机测试(一次只发现一个错误,驱动模块,存根模块) 

模块不是一个独立的程序,因此必须为每个单元测试开发驱动软件(虚拟主程序)和(或)存根软件(虚拟子程序)。

驱动程序是一个“主程序”,它接收测试数据,把这些数据传送给被测试的模块,并且印出有关的结果。

存根程序代替被测试的模块所调用的模块,它使用被它代替的模块的接口,可能做最少量的数据操作,印出对入口的检验或操作结果,并且把控制归还给调用它的模块。

7.4   集成测试  开发者

渐增式测试,边组装边测试;

组装方法:自顶向下和自底向上两种集成策略

混合策略: 

回归测试是指重新执行已经做过的测试的某个子集,以保证上述这些变化没有带来非预期的副作用。 回归测试就是用于保证由于调试或其他原因引起的变化,不会导致非预期的软件行为或额外错误的测试活动。 回归测试可以通过人工地进行,也可以使用自动化的捕获回放工具自动进行。利用捕获回放工具,软件工程师能够捕获测试用例和实际运行结果,然后可以回放(即重新执行测试用例),并且比较软件变化前后所得到的运行结果。 

7.5   确认测试  顾客

Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。

Beta测试由软件的最终用户们在一个或多个客户场所进行。与Alpha测试不同,开发者通常不在Beta测试的现场。

 7.6   白盒测试技术  (单元测试)

测试数据预期的输出结果称为测试用例。

语句覆盖(点覆盖)、判定覆盖(边覆盖)、条件覆盖、判定/条件覆盖、条件组合、路径覆盖。

 7.7   黑盒测试技术    (集成测试)

 黑盒测试着重测试软件功能。等价类、边界值、错误推测法。

7.8   调试    (纠正错误)

技术:回溯法、原因排错法(对半查找法)、蛮干法。

7.9   软件可靠性(选学)

7.10习题

选择题

1一般来说,单元测试的主体是(A)。集成测试的主体是(B)。确认测试的主体是(C)。

A 程序员

B 测试员

C 客户

D 以上三者都需要参与

填空题

1一般来说,软件测试的工作量占总工作量的(>40)%。

2 单元测试有两种不同的方法,分别为(代码审查/人工测试),(计算机测试)。其中(代码审查/人工测试)方法有可能一次发现许多错误

3测试用例包括两方面内容,分别是(输入数据)和(预期输出)。

4 保证被测试对象的每条语句都能够得到执行,称之为(语句)覆盖测试。

5 保证被测试对象的每条分支都能够得到执行,称之为(判定)覆盖测试。

6 保证被测试对象的每条判定表达式中的每个子条件真假两面都能够得到执行,称之为(条件)覆盖测试。

7 保证被测试对象的每条分支都能够得到执行而且每条判定表达式中的每个子条件真假两面都能够得到执行,称之为(判定/条件)覆盖测试。

8 保证被测试对象的每条判定表达式中条件的各种组合都能够得到执行,称之为(条件组合)覆盖测试。

9保证被测试对象的每种可能的路径组合都能够得到执行,称之为(路径)覆盖测试。

10软件的可靠性和软件的可用性都是用来衡量系统故障的定量指标,其区别在于,(可靠性)是指在0~t这段时间间隔内系统正常运行,而(可用性)是指在时刻t一时间点系统正常运行。

判断题

1写出程序之后,软件开发工作就完成了。(x)

2软件经过严格的测试,就能够证明其中没有错误。(x)

3 软件调试是在发现错误后纠错的过程。(v)

第8章  实现

8.1   软件维护的定义    

8.2   软件维护的特点    

 

8.3   软件维护过程(了解)    

8.4   软件的可维护性  

可以把软件的可维护性定性地定义为: 维护人员理解、改正、改动或改进这个软件的难易程度。(判断题)软件维护是在软件已经交付使用之后,为了改正错误或满足新的需要而修改代码的过程。

(判断题)软件维护是在软件已经交付使用之后,为了改正错误或满足新的需要而修改代码的过程。(x) 

8.5   预防性维护(选学)  

使用新出现方法,去维护旧系统,以支持未来可能的变化。

8.6   软件再工程过程(选学)

代码->文档

习题: 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值