琐碎积累4

琐碎积累4 公共基础知识——软件工程1.软件具有以下特点①软件具有抽象性是一种逻辑实体②软件没有明显的制作过程③软件在使用期间不存在磨损、老化问题④对硬件和环境具有依赖性⑤软件复杂性高成本昂贵⑥软件开发涉及诸多的社会因素如知识产权等。2.系统软件是控制和协调计算机及外部设备支持应用软件开发和运行的软件操作系统是系统软件支撑软件是支撑各种软件的开发与维护的软件又称为软件开发环境浏览器属于支撑软件应用软件是用户可以使用的各种程序设计语言以及用各种程序设计语言编制的应用程序的集合编辑软件、教务管理软件属于应用软件。3.系统软件主要包括①操作系统软件②各种语言的解释程序和编译程序③各种服务性程序④各种数据库管理系统。操作系统、编译程序与汇编程序属于系统软件编译程序与汇编程序属于支撑软件教务管理系统属于应用软件。4.软件是计算机系统中与硬件相互依存的另一部分它包括程序、相关数据及其说明文档。5.软件工程是指用工程化的原则和方法来构建和维护软件其要素包括①方法用于完成软件工程项目的技术手段②工具用于支持软件的开发、管理、文档生成③过程用于支持软件开发的各个环节的控制、管理。6.随着计算机软件规模的扩大软件本身的复杂性不断增加研发周期显著变长正确性难以保证软件开发费用上涨生产效率急剧下降从而出现了入们难以控制软件发展的局面即所谓的“软件危机”。7.软件的危机表现包括①软件需求的增长得不到满足用户对系统不满意的情况经常发生②软件开发成本和进度无法控制③软件质量难以保证④软件不可维护或维护程度非常低⑤软件的成本不断提高⑥软件开发的生产效率的提高赶不上硬件的发展、生产率等问题。8.软件生命周期包括软件产品从提出、实现、使用、维护到停止使用退役的过程。可以将软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。软件生命周期的主要活动阶段是可行性研究与计划制定、需求分析、软件设计、软件实现、软件测试、运行和维护。软件生命周期可分为①定义阶段包括可行性研究、需求分析需求分析的基本任务是明确用户的各种需求对开发软件提出的需求进行分析并给出详细定义编写软件规格说明书及初步的用户手册提交评审。软件需求是指用户对目标软件系统在功能、性能、设计约束等方面的要求是由用户提出的根据需求信息可以达到目标或者解决问题。②开发阶段包括概要设计、详细设计、实现、测试③维护阶段包括使用、维护、退役。9.优秀的设计准则可以对软件结构图进行优化包括①设计功能可预测的模块②设计成单入口、单出口的模块③应减少模块的接口和界面的复杂性④使模块的作用域在该模块的控制域中⑤深度、宽度、扇出和扇入适当⑥模块规模适中⑦模块独立性好。10.软件需求分析阶段的工作可以分为四个方面①需求获取②需求分析③编写需求规格说明书④需求评审。11.确定软件系统的功能属于需求分析阶段的要求在编写需求规格说明书之前完成。12.需求分析阶段只能生成需求分析规格说明书。13.软件需求说明书SRS的编制是为了①便于用户、开发人员进行理解和交流②反映出用户问题的结构可以作为软件开发工作的基础和依据③作为确认测试和验收的依据④为成本估算和编制计划进度提供基础⑤软件不断改进的基础。14.数据流图DFD图是描述数据处理过程的工具是需求理解的逻辑模型的图形表示它直接支持系统的功能建模是结构化方法的需求分析工具。数据字典、判定树和判定表也是常用的结构化分析工具。程序流程图、N-S图、PAD图、PDL伪码等工具用于详细设计的过程中。15.数据流图基本符号的含义①矩形表示数据的外部实体②圆角的矩形表示变换数据的处理逻辑③缺少右半边的矩形表示数据的存储④箭头表示数据流。16.总体设计过程通常由两个主要阶段组成①系统设计确定系统的具体实现方案②结构设计确定软件结构。为确定软件结构首先需要从实现角度把复杂的功能进一步分解。分析员结合算法描述仔细分析数据流图中的每个处理如果一个处理的功能过分复杂必须把它的功能适当地分解成一系列比较简单的功能。17.数据流图从数据传递和加工角度以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程其图符包括①加工、②数据流、③存储文件、④源和潭。18.耦合性和内聚性是模块独立性的两个定性标准。内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量作为软件结构设计的设计原则要求每个模块的内部都具有很强的内聚性耦合性是指模块间相互连接的紧密程度的度量一个模块与其他模块的耦合性越强则该模块的独立性越弱。一般优秀的软件设计应尽量做到高内聚、低耦合即减弱模块之间的耦合性和提高模块内的内聚性有利于提高模块的独立性。19.按照耦合程度从强到弱分别是内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合和非直接耦合没有异构耦合这种方式。20.软件设计中模块划分应遵循①高内聚低耦合②模块大小规模适当③模块的依赖关系适当等。内聚是一个模块内各个元素彼此结合的紧密程度要尽量使模块责任单一耦合是不同模块之间互连程度的度量要尽量使模块独立。21.软件设计阶段的任务包括①结构设计②数据设计③接口设计④过程设计。软件的功能确定是在需求分析阶段完成的。22.N-S图是由若干基本框图构成的流程图其特点是没有流程线PAD图即问题分析图它是一种由左往右展开的二维树形结构程序流程图用于描述问题解决的过程和步骤其中方框表示处理步骤菱形框表示逻辑判断箭头表示控制流向E-R图即实体-联系图用来描述现实世界的概念模型构成元素有实体、属性和联系分别用矩形、椭圆形和菱形表示。23.在程序流程图中①标有名字的带箭头线段表示控制流②矩形表示加工步骤③菱形表示逻辑条件。24.系统结构图的宽度是指最大模块数的层的控制跨度。方框最多的那一层的方框个数深度表示控制的层数。25.软件测试是程序的执行过程目的是尽可能多的发现错误。程序调试基于软件测试时发现的错误其任务是诊断和改正程序中的错误。26.软件测试的基本准则有①所有测试都应追溯到需求②严格执行测试计划排除测试的随意性③充分注意测试中的群集现象④应避免程序员检查自己的程序⑤不可能穷举测试⑥妥善保存测试计划等文件。软件测试是程序的执行过程目的是尽可能多的发现错误。软件测试是保证软件质量的重要手段。27.常用的黑盒测试方法有①等价类划分法②边界值分析法③错误推测法④因果图等。常用的白盒测方法有①逻辑覆盖测试包括语句覆盖、路径覆盖、判断覆盖、条件覆盖②基本路径测试等黑盒测试也称功能测试或数据驱动测试完全不考虑程序内部逻辑结构和具体代码把程序看作是一个不能打开的黑盒子依据软件需求规格说明书检查程序的功能是否符合它的功能说明主要针对软件界面和软件功能进行测试。白盒测试是把程序看成装在一只透明的白盒子里测试者完全了解程序的结构和处理过程。它根据程序的内部逻辑来设计测试用例检查程序中的逻辑通路是否都按预定的要求正确地工作。28.确认测试的任务是验证软件的有效性即验证软件的功能、性能以及其他特性是否满足需求规格说明中确定的各种需求。29.软件测试的实施过程主要有4个步骤单元测试、集成测试、确认测试验收测试和系统测试。30.软件测试的目的是尽可能多的发现错误。程序调试基于软件测试时发现的错误其任务是诊断和改正程序中的错误。31.软件调试采用的主要方法包括①强行排错法其过程为设置断点、程序暂停、观察程序状态、继续运行程序②回溯法指一旦发现了错误先分析错误征兆确定最先发现“症状”的位置③原因排除法指通过演绎和归纳以及二分法来排错。