您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程课程考试重点知识汇总
概论1.软件的定义软件是计算机系统中与硬件相互依存的一个部分,它是包括程序、数据及其相关文档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文材料。2.软件工程的定义和三要素IEEE:软件工程是开发、运行、维护和修复软件的系统方法。FritzBauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。三个要素:方法、工具和过程。方法为软件开发提供了“如何做”的技术。它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试以及维护等。工具为软件工程方法提供了自动的或半自动的软件支撑环境。目前,已经推出了许多软件工具,这些软件工具集成起来,建立起称之为计算机辅助软件工程(CASE)的软件开发支撑系统。CASE将各种软件工具、开发机器和一个存放开发过程信息的工程数据库组合起来形成一个软件工程环境。过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。过程定义了方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所需要的管理、及软件开发各个阶段完成的里程碑。3.软件工程和软件危机的关系现有软件危机后有软件工程为了解决软件危机,既要有技术支持措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好的开发和维护计算机软件的一门新兴学科。4.软件生命周期的概念,划分的三个时期和八个阶段概念:软件生命周期是软件的产生直到报废的生命周期三个时期:软件定义,软件开发,运行维护8个阶段:问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃5.理解结构化软件开发方法和面向对象软件开发方法结构化开发方法:早期的程序开发,如C语言,都是用结构化开发方法。结构化开发又叫做面向过程开发,具体原理是将一个软件分为多个过程(函数)进行开发,用结构体管理数据。这种开发方式使得代码的可读性变得很低,并且代码难以移植。面向对象软件开发方法:这是一种自底向上和自顶向下相结合的方法,而且它以对象建模为基础,从而不仅考虑了输入、输出数据结构,实际上也包含了所有对象的数据结构。6.软件生命周期模型(又称做过程模型)各自阶段、特点和适用项目瀑布模型阶段:特点:1),阶段间具有顺序性和依赖性2),推迟实现的观点3),质量保证的观点瀑布模型适用于结构化方法,也就是面向过程的软件开发方法。规模小、需求明确、无须维护快速原型模型特点:快速建立起能够在计算机上运行的程序。优点:软件产品的开发基本上是线性的缺点:必须迅速地构建原型然后根据用户意见循序的修改原型适用范围:用户需求不明确,需要通过构建原型来清楚的了解用户的真实需求。无须维护增量模型特点:增量模型的特点是引进了增量包的概念,无须等到所有需求都出来,只要某个需求的增量包出来即可进行开发。虽然某个增量包可能还需要进一步适应客户的需求并且更改,但只要这个增量包足够小,其影响对整个项目来说是可以承受的。增量模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目螺旋模型螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。喷泉模型喷泉模型适应于面向对象的软件开发过程。特点:相互迭代:软件的某个部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分无间隙性:它在各项活动之间没有明显边界RUP四个阶段先启阶段:建立业务模型,定义最终产品视图,并且确定项目的范围。精化阶段:设计并确定系统的体系结构,制定项目计划,确定资源需求。构建阶段:开发出所有构件和应用程序,把它们集成为客户需要的产品,并且详尽地测试所有功能。移交阶段:把开发出的产品提交给用户使用。RUP最重要的它有三大特点:软件开发是一个迭代过程软件开发是由UseCase驱动的软件开发是以架构设计(ArchitecturalDesign)为中心的。RUP适用于大型软件团队开发大型项目。敏捷过程特点:具备可视、可集成和可运行使用的特点敏捷过程的适用于:软件需求经常变化或者需求变化比较大;项目团队与用户之间进行沟通比较容易;项目的开发风险比较高;规模比较小,一般项目组成员在50人之内;项目团队的成员能力比较强,而且具有责任感;项目的可测试性比较好。可行性研究与需求分析1.可行性研究和需求分析要解决的问题确定问题是否值得去解决;目标系统到底要做什么2.软件需求的含义、分类软件需求:系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。分类:业务需求、用户需求和功能需求,非功能需求。业务需求反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。用户需求文档描述了用户使用产品必须要完成的任务,这在使用实例文档或方案脚本说明中予以说明。功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。所谓特性是指逻辑上相关的功能需求的集合,给用户提供处理能力并满足业务需求。非功能需求,描述了系统展现给用户的行为和执行的操作等。它包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性。所谓约束是指对开发人员在软件产品设计和构造上的限制。质量属性是通过多种角度对产品的特点进行描述,从而反映产品功能。多角度描述产品对用户和开发人员都极为重要。3.获取用户需求的常用方法电话,即时通讯工具,电子邮件,面对面交谈,会议讨论,定性定量结合的调查问卷,观察,用户日记分析法,将自己变成目标用户等4.需求分析的定义需求分析是在可行性研究的基础上进行的更细致的分析工作,是软件定义时期的最后一个阶段对软件目标及范围的求精和细化。通过调查研究和分析,充分了解用户对软件系统的要求,把用户要求表达出来,解决“软件系统必须做什么”的问题。5.主流需求分析方法(结构化分析建立的模型)1)步骤:确定系统边界,画出顶层DFD;自顶向下,对每个加工进行内部分解,画出分层DFD;对数据流图进行复审求精。2)分层优点:便于实现采用逐步细化的扩展方法,利于控制问题复杂度;一组图代替一张总图,业务人员可选择相关图形。3)画分层DFD图的指导原则:注意父子图的平衡;区分局部文件和局部外部项;掌握分解速度;遵守加工编号规则;确定数据定义和加工策略。6.绘制数据流图(DFD)按照软件内部数据传递、变换关系,自顶向下逐层分解软件的功能,建立软件系统的逻辑模型。数据源点或终点交换数据的处理数据存储数据流或或或数据流图基本元素DFD实例:储户到银行取款数据流图的画法:自外向内,自顶向下,逐层细化,逐步求精①画顶层数据流图:包括系统的输入数据流和输出数据流、I/O数据流的源点和终点、一个处理(代表整个系统)。DFD表示系统的范围、系统和外界的数据交换关系。②画分层数据流图:按功能将一个处理逐步细化成若干处理;最低层数据流图中的处理称为“原子处理”,表示独立的功能。l画数据流图的注意事项:①每个处理至少有一个输入数据流和一个输出数据流。②数据流图的细化过程中,要保持信息的连续性(信息平衡)◇当把一个处理分解为一系列处理时,分解前和分解后的输入/输出数据流必须相同。③图中每个元素都要恰当命名。④对处理进行合理编号。数据流图的绘制步骤(1)顶层DFD:确定整个系统的输入数据流及其源点、输出数据流及其终点;把整个系统作为一个处理(加工)。(2)一层DFD:确定系统的主要处理功能,按此将整个系统(顶层DFD中的处理)分解成若干个处理(加工),确定每个处理的输入与输出数据流以及与这些处理有关的数据存储。(3)根据自顶向下,逐层分解的原则,对上层图中全部或部分处理进行分解。(4)重复步骤(3),直到逐层分解结束。工具:MicrosoftOfficeVisio总体设计1.总体设计的概念,任务(DFD映射为MSD)将软件需求转化为系统结构(程序结构、接口)和数据结构。通过仔细分析软件需求规格说明,确定组成系统的模块及各模块之间的关系,设计出完成预定功能的模块结构(软件结构),并建立接口。2.模块和模块化的含义模块是由边界元素限定的程序单元,是构成程序的基本构件,是指用一个名字可以调用的一段程序语句。例如子程序、函数、过程和宏等都可以作为模块。模块化就是将程序划分成独立命名且可独立访问的若干模块,每个模块完成一个子功能;将模块集成起来构成一个整体,完成指定的系统功能。3.什么是模块独立性;如何度量和设计模块独立性(几种内聚和耦合的强弱,高内聚低耦合)模块独立性是指模块内部各部分之间、以及模块之间关系的一种度量标准。模块独立性的含义为:软件结构中的每个模块完成一个相对独立的特定子功能,并且和其它模块的接口是简单的。度量:模块之间的耦合尽可能弱;每个模块的内聚尽可能强。内聚:偶然内聚:逻辑内聚:时间内聚:过程内聚:通信内聚:顺序内聚;功能内聚4.变换分析设计方法和事务设计分析方法变换:(1)分析具有变换特征的数据流图,确定输入流和输出流的边界、孤立出变换中心(2)完成一级分解,设计软件结构的顶层和第二层l顶层模块Cm:代表系统l第二层模块:①输入信息处理模块Ca:协调对所有输入数据的接收②变换中心控制模块Ct:管理对内部形式的数据的所有操作③输出信息处理控制模块Ce:协调输出信息的产生过程3)完成二级分解:把数据流图中的每个处理映射成软件结构中一个适当的模块①在数据流图上,沿变换中心的输入边界开始向外移动,将输入通路中的每个处理映射成Ca模块下的一个直接或间接低层模块。②在数据流图上,沿变换中心的输出边界开始向外移动,将输出通路中的每个处理映射成Ce模块下的一个直接或间接低层模块。③将变换中心内的每个处理映射成Ct模块下的一个直接或间接模块。(4)精化软件结构:适当分解或合并模块(5)简要描述每个模块(可以用IPO图描述):①接口说明②内部逻辑描述③全局和局部数据结构的说明④设计约束和限制事务:◆由事务型数据流图映射成的软件结构包括一个接收分支和一个发送分支。◆映射出接收分支结构的方法和变换分析映射出输入结构的方法很相像,即从事务中心的边界开始,把沿着接收流通路的处理映射成模块。◆发送分支的结构包含一个调度模块,它控制下层的所有活动模块;然后把数据流图中的每个活动流通路映射成与它的流特征相对应的结构。详细设计1.总体设计和详细设计的区别详细地设计每个模块,即确定完成每个模块功能所需要的算法和数据结构。1、总体设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。总体设计建立的是目标系统的逻辑模型.2、详细设计是软件工程中软件开发的一个步骤,就是对总体设计的一个细化,就是详细设计每个模块实现算法,所需的局部结构。在详细设计阶段,主要是通过需求分析的结果,设计出满足用户需求的嵌入式系统产品。3、总体设计阶段通常得到软件结构图,详细设计阶段常用的描述方式有:流程图、N-S图、PAD图、伪代码等。4、详细设计阶段就是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。2.掌握三种基本控制结构:顺序、选择和循环顺序结构:顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。选择结构:选择程序结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程。使用选择结构语句时,要用条件表达式来描述条件。循环结构:循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构。循环结构可以看成是一个条件判断语句和一个向回转向语句的组合。循环结构的三个要素:循环变量、循环体和循环终止条件.循环结构在程序框图中是利用判断框来表示,判断框内写
本文标题:软件工程课程考试重点知识汇总
链接地址:https://www.777doc.com/doc-5800464 .html