济南大学软件工程复习大纲

发布 2021-05-13 17:32:28 阅读 8458

2023年复习内容。

一、概念类(形式:填空、选择、简答、简要绘图)

1、 软件、软件生命周期、软件工程、软件过程及经典过程模型、软件工程三要素(方法、工具、过程)

1)软件:软件是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及其说明文档。

2)软件生命周期:①问题定义 ②可行性研究 ③需求分析 ④总体设计 ⑤详细设计 ⑥编码和单元测试 ⑦综合测试 ⑧维护。

3)软件工程:软件工程学是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科。软件工程包括技术和管理两个方面内容,是技术和管理紧密结合形成的工程学。

4)软件过程:软件过程是为了获得高质量软件所需要进行的一系列任务的框架,它规定了完成各项任务的工作步骤。包括阶段、方法、技术、时间及相关产物(文档、模型、**等)。

5)经典过程模型:①瀑布模型(waterfall)②原型模型(prototype)③增量模型(incremental)④螺旋模型(spiral)⑤统一过程模型(rup)⑥敏捷过程与极限编程科。

瀑布模型是基础,适合需求明确的小型项目。其它任何模型中的阶段工作都可以看作小型的瀑布模型方法。严格意义上,瀑布模型是人解决问题通用思路的抽象。

原型模型比较适合于验证需求和技术,但不宜与构建过多原型。

增量模型在大系统开发中常用,可以把大系统划分成子系统和功能,然后定义功能优先级,按照优先级开发。

螺旋模型适合需求不明确时及**估风险。

现代模型基本上都是上述4种过程模型的优化组合和细化。

6)软件工程三要素:①方法:完成软件开发各项任务的技术方法。

回答“怎么做”的问题②工具:为运用方法而提供的自动、半自动软件工程支撑环境。回答“可以用什么做”的问题。

③过程:是为了获得高质量的软件所需要完成的一系列任务的框架,规定了完成各项任务的工作步骤。

2、 rup和敏捷过程模型、xp模型。

1) rup:rational unified process 是ibm/rational公司开发的一种软件开发过程。它提供了在开发组织中分派任务和责任的纪律化方法。

它的目标是在可预见的日程和预算前提下,确保满足最终用户需求的高质量产品。

过程核心基础是:

用例和风险驱动。

架构为中心。

迭代和增量。

2)敏捷过程:强调适应性而非预见性,要能快速适应现实的变化。适应小规模的软件组织。强调较短的开发周期和队伍的高度协作。

3)xp模型:极限编程诞生于一种加强开发者与用户的沟通需求,让客户全面参与软件的开发设计,保证变化的需求及时得到修正。要让客户能方便地与开发人员沟通,一定要用客户理解的语言,先测试再编码就是先给客户软件的外部轮廓,客户使用的功能展现,让客户感觉到未来软件的样子,先测试再编码与瀑布模型显然是背道而驰的。

同时,极限编程注重用户反馈与让客户加入开发是一致的,让客户参与就是随时反馈软件是否符合客户的要求。有了反馈,开发子过程变短,迭代也就很自然出现了,快速迭代,小版本发布都让开发过程变成更多的自反馈过程,有些象更加细化的快速模型法。

3、 需求的层次(业务需求、用户需求、功能需求)

业务需求( business requirement) :反映组织机构或客户对系统、产品高层次的目标要求,他们在项目视图与访问文档中予以说明。

用户需求(user requirement) :描述用户使用产品必须要完成的任务。

功能需求(functional requirement) :定义开发人员必须实现的软件功能,使得用户能完成他们的任务。非功能需求:

软件除了满足功能以外还须满足的一些标准、规范和约束等。

4、 需求分析的过程(问题识别、分析综合、编制文档、评审)、不合格需求的做法、分析员的要求、调查研究的主要方法。

1) ①问题识别(寻找需求)②分析与综合(需求建模)③编制文档 ④评审。

2) 不合格需求的做法: ①无足够用户参与。②用户的需求不断增加。

③模棱两可的需求。④不必要的特性。⑤过于精简的规格说明。

⑥忽略了用户的分类。⑦不准确的计划。

3) 分析员的要求:系统分析员研究组织的问题和需要,决定如何使人员、数据、过程和信息技术最好的满足业务改进的需要。应具备以下素质:

熟练地掌握计算机软硬件专业知识,具备一定地系统开发经验。

善于进行抽象地思维和创造性地思维,善于把握抽象地概念,并把他们重新整理成为各种逻辑成分,给出简明、清晰地描述。

善于从相互冲突或混淆地原始资料中抽出恰当地条目来。

善于进行调查研究,能够很快学习用户地专业领域知识,理解用户地环境条件。

能够倾听他人地意见,注意发挥其他人地作用。

具有良好地书面和口头交流表达能力。

4) 调查研究的主要方法: ①了解系统的需求。②市场调查。③访问用户和用户领域的专家。④考察现场,搜集资料。

5、 软件设计从管理上分概要设计和详细设计;从技术上分体系结构设计、功能(过程)设计、数据设计、界面设计。

6、 软件设计过程:①提供方案、②选择合理方案、③功能分解、④设计架构、⑤设计数据库、⑥指定测试文档、⑦撰写文档。

7、 模块化、模块独立性准则(耦合和内聚)

1) 模块化就是说,整个软件被划分成若干单独命名和可编址的部分,称之为模块。这些模块可以被组装起来以满足整个问题的需求。

2) 模块独立是模块化、抽象、信息隐蔽和局部化概念的直接结果。

模块独立的重要性:1. 有效的模块化(具有独立的模块)的软件比较容易开发。

由于对功能进行了分割,任务得到了分解。2. 独立的模块比较容易测试、维护。

不独立的模块之间关系复杂。

模块独立性, 是指软件系统中每个模块只涉及软件要求的具体的子功能, 而和软件系统中其它的模块的接口是简单的。例如, 若一个模块只具有单一的功能且与其它模块没有太多的联系, 则称此模块具有模块独立性。

一般采用两个准则度量模块独立性。即模块间耦合和模块内聚。

3) 耦合是模块之间的互相连接的紧密程度的度量。

内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。

模块独立性比较强的模块应是高内聚低耦合的模块。

8、 软件测试的目的;测试:单元测试、组装(集成)测试、确认测试、系统测试。黑盒和白盒测试。

黑盒主要方法:等价类划分、边界值分析、错误推测法。白盒主要方法:

语句覆盖、判定覆盖、条件覆盖;测试过程与软件开发阶段关系;驱动模块和桩模块含义,并会设计桩模块。

1) 软件测试的目的:①从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。②从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。

2) 具体测试过程按4个步骤进行,即单元测试、组装测试、确认测试和系统测试。

开始是单元测试,集中对用源**实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。

组装测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。

确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。

系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。

3)黑盒和白盒:①黑盒这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。黑盒测试又叫做功能测试或数据驱动测试。

②白盒:此方法把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

因此白盒测试又称为结构测试或逻辑驱动测试。

黑盒主要方法:

等价类划分。

等价类划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。使用这一方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。划分等价类:

等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。测试某等价类的代表值就等价于对这一类其它值的测试。

边界值分析。

边界值分析也是一种黑盒测试方法,是对等价类划分方法的补充。人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。

错误推测法。

人们也可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。这就是错误推测法。错误推测法的基本想法是:

列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。

因果图(课件里头没有)

白盒主要方法:

语句覆盖:语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。

判定覆盖:判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。

条件覆盖:条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。

4) ①驱动模块:相当于被测模块的主程序。它接收测试数据,把这些数据传送给被。

测模块,最后输出实测结果。②桩模块:用以代替被测模块调用的子模块。桩模块可以做少量的数据操作,不需要把子模块所有功能都带进来,但不允许什么事情也不做。

9、 结构化分析方法的主要工具(dfd数据流图、e-r、状态迁移图、数据字典)

10、 软件体系结构中常见的分层结构的优点(自己总结),?三层结构内容及每层含义。

11、 维护的主要类型和方法:改正性、适应性、完善性、预防性。

改正性:为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,所进行的诊断和改正错误的过程就叫做改正性维护。

适应性:为使软件适应计算机软件、硬件等的各种变化,而去修改软件的过程就叫做适应性维护。

完善性:为了满足用户提出的新要求而进行的维护活动叫做完善性维护。

预防性:为了提高软件的可维护性、可靠性等,采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试。

12、 ooa主要概念:问题域、系统责任;ooa的主要原则:抽象、分类、封装、继承、聚合、关联、消息通讯、粒度控制。

1) 问题域:被开发系统的应用领域,即现实世界中由这个系统处理的业务范围。

软件工程复习大纲

1 软件工程定义,本质特性,出现背景。软件工程是指导计算机软件开发和维护的一门工程学科。软件工程是 把系统的 规范的 可度量的途径应用于软件开发 运行和维护过程,也就是把工程应用于软件 研究中提到的途径。本质特性 1 软件工程关注于大型程序的构造。2 软件工程的中心课题是控制复杂性。3 软件经常变化...

软件工程复习大纲

考试题型。名词解释 填空 简答题 应用题 分析 设计 测试等 重点内容。第1章软件与软件工程的概念。1.了解与软件相关的基本概念,包括软件 程序 数据 文档。2.了解软件危机的表现及发生的原因。3.掌握软件工程的概念。4.软件生命周期由哪三个时期组成,每个时期又可划分为哪些阶段?每个阶段的主要任务是...

软件工程复习大纲

软件工程概论复习大纲。一 选用教材 软件工程导论 张海藩清华大学出版社 第5版 课程负责人 马丽。授课教师 08 软件工程1 3班马丽。二 考试方法。一 考试方法 笔试,闭卷,满分100分。二 考试时间 110分钟。三 试卷结构 一 题型及分数比例。选择题20 填空题 10 判断题 10 简答题20...