软件工程知识点总结_第1页
软件工程知识点总结_第2页
软件工程知识点总结_第3页
软件工程知识点总结_第4页
软件工程知识点总结_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程知识点总结软件工程是指将工程化的方法应用于软件开发的过程,包括问题定义、需求分析、概要设计、系统设计、详细设计、软件开发、综合测试和运行维护等阶段。在软件生命周期中,我们可以采用不同的模型,包括瀑布模型、快速原型、增量、螺旋和喷泉模型等。在进行软件开发之前,我们需要进行可行性研究,以确定问题是否能够解决。这个过程需要考虑四个方面,包括技术、经济、操作可行性和法律。我们可以使用数据流图来帮助我们完成可行性研究,数据流图包括源点/终点、处理、数据存储和数据流等四种成分。在需求分析阶段,我们需要确定系统必须完成哪些工作,并对目标系统提出完整、清晰、具体的要求。结构化方法是一种常用的需求分析方法,它可以帮助我们自顶向下逐步求精进行需求分析。实体联系图包括数据对象、属性和联系等三种元素,其中联系可以是1:1、1:N或M:N的关系。总体设计阶段的任务是回答“概括的说,系统应该如何实现”,确定系统的物理配置方案,并进而确定组成系统的每个程序结构。在总体设计阶段中,我们需要考虑模块的内聚和耦合,应尽量选用松散耦合的系统。内聚表示一个模块内各元素结合的紧密程度,而耦合表示一个软件结构内各个模块之间的互连程度。详细设计阶段的任务是确定应该怎样具体的实现所要求的系统,经过这个阶段的设计工作应该得出对目标系统的精确描述。在详细设计阶段中,我们可以使用程序流程图、盒图、PAD图、判定表和判定树等工具来完成过程设计。在测试阶段,我们需要进行单元测试和集成测试。单元测试是针对每个程序模块进行的测试,而集成测试则是在单元测试完成后,将模块集成为系统的过程中进行的测试。在测试过程中,我们可以使用白盒测试技术,包括逻辑覆盖和基本路径测试等。在白盒测试中,程序被视为一个透明的盒子,测试人员完全了解程序的内部结构和处理过程。因此,在测试过程中,要按照程序内部的逻辑来测试程序,检验程序中的每条通路是否都能按预定的要求正确工作。白盒测试也被称为结构测试。其中,语句覆盖是指设计足够的调试用例,使得程序中的每个语句至少执行一次;判定覆盖是指设计足够的测试用例,使得程序中每个判定的取“真”分支和取“假”分支至少都执行一次,也被称为分支覆盖;条件覆盖是指设计足够的测试用例,使得程序判定中的每个条件能获得各种可能的结果;判定/条件覆盖是指设计足够的测试用例,使得判定中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果;条件组合覆盖是指设计足够的测试用例,使得每个判定中的条件的各种可能组合都至少出现一次。黑盒测试技术是完全不考虑程序内部的结构和处理过程,只按照规格说明书的规定来检查程序是否符合它的功能要求。黑盒测试是在程序接口进行的测试,也被称为功能测试。在黑盒测试中,主要检查程序的功能是否正确或完善,数据的输入能否正确接收,输出是否正确,以及是否能保证外部信息(如数据文件)的完整性等。在使用黑盒法设计测试用例时,必须使用所有可能的输入数据来检查程序是否都能产生正确的输出。等价类划分是黑盒测试中常用的一种方法。等价类的划分在很大程度上依靠测试人员的经验。基本原则包括:如果输入条件规定了取值范围,则可划分出一个有效的等价类(输入值在此范围内)和两个无效的等价类(输入值小于最小值、输入值大于最大值);如果输入条件规定了输入数据的个数,则可相应地划分出一个有效的等价类(输入数据的个数等于给定的个数要求)和两个无效的等价类(输入数据的个数少于给定的个数要求、输入数据的个数多于给定的个数要求);如果输入条件规定了输入数据的一组可能的值,而且程序对这组可能的值做相同的处理,则可将这组可能的值划分为一个有效的等价类,而这些值以外的值划分成无效的等价类;如果输入条件规定了输入数据的一组可能的值,但是程序对不同的输入值做不同的处理,则每个输入值是一个有效的等价类,此外还有一个无效的等价类(所有不允许值的集合);如果输入条件规定了输入数据必须遵循的规则,则可以划分一个有效的等价类(符合规则)和若干个无效的等价类(从各种角度违反规则)。是明确软件的需求和规格,确定软件的功能和性能要求。3、软件开发时期的任务是根据软件定义阶段的规格说明书,设计、编码、测试和集成软件。4、软件运行维护时期的任务是确保软件在运行期间能够正常工作,并且对软件进行必要的改进和维护。5、软件生命周期模型:线性顺序模型、瀑布模型、迭代模型、螺旋模型、增量模型等。6、软件生命周期管理:对软件开发和维护过程进行计划、监控、控制和评估的过程。1.4需求分析1、需求分析是软件开发的第一步,是明确软件需求的过程。2、需求分析的任务是确定软件的功能和性能要求,以及软件对环境和用户的各种要求。3、需求分析的方法:面谈、问卷调查、场景分析、原型设计等。4、需求规格说明书:是需求分析的最终成果,包括功能需求、性能需求、质量需求、约束条件等。1.5软件设计1、软件设计是根据需求规格说明书,将软件划分为各个模块,并确定模块之间的接口和交互关系的过程。2、软件设计的任务是确定软件的结构、组件和算法,以及软件的实现方式和编程语言。3、面向过程设计方法:结构化分析和设计方法(SA/SD)、实体联系法(ER)、数据流程图(DFD)等。4、面向对象设计方法:统一建模语言(UML)、Booch方法、Jacobson方法、Rumbaugh方法等。1.6软件实现1、软件实现是根据软件设计的结果,将软件编写成可执行的程序的过程。2、软件实现的任务是将软件设计的模块转化为程序模块,并编写测试程序进行测试和调试。3、软件实现的方法:结构化编程、面向对象编程等。1.7软件测试1、软件测试是为了发现软件中存在的错误和缺陷,并确保软件的质量和可靠性。2、软件测试的任务是设计测试用例、运行测试程序、分析测试结果并修正软件中的错误和缺陷。3、软件测试的方法:黑盒测试、白盒测试、灰盒测试等。1.8软件维护1、软件维护是为了保证软件在运行期间能够正常工作,并且对软件进行必要的改进和维护。2、软件维护的任务包括改正性维护、适应性维护、完善性维护和预防性维护。3、软件维护的方法:代码阅读、重构、重新设计、重新实现等。1.9软件可维护性1、软件可维护性是指软件在维护期间的易于理解、测试、修改、移植和重用的程度。2、软件可维护性因素包括可理解性、可测试性、可修改性、可移植性和可重用性。1.10对象模型1、对象模型是描述软件中对象之间关系的一种模型。2、对象模型包括关联、聚集、泛化、依赖和细化等关系。3、对象模型的应用:面向对象分析和设计、面向对象编程等。->表示数据流、[]表示数据存储、()表示处理。4.数据字典的作用:提供了软件系统中所有数据的定义和描述,为系统的设计和实现提供了基础。5.数据字典的内容应该包括:数据元素的名称、定义、数据类型、取值范围、来源和去向等信息。6.数据字典应该与数据流图和程序代码相互协调,确保系统的一致性和正确性。在软件开发的生命周期中,通常可以将其分为几个阶段。在软件定义时期,主要分为三个阶段:问题定义、可行性研究和需求分析。在可行性研究的过程中,需要考虑技术、经济、操作和法律方面的可行性,并提出行动方针和开发计划。在软件开发时期,通常分为总体设计、详细设计、编码和单元测试以及综合测试四个阶段。在维护时期,主要任务是保证软件能够长期满足用户的需求。可行性分析是软件开发的一个重要环节,其目的是在最短的时间内以最小的代价确定问题是否可以解决。在可行性研究的过程中,需要复查系统规模和目标,研究目前正在试用的系统,并导出和评价供选择的解决方案。系统流程图和数据流图是可行性研究的两个重要工具,可以帮助我们更好地理解和描述系统的运行过程。数据字典则为系统中的数据提供了定义和描述,为系统的设计和实现提供了基础。数据字典是作为分析阶段的工具最重要的用途之一。它可以帮助分析员准确地描述系统中的数据和数据之间的关系。成本/效益分析的主要目的是从经济角度分析开发一个特定的新系统是否划算,以帮助客户组织的负责人做出是否投资于这项开发工程的决定。软件开发成本主要表现为人力消耗。需求分析是软件定义时期的最后一个阶段,其基本任务是准确地回答“系统必须做什么?”这个问题。为了实现这个目标,需求分析需要遵守一些准则,如建立数据模型、功能模型和行为模型,并用层次的方式展开细节。对软件系统的综合要求包括功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求和将来可能提出的要求。需求分析的任务是确定对系统的综合要求、分析系统的数据要求、导出系统的逻辑模型和修正系统开发计划。与用户沟通获取需求的方法包括访谈、面向数据流自顶向下求精和简易地应用规格说明技术,以及快速建立软件原型。结构化分析方法就是面向数据流自顶向下求精进行需求分析的方法。快速建立软件原型是最准确、最有效、最强大的需求分析技术之一。需求分析过程应建立数据模型、功能模型和行为模型。数据流图是建立功能模型的基础,而状态转换图是行为建模的基础。实体-联系图(E-R)包含实体、关系和属性三种基本成分。总体设计过程通常包括系统设计阶段和结构设计阶段。系统设计阶段确定系统的具体实现方案,而结构设计阶段确定软件的结构。典型的总体设计过程包括设想选择的方案、选择合理的方案和准备系统流程图、组成系统的物理元素清单、成本/效益分析和实现各个系统的进度计划等步骤。3.推荐最佳方案4.功能分解在软件开发过程中,需要将整个系统的功能进行分解,将其划分为多个模块,以便于实现和维护。每个模块完成一个子功能,最终将这些模块集成起来构成一个整体,以满足用户的需求。5.设计软件结构软件结构是指将系统中的各个模块按照一定的方式组织起来,以便于实现和维护。可以使用层次图或结构图来描绘软件结构,以便于开发人员理解和实现。6.设计数据库在软件开发过程中,需要设计数据库以存储系统中的数据。数据库设计需要考虑数据的结构和关系,以便于实现数据的有效管理和查询。7.制定测试计划为了保证软件质量,需要制定测试计划,对系统进行全面测试。测试计划需要考虑测试的范围、测试的方法、测试的时间和测试的人员等因素,以确保软件的稳定性和可靠性。8.书写文档在软件开发过程中,需要编写系统说明、用户手册、测试计划、详细的实现计划和数据库设计结果等文档。这些文档对于软件开发和维护都非常重要,可以帮助开发人员更好地理解和实现系统。9.审查和复查在软件开发过程中,需要进行审查和复查,以确保软件的质量和稳定性。审查和复查可以帮助发现潜在的问题和缺陷,并及时进行修复,以确保软件的正常运行。5.2设计原理1.模块化、抽象、逐步求精、信息隐藏和局部化、模块独立是软件设计的基本原则。2.模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。3.模块化就是将程序分成独立命名且可独立访问的模块,每个模块完成一个子功能,将这些模块集成起来构成一个整体,以满足用户的需求。4.抽象是将相似的方面集中和概括起来,暂时忽略它们之间的差异,或者说,抽出事物的本质特性而暂时不考虑它们之间的细节。5.逐步求精是人类解决复杂问题时采用的基本方法,也是许多软件工程技术的基础。定义:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。6.信息隐藏原则指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。7.局部化是将一些关系密切的软件元素物理地放得彼此靠近。8.模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。模块独立化的重要性在于,一方面,有效地模块化的软件比较容易开发出来;另一方面,独立的模块化比较容易测试和维护。9.模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。10.耦合是对一个软件结构内不同模块之间互连程度的度量。耦合的强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。11.如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。12.如果传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现),则这种耦合称为控制耦合。数据耦合是低耦合,而最高程度的耦合是内容耦合。13.内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。内聚可以分为偶然内聚、逻辑内聚和时间内聚等几种类型。5.3启发规则1.软件结构可以提高模块独立性,从而提高软件的可维护性和可扩展性。2.模块规模应该适中,既不要过大也不要过小,以便于实现和维护。3.深度、宽度、扇出和扇入都应适当,以确保软件结构的合理性和稳定性。4.模块的应用域应该在控制域之内,以确保软件的正确性和可靠性。次都会增加一列符号。5)PAD图中的符号表示清晰,易于理解。6.4模块接口设计1.模块接口设计是指模块与外部环境之间的接口设计。2.模块接口设计的目标是降低模块接口的复杂程度,设计单入口单出口的模块,使模块功能可以预测。3.模块接口设计的方法包括:定义数据结构、定义函数接口、定义消息接口等。4.模块接口设计需要考虑的因素包括:接口的可扩展性、接口的可移植性、接口的可靠性等。6.5面向对象的设计方法1.面向对象的设计方法是一种以对象为中心的设计方法,将问题分解成对象,每个对象封装了数据和行为。2.面向对象的设计方法包括:类的设计、继承和多态等。3.面向对象的设计方法具有高内聚、低耦合、易于维护等优点。4.面向对象的设计方法需要注意的问题包括:类的抽象程度、类的职责、类的关系等。5.面向对象的设计方法需要结合具体问题进行灵活应用,避免过度设计和过度耦合。1.PAD图是一种表示程序逻辑的二维树形结构图形,它可以清晰地表现程序的层次和执行顺序。PAD图从最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。PAD图的符号支持自顶向下、逐步求精方法的使用,设计者可以使用def符号逐步增加细节,直至完成详细设计。PAD图可以转换成高级语言源程序,省去人工编码的工作,提高软件可靠性和生产率。2.判定表由四部分组成,左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对应的动作。判定树是判定表的变种。它们都是用于表示程序的决策逻辑和流程的工具。3.过程设计语言(PDL)也称为伪码,可以作为注释的直接插在源程序中间,使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。已经有自动处理PDL的程序存在,而且可以自动由PDL生成程序代码。但是,PDL不如图形工具形象直观。4.测试是为了发现程序中的错误而执行程序的过程,好的测试方案是极可能发现迄今为止尚未发现的错误的测试,成功的测试是发现了至今尚未发现的错误的测试。测试方法包括黑盒测试和白盒测试。测试步骤包括单元测试、集成测试、确认测试和系统测试。单元测试重点关注模块接口、局部数据结构、重要的执行通路、出错处理通路和边界条件。集成测试有自顶向下集成和自底向上集成两种方法。确认测试的结果可能是软件与用户要求一致,也可能是有差距。Alpha和Beta测试是软件发布前的最后两个测试阶段,Alpha测试由开发者内部进行,Beta测试由外部用户进行。Alpha测试是指用户在开发者的场所进行测试,并在开发者的指导下进行。而Beta测试则是由软件的最终用户在一个或多个客户场所进行。白盒测试技术包括逻辑覆盖、语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖点覆盖、边覆盖和路径覆盖。而黑盒测试技术则包括等价划分、边界值分析和错误推断。调试是指在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。调试途径包括蛮干法、回溯法和原因排除法。软件维护是指在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。维护的种类包括改正性维护、适应性维护、完善性维护和预防性维护。决定软件可维护性的因素包括可理解性、可测试性、可修改性、可移植性和可重用性,而文档则是影响软件可维护性的决定因素之一,包括用户文档和系统文档。面向对象方法学认为客观世

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论