第一章 开发技能培养部分
J2SE平台(Linux平台)
JAVA语法
在实际项目中的JAVA语言注释规则
JAVA DOC 文档
JAVA虚拟机的运行时数据区
数组(含多维数组)
数组排序(冒泡,快速,选择排序法)
数组的二叉查找算法
数组实用类(Arrays)
面向对象的编程
面向对象的概念
类和对象的概念、特性和区别
类的封装特性-----如何抽象现实事物以及事物之间的关系
类图的画法及设计工具的使用[Rose、PowerDesigner]
面向对象的设计(UML语言)
用例图 类框图 时序图 协作图 状态转换图 组件图 部署图
类的高级特性
变量的分类及特性
Static 变量,方法
Final 变量,方法和类
抽象类、接口和内部类
抽象类的定义、特性和使用
接口的定义、特性和使用
内部类的定义、特性和使用
继承和多态
方法重载&方法覆盖
多态的概念和应用
面向接口编程
异常
异常机制对性能的影响
checkException与UncheckException
自定义异常
数据结构、IO、线程、网络
数据结构
Collection接口
List接口 Set接口 Map接口
常用数据结构实现类
IO
流的概念和作用
Java.io包简介
字节流 & 字符流 & 节点流 & 缓冲流
Serializable接口
文件和目录操作
线程
线程运行机制
线程的状态和调度
JAVA中创建线程的方式
JAVA中操作线程的常用API
线程同步
网络(Socket)
网络协议简介
Socket常用API
TCP协议应用 UDP协议应用(选) FTP应用(选)
GUI
JAVA GUI概述
JAVA GUI发展历史
Applet、AWT、Swing、SWT简介
JAVA集成开发环境[Eclipse / NetBeans]
Eclispe和NetBeans简介
Eclipse及插件的安装 / NetBeans的安装
Eclipse常见问题解决
Eclipse基本使用 / NetBeans的基本使用
利用Eclipse / NetBeans 调试JAVA程序
Swing
Swing 简介
Swing程序结构
Top-Lever Containers
Common Swing componets
Layout
Border of components
Events and Listeners
Swing’s Look and Feel
Custom componets
SWT
SWT简介
SWT程序结构
SWT 常用组件
SWT事件和监听
RCP简介
数据库
主流数据库管理系统(Oracle SQL Server MySql)
数据库基本设计和常用设计工具(PowerDesigner)
SQL(SQL92标准)
PL/SQL 语言
存储过程(基于oracle)
触发器(基于oracle)
JDBC
JDBC概述
JDBC概念
JDBC驱动分类
JDBC基本使用
JDBC编程步骤
JDBC编程注意事项
数据库连接池
JDBC高级使用
JDBC的事务处理
JDBC调用存储过程
JDBC处理大字段
Java.sql包内的常用类、接口简介
HTML ,XML, CSS
HTML语法
HTML常用组件
HTML框架
CSS语法
CSS常见应用
个人网站
XML的概念
XML文档
命名空间(Naming Space)
XML 文档规则
DTD
SCHEMA
样式表(XSL)
javascript
javascript语法
javascript内置对象,方法及正则表达式
javascript操作HTML组件和CSS
javascript操作框架和基本的客户端数据验证
Servlet + Jsp + JavaBean
Servlet
HTTP协议简介
Web服务器,Servlet容器简介
主流Web服务器,Servlet容器简介
Web应用程序介绍
Tomcat 基本使用
Tomcat 配置文件介绍
Servlet基础
Servlet概念
创建Servlet
映射Servlet
客户端常用组件与Servlet的传值技术
Servlet响应客户端技术
Servlet高级技术
Servlet生命周期
HttpServletRequest,HttpServletResponse,RequestDispatcher及其常用方法介绍
HttpSession , ServletContext , ServletConfig 及其常用方法介绍
过滤器( Filter ) 和 监听器 ( Listener )
过滤器( Filter ) 和监听器 ( Listener ) 简介
创建过滤器( Filter )
创建监听器( Listener )
过滤器( Filter ) 和 监听器 ( Listener )的现实应用
JSP
JSP简介
JSP程序结构及基本语法
JSP元素
JSP指令
JSP内置对象
JSP标签
JSP标签简介
JSTL标签
自定义标签
常见Web系统开发
MVC模式
MVC模式概念
Web应用程序发展阶段
Servlet+JSP+JavaBean实现MVC
MVC框架(Struts)
Struts体系结构
Struts如何实现MVC
Struts基础(actionform介绍)
Struts中动态Actionform及报错组件
Struts中action及几种扩展的action介绍
Struts中国际化应用
Struts中validata验证框架
Struts高级应用
多模块协同开发
Struts标签
Hibernate 3.3.1GA
Hiberante常用API介绍
Hibernate配置及映射文件
Hibernate开发步骤
HQL
Hibernate高级特性
延迟加载机制
缓存机制
IOC、AOP容器(Spring 2.5)
IOC,AOP简介
Spring体系结构
Spring Core
Spring IOC应用
Spring AOP
Spirng AOP介绍
SSH ( Spring + Struts + Hibernate )
Spirng对Struts的支持
Spring对Hibernate的支持
Spirng集成Struts,Hibernate
EJB、WebService、JMS、JavaMail、JWS(选)
Weblogic , JBoss高级配置
JNDI应用举例
JMS应用举例子
WebService
WebService简介
主流WebService实现介绍
JavaMail应用举例
EJB3.0简介
元注释
JWS
JWS简介
JWS应用举例
第二章 开发经验培养部分
项目实施管理办法
1 前言
项目实战是让学生参与一个真实完整的软件项目的开发,是培训过程中的一个重要环节。目的在于通过项目开发实践使学生了解软件开发过程,巩固在教学阶段所学的知识,全面提升学生的软件水平,为学生未来的就业打下坚实的基础。
项目实战过程旨在规定统一的项目开发的方法和流程。它是在参考RUP、敏捷、SCRUM、CMMI多种软件开发过程的基础上,结合我司的具体情况以及培训的特殊规律定制而成的,是我司进行软件开发过程管理的企业标准。
2 项目周期
一般安排在培训期的第十一周开始。
原则上在项目实战阶段不安排学生面试,也不允许学生自行面试。
3 项目选择
项目的选择至关重要。因为项目的规模和复杂度不能太大,否则我们的项目将失去控制。目前我们已经建立了统一的项目池(以上的实战项目),以后原则上学生实战项目都从项目池中获取。项目池也会定期更新维护。整个项目的规模以4×50人天为宜。
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 开发阶段
第一阶段 |
周次 |
任务 |
1 |
项目需求理解,测试用例 |
2 |
项目开发、调试、测试 |
3 |
4 |
上线、反馈、调试、文档(help) |
第二阶段 |
5 |
开发工具的了解 |
6 |
产品开发(模块1) |
7 |
用户体验、上线、反馈、文档(help) |
8 |
产品开发(模块2) |
9 |
用户体验、上线、反馈、文档(help) |
第三阶段(选) |
10 |
新技术(GAE/liferay/openxava/javame/php) |
10 分析和设计
分析和设计就是建立系统架构, 将需求转化到未来系统中去。分析设计的最终目的就是要对需求分析中的用例进行实现。在分析设计中,一般采用层次的设计思想。一个典型的系统由边界层、控制层、实体层组成。边界层对应系统的用户界面,控制层对应系统的业务流程控制,而实体层与数据库交互。
在分析和设计阶段,必须提供如下制品:
类图
包括边界类、控制类和实体类。首先根据业务需求找出分析类以及类之间的关系。然后逐步细化分析类得到设计类,设计类是实现的基础。
细化分析类之间的关系得到设计类之间的关系。
用例实现
类设计完之后,下一步就是要用这些类来完成用例实现,即通过类的实例之间的交互实现用例的功能。提供各个用例实现的顺序图。
数据库设计
完成实体类和数据库表之间的映射,实体类之间的关系和数据库表之间的关系的映射。
通讯设计
完成高层通信协议的设计。对C/S系统,必须制定客户端和服务器之间的系统协议和各模块间的协议。协议应考虑扩展性。对C++系统,一般采用结构来定义协议,并通过TCP流的形式传递数据。对JAVA系统,一般采用类来定义协议,并通过TCP传递序列化对象。
框架
采用框架是为了简化系统的开发,提高我们的开发效率。例如对JAVA系统,可选的WEB框架struts2,它实现了控制层的功能。对实体层可以选择hibernate和ejb,它们实现了实体类和数据模型的映射。对业务流程控制可以选择Spring框架。
分析和设计由教师完成。教师在<<软件需求规格说明书>>的基础上,对系统进行分析和设计,并撰写<<分析设计说明书>>。教师应详细讲解分析和设计的内容,使每个开发人员能够清楚地理解。
11 实现
实现是学生在项目实战中要完成的核心工作。学生的主要工作就是根据<<分析设计说明书>>完成编码,从而实现系统的功能。在此阶段要完成的工作包括:
小组长根据<<分析设计说明书>>,将实现的内容分配给小组各成员。
搭建开发环境。包括集成开发环境、工具、框架、数据库环境等。
在小组长的带领下,各个小组科学规划代码的存放结构,如目录结构、包结构。
创建数据库,建立数据库对象。
按照分工,小组成员各自完成类的编码(主要是方法和函数的实现)。
完成单元测试。单元测试由开发小组中的每个成员独自完成,主要是完成方法和函数的测试。在单元测试中发现的问题,由小组成员定位并改正。
小组成员协作完成各个用例的实现。一个用例可能涉及到多个层面。如一个登录用例可能涉及到界面、控制、数据库等部分。
建立版本服务器,并将正确的代码合入服务器中。小组长负责管理版本服务器。
小组长合出每次迭代后的新版本。
教师检查各个小组的提供的新版本。
教师应和学生同步进行实现阶段的编码。在实现过程结束时,教师应详细讲解本次迭代的实现代码,并将自己的代码释放给各开发小组以供参考。
12 测试
根据实现,完成集成测试和系统测试。
集成测试由开发小组的成员协作完成各个用例的测试。系统测试由开发小组的所有成员共同完成系统的所有用例的测试。
在集成测试中发现的问题,由相关的小组成员集体定位,并由相关的责任人改正。在系统测试中发现的问题,由开发小组长负责组织小组成员集体定位问题,并由相关的责任人改正。
改正后的版本必须经过回归测试。
13 部署
将每次迭代后产生的可运行的版本在真实环境中运行,确保最终用户可以正常使用系统。例如,对JAVA系统来说,应用服务器应安装成产品模式。C++系统应提供release版本。开发小组应该按照需求逐一验证系统功能,确保系统功能可用。
14 版本控制
版本控制是指对本项目的文档和代码进行集中管理和维护。
每个开发小组应该建立一个版本服务器,由小组长管理。每个小组成员应定期将代码放到版本服务器中。由于各个小组成员完成的是本项目的不同模块,因此小组长应正确管理并发开发和版本冲突,并且在部署阶段合出完整的一个可运行的版本。
15 项目宣讲
项目宣讲就是每个开发小组的成员向本项目组或者本班级成员详细讲解项目的开发情况。包括项目是如何组织的,项目的功能,项目的框架、项目的实现、数据库设计以及所有的技术细节,并且要回答教师和其他小组成员提出的问题。
通过此环节的训练,不仅可以使小组各成员了解其他成员所开发的模块,达到各个模块融合的目的,而且锻炼了学生的表达能力,为学生面试打下基础。
16 项目评价
教师总结所有开发小组的项目完成情况,指出项目开发过程中存在的问题,给开发小组提出指导性的改进意见,最后为每个开发小组做出评价。