软件工程考试串讲及习题1.docx

上传人:b****6 文档编号:8222450 上传时间:2023-01-29 格式:DOCX 页数:21 大小:105.10KB
下载 相关 举报
软件工程考试串讲及习题1.docx_第1页
第1页 / 共21页
软件工程考试串讲及习题1.docx_第2页
第2页 / 共21页
软件工程考试串讲及习题1.docx_第3页
第3页 / 共21页
软件工程考试串讲及习题1.docx_第4页
第4页 / 共21页
软件工程考试串讲及习题1.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

软件工程考试串讲及习题1.docx

《软件工程考试串讲及习题1.docx》由会员分享,可在线阅读,更多相关《软件工程考试串讲及习题1.docx(21页珍藏版)》请在冰豆网上搜索。

软件工程考试串讲及习题1.docx

软件工程考试串讲及习题1

软件工程概述

软件

软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。

软件的特点

1.Logicalratherthanphysical(软件是一种逻辑实体,而非具体的物理实体)

2.DevelopedorEngineered,notmanufacturedintheclassicalsense(在研制、开发活动中被创造出来,但不能按传统的生产含义加以理解)

3.Doesn'twearout(在软件的运行和使用期间,没有磨损、老化问题)

 

软件的发展

软件的发展可以分为这样三个阶段:

1.程序设计阶段,约为50至60年代

2.程序系统阶段,约为60至70年代

3.软件工程阶段,约为70年代以后

时期

特点

程序设计

程序系统

软件工程

软件所指

程序

程序及说明书

程序、文档及数据

主要程序设计语言

汇编及机器语言

高级语言

软件语言*

软件工作范围

程序编写

包括设计和测试

软件生存期

需求者

程序设计者本人

少数用户

市场用户

开发软件的组织

个人

开发小组

开发小组及大、中型软件开发机构

软件规模

小型

中、小型

大、中、小型

决定质量的因素

个人程序设计技术

小组技术水平

管理水平

开发技术和手段

子程序、程序库

结构化程序设计

数据库,开发工具,开发环境,工程化开发方法,标准和规范,网络和分布式开发,面向对象技术,软件过程与过程改进

维护责任者

程序设计者

开发小组

专职维护人员

硬件特征

价格高,存储容量小,工作可靠性差

降价,速度、存储容量及工作可靠性有明显提高

向超高速、大容量、微型化及网络化方向发展

软件特征

完全不受重视

软件技术的发展不能满足需求,出现软件危机

开发技术有进步,但未获突破性进展,价格高,未完全摆脱软件危机

软件危机

*软件需求增长得不到满足;

*软件生产成本高,价格昂贵;

*软件生产进度无法控制;

*软件需求定义不准确,易偏离用户需求;

*软件质量不易保证;

*软件可维护性差等等

软件工程

采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。

Boehm曾为软件工程下了定义:

运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。

FritzBauer:

Theestablishmentanduseofsoundengineeringprinciplesinordertoobtaineconomicallysoftwarethatisreliableandworksefficientlyonrealmachines.软件工程是建立和使用一系列完善的工程化原则以便经济地获得能够在实际机器上有效运行的可靠软件。

1983年,IEEE(InstituteofElectrical&ElectronicEngineers,电气和电子工程师学会)做出的定义是“软件工程是开发、运行、维护和修复软件的系统方法。

它的核心内容是“以工程化的方式组织软件的开发”,其中涉及软件计划、开发和维护各个阶段。

软件工程三个要素:

方法、工具和过程。

1)软件工程方法为软件开发提供了“如何做”的技术。

2)软件工具为软件工程方法提供自动的或半自动的软件支撑环境。

3)软件工程过程指将软件工程的方法和工具综合起来,以达到合理、及时地进行计算机软件开发的目的。

软件工程过程(SoftwareEngineeringProcess)

软件工程过程是指为了获得软件产品,在软件工具支持下由软件工程师采用软件工程方法完成的一系列软件工程活动。

软件工程的七条原理

著名的软件工程专家B.W.Boehm于1983年在一篇论文中提出了软件工程的七条基本原理。

他认为这七条原理是确保软件产品质量和开发效率的原理的最小集合。

1.分阶段的生命周期计划严格管理

2.坚持进行阶段评审

3.实行严格的产品控制

4.采用现代程序设计技术

5.结果应能清楚地审查

6.开发小组的人员应少而精

7.承认不断改进软件工程实践的必要性

 

软件工程的目标

组织实施软件工程项目是为了获得项目的成功,即达到以下几个主要的目标:

1.出较低的开发成本

2.到预期的软件功能

3.取得较好的软件性能

4.使开发的软件易于移植

5.需要较低的维护费用

6.能按时完成开发工作,及时交付使用

概括地说,基本目标,四个字:

优质、高效。

即质量高、效率高。

软件工程的原则

软件工程基本目标适用于所有软件工程项目。

为达到这些目标,在软件开发过程中必须遵循下列软件工程原则。

1.抽象

2.信息隐蔽

3.模块化

4.局部化

5.确定性

6.一致性

7.完备性

8.验证性

使用一致性、完备性和可验证性的原则可以帮助开发者设计一个正确的系统。

软件生命周期(lifecycle)

同其它事物一样,软件也有孕育、诞生、成长、成熟、衰亡的生存过程,称为软件的生命周期。

包括六阶段内容:

1.制定计划

2.需求分析

3.系统设计

4.程序编写

5.软件测试

6.运行和维护

软件生命周期经典模型——瀑布模型

软件生命周期模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。

软件开发模型

瀑布模型:

按照软件生命周期经典模型-瀑布模型的各个阶段实施开发工作

优点:

1.提供了软件开发的基本框架,优于“手工作坊”式的开发方法

2.有利于大型软件开发过程中人员的组织、管理

3.有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率

缺点:

1.在软件开发的初始阶段指明软件系统的全部需求是困难的,有时甚至是不现实的

2.需求确定后,用户和软件项目负责人要等相当长的时间(经过设计、编码、测试、运行)才能得到一份软件的最初版本。

如果用户对这个软件提出比较大的修改意见,那么整个软件项目将会蒙受巨大的人力、财力、时间方面的损失。

渐进模型(演化模型、原型模型)

原型模型在克服瀑布模型缺点、减少由于软件需求不明确而给开发工作带来风险方面,确实有着显著的效果

原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于需求不确定性高的系统

螺旋模型

它是生命周期模型与原型模型的结合,不仅体现了两个模型的优点,还增加了新的成分——风险分析

螺旋模型是支持大型软件开发并具有广泛应用前景的模型

 

例题

1.开发软件时,对于提高软件开发人员工作效率至关重要的是(A)。

软件工程中描述软件生存周期的瀑布模型一般包括计划、(B)、设计、编码、测试、维护等几个阶段。

其中,设计阶段在管理上又可以依次分成(C)和(D)两个步骤。

供选答案:

A:

①程序开发环境②操作系统的资源管理功能

③开发程序人员数量④计算机的并行处理能力

B:

①需求分析②需求调查

③可行性分析④问题定义

C、D:

①方案设计②代码设计③概要设计④数据设计

⑤运行设计⑥详细设计⑦故障处理设计⑧软件体系结构设计

答案:

A.①B.①C.③D.⑥

2.有人将软件的发展过程划分为4个阶段:

第一阶段(20世纪50年代)称为“程序设计的原始时期”。

这时既没有(A),也没有(B),程序员只能用机器指令编写程序。

第二阶段(20世纪60年代)称为“基本软件期”。

出现了(A),并逐渐普及。

随着(B)的发展,编译技术也有较大的发展。

第三阶段(20世纪60年代末-70年代中)称为“程序设计方法时代”。

这一时期,与硬件价格下降相反,软件开发费用急剧上升。

人们提出了(C)和(D)等程序设计方法,设法降低软件的开发费用。

第四阶段(20世纪70年代中期至今)称为“软件工程时期”,软件开发技术不再仅仅是程序设计技术,而是包括了与软件开发的各个阶段,如(E)、(F)、编码、单元测试、综合测试、(G)及其整体有关的各种管理技术。

供选择的答案:

A-D:

①汇编语言②操作系统③虚拟存储器概念④高级语言

⑤结构化程序设计⑥数据库概念⑦固件⑧模块化程序设计

E-G:

①使用和维护②兼容性的确认③完整性的确认④设计

⑤需求定义⑥图象处理

答案:

A.①B.④C.⑤D.⑧E.⑤F.④G.①

问题定义

关于问题性质、工程目标和规模的书面报告

可行性研究(也称可行性分析,FeasibilityAnalysis)

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

具体任务:

1.进一步分析和澄清问题定义。

2.导出系统的高层逻辑模型。

从系统逻辑模型出发,探索若干种可供选择的主要解法(即系统实现方案)。

对每种解法都应该至少从下述几方面研究其可行性:

Economicfeasibility,经济可行性。

这个系统的经济效益能超过它的开发成本吗?

Technicalfeasibility,技术可行性。

使用现有的技术能实现这个系统吗?

Legalfeasibility,法律可行性。

确定系统开发可能导致的任何侵权行为、妨碍性后果和责任。

Operationalfeasibility,操作可行性。

系统的操作方式在这个用户组织内行得通吗?

3、对以后的行动方针提出建议。

基于计算机系统的成本—效益分析是可行性研究的重要内容,它用于评估计算机系统的经济合理性。

给出系统开发的成本论证,并将估算的成本与预期的利润进行对比。

成本

软件开发成本主要表现为人力消耗(乘以平均工资则得到开发费用)。

一般来说,基于计算机系统的成本由四个部分组成:

1.购置并安装软硬件及有关设备的费用

2.系统开发费用

3.系统安装、运行和维护费用

4.人员培训费用

1、代码行技术

代码行技术是比较简单的定量估算方法,也是一种自底向上的估算方法。

它把开发每个软件功能的成本和实现这个功能需要用的源代码行数联系起来。

通常根据经验和历史数据估计实现一个功能需要的源程序行数。

一旦估计出源代码行数以后,用每行代码的平均成本乘以行数即可确定软件的成本。

每行代码的平均成本主要取决于软件的复杂程度和开发小组的工资水平。

大致分如下两步:

对要求设计的系统进行功能分解,直到可以对为实现该功能所要求的源代码行数做出可靠的估算为止。

根据经验和历史数据,对每个功能块估计一个最有利的、最可能的和最不利的LOC值。

设最有利的LOC值为a,最可能的LOC值为m,最不利的LOC值为b,则代码行的期望(平均)值L

 

再根据历史数据和经验,选择每个软件功能块的LOC价格

计算每个功能块的价格及工作量,并确定该软件项目总的估算价格和工作量。

可行性论证的提纲

大致包括如下内容:

1、背景情况。

问题描述,市场需求等

2、系统描述。

简略的范围描述,计划目标和阶段目标等

3、候选方案。

候选方案的配置,选择最终方案的准则等

4、价格利益分析。

经费概算和预期经济效益

5、技术冒险评价。

包括技术实力、设备条件和已有工作基础

6、操作可行性。

用户组织对操作方式的希望

7、法律可行性。

系统开发可能导致的侵权、违法等

8、其它与项目有关的问题。

可能的未来变化

9、结论。

 

需求分析

所谓软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。

需求分析具体任务:

1、确定对系统的综合要求

1)系统功能要求

2)系统性能要求

3)运行要求

4)将来可能提出的要求

2、分析系统的数据要求(需求分析的本质就是对数据和加工进行分析)

3、导出系统的逻辑模型

4、修正系统开发计划

5、开发原型系统(可选)

需求获取技术

1、访谈与会议

2、书面调查法

3、观察用户工作流程

4、用户和开发人员共同组成联合小组

需求调查

主要包括四部分内容:

1、组织概况

2、组织的业务活动:

1)组织的业务状态

2)业务的详细内容

3)输入输出信息从六个方面着手:

*信息流向

*信息种类

*利用的目的

*信息的使用者和制造者

*输入和输出地点

*输入和输出信息量

3、存在问题、约束条件

4、未来要求

结构化分析方法(SA方法)就是面向数据流自顶向下逐步求精进行需求分析的方法。

分析的过程:

面向数据流,采用自顶向下、分支分层、逐步分解、逐步细化、逐步求精,最后落实到具体加工、基本加工、简单加工。

用逐步求解的方法控制系统的复杂度,使得复杂系统简单化、抽象系统具体化。

数据流图(DFD)

数据流图描绘系统的逻辑模型,或者说描绘信息在系统中流动和处理的情况。

基本系统模型

数据流分析将系统模型视作一种数据变换,它接受各种形式的输入,通过变换产生各种形式的输出。

例,下图是一个飞机机票预定系统的基本系统模型

数据流图的成分

下图是机票预定系统的DFD。

可以看出,数据流图是由以下四个基本成分组成的:

1、数据流(用箭头表示)

2、加工(用圆圈表示)

3、文件(用单线或双线表示)

4、数据源点和终点(用方框表示)

几点说明:

1、一个加工并不一定是一个程序。

2、一个数据存储也不等同于一个文件。

3、数据存储和数据流都是数据,但所处状态不同。

自顶向下逐层画DFD的步骤如下:

1)把基本系统模型加上源点和终点作为顶层DFD。

2)画出各层DFD,逐层画DFD的过程也就是逐层分解的过程。

为便于管理,要对分层DFD和图中的加工进行编号。

A、子图的图号就是分解的父图中相应加工的编号。

B、子图中的加工编号是由子图号、小数点、局部顺序号组成。

3)画出总的DFD。

(可选)

画DFD时要注意的几个问题:

1、画DFD不是画流程图。

DFD只描述“做什么”,不描述“怎么做”和做的顺序。

而流程图表示对数据进行加工的次序和细节。

2、父图和子图的平衡。

父图某加工的输入输出和分解这个加工的子图的输入输出必须完全一致。

3、局部文件。

文件总是局部于分层DFD的某一层或某几层。

4、分解的深度与层次。

逐层分解要求分解到加工成为足够简单、易于理解的基本加工为止。

所谓基本加工就是加工的意义明确、操作单一。

但是究竟分解的层次多少合适,应当根据问题的复杂程度来确定。

一般来说,可参考以下准则:

1)一个加工的分解,最多不要超过7个子加工。

若超过7个时,可以用增加层次的办法来减少子加工数。

2)分解在逻辑上应合理、自然,不能硬性分割。

3)在保证数据流的易理解性的前提下,尽量少分解层次。

这样可以减少层次的界面。

4)分解要均匀。

即在一张DFD中,不要有些加工已是基本加工,另一些加工还要分解好几层。

绝对均匀不可能,但不要相差太大。

数据字典(DD)

数据字典是关于数据的信息的集合,也就是对数据流图中包含的系统元素(所有数据流、加工、文件)的定义的集合。

数据流图和数据字典是需求规格说明书的主要组成部分。

1、数据流条目

数据流条目是定义数据流的。

定义的方式一般是列出该数据流的各组成数据项。

在定义数据流时,通常借助于一些简单的符号。

=等价于(定义为)

+“与”x=a+b,x由a和b组成

[…|…],[…,…]“或”x=[…,…],x=[a|b]x由a或b组成

{…}重复x={a}x由0个或多个a组成

m{…}n重复如x=3{a}8表示x中至少出现3次a,至多出现8次a

()可选(选择)如x=a+(b)+cb可以在x中出现,也可以不出现

“…”基本数据元素x=“a”x为取值为a的数据元素

..连接符x=1..9x可取1至9中的任一值

如数据流“存折”可以定义:

存折={户名+所号+帐号+开户日+性质+(印密)+1{存取行}50}0000000099999999

户名=2{字母}24

所号=“001”…“999”

帐号=“00000001”…“99999999”

开户日=年+月+日

性质=“1”..“6”

印密=“0”

存取行=日期+(摘要)+支出+存入+余额+操作+复核

日期=年+月+日

年=“0001”..“9999”

月=“01”..“12”

日=“01”..“31”

摘要=1{字母}4

支出=金额

金额=“0000000.01”..“9999999.99”

操作=“00001”..“99999”

…………

2、数据文件条目

文件条目是定义文件的,一般只需列出文件的组成数据项,以及文件的组织方式

如数据文件(数据存储)“存折”可定义为

存折={户名+所号+帐号+开户日+性质+(印密)+1{存取行}50}0000000099999999

组织:

按帐号次序从小至大排列

3、加工条目(小说明)

小说明集中描述一个加工“做什么”,即加工逻辑。

所谓加工逻辑是指用户对这个加工的逻辑要求,即这个加工的输出数据流和输入数据流的逻辑关系。

目前用于写小说明(加工逻辑说明)的工具有结构化英语、判定表和判定树。

结构化英语

下面是商店业务处理系统中“检查发货单”的例子

IFtheinvoiceexceeds$500THEN(发货单金额超过$500)

IFtheaccounthasanyinvoicemorethan60daysoverdueTHEN(欠款超过60天)

theconfirmationpendingresolutionofthedebt(在偿还欠款前不予批准)

ELSE(accountisingoodstanding)(欠款未超期)

issueconfirmationandinvoice(发批准书及发货单)

ENDIF

ELSE(invoice$500orless)(发货单金额未超过$500)

IFtheaccounthasanyinvoicemorethan60daysoverdueTHEN(欠款超过60天)

issueconfirmation,invoiceandwritemessageoncreditactionreport(发批准书,发货单及赊欠报告)

ELSE(accountisingoodstanding)(欠款未超期)

Issueconfirmationandinvoice(发批准书及发货单)

ENDIF

判定表

在某些数据处理问题中,某数据流图的加工需要依赖于多个逻辑条件的取值,就是说完成这一加工的一组动作是由于某一组条件取值的组合引发的。

这时使用判定表来描述比较合适。

下面以“检查发货单”为例,说明判定表的构成。

1

2

3

4

条件

发货单金额

>$500

>$500

≤$500

≤$500

赊欠情况

>60天

≤60天

>60天

≤60天

操作

不发出批准书

发出批准书

发出发货单

发出赊欠报告

判定表由四个部分组成,虚线分割开的四部分是:

条件茬(ConditionStub)——左上部分

条件项(ConditionEntry)——右上部分

动作茬(ActionStub)——左下部分

动作项(ActionEntry)——右下部分

例题请用判定表表示下面描述的耗电计费系统中电费的计算方法

耗电计费系统可以采用固定价格收费和浮动价格收费两种方式。

若采用固定价格方式收费,对每月耗电100KW•h以下的用户只征收最低标准费,超过100KW•h的用户按价格表A收费;若采用浮动价格方式收费,则每月耗电100KW•h以下的用户按价格表A收费,超过100KW•h的用户按价格表B收费。

答案:

收费方式

固定

固定

浮动

浮动

耗电规模

>100

≤100

>100

≤100

征收最低标准费

按价格表A收费

按价格表B收费

固定

固定

浮动

浮动

>100

≤100

>100

≤100

操作

按价格表A收费

征收最低标准费

按价格表B收费

按价格表A收费

判定树

判定树也是用来表达加工逻辑的一种工具,有时它比判定表更直观。

下面把前面的“检查发货单”的例子用判定树表示。

我们用DFD描述了系统中数据流动和加工的状况,用DD描述了其中的一些数据流、文件和加工,但是还不能满足需求分析阶段的要求。

任何一个软件系统都可能有成千上万个数据项,仅仅描述它们是不够的,更重要的是如何把它们以最优的方式组织起来,以满足系统对数据的要求。

E-R图(Entity-Relationship,实体-关系图)

1、实体

是现实世界中实体的数据侧面;或者说,数据对象是现实世界中省略了功能和行为的实体。

2、联系

客观世界中的事物彼此间往往是有联系的。

同样,应用问题中的任何数据对象都不是孤立的,它们与其它数据对象一定存在各种形式的联系。

联系可分为三类:

1)一对一联系(1:

1)

2)一对多联系(1:

N)

3)多对多联系(M:

N)

3、属性

属性是实体或联系所具有的性质

软件需求规格说明

1.引言。

编写目的,项目背景等

2.任务概述。

目标,运行环境等

3.数据描述。

4.功能需求。

5.性能需求。

6.运行需求。

7.其他需求。

例题

1.软件需求分析的任务不应包括(A)。

进行需求分析可使用多种工具,但(B)是不适用的。

在需求分析中,分析员要从用户那里解决的最重要的问题是(C)。

需求规格说明书的内容不应当包括(D)。

该文档在软件开发中具有重要的作用,但其作用不应当包括(E)。

供选答案:

A:

①问题分析②信息域分析

③结构化程序设计④确定逻辑模型

B:

①数据流图②判定表

③PAD图④数据词典

C:

①要让软件做那么②要给软件提供哪些信息

③要求软件工作效率如何④要让软件具有什么样的结构

D:

①对重要功能的描述②对算法的详细过程性描述

③软件确认准则④软件的性能

E:

①软件设计的依据②用户和开发人员对软件要“做什么”的共同理解

③软件验收的依据④软件可行性分析的依据

答案:

A.③B.③C.①D.②E.④

2.在结构化分析方法中,用以表达系统内数据的运动情况的工具有()。

供选答案:

A.数据流图B.数据词典C.结构化英语D.判定表与判定树

答案:

A

 

一旦软件需求确认之后,就进入开发阶段。

开发阶段由3个互相关联的步骤组成,即设计、实现(编码)和测试。

从工程管理的角度看,软件设计可分为概要设计/总体设计和详细设计两大步骤。

从技术角度来看,软件设计可分为数据设计、系统结构设计和过程设计。

现在越来越多的人把界面设计也单独取出作为一个方面。

概要设计

基本目的是

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1