软件工程师必备知识?

软件工程师考试(高级)大纲

一、考试说明

1.考试要求:

(1)了解软件工程管理的概念和任务;

(2)了解软件生命周期过程;

(3)了解软件工程标准;

(4)掌握需求分析、测试和维护的基本技术;

(5)掌握软件度量和软件配置管理方法;

(6)了解软件复用的概念;

(7)了解软件质量保证的手段;

(s)了解软件项目对人员的要求;

(9)了解软件知识产权的基本知识。

2.通过该级别等级考试的合格人员,具有从事软件系统分析和工程系统分析师、工程管理员的实际工作能力和专业水平。

3.本次水平测试的范围包括三个模块,即模块1、模块2和模块3。题型是单项选择题,十多项选择题,十项综合题。每个模块的考试时间为90分钟。

二、考试范围

模块1:软件工程技术

1.1软件生命周期过程

1.1.1软件工程过程和软件寿命

1.1.2软件生命周期模型

1.1.3国际标准:ISO/IECI2207信息技术软件生命周期过程

1.2软件需求分析

1.2.1需求分析任务

1.2.2需求分析流程

1.2.3要求类型。

1.2.4需求分析原则

1.2.5需求分析师和用户的责任

1.2.6需求文件

1.2.7需求描述技术的选择

1.3软件复用技术

1.3.1软件复用的概念

1.3.2软件开发流程

1.3.3组件技术

1.3.4分层架构

1.3.5实施软件复用的开发单位组织结构

1.4软件测试技术

1.4.1软件测试的基本概念

1.4.2测试用例设计

●白盒测试

●黑盒测试

1.4.3性能测试

1.4.4软件测试策略

1.4.5软件测试工具

1.5软件维护

1.5.1软件维护概念

1.5.2软件维护活动

1.5.3软件维护的实现

1.5.4软件可维护性

1.5.5软件再工程

1.6软件工具和软件开发环境

1.6.1软件开发工具的分类、功能和作用

1.6.2软件开发环境的概念

模块2:软件质量管理和软件质量保证

2.1软件质量

2.1.1什么是软件质量?

2.1.2软件可靠性

2.1.3软件质量问题的根源

2.1.4软件产品质量和软件过程质量

2.2软件质量保证

2.2.1软件质量保证概念

2.2.2软件质量保证体系

2.2.3实施质量保证

2.2.4软件质量设计

2.2.5软件容错技术

2.3软件工程标准和软件文档

2.3.1什么是软件工程标准?

2.3.2软件工程标准化的意义

2.3.3软件工程标准的制定和实施

2.3.4软件工程标准的层次

2.3.5软件工程国家标准

2.4ISO9000国际标准

2.4.1质量管理、质量认证和质量审核

2 . 4 . 2 iso 9000标准概述

2 . 4 . 3 iso 9000族标准的组成

质量体系

2 . 4 . 5 ISO 9001主要内容

2.4.6新ISO 9000协议实施指南摘要

2.5用于软件过程能力评估的CMM

2.5.1软件过程评估的重要性

2.5.2软件过程能力成熟度分类及其关键过程领域

2.5.3软件过程评估国际标准

2.6软件指标

软件度量的概念

2.6.2功能点法计算软件的规模

2.6.3程序循环复杂度计算

2 . 6 . 4 halstead程序的工作量计算

程序风格测量

2.7软件配置管理

2.7.1什么是软件配置管理?

2.7.2配置管理计划的制定

2.7.3变革管理

2.7.4版本管理和发行管理

模块3:软件工程管理

3.1软件工程管理和软件项目管理

3.1.1软件工程管理的任务和意义

3.1.2软件工程管理的范围

3.1.3软件文档管理

3.1.4软件成本估算

3.1.5软件风险分析

3.1.6软件项目进度计划和监控

3.2软件人员管理

3.2.1软件开发组织结构

3.2.2软件人员能力成熟度模型

3.2.3软件工程师的道德规范和职业活动

3.3软件知识产权保护

3.3.1什么是知识产权?

计算机软件的版权

3.3.3计算机软件著作权登记管理

3.3.4计算机软件版权侵权及法律保护

3.3.5计算机软件的商业秘密与反不正当竞争

=================================

2007年9月26日星期三05:31高级软件工程师必须掌握的程序员七大武器?

信息技术的发展时间虽然不长,但其爆炸式的发展速度使得信息技术迅速覆盖社会和人类生活的各个角落。程序员是这场信息浪潮的见证者之一,也是主要参与者,这是时代赋予每一个程序员的机遇和责任。

信息技术的更新速度是惊人的,程序员的职业生涯是一个需要不断学习的过程,永远不能固步自封。在工作期间,我见过很多程序员只要有闲暇时间就上网浏览一些无用的网页、聊天、打游戏,浪费了很多时间,这是非常不可取的。另一方面,随着IT技术的飞速发展,很多程序员眼花缭乱,什么都想学,却不知道从何下手。今天看这个,明天学那个。

虽然IT技术发展很快,但是很多技术是有规律可循的,一些基本的概念、原理、方法还是很通用的,可以推而广之。我根据自己的经验,向那些刚踏入IT行业的新程序员或者迷茫的程序员推荐程序员必须掌握的七种武器。有了这七种武器,虽然我不敢说是笑傲江湖,但我仍然可以所向披靡。

第一件武器:开发工具

掌握至少两三种开发工具是程序员的基础。其中C/C++和JAVA是我推荐的开发工具。C/C++以其高效率和高灵活性成为开发工具中的利器。很多系统级软件还是用C/C++写的。JAVA的跨平台性和与WEB的良好结合是其优势,而我也相当欣赏孙的“网络即计算机”的理念,相信JAVA,其相关技术集JAVA One将成为未来主流开发工具之一。其次,最好掌握一个简单的可视化开发工具,比如VB、PowerBuilder、Delphi、C++ Builder,降低了开发难度,可以强化程序员的对象模型概念。此外,还需要掌握基本的脚本语言,如shell、perl等。,并且至少理解这些脚本代码。

第二个武器:数据库

为什么数据库如此重要?很多应用都是以数据库数据为中心的,数据库产品也很多,其中关系数据库仍然是主流形式,所以程序员至少要掌握一到两个数据库,要非常清楚关系数据库的关键元素,熟练掌握SQL的基本语法。虽然很多数据库产品都提供了可视化的数据库管理工具,但是SQL是基础,是常用的数据库操作方法。如果没有机会接触商业数据库系统,使用免费的数据库产品是一个不错的选择,比如mySQL,Postgres。

第三个武器:操作系统

目前主流的操作系统有Windows,Linux/Unix。熟练使用这些操作系统是必要的,但光有这些是不够的。要成为真正的编程大师,你需要了解操作系统,它的内存管理机制,进程/线程调度,信号,内核对象,系统调用,协议栈实现等等。Linux作为开发源代码的操作系统,是一个很好的学习平台。Linux几乎拥有现代操作系统的所有特征。虽然关于Windows系统内核实现机制的信息很少,但是通过互联网还是可以获得很多信息。只有对操作系统有了一定的了解,你才会发现自己上了一个新的台阶。

第四个武器:网络协议TCP/IP。

在互联网普及的今天,如果你还没有掌握TCP/IP协议栈,你需要赶紧补上这一课。网络技术改变了软件的运行模式,从最早的客户机/服务器结构到今天的WEB服务,再到未来的网格计算,都离不开基于TCP/IP协议栈的网络协议支持。因此,深入掌握TCP/IP协议是非常必要的。最起码你要知道ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理以及三次握手机制。

第五个武器:DCOM/CORBA/XML/WEB服务。

随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一。DCOM/CORBA是分布式计算的两个主流中间件平台,DCOM是微软COM(组件对象模型)的扩展,CORBA是OMG支持的规范。程序员需要做的不仅是利用商业开发平台开发软件,还要了解这些技术的初衷,也就是为什么需要这项技术。如果你能明白这一点,你就可以像专家一样,回头看看这些技术的具体实现。XML/WebServices的重要性不言而喻。XML因其结构化的表示方式和超强的表达能力,在互联网上被称为“世界语”,是分布式计算的基石之一。

第六种武器:软件工程和CMM

在现代大型软件系统的开发中,工程开发控制取代了个人英雄主义,成为软件系统成功的保证。编程高手不一定是优秀的程序员。一个优秀的程序员,是把优秀的编程能力和开发技巧与严谨的软件工程思想有机结合在一起的。编程只是软件生命周期的一部分。一个优秀的程序员应该掌握软件开发各个阶段的基本技能,比如市场分析、可行性分析、需求分析、结构设计、详细设计等等。一句话可以概括我的看法:“创意无限,过程有保障”。

第七件武器:强烈的好奇心

一个程序员的终极武器是什么?那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了。是程序员永远攀登高峰的源泉和动力。