当前位置:文档之家› 软件工程第八章知识点

软件工程第八章知识点

软件工程第八章知识点
软件工程第八章知识点

一、选择

1、软件维护工作的最主要部分是(A )

A.改正性维护B.适应性维护

C.完善性维护D.预防性维护

2、软件维护工作中大部分的工作是由于(D )而引起的。

A.程序的可靠性 B.适应新的硬件环境

C.适应新的软件环境 D.用户的需求改变

3、在软件生存周期中,时间最长,所花费的精力和费用也最多的阶段是 B 。

A.详细设计 B.维护

C.概要设计 D.测试

4、修改软件以适应外部环境(新的硬件、软件配置)或数据环境(数据库、数据格式、数据输出/输入方式、数据存储介质)发生变化是指?( B )

A.改正性维护B.适应性维护

C.完善性维护D.预防性维护

5、软件的可维护性是评价软件质量的一个重要标准,下面关于提高软件可维护性的措施描述正确的有 A 。

(A)在进行需求分析的同时考虑维护问题

(B)设计时选择时间效率和空间效率尽可能高的算法

(C)提高程序可读性,尽量使用高级语言编程

(D)测试结束时,删除程序中的注解以缩短源程序长度

6、可维护性的特性中,相互矛盾的是 B 。

A.可理解性与可测试性 B.效率性和可修改性

C.可修改性和可理解性

D. 可理解性与可读性

7、各种软件维护的类型中最重要的是 A .

A.完善性维护 B.纠错性维护

C.适应性维护

D.预防性维护

8、软件维护困难的主要原因是 C 。

A.费用低 B.人员少

C.开发方法的缺陷

D.维护难

9、维护阶段的文档是 C 。

A.软件需求说明 B.操作手册

C.软件问题报告

D.测试分析

10、产生软件维护的副作用,是指 C 。

A.开发时的错误 B.隐含的挫样

C.因修改软件而造成的错误

D.运行时误操作

二、填空

1、在软件产品被开发出来并交付用户使用之后,就进入了软件的阶段。(运行维护)3、软件生命周期的最后一个阶段是软件的阶段,也是持续时间最长、代价最大的一个阶段。(维护)

2、软件工程的主要目的就是要提高软件的可性,减少软件所需要的工作量,降低软件系统的。(维护,维护,总成本)

4、是影响软件可维护性的决定因素。(文档)

5、实质上是软件再工程。(预防性维护)

6、维护可分为____,____,____,____四类。(改正性维护;适应性维护;完善性维护;预防性维护)

三、简答

1、决定软件可维护性的因素有哪些?

答:(1)可理解性

(2)可测试性

(3)可修改性

(4)可移植性

(5)可重用性

2、软件维护过程包括哪些方面?

答:(1)维护组织

(2)维护报告

(3)维护事件流

(4)保护维护记录

(5)评价维护活动

3、软件维护的定义和特点?

答:定义:所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。

特点:(1)结构化维护与非结构化维护差别巨大

(2)维护的代价高昂

(3)维护的问题很多

4、修改性维护与排错是否是一回事?为什么?

答案:修改性维护与排错不是一回事,改正性维护是对软件投入运行后,暴露出的一部分在测试阶段没有发现的错误,对软件进行的修改的过程。排错是错误发现后,对错误定位,然后修改程序的过程。前者是一种维护过程,而后者是维护过程中的一个步骤。

5、影响软件可维护性的主要因素有哪些?你认为的途径是什么?

答案:软件系统的维护,必须是软件是可以维护的,要使得软件可以维护,必须保证软件的可维护性。软件的可维护性是指理解,改正,改动,改进软件的难易程度。它受三各方面的影响:即软件的可理解性,可测试性,可修改性。

解决软件可维护性还有两个关键的问题:软件系统必须要有完整,详细的文档资料;并且要在系统开发中采用软件模块化,结构化设计,使用合适的程序语言,注意程序风格等。

软件工程重点整理

软件工程重点 (吐血整理——林新发) 红色的是重点中的重点 前面数字是课本页码 第一章概论 1 什么是计算机软件 计算机软件指计算机系统中的程序及其文档 3软件的特点 (1)软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算 (2)软件是被开发的或被设计的,它没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大 (3)软件的使用没有硬件那样的机械磨损和老化问题 4软件的分类 (1)系统软件(如操作系统、编译程序等)、 (2)支持软件(如数据库管理系统、网络软件、软件开发环境等)、 (3)应用软件(如实时软件、嵌入式软件、科学和工程计算软件、事务处理软件、人工智能软件等) 6软件工程定义 软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程 7生存周期 软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存周期 软件生存周期大体可分为如下几个活动:计算机系统工程、需求分析、设计、编码、测试、运行和维护 12能力成熟度模型CMM(了解一下) 初始级、可重复级、已定义级、已管理级、优化级 18瀑布模型(重) 系统工程、需求分析与规约、设计与规约、编码与单元测试、集成测试系统测试、运行与维护 第二章系统工程 41系统工程的任务 (1)识别用户的要求,确定待开发软件的总体要求和范围,

(2)系统建模和模拟 (3)进行成本估算,做出进度安排 (4)进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中作出选择。 (5)生成系统规格说明书 42可行性分析 (1)经济可行性(成本、效益、货币的时间价值、投资回收期、纯收入) (2)技术可行性(风险分析、资源分析、技术分析) (3)法律可行性 第三章需求工程 48软件需求 指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。 包括:功能需求、性能需求、用户或人的需求、环境需求、界面需求、文档需求、数据需求、资源使用需求、安全保密要求、可靠性需求、软件成本消耗与开发进度需求、其他非功能需求 50需求获取方法与策略(重) 建立顺畅的通信途径、访谈与调查、观察用户操作流程、组成联合小组、用况 51 图3.2 53 创建用况模型的主要步骤 (1)确定谁会直接使用该系统,即参与者(Actor) (2)选取其中一个参与者 (3)定义该参与者希望系统做什么,参与者希望系统作的每件事将成为一个用况 (4)对每件事来说,何时参与者会使用系统,通常会发生什么,这就是用况的基本过程 (5)描述该用况的基本过程 54需求分析原则(重) 1.必须能够表示和理解问题的信息域 2.必须能够定义软件将完成的功能 3.必须能够表示软件的行为(作为外部事件的结果) 4.必须划分描述数据、功能和行为的模型,从而可以分层次地揭示细节

软件工程 第八章 面向对象的设计方法

第八章面向对象的设计方法 本章采用基于UML的面向对象设计方法的将分析模型转换为设计模型。如第五章所述,面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。为完成这一转换过程,设计人员必须处理以下任务: (1)针对分析模型中的用例,设计实现方案。实现方案用 UML交互图表示。 (2)设计技术支撑设施。在大型软件项目中,往往需要一些技术支撑设施来帮助业务需求层面的类或子系统完成其功能。这些设施本身并非业务需求的一部分,但却为多种业务需求的实现提供公共服务。例如,数据的持久存储服务、安全控制服务和远程访问服务等。在面向对象设计中,需要研究这些技术支撑设施的实现方式以及它们与业务需求层面的类及子系统之间的关系。 (3)设计用户界面。 (4)针对分析模型中的领域概念模型以及第(2)、(3)两个步骤引进的新类,完整、精确地确定每个类的属性和操作,并完整地标示类之间的关系。此外,为了实现软件重用和强内聚、松耦合等软件设计原则,还可以对前面形成的类图进行各种微调,最终形成足以构成面向对象程序

设计的基础和依据的详尽类图。 面向对象的软件设计过程如图8-1-1所示。 图 8-1-1 面向对象的软件设计过程 第一节设计用例实现方案 UML 的交互图(顺序图、协作图)适于用例实现方案的表示。因此,本节首先介绍交互图的语言机制,然后探讨用例实现方案的设计方法。该设计方法包含如下3个步骤: (1)提取边界类、实体类和控制类; (2)构造交互图; (3)根据交互图精华类图。 一、顺序图 顺序图用来描述对象之间动态的交互关系,着重表现对象间消息传递的时间顺序。在顺序图中,参与交互的对象位于顶端的水平轴上,垂直轴表示时间,时间推移的方向是自上而下的。顺序图中的对象一般以“对象

软件工程知识点总结

软件工程(简要知识点) 一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。 2、四个方面:技术、经济、操作可行性、法律 3、数据流图四种成分:1、源点/终点2、处理3、数据存储 4、数据流 三、需求分析: 1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要求。 2、结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。 3、实体联系图:1、数据对象2、属性3、联系(1:1、1:N、M:N) 四、总体设计: 1.任务:回答“概括的说,系统应该如何实现”,用比较抽象概括的方式确定系统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定组成系统的每个程序结构。 2.系统设计阶段(确定系统具体实施方案)、结构设计阶段(确定软件结构) 3.模块独立:内聚和耦合 4. 耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的系统

5. 内聚(Cohesion): 一个模块内各元素结合的紧密程度 6.面向数据流的设计方法:变换流和事务流 五、详细设计: 1.任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。 2.过程设计的工具(程序流程图、盒图、PAD图、判定表、判定树) 七、测试: 1、单元测试:又称模块测试。每个程序模块完成一个相对独立的子功能,所以可以对该模块进行单独的测试。由于每个模块都有清晰定义的功能,所以通常比较容易设计相应的测试方案,以检验每个模块的正确性。 2、集成测试: 在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如,模块之间的通信和协调问题,所以在单元测试结束之后还要进行集成测试。这个步骤着重测试模块间的接口,子功能的组合是否达到了预期要求的功能,全程数据结构是否有问题等。 3、白盒测试技术(逻辑覆盖、基本路经测试)

软件工程第八章作业PHTRS精编版

某学院学科办公室决定开发基于Web 的毕业设计管理系统。说明如下: 毕业设计从选题开始。首先是指导教师提供多个毕业设计选题,通常一个毕业设计选题包括题目、指导教师姓名、选题意义、设计内容、技术指标等;学生可以从网上选题,确定自己的毕业设计题目,如果多个同学同时选同一个题目则先提交的同学选中该题目,而其他同学需要继续选题;学生可以查看自己所选的题目;教师可以查看是哪些学生选了自己的题目。 毕业设计以评价为结束。首先是指导教师评价自己所指导的学生,给出百分制分数,占最终成绩的40%;然后是评阅教师评价学生(不能是自己所指导的学生),给出百分制分数,占最终成绩的30%;接下来是答辩评价,多个教师(2-6人)对学生答辩情况打分,各自给出百分制分数,得平均值,占最终成绩的30%;学生可以查看自己的最终成绩;教师可以查看自己指导的学生的各项成绩;学院学科办公室可以查看所有的学生的各项成绩,并可以查看各项统计结果。 ①确定参与者;确定用例(包括用例名,用例简述);绘制用例图;对“网上选题”这个用例绘制活动图,并撰写用例详述(包括用例标识、用例名称、用例类型、用例描述、参与者、涉众利益、前置条件、基本事件流、扩展事件流、异常事件流、后置条件等项)。 参与者:指导教师、评阅教师、答辩教师、学生、学科办公室。 用例: 指导教师的用例:出题、评价所指导的学生、查看学生选题情况、查看学生成绩; 评阅教师的用例:评价所评阅的学生; 答辩教师的用例:评价答辩的学生; 学生:网上选题、查看选题情况、查看成绩; 学科办公室:查看统计结果、查看学生成绩; 用例图: 网上选题查看成绩毕业设计管理系统登录注册学生查看选题情况<>学科办公室查看学生成绩 查看统计结果

软件工程知识点汇总

软件工程知识点汇总 1 软件工程、软件工程方法学:三要素 1.1 软件工程:○1应用系统化的、规范化的、可度量的方法来开发、运行和维护软件,即将工 程应用到软件;○2对○1的各种方法的研究 1.2 软件工程是一门研究用工程化方法构建和维护有效的实用的和高质量的软件的学科 1.3 软件工程三要素是:方法、工具、过程 软件工程的方法:是指完成软件开发各项任务的技术方法 软件工具:是指为软件工程方法的运用提供自动半自动的软件支撑环境 软件工程过程:是指将软件工程方法和工具综合起来以达到合理、及时地进行计算机软件开发这一目的 2 软件工程的原则包括:模块化原则、信息隐蔽原则、抽象化原则、模块独立原则(内聚、耦合)、 依赖倒转原则、开闭原则等 2.1 模块化原则:指解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。模 块是程序中相对独立的成分,一个独立的编程单位,应有良好的编程接口,模块的大小要 适中,模块过大会使模块内部的复杂性增加不利于模块的理解和修改,模块过小会导致整 个系统表示过于复杂,不利于控制系统的复杂性。 2.2 信息隐蔽原则:采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。 2.3 抽象化原则:抽取事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向 下,逐层细化的办法控制软件开发过程的复杂性。 2.4 模块独立原则:是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少 且接口简单。要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块间由松 散的偶合关系,模块内部有较强的内聚性,这有助于控制系统的复杂性。(即:高内聚低 耦合) 2.5 依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象。 2.6 开闭原则:软件实体应该是可扩展的,但是不可以修改。即对于扩展是开放的,对于更改 是封闭的。 3 软件开发模型:瀑布模型;快速原型;喷泉模型;各种模型的工作原理、阶段、每阶段任务、 特点、示意图; 软件开发模型(也称为软件过程模型):是从软件项目需求定义开始直至软件经使用后废弃为止,跨 越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架 3.1 瀑布模型(又称线性模型): 3.1.1工作原理:规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。 前一阶段的工作成果是后一阶段工作开始的基础.所以,每个阶段都必须交出合格的文档,必须对前阶段的工作进行评审,前一阶段的工作完成后才可以开始后一阶段的工作 3.1.2 阶段: 计划时期:问题定义、可行性研究 开发时期:需求分析、设计、编码、测试 运行时期:运行和维护 3.1.3 各阶段任务: 1.需求分析和定义 在软件项目进行过程中,需求分析是从软件定义到软件开发的关键步骤,是今后软件,开发的基本依据,同时也是用户对软件产品进行验收的基本依据。需求分析和定义是以用

软件工程第八章知识点

一、选择 1、软件维护工作的最主要部分是(A ) A.改正性维护B.适应性维护 C.完善性维护D.预防性维护 2、软件维护工作中大部分的工作是由于(D )而引起的。 A.程序的可靠性 B.适应新的硬件环境 C.适应新的软件环境 D.用户的需求改变 3、在软件生存周期中,时间最长,所花费的精力和费用也最多的阶段是 B 。 A.详细设计 B.维护 C.概要设计 D.测试 4、修改软件以适应外部环境(新的硬件、软件配置)或数据环境(数据库、数据格式、数据输出/输入方式、数据存储介质)发生变化是指?( B ) A.改正性维护B.适应性维护 C.完善性维护D.预防性维护 5、软件的可维护性是评价软件质量的一个重要标准,下面关于提高软件可维护性的措施描述正确的有 A 。 (A)在进行需求分析的同时考虑维护问题 (B)设计时选择时间效率和空间效率尽可能高的算法 (C)提高程序可读性,尽量使用高级语言编程 (D)测试结束时,删除程序中的注解以缩短源程序长度 6、可维护性的特性中,相互矛盾的是 B 。 A.可理解性与可测试性 B.效率性和可修改性 C.可修改性和可理解性 D. 可理解性与可读性 7、各种软件维护的类型中最重要的是 A . A.完善性维护 B.纠错性维护 C.适应性维护 D.预防性维护 8、软件维护困难的主要原因是 C 。 A.费用低 B.人员少 C.开发方法的缺陷 D.维护难 9、维护阶段的文档是 C 。 A.软件需求说明 B.操作手册 C.软件问题报告 D.测试分析 10、产生软件维护的副作用,是指 C 。 A.开发时的错误 B.隐含的挫样 C.因修改软件而造成的错误 D.运行时误操作 二、填空 1、在软件产品被开发出来并交付用户使用之后,就进入了软件的阶段。(运行维护)3、软件生命周期的最后一个阶段是软件的阶段,也是持续时间最长、代价最大的一个阶段。(维护) 2、软件工程的主要目的就是要提高软件的可性,减少软件所需要的工作量,降低软件系统的。(维护,维护,总成本)

软件工程基础知识点总结

软件工程基础部分知识点总结 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素 3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)

1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。 1)研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统(高质量是指错误率低、好用、易用、可移植、易维护等)。 2)软件工程的三个要素:方法、工具和过程。 ①方法:完成软件工程项目的技术手段;

软件工程导论复习知识点

一、软件: 软件定义: 软件=程序+文档+数据 软件特点: 1、具有抽象性 2、没有明显的制造过程 3、软件的维护比硬件的维护要复杂得多 4、对计算机系统有着不同程度的依赖性 5、尚未完全摆脱手工艺的开发方式 6、软件本身是复杂的 7、软件成本相当昂贵 8、相当多的软件工作涉及到社会因素软件的发展: 程序设计、程序系统、软件工程 软件危机: 软件危机指的是软件开发和维护过程中遇到的一系列严重问题。 软件危机的问题: 如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软件。 软件危机表现: 1.开发成本难以控制,进度不可预计; 2.软件系统的质量和可靠性很差,难以满意; 3.软件文档相当缺乏,软件系统不可维护; 4.软件开发生产率很低,软件产品供不应求。 5.软件产品成本十分昂贵。

软件危机产生原因: 1、软件本身的特点 2、对软件开发与维护存在许多错误认识和做法 3、软件开发与维护的方法不正确 解决软件危机途径: 1、将软件开发看成是一种组织严密、管理严格、各类人员协同配合共同完成的工程项目。 2、研究和推广成功的软件开发技术和方法。 3、开发和使用好的软件工具。 软件生命周期: 软件所经历的定义、开发、使用和维护直到废弃所经历的时期。 程序设计环境: 源程序编辑,编译或解释,链接,调试和运行工具的集合 软件工程环境: 软件定义,设计和实现,测试和维护等各个阶段所使用的软件工具的集合 二、软件工程: 软件工程定义: 研究如何应用一些科学理论和工程上的技术来指导软件的开发,用较少的投资获得高质量的软件的一门学科。 软件工程性质: 涉及计算机科学、工程科学、管理科学、数学等领域,着重于如何建造一个软件系统。用工程科学中的观点来进行费用估算、制定进度、制定计划和方案。用管

软件工程期末复习知识点整理

复习整理 、绪论 1. 软件的定义 软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。(软件=程序+文档) 2.软件工程的定义 是指导计算机软件开发和维护的一门工程学科;采用工程化的原理与方法对软件进行计划、开发和维护;把证明正 确的管理技术和最好技术综合运用到软件开发中;研究经济地开发岀高质量的软件方法和技术;研究有效维护软件 的方法和技术。 3.软件危机的概念,及出现的原因 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。 产生原因: ⑴软件规模越来越大,结构越来越复杂 ⑵软件开发管理困难而复杂。 ⑶软件开发费用不断增加。 ⑷软件开发技术落后。 ⑸生产方式落后,仍采用手工方式。 ⑹开发工具落后,生产率提高缓慢。 4.三种编程范型的特点 (1)过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构 +算法;着眼于程序的过程和基本控制结构,粒度最小 (2)面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对 象,粒度比较大 (3)基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合 整个领域的类对象,粒度最大 二、软件生存周期与软件过程 1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动 定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期 目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段, 给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。 主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护( P19) 2、软件生命周期划分为哪几个阶段 软件生命周期分为三个时期八个阶段: 软件定义:问题定义、可行性研究; 软件开发:需求分析、概要设计、详细设计、编码、测试; 软件运行:软件维护

软件工程部分课后练习题答案

第一章 1.计算机系统是由计算机硬件系统和软件系统这两个密不可分的部分组成的。 2.计算机软件系统通过运行程序来实现各种不同应用,包括用户为自己的特定目的编写的程序、检查和诊断机器系统的程序、支持用户应用程序运行的系统程序、管理和控制机器系统资源的程序等。 3.在软件工程学中,软件开发技术包括软件开发方法学、软件工具和软件工程环境。 4.在软件工程层次结构中,包括工具层、方法层、过程、技术层和质量保证层。 5.在面向对象概念中,消息传递是其与外部世界相互关联的唯一途径。 第三章 1.软件需求分析,可以把软件功能和性能的总体概念描述为具体的软件需求规格说明,进而建立软件开发的基础。 2.软件需求工作基本上包括收集用户、市场等方面对项目的需要,经过分析建立解题模型,细化模型,抽取需求。 3.结构化分析方法的基本步骤是采用由顶向下对系统进行功能分解,画出分层数据流图;由后向前定义系统的数据和加工,绘制数据词典和加工说明;最终写出软件需求和规格说明书。 4.面向对象分析方法总是从理解系统的“使用实例”开始,基本步骤是:定义系统的用例,在领域分析的基础上建立问题域的类(对象模型),然后开始建立对象——关系和对象——行为模型。 5.需求分析评审过程由以下5个步骤组成:规划、准备、召开审查大会、修改缺陷、重审。第四章 1.与软件需求分析一样,软件设计也有两种主要设计方法:以结构化设计为基础的结构化软件设计和面向对象方法指导的面向对象软件设计。 2.传统的软件设计任务通常分两个阶段完成。第一个阶段是概要设计,包括体系结构设计

和接口设计,并编写概要设计文档;第二阶段是详细设计,其任务是确定各个软件的数据结构和操作,产生描述各软件组件的详细设计文档。 3.结构化的软件设计方法是一种面向数据流的设计方法,在面向数据流的方法中,数据流是考虑一切问题的出发点。 4.在数据流图中所代表的结构化设计模型中,所有系统均可纳入两种典型的形式,因此系统结构图也有两种类型:变换型系统结构图,事务型系统结构图。 5.Jackson表示法包括图形描述(Jackson图)和文本描述(Jackson伪代码)两种形式。 第五章 1.与结构化设计一样,面向对象设计也是将分析阶段所建立的分析模型转变为软件设计模型,应用数据设计(对象属性设计)、接口设计(消息模型开发)以及过程设计(子系统级设计)。 2.当两个子系统相互通信时,可以建立客户机/服务器连接或端对端连接。 3.系统设计不仅包括主要的业务需求子系统设计,还包括用户界面子系统设计、任务管理子系统设计、数据管理子系统设计。 4.对象设计强调从问题域的概念转换成计算机领域的概念,通过对象的描述、算法和数据结构设计、程序构件和接口,实现相关的类、关联、属性和操作。 5.在面向对象设计中系统设计的主要目标是表示软件体系结构。对象设计着重于对象及其交互的描述 第八章 1.软件程序测试的目的是发现程序中的错误,其主要任务是通过在计算机上执行程序,暴露程序中潜在的错误。

软件工程知识点总结

软件工程知识点总结 软件工程专业是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。接下来是为大家收集的软件工程知识点总结,以供大家学习! 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素

3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件) 1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。

第8章 软件工程 习题与答案

本章习题(P206-208) 一、复习题 1.简述软件的特点 答: 软件相对硬件而言有许多不同特点。了解这些特别之处能够帮助我们全面.正确地理解计算机软件。 (1)软件是一种逻辑实体,而不是具体的物理实体,具有很强的抽象性。我们只能把它记录在介质上,或在系统上运行,但却无法直接通过我们的眼睛看到软件的形态。 (2)软件是一个逻辑上复杂而规模上庞大的系统,涉及技术.管理等多方面的问题。如果将代码比作零件,则一个软件是由成百上千万个零件组成的复合体,而且其结构远较机械装置复杂。应该说软件的复杂程度高于同等规模的硬件产品。 (3)软件是智力产品,其价值体现在解决问题的知识和能力,而并不体现在软件载体本身。软件的生产方式与硬件明显不同,设计方法和制造阶段不同;软件的生成成本主要在研发设计上,而大量复制几乎没有成本。 (4)在软件的运行和使用期间,没有硬件的磨损.老化问题。但软件维护比硬件维护要复杂得多,软件的故障主是由于对软件的改变和使用环境的变化引起的。 (5)软件的开发和运行对硬件有较强依赖关系。在软件开发有可移植性的问题,现在通常把软件的可移植性作为衡量软件质量的重要因素之一。 (6)软件工作涉及许多社会因素。软件与人的关系密切,涉及到语言.文化等多方面,甚至关系到的道德领域。 {P182} 2.什么是软件危机?主要有哪些表现?其产生的原因是什么? 答: 软件危机是软件开发领域,特别是在大型软件开发和维护过程中遇到的一系列严重问题的统称。 软件危机主要表现为费用高.开发过程不易控制.工作量估计困难.软件质量低.软件项目失败率高.无法判断大型系统能否正常工作以及软件维护任务重等现象。 产生软件危机的主要原因,一方面是软件本身所固有的抽象性.复杂性等特性;另一方面是人们当时对软件和软件开发过程的不正确认识。 {P182-183} 3.简述什么是软件工程 答: 软件工程是应用计算机科学.数学及管理科学等原理开发软件的工程。它借鉴系统工程的原则.方法,以提高质量,降低成本为目的。软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门学科。采用工程化方法和途径来开发与维护软件。 {P183-184} 4.简述软件工程研究的基本内容与目标 答:

软件工程知识点

第一章软件工程概述 一、软件的定义和特性(P2—P3) 定义:软件=程序+数据+文档 程序:按照事先设计的功能和性能要求执行的指令或语句序列 数据:程序能正常操纵信息的数据结构 文档:描述程序操作和使用的文档 特性: (1)软件是一种逻辑实体,具有抽象性,不是一般的物理实体; (2)软件的成产与硬件存在某些相同点,但有根本上的不同,软件开发是人的智力的高度发挥,而不是传统意义上的制造,它更依赖于开发人员的素质,智力,人员和组合,合作和管理; (3)软件维护与硬件维修有着本质的差别,软件维护没有硬件维护那样有可替换的标准零件; (4)软件在运行和使用期间没有硬件那样的机械磨损,老化问题,但存在退化问题; (5)基于构件的开发方法由于其自身的特点越来越受到人们的重视,这些技术可以减少开发时间、提高质量,并提高复用水平。 * 掌握P4图1-2(b)软件失效率曲线 二、计算机软件的发展经历了几个阶段?各有何特征?(P1—P2) 共经历了四个阶段 特征:第一阶段——程序规模小且主要采用个体工作方式,开发的系统大多采用批处理技术 第二阶段——引入人机交互的概念,实时系统出现,产生了第一代数据库管理系统,程序编制采用了合作的工作方式,出现了早期的软件危机 第三阶段——分布式系统出现,嵌入式系统得到广泛应用,低成本硬件 第四阶段——强大的桌面系统和计算机网络迅速发展时期,面向对象技术得到广泛应用,人工智能技术和专家系统开始应用于软件。 三、什么是软件危机?其产生的原因是什么? 定义:软件危机是指由于落后的软件生产方式无法满足迅速增长的计算机软件应用需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。(P4) 原因:(P5) (1)用户对软件需求的描述不准确、不全面,甚至有错误,以及在开发过程中,不断提出或者修改需求; (2)用户和开发人员对软件需求的理解存在差异,导致所开发的软件产品和用户需求不一致; (3)大型软件项目需要组织一定的人力共同完成,各类人员的信息交流不及时、不准确,有时还可能产生误解,软件开发人员对大型软件缺少开发经验,管理人员缺少相应的管理经验; (4)软件开发人员不能有、独立自主的处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误; (5)开发技术落后,缺乏有效的方法学和工具方面的支持,过分依赖程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化 (6)软件产品的特殊性和人类智力的局限性,导致人们无法处理“复杂问题”,因为软件是逻辑产品,软件开发进展情况较难衡量、软件开发质量难以评价、管理和控制软件开发过程相当困难。 四、什么是软件工程?它的目标和内容是什么? 定义:将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中,并对方法的研究。(P6) 目标:在给定的成本和进度前提下,开发出具有可修改性、可理解性、可维护性、有效性、可靠性、可适用性、可重用性、可移植性、可跟踪性和互操作性并且满足用户需求的软件产品。(P7) 内容:主要内容包括软件开发技术和软件工程管理两方面。(P6) 要素:方法,工具,过程 五、什么是软件生存周期?它有哪几个活动? 定义:(software life cycle)把软件产品从形成概念开始,经过定义、开发、使用和维护直到最后退役的全过程。 活动:软件定义、软件开发、软件使用维护和退役(P9)

软件工程复习知识点

1.软件危机的概念,内容,原因及消除的途径;软件危机的概念: 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。概括地说,软件危机包含两方面问题: 如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。软件危机产生的原因: 软件本身的复杂性、难衡量的特点; 2. 软件开发与维护的方法不正确。消除软件危机的途径: (1)对计算机软件应当有一个正确的认识; (2)应当有组织、有计划、通过严格的管理手段进行软件的开发; (3)及时总结软件开发的成功技术和方法并加以推广; (4)开发和使用更好的软件工具; 总之,为了解决软件危机,既要有技术措施,又要有必要的组织管理措施。 2.软件工程的定义,基本原理;定义:软件工程是指导计算机软件开发和维护的一门工程学科。基本原理:软件工程的7 条基本原理: (1)用分阶段的生命周期计划严格管理 (2)坚持进行阶段评审 (3)实行严格的产品控制 (4)采用现代程序设计技术 (5)结果应能清楚地审查 6)开发小组的人员应该少而精 7) 承认不断改进软件工程实践的必要性 3.软件工程方法学的基本概念、内容;基本概念:把在软件生命周期全过程中使用的一

整套开发和管理技术方法的集合成为软件工程方法学,也称为范型。软件工程方法学包含3 个要素:方法、工具和过程。 内容:目前使用得最广泛地软件工程方法学,分别是传统方法学和面向对象方法学。传统方法学也称为生命周期方法学或结构化范型。 4.软件生命周期的具体内容,每一个阶段的任务是什么?结合具体的工程例子来理解做 软件项目主要分那几个个阶段。 ①问题定义:确定要求解决的问题是什么 ②可行性研究:决定该问题是否存在一个可行的解决办法 ③需求分析:深入了解用户的要求,在要幵发的目标系统必须做什么问题和用户取得完全一致的看法。 ④概要设计:概括回答怎样实现目标系统。概要设计又叫逻辑设计、总体设计、高层设计。 ⑤详细设计:把解法具体化,设计出程序的详细规格说明。详细设计也叫模块设计、底层设计。 ⑥编码和单元测试:编写程序的工作量只占软件幵发全部工作量的10沧20%。 ⑦综合测试:软件测试的工作量通常占软件幵发全部工作量的40沧50%。 ⑧软件维护:软件维护的费用通常占软件总费用的55 %-70% ①②③为软件定义时期,④⑤⑥⑦为软件幵发阶段。④⑤为系统设计,⑥⑦为系统实现。 5.理解几个典型软件过程的内容及其优点与缺点:瀑布模型、增量模型、快速原型模型、 螺旋模型、喷泉模型等;瀑布模型内容:瀑布模型是带“反馈环”的。优点:(1)可强迫开发人员采用的规范的方法(结构化技术)。 (2)严格地规定了每个阶段必须提交的文档。

软件工程(第五版)--习题及答案---第八章

一、判断题 1、(√)使用括号改善表达式的清晰性。 2、(×)对递归定义的数据结构不要使用递归定义的过程。 3、(×)尽可能对程序代码进行优化。 4、(√)不要修改不好的程序,要重新编写。 5、(√)不要进行浮点数的相等比较。 6、(×)应尽可能多地使用临时变量。 7、(√)利用数据类型对数据值进行防范。 8、(×)用计数方法而不是用文件结束符判别批量数据输入的结束。 9、(×)程序中的注释是可有可无的。 10、(√)使用有意义的标识符。 11、(×)应尽量把程序编写的短一些。 12、(×)应尽量使用goto语句。 二、选择题 1、在编码中首先要考虑的是(B)。 A、程序的执行效率 B、程序的可读性 C、程序的一致性 D、程序的安全性 2、(D)。不属于序言性注释内容的是 A、模块设计者 B、修改日期 C、程序的整体说明 D、语句功能 3、序言性注释应置于文件或模块的(A)位置。 A、起始 B、结束 C、中间 D、起始和中间 4、如果编写系统软件,可选用的语言是(C)。 A、FoxPro B、COBOL C、C D、FORTRAN 5、选择程序设计语言不应该考虑的是(B)。 A、应用领域 B、语言的功能 C、用户的要求 D、用户的使用水平 6、与编程风格有关的因素不包括(D)。 A、源程序文档化 B、语句构造 C、输入输出 D、程序的编译效率 7、最早用于科学计算的程序设计语言是(C)。 A、PROLOG B、Smalltalk C、FORTRAN D、COBOL 8、功能性注释的主要内容不包括(B)。 A、程序段的功能 B、模块的功能 C、数据的状态 D、语句的功能 9、对建立良好的编程风格,下面描述正确的是(A)。 A、程序应简单、清晰、可读性好 B、符号名的命名只要符合语法即可 C、充分考虑程序的执行效率 D、程序的注释可有可无 10、源程序中应包含一些内部文档,以帮助阅读和理解程序,源程序的内部文档通常包括合适的标识符、注释和(A)。 A、程序的布局组织

软件工程复习知识点

软件工程复习知识点 1. 软件危机的概念,内容,原因及消除的途径; 软件危机的概念: 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。 概括地说,软件危机包含两方面问题:如何开发软件,以满足对软件日益增长的需求; 如何维护数量不断膨胀的已有软件。 软件危机产生的原因: 软件本身的复杂性、难衡量的特点;2.软件开发与维护的方法不正确。 消除软件危机的途径: (1)对计算机软件应当有一个正确的认识;(2)应当有组织、有计划、通过严格的管理手段进行软件的开发;

(3)及时总结软件开发的成功技术和方法并加以推广; (4)开发和使用更好的软件工具; 总之,为了解决软件危机,既要有技术措施,又要有必要的组织管理措施。 2. 软件工程的定义,基本原理; 定义:软件工程是指导计算机软件开发和维护的一门工程学科

基本原理:软件工程的7条基本原理: (1)用分阶段的生命周期计划严格管理 (2)坚持进行阶段评审 (3)实行严格的产品控制 (4)采用现代程序设计技术 (5)结果应能清楚地审查 (6)开发小组的人员应该少而精 (7)承认不断改进软件工程实践的必要性 3. 软件工程方法学的基本概念、内容; 基本概念:把在软件生命周期全过程中使用的一整套开发和管理技术方法的集合成为软件工程方法学,也称为范型。软件工程方法学包含3个要素:方法、工具和过程。 内容:目前使用得最广泛地软件工程方法学,分别是传统方法学和面向对象方法学。传统方法学也称为生命周期方法学或结构化范型。 4. 软件生命周期的具体内容,每一个阶段的任务是什么?结合具体的工程例子 来理解做软件项目主要分那几个个阶段。 ①问题定义:确定要求解决的问题是什么 ②可行性研究:决定该问题是否存在一个可行

软件工程概论知识点汇总

软件危机是指在计算机软件的开发和维护过程中遇到一系列严重问题。 软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门。 软件工程方法学包含3个要素:方法、工具和过程 目前使用最广泛的软件工程方法学,分别是传统方法学和面向对象方法学 软件生命周期由软件定义、软件开发和运行维护3个时期组成。 软件生存周期是指一个软件从提出开发要求开始直到软件报废为止的整个时期。 通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型。 软件定义分3个阶段,即问题定义、可行性研究和需求分析。 可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。 可行性研究的主要内容包括技术可行性、经济可行性和操作可行性3个方面。 开发时期由4个阶段组成:总体设计、详细设计、编码和单元测试,综合测试。其中前两个阶段称为系统设计,后两个阶段称为系统实现。 系统流程图是概括地描绘物理系统的传统工具;而数据流图是系统逻辑功能的图形表示工具。 模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。 分析建模的用处是为了更好地理解复杂事物。 软件需求分析的目标是深入描述软件的功能和性能,确定软件设计的约束和软件同其它系统元素的接口细节,定义软件的其它有效性需求。 需求分析过程应该建立3种模型,分别是数据模型、功能模型和行为模型。 数据模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系。 结构程序设计的定义:如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制接口进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、判定树。 衡量模块独立程序的两个定性标准是内聚和耦合。 确认测试也称为验收测试,它的目标是验收软件的有效性。 等价划分是一种黑盒测试技术,这种技术把程序的输入域划分成若干个数据类,据此导出测试用例。一个理想的测试用例能独立发现一类错误。 软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功的运行的概率。 软件的可用性是程序在给定的时间点,按照规格说明书的规定,成功的运行的概率。 软件工程的主要目的就是要提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。 数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。 Jackson方法是一种面向数据结构的设计方法。 完整的软件测试一般要经过单元测试、集成测试、确认测试和系统测试等4个阶段。 模块化是指把程序划分成独立命名切可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。 软件复杂性度量的参数包括: ①规模②难度③结构④智能度 数据字典应该有下列4类元素的定义组成: 1、数据流; 2、数据流分量(即数据元素) 3、数据存储 4、处理 产生软件危机的原因?

软件工程实践者的研究方法知识要点

软件与硬件的区别:本质逻辑与物理;软件是设计开发的;软件不会磨损;大部分软件是按需定制的。IEEE定义:(1)将系统化、规范化、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;(2)在(1)中所述方法的研究。 框架活动:沟通、策划、建模、构建、部署 成熟级别:第0级:不完全级、1已执行级、2已管理级、3已定义级、4已定量管理级、5优化级软件生命周期:软件计划与可行性研究、需求分析、软件设计、编码、软件测试、运行与维护 瀑布模型:特点—文档驱动优点:消除非结构化软件;降低软件的复杂度,促进软件开发工程化缺点:实际项目开发中很少遵守瀑布模型提出的顺序;客户难以清楚的描述真正的需求;客户要等到开发周期的晚期才能看到程序运行的测试版本;在线性过程的开始和结束,容易发生“阻塞状态”RAD缺点:1、对于大型项目,需要大量人力资源来创建相对独立的RAD团队 2、如果开发者和客户没有做好短时间急速完成系统的准备,则可能导致失败 3、因为是构件式开发,如果一个系统不能合理的模块化,会带来很多问题 4、如果系统需求是高性能的,并且需要通过调整构件接口的方式来提高性能,则不能采用RAD模型 5、技术风险高的情况下,不宜采用RAD模型,如项目开发使用大量的新技术 敏捷团队成员特点:基本能力、共同目标、精诚合作、决策能力、模糊问题解决能力、 相互信任和尊重、自我组织 4个框架活动:策划、设计、编码和测试设计原则:KIS 结对编程:两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计 优点:结对的两人完成其工作,所开发代码和其他工作集成。有些情况下,这种集成工作由集成团队按日实施,还有一些情况下,结对者自己负责集成,这种“连续集成”策略有助于避免兼容性和借口问题,建立能及早发现错误的“冒烟测试”环境 Scrum原则:1组织小团队,以达到“沟通最大化,负担最小化,非语言描述、非形式化知识” 2过程对技术和业务变化具有适应性,以“保证制造具有最好可能的产品” 3过程生产频繁发布“可检查、可调整、可测试、可文档化、可构建”的软件增量 4开发工作和开发人员划分为“清晰的、低耦合的部分或包” 5坚持在产品构建中进行测试和文档化 6提供在任何情况下都能完成产品的能力 宏要素:基于计算机的系统,它作为更大的基于计算机的系统的一部分 系统工程的层次结构:全局视图、领域视图、要素视图、详细视图 导出需求遇到的问题:范围问题、理解问题、易变问题 协同需求收集会议的基本原则:1软件工程师和客户共同举办和参与 2制定筹备与参与会议的规则3拟定一个会议议程:既涵盖重点,又鼓励自由交流4由一个主持人控制会议

相关主题
文本预览
相关文档 最新文档