软件工程习题200题之一
我的软件工程笔记99年末的一段,是当时几乎所有软件工程书籍的习题。这里整理出来,希望对大家学习软件工程有益。
1、 什么是软件危机?产生软件危机的原因?怎样消除?
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机产生的原因:
(1) 软件不同于硬件,它是计算机系统的逻辑部件而不是物理部件。在写出程序代码并在计算机上试运行之前,软件开发过程的进展情况较难衡量。很难检验开发的正确性且软件开发的质量也较难评价。因此,控制软件开发过程相当困难。此外,在软件运行过程中发现错误,很可能是遇到了一个在开发期间引入的、但在测试阶段没有能够检测出来的错误,所以软件维护常常意味着修改原来的设计。这样,维护的费用十分惊人,客观上使得软件较难维护。
(2) 软件开发的过程是多人分工合作,分阶段完成的过程,参与人员之间的沟通和配合十分重
要。但是,相当多的软件开发人员对软件的开发和维护存在不少错误的观念,在实践的过程中没有采用工程化的方法,或多或少采用了一些错误的方法和技术,这是造成软件危机的主要原因。
(3) 开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的要求。对用户的要求没有完整准确的认识就急于编写程序。这是许多软件开发失败的另一主要原因。事实上,许多用户在开始时并不能准确具体地叙述他们的需要,软件人员需要做大量深入细致的调查研究工作,反复多次与用户交流信息,才能真正全面、准确、具体地了解用户的要求。
(4) 软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范。首先是文档缺乏一致性和完整性,从而失去管理的依据。因为程序只是完整软件产品的一个组成部分,一个软件产品必须由一组的配置组成,不能只重视程序而应当特别重视软件配置。其次,由于成本估计不准确,资金分配混乱,人员组织不合理,进度安排无序,导致软件技术无法实施。
(5) 在软件的开发和维护关系问题上存在错误的观念。软件维护工作通常是在软件完成之后
进行的,因此是极端艰巨复杂的工作,需要花费很大的代价。所以做好软件的定义工作,是降低软件成本,提高软件质量的关键。如果软件人员在定义阶段没有正确、全面地理解用户要求,直到测试阶段才发现软件产品不完全符合用户的需要,这时再修改就为时已晚了。另外,在软件生存期的不同结点进行修改需要付出的代价是很不相同的。在早期引入变更,涉及面较小,付出的代价较低;在开发的中期软件配置的许多成分已经完成,引入一个变更可能需要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上更复杂,因而付出的代价剧增。在软"已经完成"后再引入变更。则需要付出更高得多的代价。因此,必须把软件维护的观念引入软件开发的各个阶段,建立起软件开发与维护的正确关系。
2、 什么是软件工程?包括哪些内容?
软件工程是研究和应用如何以系统化的、规范的、可度量的方法去开发、运行和维护软
件,即把工程化应用到软件上。
软件工程学的主要内容是软件开发技术和软件工程管理. 软件开发技术包含软件工程方法学、软件工具和软件开发环境;软件工程管理学包含软件工程经济学和软件管理学。
3、 软件生存周期包含哪些内容?
软件生存周期是指软件产品从考虑其概念开始到该软件产品交付使用,直至最终退役为止的整个过程,一般包括计划、分析、设计、实现、测试、集成、交付、维护等阶段。
4、 软件开发模型有几种?各有什么特点?
1.瀑布模型 开发模型呈线性,所以当开发成果沿未经过测试时,用户无法看到软件的效果,这样软件与用户见面的时间间隔,也增加了一定的风险;在软件开发前期末发现的错误传到后面的开发活动时,可能会扩散,进而可能会造成整个软件项目开发失败;在软件需求分析阶段,完全确定用户的需求是比较困难的,甚至可以说是不太可能的.
2.螺旋模型 需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果末能及时标识风险,势必造成重大损失;过多的迭代次数会增加开发成本,延迟提交时间
3.喷泉模型 以用户需求为动力,主要用于面向对象的软件项目,软件的某个部分通常被重复多次,相关对象在每次迭代中随之加入渐进出境的软件成分,各个阶段没有明显的界限
4.智能模型 基于知识的软件开发模型 把瀑布模型和专家系统结合在一起,利用专家系统来帮助软件开发人员的工作.适合于特定领域软件和专家决策系统的开发
2.螺旋模型 需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果末能及时标识风险,势必造成重大损失;过多的迭代次数会增加开发成本,延迟提交时间
3.喷泉模型 以用户需求为动力,主要用于面向对象的软件项目,软件的某个部分通常被重复多次,相关对象在每次迭代中随之加入渐进出境的软件成分,各个阶段没有明显的界限
4.智能模型 基于知识的软件开发模型 把瀑布模型和专家系统结合在一起,利用专家系统来帮助软件开发人员的工作.适合于特定领域软件和专家决策系统的开发
5.增量模型 融合了瀑布模型的基本成分和原形实现的迭代特征,优点是人员分配灵活,刚开始不用投入大量人力资源.如果核心产品很受欢迎,则可增加人力实现下一下增量
6.WINWIN模型 融合了螺旋模型的基本成分和原形实现的迭代劳特征,强调风险分析和标识.通过早期谈判客户和开发者之间达成一致协议.它将变成进展到软件和系统定义的关键标准.
7.原形实现模型 原形实现模型从需求收集开始,开发者和客户在一起定义软件的总目标,标识出已知的需求,并规划出需要进一步定义的区域,然后是"快速设计",即集中于软件中那些对用户/客户可见的部分的表示,这将导致原形的创建,其最大的特点是能够快速实现一个可实际运行的系统初步模型,供开发人员和用户进行交流和评审,以便较准确地获得用户的需求, 供开发人员和用户进行交流和评审,这个过程是迭代过程,它可以避免在瀑布模型冗长的开发过程中看不见产品雏开的现象,其优点之一是开发工具先进,开发效率高,使总的开发费用降低,时间缩短,二是开发人员与用户交流直观,可以澄清模糊需求,调用用户的积极参与,能及早显露实施后潜在的一些问题,三是原型系统可作为培训环境,有利于用户培训和开发同步,开发过程也是学习过程,缺点是在一定的程序上限制了开发人员的创新,没有考虑软件的整体质量和长期的可维护性,由于达不到质量要求产品可能被抛弃,而采用新模型重新设计,因此原形实现不适合嵌入式,实时控制及科学数值计算等大型软件系统的开发
6.WINWIN模型 融合了螺旋模型的基本成分和原形实现的迭代劳特征,强调风险分析和标识.通过早期谈判客户和开发者之间达成一致协议.它将变成进展到软件和系统定义的关键标准.
7.原形实现模型 原形实现模型从需求收集开始,开发者和客户在一起定义软件的总目标,标识出已知的需求,并规划出需要进一步定义的区域,然后是"快速设计",即集中于软件中那些对用户/客户可见的部分的表示,这将导致原形的创建,其最大的特点是能够快速实现一个可实际运行的系统初步模型,供开发人员和用户进行交流和评审,以便较准确地获得用户的需求, 供开发人员和用户进行交流和评审,这个过程是迭代过程,它可以避免在瀑布模型冗长的开发过程中看不见产品雏开的现象,其优点之一是开发工具先进,开发效率高,使总的开发费用降低,时间缩短,二是开发人员与用户交流直观,可以澄清模糊需求,调用用户的积极参与,能及早显露实施后潜在的一些问题,三是原型系统可作为培训环境,有利于用户培训和开发同步,开发过程也是学习过程,缺点是在一定的程序上限制了开发人员的创新,没有考虑软件的整体质量和长期的可维护性,由于达不到质量要求产品可能被抛弃,而采用新模型重新设计,因此原形实现不适合嵌入式,实时控制及科学数值计算等大型软件系统的开发
8.RAD模型 增量型的软件开发,采用基于构件的建造方法赢得了快速开发
9.并行开发模型
10.基于构件的开发模型 利用模块化方法将整个系统模块化,并在一定构件模型的支持下复用构件库中的一个或多个软件构件,通过组合手段效率,高质量地构造应用软件系统的过程,缺乏通用的组装标准,因而编入了较大的风险
11.基于体系结构的开发模型
12.XP方法 其核心思想是交流(communication),简单(Simplicity),反馈(Feedback)和进取.xp小组不仅包括开发人员,还包括管理人员和客户,该模型强调小组成员之间要经常进行交流.优点是:采用简单计划策略,不需要长期计划和复杂模型,开发周期短;在全过程采用迭代增量开发,反馈修正和反复测试的方法,软件质量有保证;能够适应用户经常变化的需求,提供用户满意的高质量软件
9.并行开发模型
10.基于构件的开发模型 利用模块化方法将整个系统模块化,并在一定构件模型的支持下复用构件库中的一个或多个软件构件,通过组合手段效率,高质量地构造应用软件系统的过程,缺乏通用的组装标准,因而编入了较大的风险
11.基于体系结构的开发模型
12.XP方法 其核心思想是交流(communication),简单(Simplicity),反馈(Feedback)和进取.xp小组不仅包括开发人员,还包括管理人员和客户,该模型强调小组成员之间要经常进行交流.优点是:采用简单计划策略,不需要长期计划和复杂模型,开发周期短;在全过程采用迭代增量开发,反馈修正和反复测试的方法,软件质量有保证;能够适应用户经常变化的需求,提供用户满意的高质量软件
5、 软件技术审查和管理复审的作用是什么?
6、 软件开发与写程序有什么不同?
软件包含程序,程序是软件的一部分。软件是程序、数据及其相关文档的完整集合。程序只
是为了实现软件的功能和性能要求而编写的指令序列。
7、 在软件开发的早期阶段,为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?
可行性研究的目的就是,用最小的代价在尽可能 短的时间内研究并确定所有面临的问题是否能够解决。
首先需要分析和澄清问题定义。
然后分析员应该到处系统的逻辑模型。
研究目标系统的可行性分为以下三方面:
(1)技术可行性:使用现有的技术能实现这个系统吗?
(2)经济可行性:这个性同的经济效益能超过他的开发成本吗?
(3)操作可行性:系统的操作方式在这个用户住址内行得通吗?
技术\经济\时间\资源
8、 一个软件开发系统的可行性研究报告应如何编写?
计算机软件开发培训可行性研究报告的编写目的是:说明该软件开发项目的实现在技术、经济和社会条件方面的可行 性;评述为了合理地达到开发目标而可能选择的各种方案;说明并论证所选定的方案。
可行性研究报告的编写内容要求如下:
1 引言
可行性研究报告的编写内容要求如下:
1 引言
1.1编写目的
说明编写本可行性研究报告的目的,指出预期的读者。
1.2背景
说明:
a.所建议开发的软件系统的名称;
b.本项目的任务提出者、开发者、用户及实现该软件的计算中心或计算机网络;
C.该软件系统同其他系统或其他机构的基本的相互来往关系。
1.3定义
列出本文件中用到的专门术语的定义和外文首字母组词的原词组。
1.4参考资料
列出用得着的参考资料,如:
a.本项目的经核准的计划任务书或合同、上级机关的批文;
1.3定义
列出本文件中用到的专门术语的定义和外文首字母组词的原词组。
1.4参考资料
列出用得着的参考资料,如:
a.本项目的经核准的计划任务书或合同、上级机关的批文;
b.属于本项目的其他已发表的文件;
C.本文件中各处引用的文件、资料,包括所需用到的软件开发标准。|
列出这些文件资料的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。
2 可行性研究的前提
说明对所建议的开发项目进行可行性研究的前提,如要求、目标、假定、限制等。
2.1要求
说明对所建议开发的软件的基本要求,如:
a.功能;
b.性能;
C.输出如报告、文件或数据,对每项输出要说明其特征,如用途、产生频度、接口以及分发对象;
d.输入说明系统的输入,包括数据的来源、类型、数量、数据的组织以及提供的频度;
e.处理流程和数据流程用图表的方式表示出最基本的数据流程和处理流程,并辅之以叙述;
f.在安全与保密方面的要求;
g.同本系统相连接的其他系统;
h.完成期限。
2.2目标
说明所建议系统的主要开发目标,如:
a.人力与设备费用的减少;
b.处理速度的提高;
C.控制精度或生产能力的提高;
d.管理信息服务的改进;
e.自动决策系统的改进;
f.人员利用率的改进。
2.3条件、假定和限制
说明对这项开发中给出的条件、假定和所受到的限制,如:
a.所建议系统的运行寿命的最小值;
b.进行系统方案选择比较的时间;
c.经费、投资方面的来源和限制;
d.法律和政策方面的限制;
e.硬件、软件、运行环境和开发环境方面的条件和限制;
f.可利用的信息和资源;
说明对这项开发中给出的条件、假定和所受到的限制,如:
a.所建议系统的运行寿命的最小值;
b.进行系统方案选择比较的时间;
c.经费、投资方面的来源和限制;
d.法律和政策方面的限制;
e.硬件、软件、运行环境和开发环境方面的条件和限制;
f.可利用的信息和资源;
g.系统投入使用的最晚时间。
2.4进行可行性研究的方法
说明这项可行性研究将是如何进行的,所建议的系统将是如何评价的。摘要说明所使用的基本方法 和策略,如调查、加权、确定模型、建立基准点或仿真等。
2.5评价尺度
说明对系统进行评价时所使用的主要尺度,如费用的多少、各项功能的优先次序、开发时
间的长短 及使用中的难易程度。
3 对现有系统的分析
这里的现有系统是指当前实际使用的系统,这个系统可能是计算机系统,也可能是一个机械系统甚 至是一个人工系统。
分析现有系统的目的是为了进一步阐明建议中的开发新系统或修改现有系统的必要性。
3 对现有系统的分析
这里的现有系统是指当前实际使用的系统,这个系统可能是计算机系统,也可能是一个机械系统甚 至是一个人工系统。
分析现有系统的目的是为了进一步阐明建议中的开发新系统或修改现有系统的必要性。
3.1处理流程和数据流程
说明现有系统的基本的处理流程和数据流程。此流程可用图表即流程图的形式表示,并加以叙述。
3.2工作负荷
列出现有系统所承担的工作及工作量。
3.3费用开支
列出由于运行现有系统所引起的费用开支,如人力、设备、空间、支持性服务、材料等项开支以及开 支总额。
3.4人员
列出为了现有系统的运行和维护所需要的人员的专业技术类别和数量。
3.5设备
列出由于运行现有系统所引起的费用开支,如人力、设备、空间、支持性服务、材料等项开支以及开 支总额。
3.4人员
列出为了现有系统的运行和维护所需要的人员的专业技术类别和数量。
3.5设备
列出现有系统所使用的各种设备。
3.6局限性
列出本系统的主要的局限性,例如处理时间赶不上需要,响应不及时,数据存储能力不足,处理功能 不够等。并且要说明,为什么对现有系统的改进性维护已经不能解决问题。
4 所建议的系统
3.6局限性
列出本系统的主要的局限性,例如处理时间赶不上需要,响应不及时,数据存储能力不足,处理功能 不够等。并且要说明,为什么对现有系统的改进性维护已经不能解决问题。
4 所建议的系统
本章将用来说明所建议系统的目标和要求将如何被满足。
4.1对所建议系统的说明
概括地说明所建议系统,并说明在第A.2章中列出的那些要求将如何得到满足,说明所使用的基本 方法及理论根据。
4.2处理流程和数据流程
给出所建议系统的处理流程和数据流程。
4.1对所建议系统的说明
概括地说明所建议系统,并说明在第A.2章中列出的那些要求将如何得到满足,说明所使用的基本 方法及理论根据。
4.2处理流程和数据流程
给出所建议系统的处理流程和数据流程。
4.3改进之处
按2.2条中列出的目标,逐项说明所建议系统相对于现存系统具有的改进。
4.4影响
说明在建立所建议系统时,预期将带来的影响,包括:
4.4.1对设备的影响
说明新提出的设备要求及对现存系统中尚可使用的设备须作出的修改。
4.4.2对软件的影响
说明为了使现存的应用软件和支持软件能够同所建议系统相适应。而需要对这些软件所进行的修 改和补充。
4.4.3对用户单位机构的影响
说明为了建立和运行所建议系统,对用户单位机构、人员的数量和技术水平等方面的全部
要求。
4. 4. 4对系统运行过程的影响
说明所建议系统对运行过程的影响,如:
a.用户的操作规程;
b.运行中心的操作规程;
C.运行中心与用户之间的关系;
d.源数据的处理;
4. 4. 4对系统运行过程的影响
说明所建议系统对运行过程的影响,如:
a.用户的操作规程;
b.运行中心的操作规程;
C.运行中心与用户之间的关系;
d.源数据的处理;
e.数据进入系统的过程;
f.对数据保存的要求,对数据存储、恢复的处理;
g.输出报告的处理过程、存储媒体和调度方法;
h.系统失效的后果及恢复的处理办法。
4.4.5对开发的影响
说明对开发的影响,如:
a.为了支持所建议系统的开发,用户需进行的工作;
b.为了建立一个数据库所要求的数据资源;
C.为了开发和测验所建议系统而需要的计算机资源;
d.所涉及的保密与安全问题。
4.4.6对地点和设施的影响
说明对建筑物改造的要求及对环境设施的要求。
b.为了建立一个数据库所要求的数据资源;
C.为了开发和测验所建议系统而需要的计算机资源;
d.所涉及的保密与安全问题。
4.4.6对地点和设施的影响
说明对建筑物改造的要求及对环境设施的要求。
4.4.7对经费开支的影响
扼要说明为了所建议系统的开发,设计和维持运行而需要的各项经费开支。
4.5局限性
说明所建议系统尚存在的局限性以.及这些问题未能消除的原因。
4.6技术条件方面的可行性
本节应说明技术条件方面的可行性,如:
a.在当前的限制条件下,该系统的功能目标能否达到;
b.利用现
a.在当前的限制条件下,该系统的功能目标能否达到;
b.利用现
9、 数据流图有哪几种基本符号?
数据流图基本图形符号
数据流图采用4种基本的图形符号,见表18-1。
表18-1 数据流图基本符号
1.加工
用圆或椭圆描述,又称数据处理,表示输入数据在此进行变换产生输出数据,以数据结构或数据内容作为加工对象。加工的名字通常是一个动词短语,简明扼要地表明要完成的加工。
2.数据流
用箭头描述,由一组固定的数据项组成,箭头方向表示数据的流向,作为数据在系统内的传输通道。它们大多是在加工之间传输加工数据的命名通道,也有在数据存储文件和加工之间的非命名数据通道。虽然这些数据流没有命名,但其连接的加工和文件的名称,以及流向可以确定其含义。
同一数据流图上不能有同名的数据流。如果有两个以上的数据流指向一个加工,或是从一个加工中输出两个以上的数据流,这些数据流之间往往存在一定的关系。其具体的描述如图18-1所示,其中"*"表示相邻之间的数据流同时出现,"⊕"表示相邻之间的数据流只取其一。
(点击查看大图)图18-1 数据流 |
3.数据存储文件
用双杆描述,在数据流图中起保存数据的作用,又称数据存储或文件,可以是数据库文件或任何形式的数据组织。流向数据存储的数据流可以理解为写入文件或查询文件,从数据存储流出的数据流可以理解为从文件读数据或得到查询结果。
4.数据源点或终点
用方框描述,表示数据流图中要处理数据的输入来源或处理结果要送往的地方,在图中仅作为一个符号,并不需要以任何软件的形式进行设计和实现,是系统外部环境中的实体,故称外部实体。它们作为系统与系统外部环境的接口界面,在实际的问题中可能是人员、组织、其他软硬件系统等。一般只出现在分层数据流的顶层图中。
10、 画数据流图原则是什么?
画数据流图应该注意的问题
数据流图是软件设计师考试必考的题目之一,下面是画数据流图时应该注意的问题,希望对大家有所帮助。
1) 适当地为数据流、加工、数据存储、外部实体命名,名字应该反应该成分的实际含义,避免空洞的名字。
2) 画数据流而不画控制流
3) 一个加工的输出数据流不应与输入数据流同名,即使他们的组成成分相同。
4) 允许一个加工有多条数据流流向另外一个加工,也允许一个加工有两个相同的输出数据流流向另外两个不同的加工。
5) 保持父图和子图平衡。也就是说,父图中某加工的输入、输出必须与它的子图的输入、输出数据流在数量和名字上相同。值得注意的是,如果父图的一个输入(或输出)数据流对应于子图中几个输入或输出数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡的。
6) 在自顶向下的分解过程中,若一个数据存储首次出现时只与一个加工有关,那么这个数据存储应作为这个加工的内部文件而不必画出。
7) 保持数据守恒。也就是说,一个加工所有输出数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。
8) 每隔加工必须既有输入数据流也有输出数据流。
9) 在整套数据流图中,每隔数据存储必须既又读的数据流,又有写的数据流。但在某一张子图中可能只有读没有写,或者只有写没有读。
四、画分层数据流图时应注意的问题
下面从四个方面讨论画分层数据流图时应注意的问题。
1.合理编号
分层数据流图的顶层称为0层,称它是第1层的父图,而第1层既是0层图的子图,又是第2层图的父图,依此类推。由于父图中有的加工可能就是功能单元,不能再分解,因此父图拥有的子图数少于或等于父图中的加工个数。
为了便于管理,应按下列规则为数据流图中的加工编号:
l子图中的编号为父图号和子加工的编号组成。
l子图的父图号就是父图中相应加工的编号。
为简单起见,约定第1层图的父图号为0,编号只写加工编号1、2、3...,下面各层由父图号1、1.1等加上子加工的编号1、2、3...组成。按上述规则,图的编号即能反映出它所属的层次以及它的父图编号的信息,还能反映子加工的处理信息。例如1表示第1层图的1号加工处理,1.1、1.2、表示父图为1号加工的子加工,1.3.1、1.3.2、1.表示父图号为1.3加工的子加工。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论