您好,欢迎访问三七文档
软件工程基础知识一.什么是软件?1.满足功能要求和性能的指令或计算机程序集合;2.处理信息的数据结构;3.描述程序功能以及程序如何操作和使用所要求的文档;二.软件危机以及产生软件危机的原因?1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势。软件产品“供不应求”。2.软件成本在计算机系统总成本中所占的比例逐年上升。3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生。4.软件产品的质量不容易保证。5.软件产品常常是不可维护的。6.软件产品的重用性差,同样的软件多次重复开发。7.软件通常没有适当的文档资料。产生软件危机的原因可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术。三.有哪些软件工程方法学及其要素?1.使用最广泛的软件工程方法学是结构化方法学和面向对象的方法学。2.要素:方法、工具和过程。四.什么是软件生存周期?有哪些活动?4.1软件生存周期一个软件从提出开发要求开始到软件废弃不用的整个过程。4.2开发活动可行性分析和项目开发计划、需求分析和定义、软件设计(先后细分为:概要设计和详细设计)、编码、测试和运行维护4.3各活动阶段主要文档4.3.1可行行分析和项目开发计划可性行研究报告项目开发计划4.3.2需求分析中的文档需求规格说明书初步用户使用手册确认测试计划修改完善的软件开发计划4.3.3概要设计阶段文档概要设计说明书数据库说明书用户手册修订的测试计划(测试的策略、方法、步骤)4.4.4详细设计阶段详细设计说明书4.4.5系统测试阶段系统测试计划文档五.有哪些主要生存期模型?瀑布模型、原型开发模型(快速原型模型、演化模型、增量模型)、螺旋模型、喷泉模型、5.1瀑布模型瀑布模型(传统的软件周期模型)严格遵循软件生命周期各阶段的固定顺序:计划、分析、设计、编程、测试和维护,上一阶段完成后才能进入到下一阶段,整个模型就像一个飞流直下的瀑布。优点:可强迫开发人员采用规范的方法,严格规定了各阶段必须提交的文档;要求每一阶段结束后,都要进行严格的评审。与它最相适应的开发方法是结构化方法。缺点:不适应用户需求的改动。5.2原型模型5.2.1快速原型模型快速原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。主要用于需求分析阶段。不追求也不可能要求对需求的严格定义,而是采用了动态定义需求的方法,所以不能定义完善的文档。特征:简化项目管理、尽快建立初步需求、加强用户参与和决策。具有广泛技能水平的原型化人员是原型实施的重要保证。原型化人员应该是具有经验与才干、训练有素的专业人员。衡量原型化人员能力的重要标准是他是否能够从用户的模糊描述中快速获取需求。5.2.2演化模型在快速原型模型中,原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。而演化模型应用于整个软件开发过程,是从初始模型逐步演化为最终软件产品的渐进过程。也就是说,快速原型模型是一种“抛弃式”的原型化方法,而演化模型则是一种“渐进式”的原型化方法。5.2.3增量模型增量模型主要用于设计阶段,把软件产品划分为一系列的增量构件,分别进行设计、编程、集成和测试。新的增量构件不得破坏已经开发出来的产品。5.2.4原型模型小结从下面的有关原型化方法的叙述中,选择出正确的叙述:(1)快速原型方法是一种企图克服传统软件周期模型缺点的开发方法。(2)在用户的数据资源没有得到很好地组织和管理的时候,应该使用原型化方法。(3)在用户没有明确地肯定其需求的时候,应该使用原型化方法。(4)在用户不希望把自己的时间花在软件开发过程中的时候,应该使用原型化方法。(5)使用原型化方法时应该使用第三代编程语言。(6)原型化加强了开发过程中用户的参与和决策。(7)原型化方法大致可分为三类:抛弃式、演化式和递增式。(8)原型化方法大致可分为演化式和递增式。(9)采用原型化方法时,软件的开发成本较高。(10)采用原型化方法时,关键的因素是建立原形的速度,而不是原形运行的效率。5.3螺旋模型螺旋模型综合了瀑布模型和原型模型中的演化模型的优点,还增加了风险分析。螺旋线第一圈的开始点可能是一个概念项目。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直转到软件生命期结束。5.4喷泉模型喷泉模型主要用于描述面向对象的开发过程。喷泉一词体现了面向对象开发过程的迭代和无间隙特征。六.软件过程基础知识6.1软件过程软件过程是指人们用于开发和维护软件及相关产品的一系列活动,包括软件工程过程和软件管理过程。6.2评估工具软件过程的评估,通常采用软件能力成熟度模型(CapabilityMaturityModel,CMM)。CMM1.1的5个等级(由低级到高级):初始级软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力,管理是反应式(消防式)的。可重复级建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功。已定义级已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准化软件过程。所有项目均使用经标准、裁减的标准软件过程来开发和维护软件。已管理级收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解与控制。优化级加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能持续不断地改进。七.软件工程项目管理基本知识软件项目管理开始于任何技术活动之前,并且贯穿于整个的软件生命周期。软件工程项目管理一般分为时间管理、成本管理、人力资源管理、风险管理。7.1时间管理7.1.1Gantt图是一种简单的水平条形图,它以水平线段表示子任务的工作阶段,线段的起点和终点分别对应着子任务的起始时间,线段长度指示完成该任务所需要的时间。甘特图的优点:直观简明、易学易绘、可从图上清楚地标出子任务间的时间对比,但它也有缺点:(a)不能显示地描绘各项彼此间的依赖关系;(b)进度计划的关键部分不明显,难以判断哪些部分应当是主攻和主控的对象;(c)计划中有潜力的部分以及潜力的大小不明确,往往造成潜力的浪费。7.1.2PERT网图与关键路径PERT网图是一个由箭头(标识任务)和结点(标识事件)组成的有向图。将网络方法用于工作计划安排的评审和检查。PERT图不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了任务之间的依赖关系,即哪些任务完成后才能开始另一些任务,以及如期完成整个工程的“关键路径”。关键路径(CriticalPath)是由一连串的任务所组成的链,距离最大的一条路径。软件项目的管理人员应该密切注视关键任务的进展情况。如果希望缩短工期,只有往关键任务中增加资源才会有效果。八.模块化基本知识模块是指执行某一特定任务的数据和可执行语句程序元素的集合,通常是指可通过名字来访问的过程、函数、子程序或宏调用等。模块化就是将一个待开发的软件划分成若干个可完成某一子功能的模块,每个模块可独立地开发、测试,最后组装成完整的程序。8.1模块特性8.1.1可分解性如果一种设计方法提供了将问题分解成子问题的系统化机制,它就能降低整个系统的复杂性,从而实现一种有效的模块化解决方案。8.1.2可组装性如果一种设计方法使现存的(可复用的)设计构件能被组装成新系统,它就能提供一种不需要一切从头开始的模块化解决方案。8.1.3可理解性如果一个模块可以作为一个独立的单位(不用参考其他模块)被理解,那么它就易于构造和修改。8.1.4连续性如果对系统需求的微小修改只导致对单个模块,而不是整个系统的修改,则修改引起副作用就会被最小化。8.1.5保护性如果模块内部出现异常情况,并且它的影响限制在模块内部,不会影响其他模块,则错误引起的副作用就会被最小化。8.2模块与模块的耦合性耦合是对一个软件结构内不同模块之间互连程序的度量。耦合可以分成下列几种,它们之间的耦合度由高到低排列。8.2.1内容耦合直接操作或修改另一模块的数据,或不通过正常入口转入另一个模块。软件设计时应坚决禁止内容耦合,应设计成单入口、单出口的模块,避免病态连接。8.2.2公共耦合多个模块引用同一全局数据区。8.2.3外部耦合模块与软件以外的环境有关联。例如,输入输出把一个模块与特定的设备、格式、通信协议耦合在一起。8.2.4控制耦合一模块明显把开关量、名字等信息送入另一模块,控制另一模块的功能。8.2.5标记耦合两个模块之间通过传递公共指针或地址相互作用的耦合。8.2.6数据耦合模块间通过传递数据交换信息。8.2.7非直接耦合(无耦合)模块间无任何关系,独立工作原则上讲,模块化设计总是希望模块之间的耦合表现为非直接耦合方式。在以上耦合中,耦合度从高到低,内容耦合度最高,非直接耦合度最低。8.3模块的内聚性内聚是指一个模块内各个元素彼此结合的紧密程序,它是信息隐蔽和局部的概念的自然扩展。设计时应该力求高内聚,理想内聚的模块应当恰好做一件事情。1).偶然内聚:一个模块的各成分之间毫无关系。比如:一组语句在程序的多处出现,为了节省内存空间,这些语句放在一个模块中,该模块的内聚是偶然内聚的。2)逻辑内聚:把几种逻辑上相关的功能组放在同一模块中。3)瞬时内聚(时间内聚):一个模块所包含的任务必须在同一时间间隔内执行,例如初始化模块。4)过程内聚:一个模块的处理元素是相关的,而且必须按特定的次序执行。5)通信内聚:一个模块的所有成分都结合再同一个数据结构上。6)顺序内聚:模块的成分同一个功能密切相关,且输出,作为另外一个成分的输入。7)功能内聚:模块内的所有成分属于一个整体,完成单一的功能。在以上的内聚中,内聚度从低到高,偶然内聚度最低,功能内聚度最高。模块的高内聚、低耦合的原则称为模块独立原则,也称为模块设计的原则。8.4模块的深度、宽度、扇出与扇入深度:表示软件结构中控制的层数。宽度是软件结构中同一个层次上的模块总数的最大值一个模块的扇入是指直接调用该模块的上级模块的个数。一个模块的扇出是指该模块直接调用的下级模块的个数。设计原则:低扇出、高扇入。8.5模块作用域和控制域软件设计时,模块的作用域应在控制域之内。8.6模块化基础知识小结通过模块的合并和分解,降低模块的耦合度。模块的扇入应尽量大,扇出应尽量小。一个模块的扇入是指直接调用该模块的上级模块的个数。一个模块的扇出是指该模块直接调用的下级模块的个数。扇入大表示模块的重用性高,利用率高。扇出大表示模块的复杂度高。所以要高扇入,低扇出。要将模块的作用范围限制在模块的控制范围之内。降低模块之间的复杂性,避免“病态连接”。九.什么是软件开发方法?有哪些主要方法?软件开发方法:使用已定义好的技术集及符号表示习惯组织软件生产的过程。结构化方法、面向对象方法、JACKSON方法。9.1结构化方法学结构化方法学也称为生命周期方法学(瀑布模型方法),是一种面向数据流的需求分析方法。它的基本思想是自顶向下逐层分解。为了在需求改变时对软件的影响较小,结构化分析时应该使程序结构与问题结构相对应。常用工具:数据流图(DFD)、数据字典(DD)、实例—关系图(E—R图)及描述加工处理的结构化语言、判定表、判定树。9.1.1数据流图(DFD图)DFD的基本成分数据流图主要由4种成分组成:数据流(dataflow):由一组固定成分的数据组成,表示数据的流向。它可以从源、文件流向加工,也可以从加工流向文件和宿,还可以从一个加工流向另一个加工。通常每个数据流必须有一个合适的名字,一方面是为了区别,另一方面也给人一个直观的印象,使人容易理解这个数据流的含义。但流向文件或从文件流出的数据流不必命名,因为这种数据流的组成部分就是相应文件的组成部分。加工(process):描述了输入数据流到输出数据流之间的变换,也就是输入数据流做了什么处理后变成了输出数据流。每个加工有一个名字和一个编号。编号反映了该加工位于分层DFD的哪个层次和哪张图中以及它是哪个加工分解出来的子加工。文件(file):可以表示数据文件,也可以表示一个数据记录。流向文件的数据流表示写文
本文标题:软件工程基础知识
链接地址:https://www.777doc.com/doc-213075 .html