c++高级软件工程师.doc_第1页
c++高级软件工程师.doc_第2页
c++高级软件工程师.doc_第3页
c++高级软件工程师.doc_第4页
c++高级软件工程师.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+高级软件工程师 2010-09-27 14:09:24点击次数:1277 C/C+嵌入式高级软件工程师培训课程专注于培养企业需求量大,就业率高,目前人才市场紧缺的C+高级软件工程师、嵌入式软件工程师以及系统分析师。本课程将C+和嵌入式有机地结合起来,培训内容包括理论知识强化、实际案例训练、企业项目实战等内容,让学生扎实掌握C+和嵌入式编程的各项关键技术,获得C+和嵌入式软件开发丰富的项目经验,为学员高质量高薪就业打下扎实的基础。C/C+嵌入式高级软件工程师教学大纲由资深C+嵌入式领域专家根据嵌入式系统的设计原则和市场要求设计和制定,实践证明本教学大纲科学合理,能够快速培养实用的C+嵌入式工程师。通过培训可以获得扎实的开发技能,积累至少相当二年的工作开发经验。本课程系统介绍了C+开发环境和IDE介绍、C语言、C+/OOP程序设计、GP和标准模板类库(STL)、Windows编程、Visual C+/MFC程序设计、网络编程技术、数据库编程技术、Unix/Linux编程、面向对象的系统分析与设计方法、计算机系统的基本原理,操作系统、接口技术、嵌入式系统开发详解等基本知识。通过这些知识的学习,让学生掌握C+的关键技术和嵌入式系统开发的基本原理和设计方法,并通过实际项目的开发,让学生掌握嵌入式系统开发的整个流程,操作系统移植的基本思想、移植原则,应用程序及驱动程序的开发和调式方法。由有关专家、学者和优秀的一线资深C+嵌入式工程师,集合国际先进嵌入式技术和理论,对嵌入式开发过程进行综合分析,结合最新的软件开发环境,进行实际案例的培训;实战训练贯穿于全部课程中,学员学练结合、学以致用,以培养实际工作能力,快速获得项目经验。每半月进行一次测试,确保学员掌握所学知识。目 录第1部分:LINUX操作系统基础入门第1天 LINUX操作系统基础第2天 LINUX基本命令第3天 LINUX下C编程基础第2部分 C/C+编程第4天 C/C+语言简介、数据类型和操作符第5天 复合类型第6天 指针第7天 循环和关系表达式第8天 分支语句和逻辑操作符第9天 函数第10天 类(1)第11天 类(2)第12天 继承第13天 代码重用第14天 友元、异常和类模板第3部分 数据结构和算法第15天 数据结构和算法(1)第16天 数据结构和算法(2)第17天 数据结构和算法(3)第18天 阶段考试第4部分 嵌入式系统和ARM介绍第19天 嵌入式系统和ARM介绍第5部分 嵌入式LINUX系统编程第20天 嵌入式LINUX开发环境的搭建第21天 文件I/O编程第22天 进程控制开发第23天 进程间通讯第24天 多线程编程第25天 嵌入式LINUX网络编程第26天 嵌入式LINUX设备驱动开发第27天 QT图形编程第6部分 WINDOWS编程第28天 WINDOWS程序内部运行机制第29天 MFC框架第30天 简单绘图与文本编程第31天 菜单和对话框第32天 绘图控制和文件第33天 网络编程(1)第34天 网络编程(2)第35天 多线程(1)第36天 静态、动态连接库、组件编程第7部分 WINCE编程第37天 WINDOWS CE操作系统的介绍第38天 建立WINDOWS CE开发环境第39天 平台模拟器的建立和使用第40天 WINCE操作系统设计第41天 WINDOWS CE 窗口消息机制与屏幕输出第42天 WINCE下多线程编程,文件操作与串口通信第43天 WINDOWS CE下MFC程序的开发第8部分 MTK手机软件第44天 手机设计基础理论第45天 MTK开发环境介绍第46天 MTK开发工具介绍第47天 MTK软件编译及工程源程序介绍第48天 由浅入深的手机软件开发第49天 如何在开发板上进行项目实践第9部分 结业考试第50天 结业考试第10部分 项目实战第51100天 项目开发C+&嵌入式软件工程师培训教学大纲第1部分:Linux操作系统基础入门第1天 Linux操作系统基础1.介绍Linux操作系统的基本知识,包括发展概述,目前应用情况,技术优势和特点等。2.Linux系统的安装准备,Linux文件系统。3.实验内容:安装Linux操作系统第2天 Linux基本命令1、Linux常用操作命令,包括用户系统相关命令,文件目录相关命令,压缩打包相关命令,网络相关命令等。2、Linux启动过程详解3、Linux系统服务4、实验内容:Linux系统常用命令操作第3天 Linux下C编程基础1.C语言编程概述2.Vi等编辑工具使用3.Gcc和GDB的使用4.Make工程管理器5.实验内容:Vi使用,用GDB调试程序,编写简单的Makefile第2部分 C/C+编程 第4天 C/C+语言简介、数据类型和操作符1.软件开发流程和方法,行业现状2.c/c+语言起源和历史发展3.c/c+语言的特点和应用领域4.c+集成开发环境介绍。讲解vc+IDE环境的使用,包括编译,链接,运行和调试。5.学习c/c+程序设计的方法6.c/c+简单程序的结构7.计算机处理数据的抽象层次8.c+的基本数据类型的处理9.数据溢出的结果和应对方法10.C+的算术操作符11.自动类型转换12.强制类型转换第5天 复合类型1.数组2.字符串3.string类4.结构5.共同体6.枚举第6天 指针1.指针2.内存分配3.指针、数组、字符串之间的关系4.指针算术5.字符串的指针操作。6.多维数组和指针访问。7.空指针的意义。8.指针练习。第7天 循环和关系表达式1.for循环2.关系表达式3.while循环4.do while循环5.嵌套循环6.多维数组7.控制台输入输出第8天 分支语句和逻辑操作符1.if 语句2.逻辑表达式3.?:操作符4.switch语句5.break6.continue7.return8.简单文件输入输出第9天 函数1.函数原型2.函数参数和按值传递3.参数为数组(一维和多维)的函数4.参数为指针的函数5.参数和返回类型维结构的函数6.处理string对象的函数7.函数指针8.内联函数和宏的使用9.引用变量10.函数重载的机制11.函数模板12.c+程序的内存模型和几种内存的分配方式13.结构化程序设计的原则14.源文件和头文件的物理布局以及对程序模块划分和程序编译的影响15.静态变量16.名称空间第10天 类(1)1.面向过程编程和面向对象编程的区别2.面向对象和程序设计语言的关系3.类的概念和抽象层次4.接口的概念和客户/服务器模型5.类的定义和数据封装6.构造函数和析构函数7.this指针和对象数组第11天 类(2)1.指针类成员以及动态分配内存的初始化2.含指针成员的类的=操作符重载和拷贝构造函数的定义3.按成员拷贝(bit-wise copy)和deep copy的区别4.什么时候需要考虑深拷贝(deep copy)5.操作符重载6.友元类和友元函数7.类的自动转换和强制类型转换第12天 继承1.继承和派生的概念2.继承的访问控制和继承方式3.构造函数成员初始化列表4.基类和派生类对象的构造顺序5.继承和对象模型(对象的赋值和切割)6.虚函数的语法和定义7.继承和多态的关系8.静态联编和动态联编9.虚析构函数10.虚函数表和多态实现的编译器机制11.含有虚函数的类的对象模型第13天 代码重用1.Has-a关系2.包含成员对象的类3.私有和保护继承4.多重继承5.虚基类第14天 友元、异常和类模板1.友元2.异常3.类模板和具体化第3部分 数据结构和算法第15天 数据结构和算法(1)1.常用的字符串的c函数的具体的代码实现2.数据结构概论3.算法基本概念4.时间和空间复杂度5.单链表的实现及其应用6.循环链表的实现及其应用第16天 数据结构和算法(2)1.双向链表的实现2.堆栈实现及其应用第17天 数据结构和算法(3)1.队列的实现及应用2.字符串的查找,替换,连接等操作3.数组,字符串,指针,多维数组的相互关系和归纳4.递归算法5.二叉排序树的实现及应用6.二叉树的前序遍历、中序遍7.历、后序遍历。8.常见排序方法和二分查找第18天 阶段考试第4部分 嵌入式系统和ARM介绍第19天 嵌入式系统和ARM介绍1.嵌入式系统概述2.ARM硬件平台介绍,ARM处理器体系结构3.嵌入式软件开发流程4.实验内容: 用JTAG工具烧写NAND FLASH第5部分 嵌入式Linux系统编程第20天 嵌入式Linux开发环境的搭建1、 嵌入式交叉编译环境的搭建2、 超级终端的配置和使用3、 编译嵌入式linux内核4、 制作文件系统5、 Bootloader介绍6、 实验内容:移植Linux内核第21天 文件I/O编程1、 Linux系统调用和用户编程接口2、 Linux中文件和文件描述符介绍3、 不带缓存的文件I/O操作4、 嵌入式Linux串口应用开发5、 标准I/O开发6、 实验内容:文件读写和上锁,串口读写第22天 进程控制开发1、 Linux下进程概述2、 Linux进程控制编程3、 Linux守护进程4、 实验内容:编写多进程程序,编写守护进程第23天 进程间通讯1、 管道通信的创建和关闭2、 信号通信的发送和捕捉3、 共享内存的实现4、 消息队列的实现5、 实验内容:管道通信编写程序,共享内存实验第24天 多线程编程1、 Linux下线程概述2、 Linux线程实现3、 实验内容:“生产者消费者”实验第25天 嵌入式Linux网络编程1、 TCP/IP协议介绍2、 Socket基础编程3、 网络高级编程4、 Ping源代码分析5、实验内容:NTP协议实现第26天 嵌入式Linux设备驱动开发1、 Linux设备驱动概述2、 字符设备驱动编写3、 块设备驱动编写4、 中断编程5、 实例介绍:LCD驱动和键盘驱动的实现6、 实验内容:Skull驱动第27天 Qt图形编程1、 嵌入式GUI概述2、 Qt/Embeded开发入门3、 搭建Qt/Embeded开发环境4、 Qt/Embeded图形界面编程5、实验内容:使用QT编写“HELLO WORLD”程序第6部分 Windows编程第28天 Windows程序内部运行机制1.API与SDK2.窗口与句柄3.消息与消息队列4.WinMain函数5.第一个windows 程序6.消息循环的错误分析7.变量的命令约定第29天 MFC框架1.MFC AppWizard2.基于MFC的程序框架剖析3.窗口类、窗口类对象与窗口第30天 简单绘图与文本编程1.MFC消息映射机制2.绘制线条3.使用画刷绘图4.绘制连续线条5.绘制扇形效果线条6.插入字符7.窗口重绘8.路径9.字符输入第31天 菜单和对话框1.菜单命令响应函数2.菜单命令的路由3.基本菜单操作4.动态菜单操作5.电话本示例程序6.对话框基本知识7.对话框的创建和显示8.动态创建按钮9.控件的访问10.对话框伸缩功能的实现11.输入焦点的传递12.默认按钮的进一步说明第32天 绘图控制和文件1.简单绘图2.设置对话框3.颜色对话框4.字体对话框5.改变对话框和控件的背景和文本颜色6.显示位图7.坐标空间和转换8.图形的保存和重绘9.窗口滚动功能的实现10.元文件11.兼容设备描述表第33天 网络编程(1)1.计算机网络概述2.OSI七层模型和TCP/IP协议栈3.客户机/服务器的通信方式4.物理层和数据链路层5.传输层6.TCP和UDP协议第34天 网络编程(2)1.基于WinAPI SOCKET编程基础2.面向无连接的协议和面向连接的协议3.流式协议和数据报协议的区别4.套接字选项的配置5.网络层相关技术6.字节顺序(Byte-order)7.基于MFC的CSocket类的网络编程第35天 多线程(1)1.进程和线程2.线程创建函数3.Sleep函数4.使用互斥对象实现线程同步5.保证应用程序只有一个实例运行第36天 静态、动态连接库、组件编程1.事件对象2.关键代码段3.线程死锁4.互斥对象、时间对象与关键代码段的比较5.基于消息的异步套接字6.静态库7.动态库第7部分 WinCE编程第37天 Windows CE操作系统的介绍1、 Windows CE的结构功能概览2、 进程、线程与调度3、 内存管理4、 存储管理与文件系统5、 驱动管理与服务6、 用户界面与图形系统7、Windows CE的应用特性第38天 建立Windows CE开发环境1.Windows CE应用程序开发的几点说明2.应用程序开发流程3.Windows CE的应用编程接口4.开发工具介绍及对比第39天 平台模拟器的建立和使用1.建立模拟器环境2.建立硬件开发板环境第40天 WinCE操作系统设计1.在PC机上运行Windows CE2.Platfrom Builder集成开发环境3.定制Windows CE操作系统的一般流程4.Windows CE的目录组织第41天 Windows CE 窗口消息机制与屏幕输出1.建立一个Hello World程序6、添加窗口消息响应函数7、编写文字输出程序8、编写屏幕绘图程序第42天 WinCE下多线程编程,文件操作与串口通信1.多线程的实现2.Windows CE 中的文件操作3.Windows CE中的串口通信第43天 Windows CE下MFC程序的开发1.建立基于MFC框架的Windows CE应用程序2.编程实现菜单,对话框,窗口的操作与消息通讯3.编程实现MFC中的基本控件的功能4.编写Windows CE 下的串口调试工具第8部分 MTK手机软件第44天 手机设计基础理论1、手机软硬件原理介绍2、手机重要技术指标介绍第45天 MTK开发环境介绍1、MTK手机芯片介绍2、MTK软件架构分析 第46天 MTK开发工具介绍1.烧写程序下载工具 FlashTools 2.编译工具和辅助工具:ADS1.2 ,ADS1.2 update, Active Perl 3.Trace 工具:catcher 4.手机工程测试工具: META (Mobile Engineering Testing Architecture)第47天 MTK软件编译及工程源程序介绍第48天 由浅入深的手机软件开发1.熟悉编译过程2.改变编译参数/宏定义来实现手机配置的改变或设定3.更换资源文件实现新的手机界面4.利用MTK辅助工具实现手机新功能5.修改源程序实现复杂的功能更改或增加6.修改NVRAM数据来改变手机的功能/性能7.新功能模块的开发第49天 如何在开发板上进行项目实践第9部分 结业考试第50天 结业考试第10部分 项目实战第51100天 项目开发项目阶段1前言项目实战是让学生参与一个真实完整的软件项目的开发,是培训过程中的一个重要环节。目的在于通过项目开发实践使学生了解软件开发过程,巩固在教学阶段所学的知识,全面提升学生的软件水平,为学生未来的就业打下坚实的基础。项目实战过程旨在规定统一的项目开发的方法和流程。它是在参考RUP、敏捷、SCRUM、CMMI多种软件开发过程的基础上,结合我司的具体情况以及培训的特殊规律定制而成的,是我司进行软件开发过程管理的企业标准。2项目周期学生教学阶段结束后的五十天时间。原则上在项目实战阶段不安排学生面试,也不允许学生自行面试。3项目选择项目的选择至关重要。因为项目的规模和复杂度不能太大,否则我们的项目将失去控制。目前我们正在建立统一的项目池,以后原则上学生实战项目都从项目池中获取。项目池也会定期更新维护。整个项目的规模以450人天为宜。4项目组织教师应将进入项目实战的学生划分为若干个小组,每个小组由4到5名学生组成。每个小组任命一名小组长。小组长一般由技术和沟通能力突出的学生担任。一般情况下所有小组开发同一个项目。教师是整个项目开发的总负责人,负责项目计划的制定和监控,给各小组配置足够的资源。教师应经常与小组长进行沟通,了解各个小组的项目进展情况,以及解决开发小组出现的技术和非技术问题。开发组长负责本小组的项目开发管理。包括本小组内每个成员的工组安排,协调组内成员的工作,文档和代码的管理,开发版本的管理。开发组长应密切配合教师的工作,定期向教师汇报本小组的开发进度,随时向教师寻求必要的帮助。5 项目过程管理平台作为深圳软件园的培训基地,我们的项目将在如下三个平台上开发:IBM RTC(Rational Team Concert) 和 IBM JAZZ 平台。Microsoft VSTS( Visual Studio Team System)平台。HP测试平台。6 SCRUM开发过程Scrum是敏捷开发中的一种方法。Scrum模型的一个显著特点就是响应变化,它能够尽快地响应变化。开发软件时我们无法一开始就能定义软件产品最终的规格,过程中需要研发、创意、尝试错误,所以没有一种固定的流程可以保证项目成功。Scrum 将软件开发团队比拟成橄榄球队,有明确的最高目标,熟悉开发流程中所需具备的最佳典范与技术,具有高度自主权,紧密地沟通合作,以高度弹性解决各种挑战,确保每天、每个阶段都朝向目标有明确的推进。Scrum 开发流程通常以 30 天(或者更短的一段时间)为一个阶段,由客户提供新产品的需求规格开始,开发团队与客户于每一个阶段开始时挑选该完成的规格部分,开发团队必须尽力于 30 天后交付成果,团队每天用 15 分钟开会检查每个成员的进度与计划,了解所遭遇的困难并设法排除。7需求分析需求分析描述系统的功能,定义了一个项目开发小组要做什么。在需求分析中要完成以下一些工作:详细描述系统的功能。找出角色和用例,画出用例图。建立需求模型,描述角色和用例之间的交互。排序用例。将收集的用例按照风险大小依次排列,在迭代开发中,每次迭代优先选择风险大的用例。需求分析由教师负责,输出。教师应详细讲解需求分析的内容,使每个开发人员能够清楚地了解系统需求。8项目计划项目计划就是将系统功能分配到项目开发周期中。在项目计划中规定每个功能的开始时间点和结束时间点。在为功能分配时间段时,必须考虑各个功能之间的依赖关系,被依赖的功能必须先于依赖功能之前完成。在重要的时间点设置检查点和里程碑。开发小组长必须每天检查本小组内项目开发的进展情况,确保任务的按时完成。教师要全面了解各小组项目开发的进展情况,对项目进度滞后的小组要督促其加班来完成。如果在项目开发中,发现项目计划确有不合理的地方,应及时修正。项目计划的制定和修正由教师负责,输出。9分析和设计分析和设计就是建立系统架构, 将需求转化到未来系统中去。分析设计的最终目的就是要对需求分析中的用例进行实现。在分析设计中,一般采用层次的设计思想。一个典型的系统由边界层、控制层、实体层组成。边界层对应系统的用户界面,控制层对应系统的业务流程控制,而实体层与数据库交互。在分析和设计阶段,必须提供如下制品:类图包括边界类、控制类和实体类。首先根据业务需求找出分析类以及类之间的关系。然后逐步细化分析类得到设计类,设计类是实现的基础。细化分析类之间的关系得到设计类之间的关系。用例实现类设计完之后,下一步就是要用这些类来完成用例实现,即通过类的实例之间的交互实现用例的功能。提供各个用例实现的顺序图。数据库设计完成实体类和数据库表之间的映射,实体类之间的关系和数据库表之间的关系的映射。通讯设计完成高层通信协议的设计。对C/S系统,必须制定客户端和服务器之间的系统协议和各模块间的协议。协议应考虑扩展性。对C+系统,一般采用结构来定义协议,并通过TCP流的形式传递数据。对JAVA系统,一般采用类来定义协议,并通过TCP传递序列化对象。框架采用框架是为了简化系统的开发,提高我们的开发效率。例如对JAVA系统,可选的WEB框架struts,它实现了控制层的功能。对实体层可以选择hibernate和ejb,它们实现了实体类和数据模型的映射。对业务流程控制可以选择Spring框架。分析和设计由教师完成。教师在的基础上,对系统进行分析和设计,并撰写。教师应详细讲解分析和设计的内容,使每个开发人员能够清楚地理解。10实现实现是学生在项目实战中要完成的核心工作。学生的主要工作就是根据完成编码,从而实现系统的功能。在此阶段要完成的工作包括:小组长根据,将实现的内容分配给小组各成员。搭建开发环境。包括集成开发环境、工具、框架、数据库环境等。在小组长的带领下,各个小组科学规划代码的存放结构,如目录结构、包结构。创建数据库,建立数据库对象。按照分工,小组成员各自完成类的编码(主要是方法和函数的实现)。完成单元测试。单元测试由开发小组中的每个成员独自完成,主要是完成方法和函数的测试。在单元测试中发现的问题,由小组成员定位并改正。小组成员协作完成各个用例的实现。一个用例可能涉及到多个层面。如一个登录用例可能涉及到界面、控制、数据库等部分。建立版本服务器,并将正确的代码合入服务器中。小组长负责管理版本服务器。小组长合出每次迭代后的新版本。教师检查各个小组的提供的新版本。教师应和学生同步进行实现阶段的编码。在实现过程结束时,教师应详细讲解本次迭代的实现代码,并将自己的代码释放给各开发小组以供参考。11测试根据实现,完成集成测试和系统测试。集成测试由开发小组的成员协作完成各个用例的测试。系统测试由开发小组的所有成员共同完成系统的所有用例的测试。在集成测试中发现的问题,由相关的小组成员集体定位,并由相关的责任人改正。在系统测试中发现的问题,由开发小组长负责组织小组成员集体定位问题,并由相关的责任人改正。改正后的版本必须经过回归测试。12部署将每次迭代后产生的可运行的版本在真实环境中运行,确保最终用户可以正常使用系统。例如,对JAVA系统来说,应用服务器应安装成产品模式。C+系统应提供release版本。开发小组应该按照需求逐一验证系统功能,确保系统功能可用。13版本控制版本控制是指对本项目的文档和代码进行集中管理和维护。每个开发小组应该建立一个版本服务器,由小组长管理。每个小组成员应定期将代码放到版本服务器中。由于各个小组成员完成的是本项目的不同模块,因此小组长应正确管理并发开发和版本冲突,并且在部署阶段合出完整的一个可运行的版本。14项目宣讲项目宣讲就是每个开发小组的成员向本项目组或者本班级成员详细讲解项目的开发情况。包括项目是如何组织的,项目的功能,项目的框架、项目的实现、数据库设计以及所有的技术细节,并且要回答教师和其他小组成员提出的问题。通过此环节的训练,不仅可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论