下面是自己在准备考研复试面试时整合的本科模拟题、课本和学姐资料,仅供参考,不足之处欢迎交流
软件:软件是程序、数据以及相关文档的集合。程序是完成预定功能和性能的可在计算机系统上的指令序列;数据是可以使程序适当处理信息的数据结构;文档是在软件开发过程中所使用的一系列图文资料。
软件工程:软件工程是①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中所提到的途径。
软件危机:软件危机又叫软件萧条、软件困扰。
在计算机开发和维护过程中所遇到的一系列严重问题都称为软件危机。包含两方面的问题:
①如何开发软件,以满足社会对软件日益增长的需求。
②如何更有效的维护数量不断膨胀的已有软件。
软件工程方法学:通常把在软件生命周期全过程中所使用的一整套技术方法的集合,称为方法学,也称为范型。软件工程方法学包含3个要素:方法、工具和过程。
①方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题。
②工具是为运用方法而提供的自动的或半自动的软件工程支持环境。
③过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件过程:软件过程是为了获得高质量软件所需完成一系列任务的框架,它规定了完成各项任务的工作步骤;且定义了运用方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。
软件生命周期模型:是跨越整个生存期的系统开发、运行和维护过程所实施的全部过程、活动和任务的结构框架。
模块独立原理:软件应该由一组完成相对独立子功能的模块组成,这些模块彼此之间的接口关系应该尽量简单。
耦合:是对一个软件结构内不同模块之间互连程度的度量,是模块独立程度的衡量标准之一。
内聚:是对一个模块内部各个元素彼此结合的紧密程度的度量,它是信息隐藏和局部化的自然扩展。是模块独立程度的衡量标准之一。
信息隐藏:只知道它的功能和外部接口,而对外界隐藏了对象的实现细节。
黑盒测试/功能测试:把程序看作一个黑盒子,完全不了解其内部结构和处理算法。黑盒测试是在程序接口处进行的测试,它只检查程序功能是否按照规格说明的规定正常使用,程序是否能适当的接收输入数据并产生正确的输出数据,程序运行过程中能否保持外部信息的完整性。
黑盒测试技术有:①等价划分 ②边界值分析 ③错误推测
白盒测试/结构测试:把程序看作装在一个透明的白盒子里,测试者完全知道其内部结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路能否按照预定要求正常工作。
软件质量:软件质量是软件与明确地或隐含地定义的需求相一致的程度,更具体的说软件质量是软件与①明确叙述的功能和性能需求、文档中明确描述的开发标准以及②任何专业开发的软件都应该具有的隐含特征 相一致的程度。
软件可靠性:程序在给定的时间间隔内按照规格说明书的规定成功地运行的概率。
软件可用性:程序在给定的时间点,按照规格说明书的规定成功地运行的概率。
结构化分析:结构化分析方法是面向数据流自顶向下逐步求精进行需求分析的方法。3个要点:
①采用自顶向下功能分解的方法;
②强调逻辑功能而不是实现功能的具体方法;
③使用图形进行系统分析并表达分析的结果。
结构化设计方法(SD方法):面向数据流的设计是以需求分析阶段产生的数据流图为基础,把信息流映射成软件结构。(信息流的类型决定了映射的方法)
结构化程序设计:经典定义:如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且只有一个入口和一个出口,则称这个程序是结构化的。
面向对象方法学:面向对象方法学是一种以数据或信息为主线,把数据和处理相结合的方法,把对象作为封装了数据结构和可以施加在这些数据结构上的操作的封装体。
面向对象分析:抽取和整理用户需求 并建立问题域精确模型的过程。
面向对象设计:用面向对象观点建立求解域模型的过程。
类:类是对具有相同数据和操作的一组相似对象的定义。
对象:对象是对现实世界的抽象,是封装了数据结构和可以施加在这些数据结构上的操作的封装体。
继承:是指能够直接获得已有性质和特征,而不必重复定义它们。在面向对象的软件技术中,继承是子类自动地共享类中定义的数据和方法的机制。
多态性:是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象,即在类等级的不同层次中可以共享一个方法的名字,不同层次中的每个类各自按照自己的需要来实现这个行为。
形式化说明技术:描述系统性质的基于数学的技术。
逐步求精:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。
详细设计的任务:
1⃣️过程设计,即设计软件体系结构中所包含的每个模块得实现算法。
2⃣️数据设计,即设计软件中所需要的数据结构。
3⃣️接口设计,即设计软件内部各个模块之间、软件与协作系统之间以及软件与使用它的人之间的通信方式。
基于脚本的设计:此方法主要用于解决要求的验证问题。一个脚本将模拟在系统运行期间用户经历的事件,它提供了输入、处理、输出的屏蔽,以及有关对话的一个模型,开发者能够给用户显示一个系统的逼真视图。
集成测试:在单元测试的基础上,将所有模块按照设计要求组装成子系统或系统进行的测试。以便发现与接口有关的错误。
过程抽象:把完成一个特定功能的动作序列抽象为一个过程名和参数表,通过指定过程名和实际参数调用此过程。
数据字典:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义和集合。
数据设计:是为在需求规格说明中定义的那些数据对象选择合适的逻辑表示,并确定可能作用在这些逻辑结构上的所有操作(包括选用已存在的程序包)。
异步消息(Asynchronous Message):表示消息源发出消息后不必等待消息处理过程的返回,即可继续执行自己的后续操作。
系统响应时间:指当用户执行了某个控制动作后(例如,按回车键,点鼠标等),系统作出反应的时间(指输出所期望的信息或执行对应的动作)。
重构工程:它是在逆向工程所获信息的基础上修改或重构已有的系统,产生系统的一个新版本。
逆向工程:是分析程序以便在比源代码更高的抽象层次上创建出程序的某种表示的过程。即逆向工程是一个恢复设计结果的过程,逆向工程工具从现存的程序代码中抽取有关数据、体系结构和处理过程的设计信息。
正向工程:应用软件工程的原理、概念、技术和方法来重新开发某个现有的应用系统。在大多数情况下被再工程的软件不仅重新实现现有系统功能,而且加入了新功能和 且提高了整体性能。
计算机辅助软件工程 (CASE):将若干工具集成起来,与软件工程数据库和计算机系统构成一个支持软件开发的系统。
CASE工具有哪些:
1⃣️图稿绘制 visio
2⃣️源码浏览工具 Dia
3⃣️配置管理工具 CVS
4⃣️数据库建模 Rational Rose
5⃣️UML建模 Rational Rose
编码风格:是在不影响性能的前提下,有效地编排和组织程序以提高可读性和可维护性。
实体联系图:描述系统所有数据对象的组成和属性,描述数据对象之间关系的图形语言。
模型:是为了理解事物而对事物做出的一种抽象,它忽略了不必要的细节。(是对事物的一种无歧义的书面描述。模型由一组图示符号和组织这些符合的规则组成,利用它们来定义和描述问题域中的术语和概念。模型是一种思考工具,利用这种工具可以把知识规范的表示出来。)
对象模型:表示静态的、结构化的系统的数据性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。
动态模型:表示瞬时的、行为化的系统的控制性质,它规定了对象模型中对象的合法变化序列。
功能模型:表示变化的系统的功能性质,它指明了系统应该做什么,因此更直接地反映了用户对目标系统的需求。
状态图:描述对象的动态行为。它包含对象所有可能的状态、在每个状态下能够响应的事件以及事件发生时的状态迁移和响应动作。
构件图:描述软件系统中各组成部件以及它们之间的依赖关系。
活动图:描述系统为完成某项功能而执行的操作序列,这些操作序列可以并发和同步。
场景:从单个执行者的角度观察目标系统的功能和外部行为。
由模块组装成程序的两种方法:渐增式测试方法、非渐增式测试方法。
①渐增式测试方法:把下一个要测试的模块同已经测试好的模块结合起来进行测试,重复此过程直到程序组装完毕。
②非渐增式测试方法:先分别测试每个模块,再把所有模块按设计要求放在一起进行测试。
α测试: 用户在开发者的场所进行测试,或者是公司内部用户模拟各类用户行为对即将面市的软件产品进行测试。
β测试: 用户在一个或多个客户场所进行的测试。是软件在开发者不能控制的环境中进行的。
项目风险:指项目在预算、进度、人力、资源、顾客和需求等方面的原因对软件项目产生的不良影响。
技术风险:指软件在设计、实现、接口、验证和维护过程中可能发生的潜在问题,对软件项目带来的危害。
封装:是把数据和实现操作的代码集中起来放在对象内部。封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节。
信息隐藏原理(信息隐蔽):指在设计和确定模块时,使得一个模块内包含的信息(过程和数据),对于不需要这些信息的其他模块来说,是不能访问的。
软件维护:就是在软件已经交付用户使用之后,为了改正软件中的错误或使软件满足新的需求而修改软件的过程。
软件维护的副作用:指由于维护时的改动,在软件中引入了潜伏的错误。
软件可维护性:维护人员理解、改正、改动或改进软件的难易程度。
改正性维护:诊断和改正用户使用软件时所发现的软件错误的过程。
适应性维护:为了适应环境的变化而修改软件的活动。
完善性维护:用户在使用软件的过程中,往往提出增加新功能或改变已有功能的要求,还可能要求进一步提高程序的性能,为了满足这类要求而修改软件的活动。
预防性维护:为了提高未来的可维护性或可靠性而主动修改软件的活动。即把今天的方法应用到昨天的系统上,以支持明天的需求。
基线:是已经通过正式复审的规格说明或中间产品,它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变它,即基线就是通过了正式复审的软件配置项。
原型:是模拟某种产品的原型模型。是软件的一个早期可运行的版本,在该原型的基础上逐渐完成整个系统的开发工作。
软部件合成:是指将库中的软部件(经适当修改后)相互连接,或者将它们与当前开发项目中的软件元素相连接,最终构成新的目标软件。
参数化抽象:是指当描述类的规格说明时并不具体指定所要操作的数据类型,而是把数据类型作为参数。
可执行的规格说明:这是一种要求说明过程自动化的技术,通过可执行的规格说明语言来描述预期的行为“做什么”,人们可以直接从观察中用规格说明语言来规定任何系统行为。
IEDF方法:是美国空军在1981年针对集成化计算机辅助制造(简称ICAM)工程项目中用于进行复杂系统分析和设计的方法,是在结构化分析与设计技术的基础上提出来的。
软件概要设计:进入了设计阶段,要把软件“做什么”的逻辑模型变换为怎么做的物理模型,即着手实现软件的需求,并将设计的结果反应在“设计规格说明书”文档中,所以软件设计是一个把软件需求转换为软件表示的过程,最初这种表示只是描述了软件的总的体系结构,称为软件的概要设计或结构设计。
附加策略:是将原型用于开发的全过程,原型由最基本的核心开始,逐步增加新的功能和新的需求,反复修改反复扩充,最后发展为用户满意的最终系统。
抛弃策略:是将原型用于开发过程的某一阶段,促使该阶段的开发结果更加完整、准确、一致、可靠,该阶段结束后,原型随之作废。
静态测试:指被测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。
事件:是指定时刻发生的某件事情。它是某事情发生的信号,它没有持续时间,它是一种相对性的快速事件。
动态冗余:动态冗余的主要方式是多种模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块来顶替它并重新运行。这里须有检测、切换和恢复过程,故称其为动态冗余。
模块化:指解决一个复杂问题是自顶向下逐层把软件系统划分成若干模块的过程,每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。
模块化的根据:把复杂问题分解成许多容易解决的小问题,原来的问题也就容易解决了。
货币的时间价值:通常利用银行的存款利息来表示货币的时间价值。设年利率为I,现存入P元,n年后得到本金和利息为F。若不计复利,则P元在n年后的价值为F=P*(1+ni)。反过来,若n年后能收入的本金和利息为F,则将来F元的现在价值(本金)P为:P=F/(1+ni)。可用这个公式来计算将来收入的现在价值。这是效益分析的最基本公式。
风险分析:实际上就是贯穿在软件工程上的一系列风险管理步骤,其中包括风险识别、风险估计、风险管理策略、风险解决和风险监督,它能让人们主动“攻击”风险。
语句覆盖:选择足够多的测试数据使被测程序中每个语句至少执行一次。
判定覆盖:不仅每个语句至少执行一次,每个判定的每个分支也至少执行一次。
条件覆盖:不仅每个语句至少执行一次,判定表达式的每个条件都取到各种可能的结果。
判定/条件覆盖:选择足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。
条件组合覆盖:选择足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。
路径覆盖:选择足够多的测试数据,使得每条可能路径都至少执行一次。
软件工程环境:美国国防部在STARS计划中定义如下:“软件工程环境是一组方法、过程及计算机程序(计算机化的工具)的整体化构件,它支持从需求定义、程序生成直到维护的整个软件生存期”。
驱动模块:用来模拟被测模块的上级调用模块,其功能比真正的上级模块简单的多,它只完成接受测试数据,以上级模块调用被测模块的格式驱动被测模块。接收被测模块的测试结果并输出。
人的因素的含义:
①人对感知过程的认识,包括视觉、阅读时的认知心理、记忆、归纳与演绎推理等;
②用户已有的技能和行为方式;
③用户所要求的完成的整个任务以及用户对人机交互部分的特殊要求。
软件结构图:是软件系统的模块层次结构,反映了整个系统的功能实现。
错误(IEEE定义):由开发人员造成的软件差错(bug)。
故障:由错误引起的软件的不正确行为。
软件项目管理:软件项目管理先于任何技术活动之前开始,并且贯穿于软件的整个生命周期之中。软件项目管理过程从一组项目计划活动开始,而制定计划的基础是工作量估计和完成期限估计。
代码行技术:依据以往开发类似产品的经验和历史数据,估计实现一个功能所需要的源程序行数。是一种比较简单的定量估算软件规模的方法。
功能点技术:依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。用功能点(FP)为单位度量软件规模。是为了克服代码行技术的缺点,提出来的新技术。
Brooks规律:向一个已经延期的项目增加人力,只会使得它更加延期。
版本控制:版本控制使用规程和工具,以管理在软件工程过程中所创建的配置对象的不同版本。
能力成熟度模型(CMM):用于评价软件机构的软件过程能力的模型。