题目:软件工程师的成长之路主讲人:席俊国2002年7月20日我国的软件产业的发展历程及现状软件人才体系的构造软件工程师的基本素质和必备知识计算所培训中心如何培养软件工程师软件工程师如何进一步提高自己我国的软件产业的发展历程及现状我国软件产业的发展历程我国软件产业的现状我国软件产业的发展历程•二十世纪七八十年代:第一次浪潮,1982年,诞生了中国第一个软件的专门主管机关:国家科委(现科技部)中国软件技术开发中心。一项庞大的“软件发展计划”也就势出炉。然而,就在印度开始启动的1985年,原本先行一步的中国,随着国家科委领导的更替,一度轰轰烈烈的软件计划却紧急刹车。中国软件发展史上的“第一次浪潮”匆匆结束。我国软件产业的发展历程•80年代未期,计算机在中国的迅速普及拉动了众多应用软件的兴起,中国软件业进入“第二次浪潮”。WPS、Richwin、“网络蚂蚁”、“超级解霸”等,是这个时代的流行话题。在1989年以前,我们出现了一批商业性软件公司,有做字处理工具的、做出口的。当时我们的出口是与印度竞争的,基本不相上下。但是,在90年代这个全球软件开始转向产业化的关键时期,我们没有跟上。而90年代初,在地球的另一面,一群软件“恐龙”已然长成。也是从这个时期开始,微软、CA、SAP、IBM等一批国外软件商陆续进入中国,而且享受着比本土企业更多的优惠政策。我国软件产业的发展历程•2000年,中国第一个软件优惠政策出台,中国软件的“第三次浪潮”开始。我国软件产业的现状软件产业发展的三个方向操作系统应用软件系统集成国内目前的状况是应用软件以及系统集成公司比较多,软件产品主要集中在一些管理软件、财务软件等基于数据库应用的软件、教育软件、杀毒软件及一些中文平台的开发上,而在利润丰厚、应用广泛的基础软件如操作系统、数据库管理软件等,基本上无所作为。•中国与印度一组软件产业数据比较1999年度印度软件业的产值是56亿美元,其中出口额为39亿美元,国内市场销售额为17亿美元;中国1999年整个国内市场销售额为176亿元人民币,约合20亿美元左右。印度软件企业约有1000家,在中国这个数字是5000多家。比较起来,在国内销售额上,中国和印度比较接近,中国可能还稍稍超出印度。但在出口额上,中国软件业出口额几乎可以忽略不计。印度这个数字是中国软件国内销售额的两倍,而中国软件企业数是印度的5倍以上,其中大多数是50个员工以下的小作坊式企业。印度约有28万软件工程师,平均每个企业280人,而中国仅仅有十几万软件开发人员,分布在5000多个企业里。印度软件业的发展时间出口额(美元)80年代中期3000万1995-19967.34亿1997-199818亿1998-199929亿1999-200039亿2000-200163亿2008(计划)500亿通过以上这些数据,可以清醒地认识到我国软件产业与国外软件产业存在着的巨大差距,其中软件人才的差异是形成这种局面的一个重要因素。我国的软件产业的发展历程及现状软件人才体系的构造软件工程师的基本素质和必备知识计算所培训中心如何培养软件工程师软件工程师如何进一步提高自己软件人才体系的构造在国内,根据统计,我国大约有五千多家软件企业,而已经有的十六万软件从业人员,远远不能满足中国软件产业发展的需要。专家和权威机构预测,未来五年全国软件开发人才的缺口将达80万。软件人才的缺乏,已经成为制约现阶段我国软件产业发展的主要问题。我国软件人才的现状—缺乏在软件行业,处在顶层的是少数高级科研开发人员和高层管理人员,中间层是系统分析员等,处在金字塔基层支撑着整座金字塔的是大量的软件开发人员、程序员。基层人才和中高层人才的结构比例大致遵循80/20原则。软件产业和传统产业一样,其发展需要有大量的产业工人即基础软件人才来支撑,大量的软件开发人员、程序员,是软件产业持续发展的基础。合理地构造人才体系程序员软件开发员系统分析员高层管理员国内软件企业的人才结构目前我国的计算机软件人才培养主要集中在高等院校的计算机专业及电子电信等相关专业学历教育。受过高等教育的大学毕业生进入到企业后是不甘心也不应该只成为写程序的软件开发人员,他们在企业经过一到两年的软件开发实践,就会自觉或者不自觉地向系统分析员、项目经理发展,成为中间层次的人才。在我国的软件企业中,人才主要是集中在这一个层次,因为缺少基础的软件开发人员,还使得中间层次的人才很难再向高层科技开发人才发展。国内软件企业的人才结构畸形的人才结构?高层管理员程序员软件开发员系统分析员我国的软件产业的发展历程及现状软件人才体系的构造软件工程师的基本素质和必备知识计算所培训中心如何培养软件工程师软件工程师如何进一步提高自己软件工程师的基本素质和必备知识具有软件工程的概念良好的团队作业思想较强的英语阅读和写作能力掌握数据库知识良好的编码能力强烈的求知欲望和进取心了解和掌握IT行业的发展动态具有软件工程的概念•基础软件工程师处于软件企业人才金字塔的底层,是整个人才结构的基础,虽然他们从事的工作相对于系统分析师和高级程序员要单纯一些,但是他们是整个软件工程中重要的一环,因此,基础软件工程师同样要具有软件工程的概念。从项目需求分析开始到安装调试完毕,基础软件工程师都必须能清楚地理解和把握这些过程,并能胜任各种环节的具体工作,这样的能力正好符合了当前企业对基础软件工程师的全面要求。•软件工程这一概念,主要是针对20世纪60年代“软件危机”而提出的。•自这一概念提出以来,围绕软件项目,开展了有关开发模型、方法以及支持工具的研究。•主要围绕软件过程以及软件复用,开展了有关软件生产技术和软件生产管理的研究与实践。软件工程所涉及的要素:采用好的设计方法提供高质量支持过程实施有效的工程管理需求设计实现确认支持目标原则活动选用适宜的开发范例软件工程涉及了软件工程的目标、软件工程原则和软件工程活动。软件工程的主要目标生产具有正确性、可用性以及开销合宜的产品。•正确性意指软件产品达到预期功能的程度。•可用性指软件基本结构、实现及文档为用户可用的程度。•开销合宜性(合算性)是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多问题有待解决,它们形成了对过程、过程模型及工程方法选取的约束。软件工程所涉及的要素:采用好的设计方法提供高质量支持过程实施有效的工程管理需求设计实现确认支持目标原则活动选用适宜的开发范例软件工程涉及了软件工程的目标、软件工程原则和软件工程活动。软件工程活动软件工程活动是“生产一个最终满足需求且达到工程目标的软件产品所需要的步骤”。主要包括需求、设计、实现、确认以及支持等活动。•需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。•概要设计建立整个软件体系结构,包括子系统、模块以及相关层次的说明、每一模块接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。•实现活动把设计结果转换为可执行的程序代码。•确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。•支持活动包括修改和完善。软件工程所涉及的要素:采用好的设计方法提供高质量支持过程实施有效的工程管理需求设计实现确认支持目标原则活动选用适宜的开发范例软件工程涉及了软件工程的目标、软件工程原则和软件工程活动。软件工程的四项基本原则•选取适宜开发范型。该原则与系统设计有关。在系统设计中,软件需求、硬件需求以及其他因素之间是相互制约、相互影响的,经常需要权衡。因此,必须认识需求定义的易变性,采用适宜的开发范型予以控制,以保证软件产品满足用户的要求。•采用合适的设计方法。在软件设计中,通常要考虑软件的模块化、抽象与信息隐蔽、局部化、一致性以及适应性等特征。合适的设计方法有助于这些特征的实现,以达到软件工程的目标。•提供高质量的工程支持。“工欲善其事,必先利其器”。在软件工程中,软件工具与环境对软件过程的支持颇为重要。软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。•重视开发过程的管理。软件工程的管理,直接影响可用资源的有效利用,生产满足目标的软件产品,提高软件组织的生产能力等问题。因此,仅当软件过程得以有效管理时,才能实现有效的软件工程。良好的团队作业思想•随着软件项目规模越来越大,仅仅依靠个人力量已经无法完成工作,因此,现代软件企业越来越重视团队精神。一般来讲,软件企业中的程序员可以分为两种,一种是对编程工具很熟,能力很强,把编码编得很简洁高效,但却缺乏规范和合作的观念;另一种编程不一定很快,但是很规范,个人能力不一定很强,但合作意识很好。第二种人更加适合现代软件企业发展的潮流。对于基础软件工程师来说,他们在企业中的角色决定了他们必须具有良好的规范意识和团队精神。较强的英语阅读和写作能力•程序世界的主导语言是英文,编写程序开发文档和开发工具帮助文件离不开英文,了解业界的最新动向、阅读技术文章离不开英文,就是与世界各地编程高手交流、发布帮助请求同样离不开英文。作为基础软件工程师,具有一定的英语基础对于提升自身的学习和工作能力极有帮助。掌握数据库知识•信息是以数据为中心的,因此与数据库的交互在所有软件中都是必不可少的,了解数据库操作和编程是软件工程师需要具备的基本素质之一。目前常用的网络数据库软件有Oracle、DB2、SYBASE、SQLServer等。良好的编码能力•基础软件工程师的一个重要职责是把用户的需求功能用某种计算机语言予以实现。编码能力直接决定了项目开发的效率。这就要求软件工程师至少精通一门编程语言,同时良好的编程习惯也是必须的,提高代码效率、提高代码的可维护性都是编程过程中需要注意的。强烈的求知欲望和进取心•软件业是一个不断变化和不断创新的行业,面对层出不穷的新技术,软件人才的求知欲和进取心就显得尤为重要,它是在这个激烈竞争的行业中立足的基本条件。了解和掌握IT行业的发展动态•作为一名软件工程师,了解IT行业的发展动态,有助于确定自己继续学习的方向,有利于提高自己的能力;同时通过接受新的软件设计思想和软件开发技术,可以使开发效率更高,同时也保证自己在软件设计领域不致于落伍。我国的软件产业的发展历程及现状软件人才体系的构造软件工程师的基本素质和必备知识计算所培训中心如何培养软件工程师软件工程师如何进一步提高自己计算所培训中心如何培养软件工程师科学的课程安排丰富的教学手段完善的实践环节科学的课程安排•操作系统:Win2000局域网与商务网站、Linux系统管理与网站构建、UNIX系统管理与网络管理。•程序设计:C/C++语言程序设计、VisualC++6.0程序设计、VisualBasic6.0程序设计、Java2程序设计、Delphi6.0程序设计、PowerBuilder企业MIS系统开发。•数据库技术:SQLServer2000系统管理、SQLServer2000系统实现与开发、SQLServer2000数据仓库、Oracle8i管理备份及性能优化、Oracle8i网络管理与应用开发用、Developer6.0企业MIS系统开发。•网页编程:ASP+IIS5动态网站编程技术、JSP/Servlet商务网站编程技术、PHP交互式页面开发、XML技术与应用。•网页制作:高级网页设计师、多媒体网页设计与美工。丰富的教学手段•实例教学–通过短小的应用实例与操作演示,使您易懂易学•互动教学–培训教师指导,学生带着问题实际操作与编程,让您真正掌握与理解知识难点•经验教学–培训教师不仅要教会学员课本知识,而且还会教你一些开发经验和应用技巧完善的实践环节合作伙伴:中科天博计算机技术有限公司•计算所培训中心给学员提供教学实践环节;•每期学员都有机会参与中科天博公司的项目开发;•优秀学员培训结束后,可以根据自己的意愿和中科天博公司的需求进行双方选择。在商业领域,是首家在国内承担商业信息自动化项目的专业技术队伍,十几