软件工程期末复习二

以下是我的一位同学整理的,标注是我做的,希望好好学习,顺利通过考试,软件工程最重要的是画图题。

1.什么是软件危机,它有哪些典型表现/span>

: 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件危机典型表现:对软件开发成本和进度的估计常常很不准确。

2.简述产生软件危机的原因和解决的思路。

:原因一方面与软件本身的特点有关,另一方面,是与已有软件开发、维护的方法不正确有密切关系。

采用工程化的原则和方法组织软件开发是摆脱软件危机的一个主要出路。

3.什么是软件工程有哪些本质特性/span>

: 软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。

软件工程本质特性:1、软件工程关注于大型程序的构造;2、软件工程的中心课题是控制复杂性;3、软件经常变化;4、开发软件的效率非常重要;5、和谐地合作是开发软件的关键;6、软件必须有效地支持它的用户;7、在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。

6.简述软件的定义。软件 程序 + 数据 + 文档

7.软件工程的目的为高质量的软件开发(软件过程目的)提供一个科学的体系框架

8.什么是软件工程方法学件工程是一种什么样的技术括哪三大要素为哪三个分支/span>

软件工程方法学就是指在软件生命周期全过程中使用的一整套管理和开发技术方法的集合。

软件工程是一种层次化的技术,有方法、工具和过程三大要素,并分为三个分支:软件开发技术、软件项目管理技术、软件质量管理技术。

9.简述软件工程的基本原理。

软件工程7条基本原理:

1.严格按照软件生命周期计划进行管理

2.坚持进行阶段评审

3.实行严格的产品控制

4.采用先进的程序设计技术

5结果应能清楚的审查

6.开发小组成员少而精

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

12.什么是软件程与软件工程方法学有何关系/span>

软件过程是指为了获得高质量软件产品,在软件工具支持下,由软件人员完成的一系列软件工程活动。

软件过程规定了开发软件所需完成的各项任务步骤。过程步骤的设定与软件生命周期、生命周期模型、软件开发工具,以及参与开发的人员等诸方面因素有关。

13.什么是软件生命周期么是软件生命周期模型/span>

: 软件如同自然界任何事物一样,都有其孕育、诞生、成长、成熟、衰亡的生存过程。软件的这一过程,称为软件生命周期。

软件生命周期模型也称软件开发过程模型,是为了解决产业环境中的实际问题,而提出的开发策略。是反映整个软件生命期中,系统开发、运行、维护等实施活动的一种结构框架。

15.试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明它们各自的适用范围。

1.瀑布模型。瀑布模型广为人知和历史悠久,其优势是规范及文档驱动的方法。但问题是,往往不能够真正满足用户的需求。适用于传统软件工程领域的结构化开发。

2.原型模型。是为了克服瀑布模型的缺点而提出来的。通过快速构建一个在机器上可运行的原型系统,让用户试用原型,并收集反馈意见的办法,来获取用户真实的需求。适用于需求不明确,分析需求

3.螺旋模型。螺旋模型适用于内容开发的大型软件项目,比起之前的其它模型而言,有其一定的优越性,但这些优越性并不是绝对的。主要体现在对开发人员的风险评估经验专门知识的要求较高。如果项目风险较大,而开发人员的水平较低,不能准确的识别和分析风险,则势必造成重大损失。增加了风险分析过程

4.增量模型。具有在软件开发早期阶段使投资获得明显回报和交易维护的优点,但是要求软件具有开放的结构。适用于时间紧迫,能在较短时间内提供可完成部分的产品

5.喷泉模型:面向对象方法学

第二章

1.在软件开发的早期阶段,为什么要进行可行性研究目的和任务各是什么/span>

可行性研究的目的是用最小的代价,在尽可能短的时间内确定问题是否可解决,以及是否值得解决。

可行性研究的任务不是解决问题,而是确定是否可解/值得解

2.应该从哪些方面研究目标系统的可行性/span>

1. 技术可行性。以现有技术,能否在预定时间内完成该系统开发。

2. 经济可行性。通过成本效益分析,估算系统的整体经济效益是否满足要求。

3. 操作可行性。分析系统的运行方式、操作规程是否适应用户应用需要。

4. 社会可行性。分析系统在法律、社会、市场等方面的认可度。

3.可行性研究有哪些工作步骤/span>

(1) 复查定义,确定系统规模和目标。

(2) 研究老系统

(3) 导出高层逻辑模型(conceptual design)

(4) 重新定义

(5) 导出多种解法

(6) 推荐行动方针

(7) 开发计划(粗略)

(8) 审查、存档

4.简述系统流程图在可行性研究中的作用。

系统流程图可以帮助了解和分析系统,以概括的方式表达对系统的认识,并可以描述未来物理系统的概貌。

5.简述数据流图在可行性研究中的作用和用途。

数据流图在可行性分析中可以帮助分析和描绘数据在软件中流动和被处理的逻辑过程,用图形的方式描述系统的逻辑功能,是系统分析员和用户之间理想的通信工具。

6.简单描述数据字典但内容和定义数据的方法。

数据字典主要由下列4种元素定义组成:1.数据流2.数据流分量3.数据存储4.处理

除了数据定义外,数据字典还应包含一些关于数据的其它信息。

定义数据的方法通常采用自顶向下分解的方式。并由顺序、选择、重复三种基本数据元素类型组成数据

第三章

1.为什么要进行需求分析常对软件系统有哪些需求/span>

一个高质量的软件,很大程度上取决于对要解决的问题的认识,以及如何准确的表达用户的需求。需求分析就是要解决这个问题。

通常,对一个软件系统的需求可以有功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求等多个方面。

2.怎样与用户有效地沟通,以获得用户的真实需求/span>

访谈

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

简易的系统规格说明文档

创建原型是获取真实需求的有效方法。

3.需求分析的任务是什么/span>确定对待开发系统的综合要求

4.通常系统的需求可以分为哪几个层次/span>

一般可以分成5个层次:

(1) 功能需求:系统必须做什么/strong>

(2) 业务需求:反映客户组织机构对系统高层次的目标要求。

(3) 运行需求:运行环境、软硬件配置等。

(4) 属性需求:包括用户关心的属性,如效率、灵活性、完整性、可靠性等;开发者关心的属性,如可维护性、可复用性、可移植性等。

(5) 未来可能的扩充需求:如HDIS各组的合并,3维虚拟现实的效果等等。

 

5.进行需求分析的步骤有哪些/span>

1.确定系统的综合要求

2.分析系统的数据要求

3.导出逻辑模型

4.修正系统开发计划

6.简述建立原型模型对软件需求分析的作用。

可以快速构建旨在演示目标系统主要功能的可运行程序,帮助用户确定及提供更为精准的需求,以利用户和开发者能够在目标系统应该“做什么”这一问题上尽快达成一致。

7.解释实体联系图及其用途。

实体联系图是按照用户的观点对数据建立的模型。描述从用户角度看到的数据,反映用户的现实环境,并且与在软件系统中的实现方法无关。

8.说明为什么需要进行需求验证及验证的步骤有哪些/span>

进行需求验证是为了确保软件开发的质量,降低开发成本。

通常对需求进行验证的步骤有:验证需求的一致性、验证需求的现实性、验证需求的完整性和有效性。

第四章

3.简单说明系统总体设计的步骤步骤。

典型的总体设计包括以下9个步骤:

1、确定最佳方案2、选取合理方案3、推荐最佳方案4、功能分解5、软件结构设计6、设计数据库7、制定测试计划8、书写文档9、审查和复审

 

5.为什么要尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,完全不用内容耦合/span>

减少模块之间的关联度,提高模块的独立性。因为内容耦合会导致一个模块修改另一个模块的内容,使得程序逻辑发生严重问题。而公共耦合是若干模块通过一个公共数据环境相互作用,公共部分的改动将影响所有调用它的模块,公共部分的数据存取无法控制,并且复杂程度也会随耦合模块的个数增加而增加。

控制耦合是一个模块通过传递开关、标志、名字等控制信息,明显地控制选择另一个模块的功能。由于接口单一,因此仍然会影响被控模块的内部逻辑。而数据耦合只是模块间通过数据参数来交换I/O信息,因此不会对其它模块产生任何等影响。

6.为什么模块的规模要适中/span>

过大不易理解;

太小则接口开销过大。

7.请说明为什么模块控制的宽度和深度要适度。

深度过大表示分工过细,而宽度过大则表示系统复杂度大,所以模块控制的宽度和深度要适度。

10.面向数据流的设计方法主要有哪几个步骤/span>

1.复查基本系统模型2.复查并精化数据流图3.确定数据流图具有变换特性还是事务特性4.确定输入流和输出流动边界,从而孤立出变换中心5.完成“第一级分解”6.完成“第二级分解”7.使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化

 

第五章

1.详细设计的任务是什么/strong>

包括模块的算法设计、

模块内的数据结构设计、

模块接口设计、

其它根据软件特点需要完成的设计、

模块测试用例设计、

设计文档编写、

设计评审。

2.在对系统做详细设计时,应遵循哪些原则/span>

模块的逻辑描述应清晰易读、正确可靠;

设计的处理过程应该简明易懂;

选择恰当的描述工具来描述模块算法。

3.简述结构化设计的特点。

自顶向下、逐步求精;

具有单入、单出的控制结构(取消GOTO语句)

4.结构化程序设计中有哪几种基本控制结构别描绘在程序流程图、盒图和PDA图中这些基本控制的图例。

PDA图中这些基本控制的图例。

(1) 顺序结构(2) 选择结构(3) 先判定型循环结构(4) 后判定型循环结构(5) 多情况选择

 

 

第六章

1.说明什么是程序编码什么程序设计语言的特点和编码风格会影响到程序的可靠性、可读性、可测试性和可维护性/span>

所谓“编码”,就是将在低级抽象层次得到的详细设计结果,翻译成用某种程序设计语言书写的程序。是软件设计的自然结果。

而程序设计语言是否有理想的结构化、模块化机制,是否有可读性好的控制结构和数据结构等特性,以及程序设计语言提供的编译、软件工具等,再加上程序的设计风格会很深刻的影响软件的质量和可维护性、可测试性、可靠性等。

6.为什么说软件界面设计的质量会直接影响到用户对软件产品的评价/span>

用户界面(User-interface)又称人机界面(man-computer interface),是用户和计算机联系的中间媒介,是系统中最重要、最关键的部分之一。用户界面设计的好坏,直接影响到系统设计的成败。

这是因为,如果一个界面设计的不好,也即通常所说的用户界面不友好,可以使用户在使用时感到不便,甚至制造麻烦,系统就难以发挥应有的效益,甚至可能被用户弃用。

7.什么是系统响应时间统响应时间有哪些重要属性/span>

系统响应时间指从用户完成某个控制动作,到系统给出预期响应的时间。系统响应时间有2个重要的属性:长度和易变性。

8.在设计软件系统的用户帮助设施时,需要注意解决哪些问题/span>

1.在用户与系统交互期间,是否任何时候都能获得关于系统任何功能的帮助信息/strong>

2.用户怎样请求帮助/strong>

3.怎样显示帮助信息/strong>

4.用户怎样返回到正常的交互方式中/strong>

5.怎样组织帮助信息/strong>

9.软件出错处理设计,即软件安全性设计。一个交互式出错处理程序应该具备哪些功能和属性/span>

1.信息应该使用用户可以理解的术语描述。

2.信息应该提供有助于从错误中恢复的建设性意见。

3.信息应该指出错误可能导致的后果。

4.信息应该伴随感官提示。

5.信息不能带有指责色彩。

10.测试的最基本目标是什么/span>

以尽可能小的代价,发现尽可能多的错误。

11.软件测试的原则有哪些/span>

应当把“尽早和不断的测试”作为座右铭

测试应由独立的专业测试机构来完成

测试工作要全面,但不可能实现“穷举”

只能尽可能查错,不能证明程序中没有错

软件测试符合2-8(Pareto)原理

应妥善保存测试文档

制定严格、合理的测试计划

错误经过修改后,相关的测试必不可少

19.为什么人工代码审查十分重要/span>

一次审查可发现多个错误,不必改一个测一个。

30.什么是调试试和测试有什么不同/span>

测试 —— 发现错误 ;调试 —— 改正错误

调试与测试的区别在于,调试作为测试的后续工作,主要是解决和排除测试中出现的错误

31.简单说明调试的方法和策略。

调试过程的关键不是调试技术,而是用来推断错误原因的基本策略。主要有:1.试探法:凭经验猜测。

2.回溯法:由症状(symptom)最先出现的地方,沿control flow向回检查。适用于小型程序。

对分法:在关键点插入变量的正确值。④  归纳法:从错误症状中找出规律,推断根源。⑤ 演绎法:普通 特殊

32.什么是软件的可靠性、可用性和正确性/span>

软件可靠性是指程序在给定的时间间隔内,按照说明书的规定,成功地运行的概率。

软件可用性是指程序在给定的时间点,按照说明书的规定,成功地运行的概率。

软件正确性是指程序的功能正确。

第七章

1.什么是软件维护/span>

在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。

2.软件维护有哪几种类型/span>

①改正性维护:诊断和改正错误;

②适应性维护:为了和变化了的环境(如软硬件升级、新数据库等)适当地配合而修改软件;

③完善性维护:为了增加新功能,修改已有功能,改造界面,增加HELP等,而修改软件; 

④预防性维护:为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件。

3.为什么说软件文档维护和代码维护同样重要/span>

这是因为,软件文档是影响软件可维护性的决定因素。

4.为什么说维护的代价很高该怎样做才能降低维护的代价/span>

一般维护的工作量占生存周期70%以上,维护成本约为开发成本的4(满足8-2规则)维护代价分为:

1.有形代价:费用已上升至总预算的80%

2.无形代价: a 占用资源以致延误开发;a修改不及时引起用户不满;a 维护引入新错误,降低了   软件质量;等等。

3.维护工作量的经验模型:M = P + K*ec-d

降低维护代价的通常认识是:提高程序的可维护性,这也是软件工程学的主要目的。

6.什么是软件的可维护性/span>

软件可维护性可定性地定义为:维护人员理解、改正、改动和改进这个软件的难易程度。

7.如何提高软件的可维护性/span>

可以从提高决定软件可维护性的因素着手,这些因素是:可理解性、可测试性、可修改性、可移植性、可重用性、可靠性、可使用性、效率等。

9.为什么说文档是影响软件可维护性的决定因素/span>

由于长期使用的软件系统在使用过程中会有多次修改的经历,而文档应该记载了这些重要的修改,所以文档比之代码更为重要。

10.什么是软件的系统文档/span>

系统文档是指软件系统从问题定义、需求说明、设计、实现到验收测试计划等一系列和系统实现密切相关的技术文档。

11.什么是软件的用户文档/span>

提供用户了解、使用、操作和安装系统的文档资料。

12.什么是可重用性何通过提高软件的可重用性来提高软件的可维护性/span>

可重用性是指同一事物不加修改或稍加修改,就可以在不同环境多次重复使用。大量使用可重用软件构件,可大幅提高软件的可维护性。主要体现在两个方面:

1.可重用构件通常都是组装成功的部件,加上每次重用又都会进一步完善部件,因此可以大幅提高软件的可靠性,而改正性维护要求会降低。

2.很容易修改可重用的软件构件,使之适应新的应用环境,因此软件中使用可重用构件越多,软件的适应性维护和完善性维护也越容易。

13.为什么要进行软件可维护性复审/span>

目的是提高软件的可维护性。

可维护性复审在软件开放的不同阶段有不同的重点。例如,在分析阶段的复审重点是:可靠性、可移植性、可用性。而编码阶段则主要是:可理解性、可修改性、可移植性和效率。

14.什么是软件的逆向工程和再工程/span>

软件逆向工程是指当维护对象缺乏必要的文档资料时,分析已有程序,寻求比源代码更高级的抽象表现形式,恢复软件原有设计的过程。换言之,是一个恢复设计的过程。

软件再工程则是以软件工程学为指导,对目标软件进行重新设计、重新编码和测试的过程。

15.逆向工程与再工程与软件的预防性维护有什么样的关系/span>

预防性维护是为了改进软件未来的可维护性或可靠性,或为了给软件未来的改进奠定更好的基础而修改软件的过程。预防性维护就是对软件将来可能需要的改动,使用逆向工程与再工程方法对软件进行维护。

                         第八章

1.为什么要引入面向对象方法学/span>

1、瀑布模型的缺点:僵化

2SA – SD – SP 技术的缺点:本质上是基于过程的设计不易被理解;且功能变化往往引起结构变化较大,稳定性不好。系统有明确的边界定义,且系统结构依赖于系统边界的定义,这样的系统不易扩充和修改。数据与操作分开处理,可能造成软构件对具体应用环境的依赖,可重用性(reusability)较差。

2.面向对象方法学有哪4个基本要素/span>

对象、类、继承、消息

3.面向对象方法学的优点主要有哪些/span>

1.以object为核心,强调对现实概念的模拟而不是算法。

2.以object模拟实体,需求变化不会引起结构的整体变化,因为实体相对稳定,故系统也相应稳定。

3.一个class所有的 instances 都可重用它的代码;由 inheritance 派生出的新的 class 可重用其父类的代码,并且可以修改、扩充而不影响其父类的使用。

4.从稳定性、Class 的独立性强、继承和多态性、容易理解、容易测试、调试等几方面改善了可维护性。

7.什么是模型件开发为什么要建立模型/span>

模型就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。

软件开发建立模型是为了帮助我们思考问题、定义术语、作出适当的假设,并帮助我们保持定义和假设的一致性。

对于较为复杂而不能直接理解的系统,特别需要建立模型,其目的是可以减少复杂性。

8.什么是对象模型立对象模型时主要使用哪些图形符号些符号的含义是什么/span>

描述系统数据结构。对象模型具体是描述系统的静态结构。

9.什么是动态模型立动态模型时主要使用哪些图形符号些符号的含义是什么/strong>

描述系统控制结构。动态模型具体是表示系统瞬时的控制性质。

10.什么是功能模型立功能模型时主要使用哪些图形符号/span>

描述系统功能。功能模型具体描述的是表明系统应该做什么。

 

 

第九章

1.进行面向对象分析的基本过程是怎么样的/span>

需求陈述 T 快速原型 T 模型      

其中模型 有三个:对象模型、动态模型、功能模型。

2.建立对象模型有哪几个步骤/span>

1、确定类与对象:

1步:列出所有候选对象     2步:去粗取精

2、确定关联 T 结构层

1步:收集     2步:筛选删除     3步:完善

3、划分主题 4、确立属性  5、识别继承关系及其它修改

3.复杂问题的对象模型有哪5个层次/span>

主题层、类&对象层、结构层、属性层、服务层。

4.建立动态模型的步骤有哪些/span>

1、编写脚本,描述事件序列:

事件 = 触发器 + 接收器 + 参数

2、设想用户界面T 修改原型.3、画事件跟踪图4、画状态图

5.如何建立功能模型/span>

1.画出基本系统模型图2.画出功能级数据流图3.描述处理框功能

 

第十一章

1.面向对象实现应该选用哪种程序设计语言什么/span>

应该选择能够更完整、更正确地表达问题域语义的面向对象语言。这是由于面向对象语言相对非面向对象的语言,其突出的优点:一致的表示方法、可重用性、可维护性。

2.面向对象程序设计语言主要有哪些技术特点/span>

面向对象语言的技术特点主要有:

a)  支持类与对象概念的机制

来源:Clark-dj

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年1月8日
下一篇 2020年1月8日

相关推荐