软工复试
作者:互联网
一
1.软件生命周期由软件定义、软件开发和运行维护三个时期组成。
2.软件定义:问题定义、可行性研究和需求分析
软件开发:总体设计、详细设计、(系统设计)编码和单元测试、综合测试(系统实现)
软件维护:软件维护
3.软件过程:为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项工作的步骤。
4.软件过程模型:瀑布模型、快速原型模型、增量模型、螺旋模型(优缺点没看)
5.软件工程:采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济有效的开发出高质量的软件并维护它。
二
1.可行性研究三方面:技术可行性、经济可行性、操作可行性
2.数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经历的变换。
3.数据字典是关于数据的信息也就是对数据流图所包含的所有元素的定义的集合。
4.成本估计的方法:代码行技术、任务分解技术、自动估计成本技术
5.数据流图的基本图形符号:→:数据流(数据在系统内的传播路径);⚪:加工(对数据流进行某些操作或变换);方块(软件系统外部环境中的实体):数据的源点或终点;丨=:表示数据存储(暂时保存的数据)
三
1.需求分析阶段的任务:确定对系统的综合要求、分析系统的数据要求、导出系统的逻辑模型、修正系统的开发计划(总之就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统“做什么”的问题)
2.需求分析的步骤:问题识别;分析与综合,导出软件的逻辑模型;编写文档(软件需求规格说明书、初步用户使用手册、确认测试计划、软件开发计划)
3.应该从哪些方面验证软件需求的正确性:一致性、完整性、现实性、有效性
五
1.总体设计的主要任务:确定系统的具体实现方案,确定软件结构(回答“概括的说,系统应该怎样实现”这个问题)
2.耦合:一个软件内部不同模块之间互联程度的度量
内聚:一个模块内部各个元素彼此结合的紧密程度,是信息隐藏和局部化概念的自然扩展。
信息隐藏:设计和确定模块时,使每一个模块内部包含的信息对于不需要这些信息的模块是不可访问的。
局部化:把一些关系密切的元素物理的放的彼此靠近。
模块:边界元素限定的相邻程序元素的序列。
模块化:把程序划分为独立命名且可独立访问的模块
3.耦合类别:(耦合度由高到低:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合)
内聚类别:(内聚度由高到低:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚)
4.设计计算机软件的启发式规则:提高模块独立性;模块规模适中;深度、宽度、扇出和扇入都应适当;模块的作用域应该在控制域之内;力争降低模块接口的复杂度;设计单入单出的模块;模块功能可预测(六模一扇)
5.信息流的类型:交换流、事务流
六
详细设计阶段的关键任务是确定怎样具体实现用户所需要的软件系统,也就是说要设计出程序的“蓝图”。
1.结构程序设计的经典定义:如果一个代码块仅仅通过顺序、选择、循环三种基本控制结构进行连接,并且每个代码块只有一个出口和一个入口,则称这个程序是结构化的。
2.过程设计的工具:程序流程图、盒图、PAD图、判定表、判定树
七
实现(编码和测试)
1.测试步骤:模块测试(保证每个模块作为一个单元能正常运行)、子系统测试(把经过单元测试的模块放在一起形成一个子系统来测试,着重测试模块的接口)、系统测试(把经过测试的子系统装配成一个完整的系统来测试)、验收测试(把软件系统作为单一的实体进行测试,验证系统确实能够满足用户的需要)、平行运行(同时运行新开发的系统和将被他取代的旧系统,比较新旧系统的处理结果)
2.白盒测试:把程序看成装在一个透明的盒子里,测试者完全知道程序的结构和算法,按照程序内部的逻辑测试程序,检查程序中的主要执行道路是否能够按照预定要求正常工作。(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、点覆盖、路径覆盖)
3.基本路径测试(一种白盒测试技术):根据过程设计结果画出相应的流图→计算流图的环形复杂度→确定线性独立路径的基本集合→设计可强制执行基本路径中每条路径的测试用例
4.黑盒测试:把程序看成是一个黑盒子,完全不考虑程序的内部结构,是在程序接口进行的测试,只检查程序功能是否正常使用,是否能适当接受输入数据并产生正确的输出信息,运行过程能否保持外部信息的完整性。
5.软件可靠性:程序在给定的时间间隔内,按照规格说明书的规定成功运行的概率。
软件可用性:在给定的时间点,按照规格说明书的规定成功运行的概率。
八
1.软件维护:在软件已经交付运行的情况下,为了改正错误或满足新的需要而修改软件的过程。
改正性维护:诊断和改正错误的过程
适应性维护:和变化了的环境适当的配合而进行的维护
完善性维护:满足用户提出的增加新功能和修改已有功能的建议。
预防性维护:为了改进未来的可维护性或可靠性
2.软件再工程模型的六类活动:库存目录分析、文档重构、逆向工程、代码重构、数据重构、正向工程
九
1.面向对象方法学的五个优点:与人类习惯的思维方法一致、稳定性好、可重用性好、较易开发大型软件产品、可维护性好
2.面向对象建模需要建立的模型:对象模型(描述系统的数据结构)、动态模型(描述系统的控制结构)、功能模型(描述系统功能)
十
1.建立对象模型的典型工作步骤:确定类与对象、确定关联、划分主题、确定属性、识别继承关系、反复修改
2.确立动态模型的典型工作步骤:编写脚本(系统在某一执行期间内出现的一系列事件)、设想用户界面、画时间跟踪图、画状态图、审查动态模型
十一
1.面向对象设计启发规则:设计结果应该清晰易懂、使用简单的类、使用简单的协议、使用简单的服务、使设计变动减至最小、一般-特殊结构的深度应适当
2.重用:同一事物不做修改或稍加改动就多次重复使用
3.软件成分重用级别:代码重用、设计结果重用、分析结果重用
4.类构件:面向对象中的类,是比较理想的可重用构件,称之为类构件
类构件的重用方式:实例重用、继承重用、多态重用
5.多态:一个类实例的相同方法在不同情形下有着不同的表现形式。比如有动物(Animal)之类别(Class),而且由动物继承出类别鸡(Chicken)和类别狗(Dog),并对同一源自类别动物(父类)之一消息有不同的响应,如类别动物有“叫()”之动作,而类别鸡会“啼叫()”,类别狗则会“吠叫()”,则称之为多态。
6.敏捷开发:以用户的需求进化为核心,采用迭代、循环渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中一直处于可使用状态。
十二
1.面向对象方法提高可扩充性准则:封装实现策略、不要用一个方法遍历多条关联链、避免使用多分支语句、精心确定公有方法
十三
1.估计软件规模:代码行技术、功能点技术
补充:
1.封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
2.继承:让某个类型的对象获得另一个类型的对象的属性的方法。通常有两种实现方式:实现继承(直接使用基类的属性和方法而无需额外编码的能力)、接口继承(仅使用属性和方法的名称,但是子类必须提供实现的能力)
标签:测试,软工,系统,复试,模块,内聚,软件,模型 来源: https://www.cnblogs.com/beiweixiaoliu/p/16058797.html