您好,欢迎访问三七文档
1软件工程第一部分传统软件开发方法1、软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。2、软件危机有哪些主要表现?⑴软件开发成本和进度的估计很不准确。⑵用户对开发的软件系统常常不满意。⑶软件产品的质量往往靠不住。⑷软件没有适当的文档资料,软件不可维护。⑸软件开发成本逐年上升,软件开发生产率跟不上计算机应用。3、软件危机包含下述两方面的问题:①如何开发软件,以满足对软件日益增长的需求;②如何维护数量不断膨胀的已有软件。4、软件生命周期一个软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为软件生命周期。5、消除软件危机的途径(1)彻底消除“软件就是程序”的错误观念。(2)必须充分认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。6、软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把正确的管理技术和最好的技术方法结合起来,以经济地开发出高质量的软件并有效地进行维护,这就是软件工程。7﹑软件工程目标和内容是什么?软件工程的目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。软件工程的内容:研究内容包括开发技术和开发管理两个方面。开发技术主要研究:软件开发方法,开发过程,开发工具和环境。开发管理主要研究:软件管理学,软件经济学,软件心理学。8、软件工程具有下述本质特性⑴软件工程关注于大型程序的构造⑵软件工程的中心课题是控制复杂性⑶软件经常变化⑷开发软件的效率非常重要⑸和谐地合作是开发软件的关键⑹软件必须有效地支持它的用户⑺软件工程师的领域知识影响其创造产品9、软件工程的7条基本原理(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精2(7)承认不断改进软件工程实践的必要性10、面向对象方法学具有下述4个要点。(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。(2)把所有对象都划分成类(class)。(3)按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。(4)对象彼此间仅能通过发送消息互相联系。11、软件生命周期由哪些时期组成?各个时期划分成哪些阶段?软件生命周期(各阶段)软件生命周期由软件定义、软件开发和运行维护三个时期组成。1.软件定义时期划分为三个阶段:问题定义、可行性研究和需求分析2.开发时期:总体设计、详细设计、编码和单元测试、综合测试。3.维护时期:主要任务是使软件持久地满足用户的需要。12、什么是软件过程?软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件过程定义了运用技术方法的顺序、应该交付的文档资料、为保证软件质量和协调软件变化必须采取的管理措施,以及标志完成了相应开发活动的里程碑。13、(1)瀑布模型的特点:·阶段间具有顺序性和依赖性·推迟实现的观点·质量保证的观点(2)瀑布模型优点:·可强迫开发人员采用规范的方法(如结构化技术);·严格地规定了每个阶段必须提交的文档;·要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。(3)瀑布模型缺点:·最主要的是“瀑布模型是由文档驱动的”,在文档方面花费了在量的人力与物力。14.可行性研究的任务是什么?(1)进一步分析和澄清问题的定义,在澄清问题的基础上,导出系统的逻辑模型;(2)从系统逻辑模型中,选择问题的若干种主要解法,研究每一种解法的可行性,为以后的行动提出建议;(3)如果问题没有可行的解,建议停止系统开发;如果问题有可行的解,应该推荐一个较好的解决方案,并为工程制定一个初步的计划。15.可行性研究包括哪几方面的内容?⑴技术可行性,使用现有的技术能实现这个系统吗?⑵经济可行性,这个系统的经济效益能超过它的开发成本吗?⑶操作可行性,系统的操作方式在用户组织内行得通吗?⑷法律可行性,开发系统是否违反国家法律,是否侵犯他人利益。(5)社会效益可行性,开发的系统能为用户带来怎样的社会经济效益。16、数据流图是一种图形化技术,它对系统的逻辑功能进行描绘,图中没有任何具体的物理元素,只是描绘数据在软件中流动和被处理的逻辑过程。17、数据字典是关于数据的信息的集合,是对数据流图中包含的所有元素的定义的集合。数据字典由下列4类元素组成:(1)数据流(2)数据项(即数据元素):组成数据流和数据存储的最小元素。(3)数据存储(4)处理318、在需求分析时,结构化分析方法应遵守哪些准则?(1)必须理解并描述问题的信息域,建立数据模型。(2)必须定义软件应完成的功能,建立功能模型。(3)必须描述作为外部事件结果的软件行为,建立行为模型。(4)必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。19、什么是需求分析?需求分析阶段的基本任务是什么?需求分析:软件分析员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。基本任务:⑴问题识别,软件分析员和用户确定对问题的综合需求,这些需求包括功能需求,性能需求,环境需求,用户界面需求。⑵分析与综合,导出软件的逻辑模型。⑶编写文档,包括编写需求规格说明书,初步用户使用手册,确认测试计划,修改完善软件开发计划。20、从哪些方面验证软件需求的正确性?(1)一致性:所有需求必须是一致的,不能互相矛盾。(2)完整性:需求必须是完整的,规格说明书应包括用户需求的每个功能或性能。(3)现实性:用户需求应该是用现有的硬件技术和软件技术来实现的。(4)有效性:需求是正确有效的,确实能解决用户面对的问题。21、有哪些验证软件需求的方法?(1)验证需求的一致性:审查软件需求规格说明书是否丰在冗余、遗漏、不一致等问题。(2)验证需求的现实性:分析利用现有的软、硬件技术实现目标系统的可能性。(3)验证需求的完整性和有效性:审查软件需求规格说明书是否完整、准确地描述目标系统的需求。22、总体设计目的是什么?总体设计的任务是什么?总体设计目的就是回答“系统应该如何实现?”。这个阶段有两个任务:①划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等;②设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。23、模块是数据说明,可执行语句等程序对象的集合,它是构成程序的基本构件。模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把若干模块构成一个整体,完成用户需求。模块化的目的是使一个复杂的大型软件简单化。24、什么是模块独立性?写出模块独立性重要的理由。模块独立性是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单。模块独立性重要的理由主要有两条:第一,有效的模块化(即具有独立的模块)的软件比较容易开发出来。第二,独立的模块比较容易测试和维护。25、耦合是对一个软件结构内不同模块之间互连程度的度量。内聚指模块功能强度的度量,即一个模块内部各个元素彼此结合的紧密程序的度量。数据耦合:指两模块之间有调用关系,传递的是简单的数据值。功能内聚:指模块内所有元素共同完成一个功能,缺一不可。26、在开发软件过程中总结出了哪些启发规则?4⑴改进软件结构提高模块独立性⑵模块规模应该适中⑶深度、宽度、扇出和扇入都应适当⑷模块的作用域应该在控制域之内⑸力争降低模块接口的复杂程度⑹设计单入口单出口的模块⑺模块功能应该可以预测27.详细设计的任务是什么?⑴为每个模块确定采用的算法;⑵确定每一模块使用的数据结构;⑶确定模块接口的细节;⑷编写过程设计说明书;⑸设计每一模块的测试用例。28、结构程序设计有哪些好处?⑴开发出的程序结构层次清晰;⑵不使用GOTO语句,程序的静态和动态结构情况比较一致;⑶控制结构有确定的逻辑模式;⑷可重用的代码量大;⑸程序的逻辑结构清晰,有利于程序正确性证明。29、程序流程图的主要优点是:对控制流程的描绘很直观,便于初学者掌握。程序流程图的主要缺点如下:⑴程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。⑵程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。⑶程序流程图不易表示数据结构。30、N-S图的特点:⑴功能域(即控制结构)明确,可以从盒图上一眼就看出来。⑵不可能任意转移控制。⑶很容易确定局部和全程数据的作用域。⑷很容易表现嵌套关系,也可以表示模块的层次结构。31、PAD图的主要优点如下:⑴使用PAD图设计出来的程序必然是结构化程序。⑵PAD图所描绘的程序结构十分清晰。⑶用PAD图表现程序逻辑,易读、易懂、易记。⑷容易将PAD图转换成高级语言源程序。⑸PAD图的符号支持自顶向下、逐步求精方法的使用。32、Jackson图有哪些结构?它又有哪些优点?Jackson图有三种结构:顺序结构、选择结构和重复结构。它有下面优点:⑴便于表示层次结构,而且是对结构进行自顶向下分解的有力工具;⑵形象直观可读性好;⑶既能表示数据结构也能表示程序结构。33、定量度量程序复杂程度的方法有哪三方面价值?5⑴把程序的复杂程度乘以适当常数即可估算出软件中错误的数量,以及软件开发需要的工作量。⑵定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;⑶程序的定量的复杂程度可以作为模块规模的精确限度。34、G.Myers给出的关于测试的一些规则:(1)测试是为了发现程序中的错误而执行程序的过程;(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3)成功的测试是发现了至今为止尚未发现的错误的测试。35、软件测试准则有几条?(1)所有测试都应该能追溯到用户需求。(2)应该远在测试开始之前就制定出测试计划。(3)把Pareto原理应用到软件测试中。(4)应该从“小规模”测试开始,并逐步进行“大规模”测试。(5)穷举测试是不可能的。(6)为了达到最佳的测试效果,应该由独立的第三方从事测试工作。36、软件测试是软件测试人员设计出一系列测试方案,竭力发现程序中存在的错误的过程。测试阶段的根本目标是尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。软件测试方法有两种:黑盒测试和白盒测试。(1)黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常工作。黑盒测试又称为功能测试。(2)白盒测试法是按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。白盒测试又称为结构测试。37、单元测试着重从哪几个方面对模块进行测试?⑴模块接口⑵局部数据结构⑶重要的执行通路⑷出错处理通路⑸边界条件38、软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。软件可用性是程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。39、软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。软件维护可有四项活动:⑴改正性维护:诊断和改正使用期间程序中存在的错误的过程,称改正性维护。⑵适应性维护:为了和变化了的环境适当地配合而进行的修改软件的活动,称适应性维护。⑶完善性维护:为完善软件而增加功能或改进已有的功能的活动,称完善性维护。⑷预防性维护:为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件活动,称预防性维护。40、决定软件可维护性的因素主要有几个?⑴可理解性:理解软件的结构、接口、功能和内部过程的难易程度。⑵可测试性:诊断和测试的难易程度。⑶可修改性:软件修改的难易程度。⑷可移植性:把程序从一种计算环境转移到另一种计算环境的难易程度。6⑸可重用性:软件构件可重用的难易程度。第二部分面向对象软
本文标题:软件工程理论知识
链接地址:https://www.777doc.com/doc-6135511 .html