高级软件工程 考试复习

发布 2021-04-24 05:09:28 阅读 9196

1. 软件过程模型和主要模型的异同。

软件过程模型是从一特定的角度对软件过程的本质描述,包括构成软件过程的各种活动、软件产品以及所有涉众。工作流模型、数据流或活动模型、角色/动作模型。

瀑布模型(软件生命周期模型和线性顺序模型):问题定义->需求分析->概要设计->详细设计->编码->测试->维护。特点:

阶段间具有顺序性和依赖性;推迟实现的观点;质量保证的观点。优点:开发过程基本上是线性顺序的,便于管理;基于“明确、完备的需求”,可以获得好的开发效果。

带维护环的瀑布模型:……测试->运行->评价->计划<->需求分析<->设计<->编码<->测试……

v模型:优点:开发和测试同时进行的方式来缩短开发周期,提高开发效率。。

缺点:仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段;忽视了测试对需求分析,系统设计的验证,一直到后期的验收测试才被发现。

螺旋模型:优点:有利于已有软件的重用;有助于把软件质量作为软件开发的一个重要目标;减少了过多测试或测试不足所带来的风险;软件维护与软件开发没有本质区别。

缺点:很难让用户确信这种演化方法的结果是可以控制的。建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。

应用场景:对于新近开发,需求不明确的情况下,适合用螺旋模型进行开发,便于风险控制和需求变更!

迭代式开发:优点:降低风险;得到早期用户反馈;持续的测试和集成;使用变更;提高复用性。

统一过程(rational unified process):构思->细化->构建->移交。特点:

用例驱动(系统功能);以体系结构/架构为中心(表现形式);迭代和增量开发(过程实施);由uml方法和工具支持。

2. 需求的分类和多种模型。

一种划分:用户需求(目标需求)、系统需求(产品需求)、软件设计描述(设计层需求)

另一种划分:业务需求、用户需求、功能需求、非功能需求。

上下文模型(系统环境模型)、状态机模型(行为模型)、结构模型(包括体系结构模型和数据结构模型),数据流模型(行为/上下文)、e-r模型(数据结构模型),对象建模(结构和行为的结构。

3. 系统架构,如c/s,rpc,mvc等。

c/s紧耦合。

rpc松耦合。

mvc(model-view-control):model-核心数据和功能;view-视图;control-输入/输出控制。

4. 设计模式的概念和分类。

广义:是可解决一类软件问题并能重复使用的设计方案。

狭义:是在类和对象的层次描述的可重复使用的软件设计问题的解决方案。

核心思想:通过增加抽象层,把变化部分从那些不变部分里分离出来。

分类:创建型、结构型、行为型。

4大基本要素:模式名称、问题、解决方案和效果。

5. 设计模式的5大原则。

单一职责原则(single responsibility):一个类->仅有一个引起它变化的原因->职责->变化的轴线。

开-闭”原则(open closed):对功能扩展是开放的,对修改是关闭的。在进行扩展的时候,不需要对原来的成宿进行修改。抽象原则和可变性封装原则。

里氏代换原则(liskov substitution):“继承必须确保父类所拥有的性质在子类中仍然成立”,当一个子类的实例能够替换任何其他父类的实例时,它们之间才具有is-a-kind-of-a关系。

接口隔离原则(interface segregation):多个和客户相关的接口要好于一个通用接口;如果一个类有几个使用者,与其让这个类载入所有使用者需要使用的所有方法,还不如为每个使用者创建一个特定接口,并让该类分别实现这些接口。

依赖倒置原则(dependency inversion):高层模块不应依赖低层模块,二者都应该依赖于抽象。

6. 单例、工厂、抽象工厂和建造者模式的概念。

单例(singleton):保证一个类有且仅有一个实例,提供一个全局访问点。

工厂(factory):父类负责定义创建对象的公共接口,而子类则负责生成具体对象,将类的实例化操作延迟到子类中完成。特点:

一个抽象产品类,可以派生出多个具体产品类;一个抽象工厂类,可以派生出多个具体工厂类;每个具体工厂类只能创建一个具体产品类的实例。

抽象工厂(abstract factory):为一系列产品提供统一的创建接口。当需要这个产品族的某一系列的时候,可以从抽象工厂中选出相应的系列创建一个具体的工厂类。

特点:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类;一个抽象工厂类,可以派生出多个具体工厂类;每个具体工厂类可以创建多个具体产品类的实例。

区别:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个;工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

建造者模式(builder):将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。

7. p-cmm模型。

a. 初始阶段(initial)->不一致的管理(inconsistent management)

b. 管理阶段(managed)->工作单位管理(work unit management)

c. 标准阶段(standardized)->业务线管理(business line management)

d. **阶段(predicable)->能力管理(capability management)

e. 革新阶段(innovating)->变革管理(change management)

8. 计算功能点和估计源**量。

未调节功能点的值(unadjusted function point,ufp):。其中,i代表功能度类型号:i=1,2,…,5;j代表复杂性的等级:

j=1,2,3;是第i类功能度和第j级复杂性的影响参数;是第i类功能度和第j级复杂度功能点的个数。

复杂度调节因子(complexity adjustment factor,caf):caf=0.65+0.

01n。n是14类影响因子的影响度,应是将14种影响叠加起来,其值为0~70(14x5,5代表0~5这6个影响级)。

交付功能点(delivered function point,dfp):。

交付的源**行数(delivered lines of code,dloc):与dfp有关。

9. 3种cocomo模型估计软件工作量。

项目类型:固有型、嵌入型和半独立型。

a. 基本cocomo模型(basic model)

该模型为静态、单变量,以估算出的源**行数计算。

开发工作量:(人月),其中,kloc为交付的千行**数,、为模系数。

开发周期:(月)。

系数:b. 中级cocomo模型(intermediate)

该模型除考虑源**行数外,还考虑调节因子(eaf),用其体现产品、软件、人员和项目等因素。

开发工作量。

系数:调节因子eaf(effort adjustment factor)。包含了4类15中属性,其值为0.7~1.6。

c. 高级cocomo模型(advanced)

除保留中级模型的因素外i,还涉及软件工程过程不同开发阶段的影响,以及系统层、子系统层和模块层的差别。

软件可靠性在子系统层各开发阶段有不同的调节因子。

10. 甘特图,pert图。

甘特图:表示工作进度计划以及实际进度情况。横坐标表示时间,水平线段表示子任务的工作阶段,可以为其命名。

线段的起点和终点分别对应着该项子任务的开工时间和完成时间,线段的长度表示完成它所需额时间,有实线和虚线之分,一开始做出各项子任务的计划时间,应该都以虚线表示。

pert图中以有向箭头作为边表示子任务,它有名称、长度(即完成此项子任务所需的时间);以有编号的圆圈作为结点,它应该是子任务向量的始发点或指向点;由若干条边和若干个结点构成了网状图,于是可以沿相互衔接的子任务形成的路径,进行路径长度的计算、比较和分析,从而实现项目工期的控制。

11. 版本控制的问题和模型。

问题:collaborative work;forgot to unlock;parallel work not possible;deadlock。

model 1:lock-modify-unlock;model 2:copy-modify-merge。

12. 敏捷开发的概念。

是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。属于增量、迭代模型。

13. xp架构和主流方法。

core values: communication; simplicity; feedback; courage.

主流方法:团队协作(whole team)、规划策略(the planning game)、结对编程(pair programming)、测试驱动开发(test-driven development)、重构(refactoring)、简单设计(****** design)、**集体所有权(collective code ownership)、持续集成(continuous integration)、客户测试(customer tests)、小型发布(small release)、每周40小时工作制(40-hour week)、编码规范(code standards)和系统隐喻(system metaphor)。

14. scrum架构和主流方法。

框架:三个角色(role)、三种会议(meeting)、三项工件(artifact)组成。

role:product owner、scrum master和scrum team。

meeting:sprint planning meeting、daily scrum meeting和sprint review meeting)。

artifact:the sprint backlog、the defect backlog和burndown charts。

高级软件工程 复习大纲

一 面向对象的基本概念。1 继承 多态 封装。1 继承是指在一个对象类中定义的方法和 或属性可以被另一个对象类继承或复用。2 多态是指不同对象可以以不同的形式响应同样的消息。3 封装是把对象的属性和操作 或服务 结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。2.对象的形式化定义 对象 id,...

软件工程考试复习

软件 计算机系统与硬件相互相存的另一部分,是程序,数据及其文档的完整集合。软件 程序 指令序列 数据 数据结构 文档 资料 软件的特点 形态特征 生产特征 维护特征 复杂特征 智能特征 质量特征 环境特征 软件的管理特征 软件的废弃特征 应用特征 软件的成本比较高。软件危机 软件危机泛指在计算机软件...

软件工程考试复习

征,指不同的对象收到同一个信息产生不同的结果。4 面向对象须识别的5个层次。1类与对象,类是具有某些特性的一类事物的总成,对象是某个具体的事物。2属性层,指类或对象的属性。3 类图的结构,类与类的关系 结构层。4方法层,解决问题的办法。5主题层。5 软件测试的4个阶段。单元测试 单元测试是在软件开发...