系统架构师之路是讨厌的,上午考的综合知识尤其讨厌。
题目难范围广,它大概包括了计算机组成与结构,系统配置与性能评价,操作系统知识,嵌入式技术,数据库技术基础,计算机网络,系统安全分析与设计,知识产权和标准化,企业信息化战略与实施,软件工程,软件架构设计,项目管理,数学与经济管理和专业英语等14个模块。。。不过值得庆幸的是它们是有迹可循的。
目前已经完整进行了一遍一轮复习。最难最复杂的两个模块是软件工程和软件架构设计。趁着国庆的时间,打算集中把这两块基础夯实。今天总结一下软件工程这一模块的易错易混概念。部分tips来自历年真题。
1.需求应该是分优先等级的,不能把所有需求都视为同等重要。
2.软件过程是制作软件产品的一组活动以及结果,这些活动主要由软件人员来完成,主要包括(软件活动主要包括):软件描述、软件开发、软件有效性验证和软件进化。
3.敏捷开发是迭代增量式的开发方法(这一点和RUP类似),并且是面向对象的,而不是面向过程的。
4.面向对象的分析模型主要由顶层架构图、用例与用例图和领域概念模型构成。
设计模型则包含以包图表示的软件体系机构图、以交互图表示的用例实现图、完整精确的类图、描述复杂对象的状态图和用以描述流程化处理过程的活动图等。
5.所谓逆向工程只强调逆向分析原有的程序,而再工程则强调接盘逆向工程的分析结果并设计出新的程序。
6.软件确认测试是一种针对于需求的测试,是用户参与的测试。它主要验证软件功能、性能以及其他特性是否与用户需求一致。
软件确认性测试包括:内部确认测试、Alpha、Beta和验收测试。
7.在软件开发机构中被广泛用来指导软件过程改进的是“能力成熟度模型(Capacity Maturity Model)”
8.变更控制委员会对项目中任何基线工作产品的变更都可以做出决定。(绝对化描述,但这句话没问题。)
9.螺旋模型是在原型模型上扩展而成的。
10.在功用驱动开发方法(FDD)中,编程开发人员分为首席程序员和类程序员。
11.软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括需求分析文档、设计文档、程序代码、测试用例和领域知识等。(这句话概括了软件重用部分大部分的考点。)
12.用于描述系统中每个模块的输入,输出和数据加工的图是IPO图,而非程序流程图。
13.RUP强调采用迭代和增量的方式来开发软件,这样做的好处是在软件开发的早期就可以对关键的,影响大的风险进行处理。(这里用了风险二字,但是一般强调风险和安全性的是螺旋模型,而不是迭代,如果是不涉及RUP的选择题,出现风险果断选螺旋)
14.关于遗留系统问题。
高水平高价值:第一象限。改造。
高水平低价值:第二象限。集成。
低水平高价值:第四象限。继承。
低水平低价值:最菜的,第三象限。淘汰。
15.集成测试的目的是检查各模块之间,以及模块和已集成的软件之间的接口关系,并验证已集成的软件是否复合设计要求,其测试的技术依据是软件概要设计文档。
16.联合需求计划(JRP)是一个大型会议,成本很高,耗时长,讨论期间尽量避免使用专业术语,但主要目的是为了收集需求,而不是对需求进行分析和验证。
17.在结构化分析中,用DFD表示功能模型,用状态转换图表示行为模型,用E-R图表示数据模型。
或者说,功能建模一般用DFD,行为建模一般用状态转换图,数据建模一般用E-R图。
18.用户界面设计的三条黄金原则是让用户拥有控制权,减少用户的记忆负担和保持界面一致。
19.软件的使用过程中,如果是时代和社会变化导致软件需要修改,这种维护是适应性维护;而如果是用户提出了更进一步的需求,那么这种维护是完善性维护。
20.在UML提供的系统视图中,进程视图是逻辑视图的一次执行实例,描述了并发与同步结构;用例视图是最基本的需求分析模型。
21.软件测试的目的是找出存在的错误,而软件调试的目的是定位并修正错误。
22.在构件组装过程中需要检测并解决架构失配问题。其中构件失配主要包括由于系统对构件基础设施、控制模型和数据模型的假设存在冲突引起的失配。
连接子失配包括由于系统对构件交互协议、构件连接时数据格式的假设存在冲突引起的失配。
23.在面向对象设计中,边界类可以实现界面控制、外部接口和环境隔离,控制类作为完成用例业务的责任承担者,协调、控制其他类共同完成用例规定的功能或行为。
24.采用迭代式开发需要在每一轮迭代中进行测试和集成。
25.装饰模式可以动态地给一个对象添加一些额外的职责。
26.在白盒测试方法中,组合覆盖要求设计足够多的测试用例,使得每个判定中条件结果的所有可能组合至少要出现一次。
27.存在多态的情况下,为了达到较高的测试充分性,应对所有可能的绑定都进行测试。(绝对化陈述,但是这句是对的)
28.基于UML的需求分析过程的基本步骤为:
利用用例及用例图表示需求;
利用包图及类图表示目标软件系统的总体架构。
29.快速应用开发(RAD)通过使用基于构件的开发方法进行快速开发。当系统模块化程度较高时,最适合使用RAD方法。
30.使用形式化方法进行需求分析对于开发者的数学基础要求较高,不适用于较为复杂的问题。并未得到普遍采用。
31.软件开发环境应支持多种集成机制。根据功能不同,可以将机制分为三个部分:
环境信息库:存储和开发有关的信息并支持信息交流和共享
过程控制与消息服务器:实现过程集成和控制集成的基础
环境用户页面:必须保持一致性和统一性。
32.如果子模块的接口有一定的差异,但是访问过程要求相同,则需采用外观模式来定义一个高层的接口抽象出相同的访问过程,为子模块提供一个一致的界面。外观设计模式和装饰设计模式是平级的,它为子系统定义了一个高层接口,这个接口使得这一子系统更加容易使用。
33.需求开发包括:需求获取、需求分析、需求定义和需求验证
需求管理并不是对需求开发的管理,而是跟踪系统需求变化的方法。
34.在面向对象的类中,
实体类:用于对必须存储的信息等建模的类,需要长久保存且一直存在。
边界类:系统内部与系统外部的业务主角进行交互建模的类。
控制类:被动出现特定行为的类。
35.在类的结构设计上,每一个类都应当尽量降低成员的访问权限。
36.结构化方法的一个核心特色是自顶向下,逐步求精。而非自底向上。
37.信息流分析的主要工作是找出输出变量和输入变量之间的依赖关系。
38.需求管理是CMM可重复级中的6个关键过程域之一,其主要目标是:对于软件需求,必须建立基线以进行控制,软件计划、产品和活动必须与软件需求保持一致。
39.软件开发环境是支持软件产品开发的软件系统,它由软件工具集和环境集成机制构成。环境集成机制包括:
数据集成机制:提供统一的数据模式和数据接口规范。
控制集成机制:支持各开发活动之间通信、切换调度和协调。
界面集成机制:为统一操作方式提供支持。
40.在基于构件的软件开发中,
逻辑构件模型描述系统设计蓝图以保证系统提供适当的功能;
物理构建模型用来了解系统的性能、腾秃驴等非功能性属性。
41.系统输入设计中,采用内部控制方式以确保输入系统数据的有效性,域检查用于验证数据是否位于合法的取值范围。
42.在系统测试的不同类型中,恢复测试主要是检查系统的容错能力。
以上就是系统架构师考试的软件工程模块最容易弄错的概念了。除了以上,还有一个大BOOS是OOA的设计模式。。。OOA的设计模式分为三类:创建型设计模式,结构型设计模式和行为型设计模式。其中又有不同的小类,小类各有特点,还必背。。。不说了我去背OOA了。。。