软件工程总结_软件工程的总结
软件工程总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“软件工程的总结”。
第一章
1.软件有哪些种类?
答:1.按功能特征进行划分:
(1)系统软件(2)支撑软件(3)应用软件
2.按规模大小进行划分
微型、小型、大型、甚大型、极大型 2.什么是软件危机?
答:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。3.什么是软件工程?
答:是指导计算机软件开发和维护的一门工程学科。
特性略。
技术措施和管理措施消除软件危机。
4.结合自己的亲身经历,谈谈软件工具在软件开发过程中的作用。
使软件开发更加模式化,工程化,从而提高软件开发的效率和封装性。
第二章
1.什么是软件生命周期?它有哪些活动?
软件生命周期是指软件产品从考虑其概念开始到交付使用,直至最终退役为止的整个过程。
软件生存周期可以划分为软件定义、软件开发和运行维护3个时期 2.软件瀑布模型为什么要划分阶段?各个阶段的任务是什么?
在软件开发早期,开发只是被简单地分成编写代码和修改代码两个阶段。往往在拿到项目后立刻编写程序,然后调试通过后直接交付给用户使用。如果应用中出现错误,或者有新的要求,都需要重新修改代码。这种小作坊式的软件开发方法有明显的弊端,如缺乏统的项目规划、不太重视需求的获取和分析、对软件的测试和维护考虑不周等,这些都会导致软件项目的失败。
概念阶段:计划、需求分析
开发阶段:设计、编码、测试
维护阶段:运行维护
3.举例说明哪些项目的开发适用于原型模型或螺旋模型,哪些不适于采用这两种模型。
螺旋模型适合于大型软件的开发,应该说它是最为实际的方法,它吸收了软件工程“演化”的概念,使得开发人员和客户对每个演化层出现的风险有所了解,继而做出应有的反应。
不适用:小型软件。
原型般是指对某种产品进行模拟的初始版本或者原始模型,在工程领域中具有广泛应用。
不适用:大型软件项目;含有对于计算量大、逻辑性较强的程序模块:
第三章
1.可行性研究的任务是什么?
可行性研究的任务是以最小的代价在尽可能短的时间内确定问题是否能够解决。简单的说,可行性研究的最终结果是决定项目y做还是小做”而不是“如何做”。
2.项目开发计划有哪些内容?
引言(目的、背景、参考文献、术语);项目概述(功能、条件、运行环境、产品、程序、文档、服务、验收标准、实施计划、工作任务分解、进度、预算、人员)
第四章
1.什么是需求工程?需求工程包括哪些活动? 需求工程是指应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外部特征的 门学科。它通过合适的工具和记号系统地描述待开发系统,及其行为特征和相关约束,形成需求文档;并对用户不断变化的需求演进给予支持。
一个良好的需求开发过程应该包括需求获取、需求分析与建模、编写需求规格说明书和需求评审4个主要活动。2.需求工程过程包括哪些主要活动?
需求开发过程应该包括需求获取、需求分析与建模、编写需求规格说明书和需求评审4个主要活动。
3.有哪两种主要的需求分析模型?它们的主要思想是什么?
答:面向对象分析模型,结构化分析模型。前者是采用面向对象的思想进行软件需求分析的建模过程,而后者模型的核心是DD,它是设计各种数据对象的总和。他们的模型分别起到了描述数据模型,功能模型与行为模型的作用。
4.需求规格说明书的主要作用是什么?应该包括哪些主要内容? 作用:(1)作为用户方和开发方之间的合同,为双方相互了解提供基础。
(2)反映问题的结构,作为系统设计和编码的依据。
(3)作为测试和验收目标系统的依据。内容:
用户可以通过需求规格说明书检查需求描述是否满足原来的期望。设计人员根据软件需求规格说明书的描述了解所需开发软件的功能和性能,以及开发软件时必须满足的约束,将其作为软件设计的依据。测试人员根据软件需求规格说明书中对产品的描述,设计测试计划、测试用例和测试过程。产品发布人员根据软件需求规格说明和用户界面设计编写用户手册和帮助信息
第五章
2.简述数据流图分解时的注意事项。
•上层可分解得快些(即分解成子数据处理个数多些),这是因为上层是综合性描述,对可读性的影(即分解成的子数据处理个数多些),这是因为上层是综合性描述,对可读性的影响小。而下层应分解得慢性。•在不影响可读性的前提下,应适当多分解成几部分,以减少分解层数。3.数据字典的作用是什么?它有哪些基本内容? •分解应自然,概念上要合理、清晰。
作用:数据字典作为分析阶段的工具,有助于改进分析人员和用户.间的通信,进而消除很多的误解,同时也有助于改进不同开发人员之间的通信;.内容:数据字典的内容主要是对数据流图中的数据项、数据流、加工逻辑、数据存储和外部实体
第六章
l。什么是面向对象方法?与传统软件开发方法相比,面向对象方法有什么优点?
是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法。优点:
l.符合人们对问题的认识习惯
Z.增强问题域与最终软件系统之间的衔接
3.易于维护和复用
4•易于开发大型软件产品
5.什么是模型?在软件开发过程中为什么需要建立模型? 在软件开发过程中,建立软件模型具有十分重要的作用,主要体现在以下几个方面:
有助于问题的简化,通过抽象降低复杂性;
有助于和其他开发小组成员,各种用户以及系统相关者进行交流; 有助于维护人员了解软件设计的思路和细节,为以后的维护和升级提供了文档。第七章
1.面向对象分析包括哪些活动?应该建立哪些类型的模型?
面向对象分析OOA模型的过程包括理解用例模型、识别分析类、定义交互行为、建立分析类图、评审分析模型5个活动组成。
目标是建立一个符合问题域、满足用户需求的OOA模型。
2.什么是实体类、边界类和控制类?为什么将分析类划分成这3种类型?
实体类:用于描述必须存储的信息,同时描述相关的行为。实体类代表拟建系统中的核心信息。在RUP的有关文档中对实体类的解释为:“实体类是用于对必须存储的信息和相关行为建模的类。
边界类:在系统与外界之间,为它们交换各种信息与事件。边界类处理软件系统的输入和输出。在RUP的有关文档中对边界类的解释为:边界类是一种用于对系统外部环境与其内部运作之间的交互进行建模的类。
控制类:与业务过程相关,它们控制整个业务的流程和执行次序。在RUP的有关文档中对控制类的解释为:控制类用于对一个或几个用例所持有的控制行为进行建模。
控制类对象可以和边界对象交互,也可以和实体对象交互,但不能和用例的参与者直接进行交互。
第八章
l.什么是软件设计?它的目标和任务是什么?
软件设计:在需求分析的基础上通过抽象和分解将系统分解成模块,确定系统功能的实现。即把软件需求转换为软件包表示的过程。
目标:软件设计的最终目标是产生一个设计规约,该规约包括体系结构、描述数据、接口和构件的设计模型。
软件设计的任务,就是把分析阶段产生的软件需求规格说明转换为用适当手段表示的软件设计文档。
Z。完成良好的软件设计应遵循哪些原则?
模块化与模块独立性;抽象与逐步求精;信息隐藏。3•如何理解模块独立性?用什么指标来衡量模块独立性?
模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的。
一般采用两个准则度量模块独立性,即模块的内聚性和模块间的耦合性
4•说明软件设计阶段的任务和过程
软件设计分两步完成,即总体设计与详细设计。第个阶段是总体设计,即概要设计或初步设计。这、阶段主要确定实现目标系统的总体思想和设计框架,确定程序由哪些模块组成,以及模块与模块之间的关系,最后提出概要设计说明书。第二个阶段是详细设计,即过程设计或构件级设计,其任务是通过对结构表示进行细化,确定各个软件构件的详细数据结构和算法,产生描述各个软件构件的详细设计文档。
S.试说明软件体系结构在软件设计阶段中的重要性。
良好的体系结构设计是决定软件系统成功的重要因素。软件体系结构设计的好坏往往会成为一个系统设计成败的关键。通常,软件体系结构涉及软件的总体组织、全局控制、数据存取及子系统之间的通信协议等。
6。简述面向对象设计阶段要做的工作。、OOD主要包括三个方面的工作:系统体系结构设计、用例实现方案设计和用户界面设计。
第十一章
•简述程序设计语言的基本特征及分类。
基本特征包括心理特性,工程特性和技术特性三个方面。语言的的—心理特性对人机通信的质量有主要的影响;语言的工程特性对软件开发成功与否有重要的影响,此外语言的技术特性也会影响软件设计的质量
•按程序设计语言的历史发展过程,计算机语言可分为机器语言、汇编语言、高级程序设计语言。
•按与机器的依赖程度,可分为低级、中级和高级语言。
•按应用范围,可分为通用语言与专用语言两大类,通用语言义可细分为系统程序设计语言、科学计算语言、事务处理语言和实时控制语言等。
•按程序的设计方法,可分为命令性语言和作用性语言。
•按语言的成分,可以分成顺序语言、并行语言和实时语言等。
•按语言的组成方法,可以分成汇集式语言和可扩充语言。
2•为了具有良好的程序设计风格,应该注意哪些方面的问题?
要形成良好的程序设计风格,应从源程序文档化、数据说明、语句构造、输入输出和追求效率几个方面加以注意。
3•什么是软件测试?软件I则试的原则有哪些?
软件测试是按照特定的规则,发现缺陷而执行程序的过程。一个好的测试用例是指尽可能找到迄今为止尚未发现缺陷的用例。一个成功的测试是指揭示了迄今为止尚未发现缺陷的测试。软件测试的原则:
(l)所有的测试都应该能追溯到用户需求。
(Z)应该在测试之前就制定出测试计划。
(3)Pareto原理可应用于软件测试。
(4)测试应从“小规模”开始,逐步转向“大规模”
(S)穷举测试是不可能的。
(6)既要做通过性测试,又要做失效性测试。
(D为了达到最佳的测试效果,应该由独立的第三方从事测试工作。
第十四章
1.为什么说软件维护是不可避免的?
因为软件的开发过程中,一般很难检测到所有的错误,其次软件在应用过程中需要随用户新的要求或运行环境的变化而进行软件的修改或纠正软件开发过程未发现的错误,增强、改进和完善软件的功能和性能,以适应软件的发展,延长软件的寿命,软件的维护是不可避免的。
2.什么是软件再工程?软件再工程的主要活动有哪些?
指在逆向工程所获信息的基础上修改重构已有的系统,产生的―个新版本,或者说利用这些信息修改或重构软件系统的工作。
它定义了6为活动r即库存目录分析、文档重构、逆向工程、代码重构、数据重构、正向工程。软件调试与软件测试有什么区别?
1、目的不同
软件测试的目的是发现错误,至于找出错误的原因和错误发生的地方不是软件测试的任务,而是调试的任务。调试的目的是为了证明程序的正确,因此它必须不断地挤除错误.它们的出发点不一样“前者是挑错,是一种挑剔过程,属于质盘保证活动。后者是排错,是-种排除过程,是编码活动的部分•
2、任务不同
既然软件测试属于质量保证活动,因此它贯穿十整个计发过程.从需求分析开始,就要制订软件测试计划,软件设计时要设计系统软件测试、集成侧试用例,编码阶段要设计单元软件测试用例并进行单元软件测试,软件测试阶段要进行集成软件测试、系统软件测试等,直到产品交付。只要有修改就有软件测试,产品交付后同样。它是比较有规律的活动,有系统的方法、原则作指导。
而调试是编码活动的部分,因此有编码就有调试它的任务主要就是排错。调试的方法经常与使用的开发工具有关,例如解释型的开发工具可以交互式调试,编译型开发工具就很难较好地查错。当然它有些启发式的方法,它是.种比较依赖开发人员经验的活动。
3、指导原则和方法不同
软件侧试是种有规律的活动,有一系列软件软件测试的原则.其中主要是制U侧试计划,然后严格执行。其次是种挑剔性行为,因此它不但要侧试软件应该做的,还需要侧试软件个应该做的事情。调试所遵循的规律主要是些启发式规则,是”个推理过程。例如使用归纳法、演绎法、回溯法等。
软件测试的输出是预知的,其软件测试用例必须包括预期的结果,而调试的输出大多是不可预见的,需要调试者去解释、去发现产生的原因。
4、操作者
因为心理状态是软件测试程序的障碍,所以执行软件测试的人一般不是开发人员,以使软件测试更客观、更有效,而调试人员一般都是开发人员•
5、操作环境、配置、工具不同
调试在开发的编码环境下进行。如果编码使用解释型语言,则可以进行人机交互式调试,设里断点、单步调试等。如果编码使用编译型语言,也可以设置断点、显示调试变量值等。而软件测试是在软件测试环境下进行,直接运行开发完成的程序,可能不再需要一些开发时的驱动程序、动态链接库等.使用不同的工具,环境配置也不同。
简答题,1.什么是软件工程?请分析软件工程的目标是什么?
答案:软件工程是:1将系统化的、规范的、可度量的方法应用于软件的升发、运行和维护过程,也就是说将工程化应用于软件开发和管理之中;2对1中所选方法的研究”
软件工程旨在开发满足用户需要、及时交付、不超过预算和无故障的软件,其主要目标如下: a)实现预期的软件功能,达到较好的软件性能,满足用户的需求。
b)增强软件过程的可见性和可控性,保证软件的质量。
c)提高所开发软件的可维护性,降低维护费用。
d)提高软件开发生产率,及时交付使用。
e)合理预算开发成本,付出较低的开发费用。
2.什么是软件危机?软件危机表现在哪几个方面?
由于软件特点和长期以来一直没有发明种高效的开发方法,导致软件生产效率非常低,交付期拖再拖,最终交付的软件产品在质量上很难保障。这种现象早在20世纪60年代被定义为“软件危机”。它的具体表现如下:
a)“已完成”的软件不满足用户的需求。
b)开发进度不能保障,交付时间.再拖延。
c)软件开发成本难以准确估算,开发过程控制困难造成开发成本超出预算。
d)软件产品的质量没有保证,运算结果出错、操作死机等现象屡屡出现。
e)软件通常没有适当的文档资料,或文档与最终交付的软件产品不符,软件的可维护程度非常低。
3.根据相关的法律,对于侵犯软件著作权的行为,根据情节应当给予什么处罚?
对于侵犯软件著作权的行为,要根据情况承担停止侵害、消除影响、赔礼道歉、赔偿损失等民事责任;损害社会公共利益的,由著作权行政管理部门责令停止侵权行为,没收违法所得,没收、销毁侵权复制品,并处罚款;情节严重的,著作权行政管理部门可以没收用子制作侵权复制品的材料、工具、设备等;触犯刑律的,依法追究刑事责任。
4根据你的理解,列举出职业化软件工程师要注意的三个主要问题,请给出理由。没有唯一答案。
1)不遵守标准和规范:职业化的重要特征是遵守行业标准,不能肆意按照自己的想象来发挥。自从人们认识到软件危机以来,总结软件开发的失败教训和成功经验,并把它们总结成为最佳实践,进而形成标准,要充分利用这些最佳实践和标准来指导软件过程。任何闭门造车、想当然的行为都是不被提倡的,注定要走弯路。
2)对待计划不严肃:软件工程强调计划性,计划的内容包括;设备资源、进度安排、人力资源、任务分配等等。在项目的进行中要跟踪计划执行情况,记录计划执行过程中的偏差,对任何变更都要经过评审和批准才能付诸行动。
3)不主动与人沟通:软件不可见的特性,需要软件工程师进行大量书面的、口头的或面对面的沟通,沟通的目的是为了使相关的人员了解项目的进展、遇到的问题、应用的技术、采用的方法。
5.软件工程为什么要强调规范化和文档化?.软件工程强调规范化和文档化。规范化的目的是使众多的开发者遵守相同的规范,使软件生产摆脱个人生产方式,进入标准化、工程化的生产方式。文档化是将软件的设计思想、设计过程和实现过程完整地记录下来,以便于后人的使用和维护,在开发过程中各类相关人员借助于文档进行交流和沟通。另外,在开发过程中产生的各类文档使得软件的生产过程由不可见变为可见,便于管理者对软件生产进度和开发过程进行管理。在用户最终验收时可以通过对提交的文档进行技术审查和管理审查,保证软件的质量。
6.请简单说明结构化分析的主要步骤。
根据用户的需求画出初始的数据流程图,写出数据字典和初始的加工处理说明(lPO图),实体关系图。以初始数据流程图为基础,从数据流程图的输出端开始回溯。在对数据流程图进行回溯的过程中可能会发现丢失的处理和数据,应将数据流程图补充完善。对软件性能指标、接口定义、设计和实现的约束条件等逐一进行分析。系统分析人员与用户起对需求分析的结果进行复查。根据细化的需求修订开发计划。编写需求规格说明书和初始的用户手册,测试人员开始编写功能测试用的测试数据。
7.设计类的属性时必须要定义是哪两项?
设计类的属性时必须要定义的内容:
1)属性的类型:设计属性时必须要根据开发语言确定每个属性的数据类型•如果数据类型不够,设计人员可以利用已有的数据类型定义新的数据类型。
2)属性的可见性。在设计属性时要确定公有属性、私有属性、受保护属性。活动图反映系统中从一个活动到另一个活动的流程,强调对象间的控制流程。活动图特别适合描述工作流和并行处理过程。具体地说活动图可以描述一个操作过程中需要完成的活动;描述一个对象内部的工作;描述如何执行组相关的动作,以及这些动作如何影响它们周围的对象;说明个业务活动中角色、工作流、组织和对象是如何工作的。
顺序图用于描述一组交互对象间的交互方式,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。
9面向对象的分析通常要建立三个模型,请问三个模型的作用?
a)功能模型:表达系统的详细需求,为软件的进一步分析和设计打下基础。在面向对
象方法中,由用例图和场景描述组成。
b)对象模型:表示静态的、结构化的系统“数据”性质。描述现实世界中实体的对象以及它们之间的关系,表示目标系统的静态数据结构。在面向对象方法中,类图是构件对象模型的核心上具。
c)动态模型:描述系统的动态结构和对象之间的交互,表示瞬时的、行为化的系统的“控制”特性。面向对象方法中,常用状态图、顺序图、合作图、活动图构件系统的动态模型。
10.面向对象的设计活动中,有构架师、用例工程师和构件师参加,他们每个角色的职责是什么?
构架设计的目的是要勾画出系统的总体结构,这项工作由经验丰富的构架设计师主持完成。该活动以用例模型、分析模型为输入,生成物理构架、子系统及其接口、概要的设计类(即设计阶段定义的类)。
根据分析阶段产生的高层类图和交互图,由用例设计师研究已有的类,将它们分配到相应的用例中。检查每个用例的功能,这些功能依靠当前的类能否实现,同时检查每个用例的.特殊需求是否有合适的类来实现。细化每个用例的类图,描述实现用例的类及其类之间的相互关系,其中的通用类和关键类可用粗线框区分,这些类将作为项目经理检查项目时的重点。
经过前面两个活动,构架设计师已经将系统的构架建立起来,用例设计师按照用例的功能将每个类分配给相应的用例。现在要由构件工程师详细设计每个类的属性、方法和关系。
11提高程序可读性有哪些招数?对你来讲比较灵验的是哪些?
a)源程序文件头说明,函数应有函数头说明,内容包括:程序标题;有关该模块功能和目的说明;主要算法说明;接O说明,包括调用形式、参数描述、子程序清单、有关数据的说明。
b)主要变量(结构、联合、类或对象)的定义能够反映其内在含义。
c)变量定义最规范化,说明的先后次序固定。
d)处理过程的每个阶段和典型算法前都有相关注释说明。