1. 软件工程师应具备哪些知识体系
编程语言,数据库(SQL),网络(TCP/IP),操作系统(Linux/Unix),编码技术(读《代码大全》),软件方法(OOP,SOA)
2. 软件工程要学什么课程!
不要把时间浪费在所谓的大学课程上,很多都是没有营养的。其实软件工程的知识体系也就是那样,各个大学也是照着这个思路编排课程的。所以,自学的时候直奔主题就可以了。
软件工程。包含两个部分:软件和工程。软件是程序员做的,而工程是项目负责人管理、程序员实践的。
软件又包含两部分:语法和算法。语法,即要掌握某种编程语言。一般来讲,要想工作中用的上,那么面向过程的语言和面向对象的语言都得掌握。一般学C、C++、Java、Dephi等等。面向过程的程序比较好学,条目也很清晰。而面向对象的编程需要学两方面的内容:语法本身和庞大的类库。算法,这是编程的灵魂。一般包括:数据结构和经典算法。学无止境,一般性的工作话,掌握基本的就够了,如果工作较复杂得多看看算法方面的期刊。
工程。现代软件越变越大,大型的编写工作动不动就涉及万人。工程的方法只是为了更好的组织、协调编写过程。《软件工程》本身就是一本书,很厚的。主要讲软件的生命周期,比较抽象和繁杂,但是规范的工作方式就是从这本书里来的。另外关注一些编程习惯的知识。这也是工程的一部分。
软件只是计算机科学中的一种。所以,比如计算机基础、计算机系统等等宏观的知识也需要理解。特别是对于高级程序员,计算机运行的底层知识就更重要了。操作系统、80x86以及汇编语言是底层知识中的一部分。
软件行业分工很多:网络编程、数据库编程、应用程序编程、游戏编程以及操作系统编程等(中国似乎还没有商业化的操作系统),研究任何一个都挺累人的。学习完上面的基础知识后,就需要给自己选一个专业方向了。
建议一个学习流程。如果你什么都没有学。
1】计算机基础知识。主要是硬件方面(大一水平)
2】同时,学习C语言,语法就够了
3】透彻的理解C++需要用C语言去编写一个图形化的应用程序,但是,似乎也有一些直接上手的C++教材。学习语法,简单的类库。(现在就是大二的水平)
4】数据结构,C++表述的。《数据结构》的书里面会有一些经典的算法的。
5】操作系统、80x86与汇编(大三水平,大四几乎没有几本书要念的。)
6】专业学习。一方面是专业上的知识,另一方面是类库在专业上的使用。(我想,应该可以工作了,大学里关于这方面的知识是很浅薄的,仅仅建立一个概念而已。但是要拿来谋生的话,就需要学多点了,前面所有的积淀都是为了这个目标的)
先学着,自己有体会后,就能确定自己应该学到什么程度。如果一切顺利的话,大概两年多一点就可以完成这个过程。
3. 软件工程师需要掌握那些方面的知识结构
目前在IT行业对软件工程师的要求比较高,企业都亲睐那些具有较强复合性的人才,照现在的情况看来,要求软件工程师具备以下知识结构:计算机基本概念、操作系统及开发平台、计算机网络、编程语言、数据库技术、软件工程管理、团队协作
4. 软件工程师必备知识
软件工程师考试(高级)大纲
一、考试说明
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.2ISO9000标准概要
2.4.3ISO9000族标准构成
2.4.4质量体系
2.4.5ISO9001的主要内容
2.4.6ISO9000_3实施指南概要
2.5软件过程能力评估CMM
2.5.1软件过程评估的意义
2.5.2软件过程能力成熟度分级及其关键过程域
2.5.3软件过程评估的国际标准
2.6软件度量
2.6.1软件度量的概念
2.6.2功能点方法计算软件的大小
2.6.3程序环路复杂度计算
2.6.4Halstead程序工作量计算
2.6.5程序风格度量
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.2计算机软件著作权
3.3.3计算机软件著作权登记管理
3.3.4计算机软件著作权侵权与法律保护
3.3.5计算机软件的商业秘密与反不正当竞争
=================================
高级软件工程师哪些必须精通2007年09月26日 星期三 下午 05:31程序员的七种武器
信息技术的发展时间虽然不长,但其爆炸式的发展速度使信息技术迅速覆盖社会和人类生活的各个角落。程序员们是这场信息化浪潮的见证者之一,更是其中的主要参与者,这是时代赋予每个程序员的机会和责任。
信息技术的更新速度是惊人的,程序员的职业生涯则是一个要求不断学习的过程,永远不能固步自封。本人在工作期间曾看见过很多程序员只要有闲暇时间就浏览一些没有太大作用的网页,在网上聊天,打游戏,浪费了大量的时间,十分不可取。而另外一种情况是,IT技术的日新月异使很多程序员眼花缭乱,什么都想学,却又不知从何学起,今天看看这个,明天学学那个,贪多不熟。
虽然IT技术发展迅速,但很多技术都是有规律可循,一些基本的概念、原理和方法还很通用,可以举一反三。本人根据自己的体会和经验,向那些刚刚踏入IT行业的新程序员们或正在迷茫的程序员们推荐程序员必须掌握的七种武器,有了这七种武器,虽不敢说笑傲江湖,但将自己立于不败之地还是可以的。
第一种武器:开发工具
至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是我重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而本人对SUN公司的“网络即计算机”的概念相当欣赏,并相信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 Services,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。至少,你需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
第五种武器:DCOM/CORBA/XML/WEB Services
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间件平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。程序员需要做的不仅仅是利用商业的开发平台来开发软件,而是要理解这些技术的初衷,即为什么需要这项技术,如果你能理解了这一点,再回头看这些技术的具体实现,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布计算的基石之一。
第六种武器:软件工程与CMM
现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。一句话可以概括我的看法:“创意无限,流程保证”。
第七种武器:强烈的好奇心
什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。
5. 软件工程中项目管理的知识体系包括哪些内容
楼主,软件工程项目管理根据我的理解应该是包括;项目范围管理 ,需求和迭代管理 \时间管理,方法和模板管理,费用管理,承诺管理,质量管理,执行管理,沟通管理,现状调查,资源管理,问题和风险管理,采购管理,整体管理。这些功能8thManage的项目管理软件都具有,如果您想了解更详细的资料可以上它的官网。
.
6. 简述软件工程专业主干知识体系
软件工程专业主干学科:马克思主义理论、大学外语、高等数学、大学物理、物理实验、线性代数、概率论与数理统计、程序设计语言、数据结构、离散数学、操作系统、编译技术、软件工程概论、统一建模语言、软件体系结构、软件需求、软件项目管理。
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
(6)软件工程知识体系扩展阅读:
软件工程的七条基本原理:
(1)用分阶段的生存周期计划进行严格的管理。
(2)坚持进行阶段评审。
(3)实行严格的产品控制。
(4)采用现代程序设计技术。
(5)软件工程结果应能清楚地审查。
(6)开发小组的人员应该少而精。
(7)承认不断改进软件工程实践的必要性。
7. 软件工程知识体系图的内容 两条主线
发展的两条主线:一条是形式化技术,一条是工程化技术。
学习的两条主线:软件工程的学习是以技术和管理两条主线展开,围绕一个软件过程即需求、分析、设计、构造、测试,以软件建模为核心,以规范化程序设计为基础,最终达到指导软件开发全过程、实现项目成功的最终目标。
8. 高级软件工程师(J2EE)所必须具备的知识体系以及素养是什么
高级这个概念很不好衡量,简单的说,如果你已经是一个可以独挡一面的软件工程师了,那么你在向架构师进发的过程中,都可以算是高级软件工程师。
9. 不同岗位的软件工程师分别应有的知识体系结构是怎样的
10. 软件工程师需要学习哪些知识
初级部分:
1.
Java
面向对象程序设计、Java
API使用、数据结构及算法基础、Java高级类特性、异常处理;
2.
AWT及Swing图形程序设计、流、网络程序设计、对象序列化、Applet、多线程程序设计、Java应用国际化基础;
3.
Java桌面系统项目开发;
4.
Java编程基础提高课程:反射机制、设计模式(I)、正则表达式,Java
SE5.0新特性等;
5.
基于Oracle的数据库开发及管理、数据库设计、标准SQL、PL/SQL编程;
6.
JDBC、JSP2.0、Servlet2.4、JavaBean编程;Tomcat服务器使用、Jbuilder及Eclipse
等集成开发环境;
7.
Linux操作系统中的Java程序开发、Linux系统管理;
8.
Java
Web编程提高课程:JDBC进阶、高效分页处理、过滤器使用技巧、Struts中动态表单验证、DispatchForm等;
高级部分
1.
MVC设计模式、Struts架构核心工作机制、国际化、验证框架、Struts
Taglib、ORM基础、基于Hibernate的企业级应用;
2.
JavaME手机游戏设计、界面程序设计、数据库程序设计、手机短信、多媒体短信(彩信)开发;
3
.JavaEE核心技术、XML、Web
Service、异构系统整合、分布式应用开发、WebLogic和JBoss等应用服务器;
4
.CMM、UML与系统建模和设计、Rational
Rose、软件工程和软件过程模型、版本控制及设计模式;
6.
Java
企业级应用开发提高课程:Hibernate使用技巧、设计模式(II)、Spring编程入门、提高Java
EE应用的性能;
.NET程序设计
.NET架构、.NET桌面和Web程序设计、.NET与JavaEE平台应用的整合;
职业素质
IT职业规划、沟通技巧、团队合作、专业技术规范、面试技巧等职业技能培训。
完成以上培训课程后,通过考核就可以获得培训机构颁发的合格证书。
现在比较吃香的是JAVA,特别是J2EE,未来3G出来后,手机编程将成为热点,J2EE当然就会很吃香了。
关于证书的权威性,建议你要去知名的培训机构去,最好是像SUN这类国际大公司有关认证所指定的培训机构,这样权威性高些。
一般来讲,软件公司是非常喜欢通过了软件工程师的人员,学历对他们来说并不重要,而重要的是能力。如果你的能力够强,在一个好的公司的话,这个月薪我想应该是可以拿到的。