一、选择题(2’ ×10=20‘)
二、填空题(2’ ×3=6‘)
三、名词解释(8’ ×8=64‘)
四、画图题(5’ ×2=10’)
案例题。软件工程的基本原理。
1. 用分阶段的生命周期计划严格管理。
2. 坚持进行阶段评审。
3. 实行严格的产品控制。
4. 采纳现代程序设计技术。
5. 结果应能清楚地审查。
6. 开发小组的人员应少而精。
7. 承认不断改进软件工程实践的必要性。
软件工程的定义。
将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。
软件工程的原则。
软件工程原则:抽象、信息隐藏、模块化、局部化、一致性、完整性和可验证性。
软件工程方法学及软件工程方法学的三要素。
方法学:在软件生命周期全过程中使用的一整套技术方法的集合成为方法学,目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。
传统方法学:传统方法学也称为生命周期方法学或结构化范型。它采用结构化技术来完成软件开发的各项任务。
传统方法学的特点:传统方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。每个阶段的开始和结束都有严格标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段的开始标准。
面向对象方法学:面向对象方法把数据和行为看成是同等重要的,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。
软件工程方法学的三要素:工具,方法,过程。
什么是软件的生命周期。
软件生命周期是指某一软件项目被提出来并着手实现开始直到该软件报废或停止使用为止。软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成。
软件定义时期的任务是:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。
开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。
维护时期的主要任务是使软件持久地满足用户的需要。
生命周期模型简洁地描述软件过程,又称过程模型。
什么是黑盒测试?什么是白盒测试?
黑盒测试(又称功能测试)把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。黑盒测试是在程序接口进行的测试,只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息(例如数据库或文件)的完整性。
白盒测试(又称结构测试)是把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。
需求变更可能带来哪些风险?
软件交付时间延长,软件成本提升,人事安排的变动,缺乏技术上的支持,现有软件架构不符合软件需求,使软件项目不能被实现。或最终产品达不到用户要求。
软件工程的基本目标有哪些?
组织实施软件工程项目,最终目标是降低软件的开发成本,提高软件的质量、软件的可维护性和软件开发的效率。软件工程的主要目标是生产具有正确性、可用性以及开销合适的产品。
软件测试的目标是什么?
测试决不能证明软件是正确的,也不能证明错误的不存在,它只能证明错误的存在。
软件测试的基本任务是什么?简述测试的目标和基本原则?
基本任务。 软件测试的基本工作就是就是通过科学的、可靠的、有效的测试方法及技术找出软件中存在的缺陷。
基本准则。 所有测试都应该能追溯到用户需求;
应该远在测试开始之前就制定出测试计划;
把pareto原理应用到软件测试中;群集现象: 80 %的错误可能是由 20 %的模块造成的。
应该从“小规模”测试开始,并逐步进行“大规模”测试;
穷举测试是不可能的;
为了达到最佳的测试效果,应该由独立的第三方从事测试工作。
如何理解模块独立性?用什么指标来衡量模块独立性?
模块独立性是指软件系统中的每个模块只涉及软件要求的具体字功能,只通过简单的接口和软件系统中其他模块相联系。模块的独立性好,对软件的可靠性和软件的可维护性是很有帮助的,耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量,模块的独立性度量的准则:模块间的耦合与模块的聚合。
耦合是模块间的独立关系的度量,模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。降低耦合度的设计原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共耦合的范围,完全不用内容耦合。
聚合是模块内部各元素之间结合的紧密的度量,软件的设计目标:高内聚。
uml是什么,主要作用是什么?
uml(unified modeling language)是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统的文档。
使用uml进行软件系统的分析与设计,能够加速软件开发的进程,提高**的质量,支持变动的业务需求。
uml适用于各种大小规模的软件系统项目,能促进软件复用,方便地集成已有的系统软件资源。
uml是一种标准的表示方法,为不同领域的人提供了一种统一的交流方法。
uml采用面向对象的图形方式来描述任何类型的系统,因此,uml具有广泛的应用领域。
uml的应用覆盖了从需求分析阶段到软件测试阶段的各阶段。
什么是软件?它的特性是什么?
软件的定义。
软件是程序、数据以及开发、使用和维护程序需要的所有文档的完整集合。软件一般认为由三部分组成:
程序:在运行时,能提供所希望的功能和性能的指令集。是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列。
数据结构:使程序能够正确运行的数据结构。
文档:描述程序研制过程、方法及使用的文档。
软件的特点:
是一种逻辑产品,不是物理实体。
无折旧、磨损、消耗、老化
软件产品的开发主要是脑力劳动。
成本昂贵(人力、物力、资金)
对硬件具有依赖性(可移植性)
软件复杂的(逻辑系统)
软件工程过程有哪几个基本过程活动?
需求分析,系统设计,编码,测试和维护。
软件开发过程是把用户要求转化为软件需求,把软件需求转化为设计,用**来实现设计,对**进行测试,完成各阶段的文档编制并确认软件可以投入运行使用的过程。
什么是软件开发模型?典型的软件开发模型有哪些?
软件开发模型是指软件开发全部过程,活动和任务的结构框架。
瀑布模型软件开发方法的基本过程及优缺点。
将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型,包括问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试和维护。规定了由前至后、相互衔接的固定次序,恰如奔流不息拾级而下的瀑布。
实际情况是,每项活动都有以下特征:
从上一项活动接受本项活动的工作对象,作为输入。
利用这一输入实施本项活动的工作内容。
给出本项活动的工作成果,作为输出传给下一项的活动。
对本项活动实施的工作进行评审,若其工作得到确认,则继续进行下一项活动,否者返回前项,甚至更前项的活动进行返工。
瀑布模型的优点:
可强迫开发人员采用规范的方法(例如,结构化技术); 严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型。
瀑布模型的缺点:
缺乏灵活性,无法解决软件需求不明确或不准确的问题。由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。适用于需求已准确定义的项目。
为什么要进行需求分析?需求分析要经过哪些步骤?及需求分析的任务?
掌握全部需求,准确定位目标系统,所具备功能。
一般分为以下四个步骤进行:
1. 需求获取:调查研究;
2. 需求提炼:分析建模;
3. 需求描述:编写srs;
4. 需求验证。
需求分析的任务。
1. 确定对系统的综合需求。
1)功能需求:所开发软件系统必须提供的服务,划分出系统必须完成的所有功能。
2)性能需求:所开发软件的技术性能指标,比如存储容量、响应时间等。
3)环境需求:软件运行时所需要的软、硬件的要求。
4)接口需求:描述应用系统与它的环境通信的格式。
5)用户界面需求:人机交互方式、输入/输出数据格式等。
6)其他需求,包括可靠性、安全性、保密性、可移植性等方面的需求。
2. 分析系统的数据需求;
分析系统事务数据要求通常采用建立数据模型的方法。
建立数据模型---实体联系图(er图);
描述数据结构---层次方框图和warnier图。
3. 建立软件的逻辑模型;
用数据流图、数据字典、实体-联系图和主要的处理算法等描述目标系统的逻辑模型。
4. 修正系统开发计划。
在对系统分析的过程中,可以估计系统开发的成本和进度,修正之前的开发计划。
需求分析建模的主要方法。
需求分析建模过程应该建立3种模型:
数据模型:er图。
功能模型:数据流图。
数据流图的概念:数据流图(dfd)是一种图形化技术,用于表示系统逻辑模型,它以直观的图形清晰地描述了系统数据的流动和处理过程。是分析员与用户之间极好的通信工具。
行为模型:状态转换图。
么是软件危机?它有哪些主要表现?为什么会产生软件危机?
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。主要是两个问题。
如何开发软件,怎样满足对软件的日益增长的需求。
如何维护数量不断膨胀的已有软件。
主要表现:(×
对软件开发成本和进度的估计常常很不准确。
用户对“已完成”的软件系统不满意的现象经常发生。
软件产品的质量往往不可靠。软件可靠性和质量保证的定量概念刚刚出现不久。可靠性得不到保证。
软件常常是不可维护的。通常软件维护的费用占总费用的55%-70%。
软件通常没有适当的文档资料,给软件开发和维护带来极大困难。
软件成本在计算机系统总成本中所占的比例逐年上升。
软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势。
产生软件危机的原因(×)
与软件本身的特点有关。
软件不同于硬件,它是计算机系统的逻辑部件而不是物理部件。在写出程序**并在计算机运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价。因此,管理和控制软件开发过程相当困难。
软件不易于维护。
a) 软件维护通常意味着改正或修改原来的设计,客观上使软件较难维护。
b) 软件不同于一般程序,它的规模大,不易于维护。
在软件开发过程中,或多或少地采用了错误的方法和技术。
软件工程期末复习
软件工程复习资料。一 选择题,请从四个可选项中选择正确答案。1.软件工程学科出现的主要原因是 a.计算机的发展。b.其他工程科学的影响。c.软件危机的出现。d.程序设计方法学的影响。2 是职业软件工程师的必要条件。a.自律 善于沟通 具有一定的软件技能 b.编程速度快。c.熟悉众多的软件环境d.语言...
软件工程期末复习
作者 日期 软件工程复习资料。一 选择题,请从四个可选项中选择正确答案。1.软件工程学科出现的主要原因是 a.计算机的发展。b.其他工程科学的影响。c.软件危机的出现。d.程序设计方法学的影响。2 是职业软件工程师的必要条件。a.自律 善于沟通 具有一定的软件技能 b.编程速度快。c.熟悉众多的软件...
软件工程期末复习
第一章。1.产生软件危机的原因?表现?原因 3点 1 开发人员方面,对软件产品缺乏正确认识,没有真正理解。软件产品是一个完整的配置组成。造成开发中制定计划盲目 编程草率,不考虑维护工作的必要性。2 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的 公认的方 和规范指导,造成软...