网站性能检测评分
注:本网站页面html检测工具扫描网站中存在的基本问题,仅供参考。
详细设计说明书
基于ZooKeeper,Spring设计实现的参数系统 互联网视频课程
简介
基于ZooKeeper服务端、ZooKeeper Java客户端以及Spring框架设计的用于系统内部进行参数维护的系统。
设计背景
在我们日常开发的系统内部,开发过程中最常见的一项工作便是常用参数的维护,从我学习Java以来,参数的配置多样化,最常见的方式是properties配置文件或者是xml配置文件,高深点的用法是JMX MBean进行参数管理以及数据库参数配置。我们对现有的参数配置方式进行分析,详见下表:
基于上述各类参数配置分析,一番思考设想,设计出如下结构的[参数中心系统](详细设计链接),设计说明查看下一节:
系统设计说明
参数中心系统,顾名思义,主要是将参数集中化,在实际开发中,一个业务的实现需要几个甚至数十个模块联合完成,每个模块都需要进行参数的更新维护,一个模块的参数更新设计缺陷,在进行参数维护时,就可能导致某个业务的中断,故需要将多参数管理统一化管理;统一化的参数管理方式,便可能涉及到了参数数据的统一存储,统一之后便出现了性能瓶颈需求,不然所有鸡蛋装一个篮子里,一出问题全部碎掉;在集中化后,各个模块有自己的参数,有些参数可能仅限单个系统访问,便需要安全的参数访问方式;在参数使用过程中,常见的功能之一便是参数的实时维护;在项目投产过程中,经常因为参数配置问题比如配置错误等情况导致业务中断,故需要一个参数检查表来确认参数的正确性;参数管理整合后,需要方便的操作来实现管理功能。概括一下,参数中心系统需要满足以下技术需求:
多系统、多模式、安全、动态维护的参数配置个性化话参数配置(普通字符窜,JSON字符窜,数组窜)低侵入快捷的参数导入导出功能便捷的管理方式上线参数检查表,用于上线时各类参数的检查,防止出错高可用安全控制根据上述分析,设计之初,思考如何实现多系统多模式的参数存储,虽然一直知道ZooKeeper这个东西,但从未详细了解过,偶然机会大致学习了一下ZooKeeper,发现ZooKeeper的各类机制与参数中心系统设计相吻合,比如:多系统多模式的参数存储与ZooKeeper的目录型存储方式相似,查看下面图3-1展示;参数的安全方式认证与ZooKeeper的ACL机制吻合;参数实时维护可以借鉴ZooKeeper的Watcher机制;参数中心系统的高性能高可用设计与ZooKeeper的集群方式相吻合。这样下来,参数中心系统最大的问题参数存储模块服务端得到了完美的解决。接下来的便是基于ZooKeeper设计出对应的客户端,管理端。
图3-1 基于ZooKeeper的参数存储
Java应用端常用的技术之一便是Spring框架,也符合低侵入的设计原则,在使用Spring开发过程中,常用的功能之一便是使用${}引用properties配置文件内的参数,如此方便的参数配置方式,我决定使用类似的方式,配置方式为zk{}(zk表示ZooKeeper参数),故客户端的设计是基于Spring的设计。
系统技术组合
ZooKeeper集群 + ZooKeeper Java客户端 + Spring BeanFactoryPostProcessor扩展点 + JSON字符窜解析 + Spring SpEL表达式
设计实现(重点)
根据上述设计说明等信息,最后得出这样一个系统,基于ZooKeeper参数存储,Spring客户端使用zk{}进行参数配置的参数中心系统。
服务端服务端设计如3-1图所示(在实际开发过程中可能稍有变动)
客户端(重点)在进行参数中心系统客户端实现之前,我们先了解一点Spring框架的基础知识。
在Spring框架开发过程中,最常用的配置是
Spring允许开发者实现自定义的扩展点,实现特定的接口,使用通用的配置即可注册一个扩展点到Spring容器内。详细学习参考https://docs.spring.io/spring/docs/4.3.19.RELEASE/spring-framework-reference/htmlsingle/#beans-factory-nature。
参数中心系统参数的配置实现参考了Spring的${}参数配置,我们对${}的实现做简单学习。${}的实现便使用了Spring扩展点BeanFactoryPostProcessor,开发中常见配置如下:
上图中采用了context:property-placeholder标签配置,根据Spring context的xsd说明文件,我们知道了property-placeholder对应的实际类为org.springframework.context.support.PropertySourcesPlaceholderConfigurer,context:property-placeholder配置实际为在spring容器内注册一个扩展点,实现${}表达式的解析。实现类图以及调用流程大致如下,再详细过程查看源码,(有句话叫做师傅领进门,修行在个人):
参数中心系统客户端的实现代码与上述实现类似,不同的是properties配置文件变成了ZooKeeper参数存储,${}变成了zk{}。
客户端项目名称:itwatertop-pczk-client
管理端基于H5的管理页面设计,详细情况还未设想(先实现了主要的服务端客户端,管理端暂时可以使用ZooKeeper的客户端)。
客户端设计源码
客户端程序结构如下:
文件说明:
BaseLoader.java 数据加载基类ZookeeperDataLoader.java Java ZooKeeper客户端实现数据加载,参数更新回调。PlaceholderMsg.java zk{zkexp} zk配置表达式解析结果,以及使用该表达式的bean属性获取SpEL表达式。ParamCenterStore.java 对ZooKeeper参数服务端获取的参数信息做缓存,并且将对应的使用该参数的Bean属性表达式统计,方便ZooKeeper参数变更时回调使用。PczkConstants.java 系统内常量字符窜整合。PczkStringValueResolver.java 表达式解析统一接口PczkPropertyPlaceholderConfiguer.java 实现Spring扩展点BeanFactoryPostProcessor,通过该扩展点对BeanDefinition配置元信息做解析以及变更。PropertyPlaceholderHelper.java 具体实现zk{}表达式解析规则。PczkBeanDefinitionVisitor.java 对Spring IoC容器内的BeanDefinition属性配置信息做解析,主要结合PczkPropertyPlaceholderConfiguer.java使用。test目录下包含一部分测试代码,可以自行查看客户端代码实现简介:
根据上述需求,客户端代码需要具备的能力包括:
与ZooKeeper服务器的连通,并获取参数信息Spring xml中zk{}表达式的解析多样化的参数配置,支持字符窜,对象,数组ZooKeeper参数变更回调,维护参数信息针对上面4种要求,在开发时使用以下解决办法:
使用ZooKeeper Java客户端;结合Spring的扩展点BeanFactoryPostProcessor;在ZooKeeper服务端节点内设置数据时设置字符窜/JSON对象字符窜或者是JSON数组字符窜,客户端使用数据时分别配置为zk{param},zk{param.key},zk{param[i]},通过对zk{}表达式解析判断ZooKeeper参数格式,若为JSON字符窜使用FastJSON对字符窜做解析,访问对应属性值;针对参数变更回调,在解析zk{}表达式时拼接出了可以访问到对应bean属性的SpEL表达式,通过SpEL表达式访问bean属性调用setter方法,因此属性操作也受到SpEL表达式的限制。在个别情况下,由于参数的变更可能需要别的一下操作处理,比如重新建立连接,这个可以自行扩展代码,比如比较上一次的值和当前值是否一致,不一致做出新的操作(现在也在设想怎么可以自动识别进行额外操作)。客户端详细实现源码下载:访问GitHub项目(注释还是比较清晰的)
说明
本人技术有限,上述有错误的理解欢迎指出,共同交流学习,若对上述说明不了解,建议先学习一点Spring IoC设计,学习地址:https://docs.spring.io/spring/docs/4.3.19.RELEASE/spring-framework-reference/htmlsingle,若对于客户端的设计有好的建议可以提出来,共同讨论。
十一天SSH项目快速实战课程(第1天) 推广视频课程
1 项目介绍
1.1 项目背景
国税协同办公平台包括了行政管理、后勤服务、在线学习、纳税服务、我的空间等几个子系统;我们本次主要的开发功能是纳税服务子系统的部分模块和基于纳税服务子系统信息的个人工作台首页。纳税服务子系统是办税PC前端或移动端的后台管理系统,主要包括的功能有系统角色管理、用户管理、信息发布管理、投诉受理、纳税咨询、易告知、服务预约、服务调查等模块。
1.2 项目前期
项目前期;一般是由客户经理从客户那边了解到有关该项目的招标信息,然后开发公司再组织竞标;编写标书和详细的项目建设方案。这个阶段一般由商务部门和开发部门的管理层参与。建设方案由部门经理或者项目经理协助完成。项目建设方案中一般包括初步的系统功能、模块设计、软硬件设备、开发组人员介绍等。提供这些信息给客户后他们再评估相应开发公司是否有承建系统能力。
1.3 需求分析
当项目中标后,公司的客户经理、项目经理再到客户环境进行详细的需求调研,完成调研后将初步的调研结果转化成正式的需求文档。需求文档是所有后续流程的基础和非常重要的文档,开发和测试都需要按照需求来开发测试。详细需求见《国税协同平台-纳税服务需求规格说明书.docx》
1.4 设计
在这个阶段主要是针对需求进行详细的开发前的分析和对具体模块的设计。在设计过程中可能包括到的有系统原型设计的完善、界面美工设计切图、数据库设计(概念、物理模型)等;最终需要出详细设计说明书。见《国税协同平台-纳税服务详细设计说明书.docx》
1.5 制定开发计划
在需求和详细设计都已经确定的情况下;项目需要根据开发的时间和任务数来制定开发计划;计划中需要描述所有的开发阶段,从需求阶段到部署上线期间所有要做的任务,每个任务对应具体的开始时间、结束时间,前置任务,工作时长,资源名称。后续的开发都根据该计划进行在每周开周例会上确认开发进度是否和计划保持一致,如果不一致则需要预测好相应方案;保证能如期提交系统给到客户。
1.6 开发
根据开发计划,项目经理将组织开发团队完成具体的开发任务,每周向公司部门、客户主管人员汇报项目进度。对应具体的开发人员则熟悉、理解需求,明白设计文档;按照计划中时间点开发功能,提交代码。
2 框架整合
2.1 新建数据库及web项目
2.1.1 创建itcastTax数据库
-- 创建数据库
CREATE DATABASE itcastTax DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
2.1.2 新建web项目
新建工作空间指定项目编码(或工作空间编码)为utf-8,再建 web project,配置buildpath
引入tomcat 的包:
如若对应的MyEclipse版本没有上述的“MyEclipse Server Library”;可以选择“My Eclipse Library”然后选择ee的包。
选择对应配置的tomcat版本即可。
添加jstl jar包和mysql驱动包;
2.2 框架整合
2.2.1 添加struts2的jar包和配置文件
添加jar包:
commons-fileupload-1.3.1.jar,commons-io-2.2.jar,commons-lang-2.4.jar ,commons-lang3-3.2.jar,freemarker-2.3.19.jar,ognl-3.0.6.jar,struts2-core-2.x.jar
,struts2-spring-plugin-2.x.jar,xwork-core-2.x.jar 到web-inf/lib目录下。
添加struts.xml到src目录下。可在“struts-2.x\apps\struts2-blank\WEB-INF\classes”下复制。
在struts.xml中添加几个常用属性:
配置web.xml:添加struts2 过滤器:
2.2.2 添加hibernate的jar包和配置文件
添加hibernate jar包:
hibernate3.jar,lib/requiredconf/*-spring.xml" />
编写TestAction类
在test的conf文件夹下新建test-struts.xml中配置TestAction :
将test-struts.xml导入到struts.xml文件中。
在webRoot目录下新建test/test.jsp
在浏览器中输入:http://localhost:8080/itcastTax/test.action 查看后台是否能输入service中的打印信息。
2.3.2 整合hibernate 和 spring
在applicationContext.xml中配置如下原本在hibernate.cfg.xml中需要配置的信息,在spring中配置后hibernate.cfg.xml 可删除。
1、 配置c3p0数据库连接源:
2、 db.properties
jdbcUrl=jdbc:mysql://localhost:3306/itcastTax?useUnicode=true&characterEncoding=utf8
driverClass=com.mysql.jdbc.Driver
user=root
password=root
initialPoolSize=10
maxPoolSize=30
3、 配置sessionFactory,并将dataSource指向c3p0创建的dataSource:
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 编写实体类Person和对应的映射文件Person.hbm.xml: 映射文件的头部信息: "http://hibernate.sourceforge/hibernate-mapping-3.0.dtd"> 编写完实体映射文件后,用JUnit测试hibernate和spring的整合,在测试用例中启动spring容器的时候将扫描Person类根据其创建数据库表,并在测试时将向表插入一条数据。 测试hibernate,添加一个人员 测试框架分层的整合(service 与 dao) TestDao 中新增方法 save ,在TestService中通过调用testDao来保存人员信息。 2.3.3 配置spring事务管理 class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 【注意:上面的pointcut expression 表示拦截以Service结尾的bean,或者可写成 execution(* cn.itcast..service.impl.*.*(..))】 完善 TestService接口和TestServiceImpl;利用service中的操作来验证上面配置的事务管理是否生效。 测试方法 Dao中 Service中 2.4 资源文件分类 1、 将配置文件归类到新建config文件夹; 2、 源代码目录按照功能模块进行划分:cn.itcast.子系统.功能模块.* 3、 Jsp放置到WEB-INF目录下; 4、 其它: 2.5 日志工具配置 在控制台会报出日志log4j没有配置好配置文件的信息。 Slf4j 接口jar(slf4j-log4j12-1.6.1.jar) log4j的jar包(com.springsource.org.apache.log4j-1.2.15),配置log4j.properties文件。 测试: 2.6 编写基类BaseDao DAO基类中配备增删改查的操作。 获取泛型类型: // 使用反射得到T的真实类型 ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass(); // 获取当前new的对象的 泛型的父类 类型 this.clazz = (Class } 3 用户管理 3.1 实现CRUD的步骤及用户实体映射文件 1、 用户实体类及映射文件:Usre.java 和 User.hbm.xml 2、 实现UserDao、UserDaoImpl,直接继承BaseDao、BaseDaoImpl; 3、 编写UserService、UserService类,里面包括baseDao中的基本方法; 4、 UserAction中要实现增删改查,需要6个方法;我们约定需要跳转到页面的方法以UI结尾,如果addUI 则说明这是跳转到添加页面,需要对应一个addUI.jsp。在删除、修改、添加完成后应该返回列表页面,这时为了避免重复提交返回使用重定向。 配置user-spring.xml,并将其导入到applicationContext.xml中,然后在applicatoinContext.xml中设置所有业务dao的父类dao,为baseDao中的HibernateDaoSupport注入sessionFactory。 在user-spring.xml中的内容: 3.2 实现用户管理的CRUD方法及显示列表 在UserAction中至少需要有的6个方法: listUI() --- 返回到列表页面对应listUI.jsp addUI() --- 返回到添加页面对应addUI.jsp add() --- 重定向到listUI edit() --- 重定向到listUI editUI() --- 返回到编辑页面对应editUI.jsp delete() --- 删除用户完后重定向到listUI 设置完action后,配置user-struts.xml文件,里面对应各个方法对应的页面;最后将user-struts.xml包含到struts.xml文件中。 接下来引入美工设计好的页面;将数据与页面结合展示。 3.3 完成美工设计页面显示 将美工设计好的页面复制到项目中: 将js、css、image、分别放置到WebRoot目录下;其它的jsp对应...
软件工程管理办法 流量视频课程
文档主要是用来对软件项目管理的流程化和结构化进行参考,具体内容根据项目的情况自行调节。
1、 总则
第一条:为规范软件研发和管理工作,特制定本制度。
第二条:本制度适用于学院软件研发和管理。
第三条:本制度中软件开发指新系统开发和现有系统重大改造。
第四条:软件开发遵循项目管理和软件工程基本原则。项目管理包括:立项管理、项目计划和监控、配置管理、软件质量保证、合作开发管理和结项管理;软件工程包括:需求管理、系统设计、系统实现、系统测试、验收测试、试运行、系统验收和系统上线。
第五条:除特别指明,本制度中项目组包括学院和合作开发商,主要是指业务组和开发组。
第六条:开发项目组遵循本制度流程。
2、 立项
第一条:学院和合作开发商进行学院层面立项,保证系统项目和公司整体策略相一致。主要包括工作:编写《立项建议书》、可行性分析报告、商务合同、开发计划文档,成立项目小组、记录沟通文档的。
《立项建议书》:明确项目范围和边界;
可行性分析报告:业务可行性分析、技术可行性分析、成本效益分析;
开发计划文档:开发各个阶段、各阶段的里程碑、各阶段的负责人、项目组内人员安排、项目时间计划要求、项目客户联系人;
沟通记录:沟通时间、地点、参会人员信息、系统需求场景的描述、具体应用的原始需求、学院的其他信息。
第二条:立项申请通过后,成立项目组。学院管理层委派项目经理监督项目的进度和负责项目管理工作,合作开发商负责技术开发管理和工作。项目组细化组织结构,成立业务组和开发组等小组。项目组人员的选择是通过考虑项目对业务及技术要求而调配,项目组的人员应有足够的业务和IT技术方面的专业知识来胜任项各方面的工作。
3、 需求分析
第一条:项目组制定《需求分析》,由项目经理对需求分析可行性进行审批。
第二条:业务组对学院各部分需求进行汇总整理,编写《软件需求分析说明书》,确保《软件需求分析说明书》包含了所有的业务需求。
第三条:开发组在获得《软件需求分析说明书》后,提出结束需求和解决方案,对系统进行定义,编写《需求规格说明书》。
《软件需求分析说明书》:项目背景介绍、项目需求范围、客户提供资料等,详见项目需求文档;
《需求规格说明书》:详细列出业务对系统的要求(界面、输入、输出、管理功能、安全需求、运作模式等)
第四条:项目经理制定详细的《项目计划》,并提交学院层面审批。
《项目计划》:综合管理、需求管理、时间管理、成本管理、人力资源管理、沟通管理、风险管理、采购管理、质量管理等。
第五条:业务组制定《验收测试方案》作为验收测试的依据,该测试案例对第三方保密。
第六条:项目经理组织相关人员和技术人员对《需求规格说明书》进行评审,出具评审报告。
第七条:业务需求发生变更后,业务组应出具《需求变更申请》,并报告业务组负责人审批。
第八条:开发组对变更影响进行评估,结果记录在《需求变更申请》,经过开发组负责人审批。
第九条:项目组应对需求变更影响到的文档及时更新。
4、 项目计划和监控
第一条:软件开发采用项目形式进行管理。项目经理负责整个项目的计划、组织、领导和控制,业务组和开发组负责人配合项目经理的管理工作。
第二条:开发组负责人配合项目经理和项目相关人员进行有效沟通,在项目目标、项目计划和工作方法上达成一致。
第三条:在项目的各个阶段,业务组和开发组负责人需配合项目经理制定阶段性项目计划。
第四条:业务组和开发组负责人需配合项目经理对项目计划执行情况进行监控,确保项目按计划完成。开发组负责人按照《项目计划》规定的报告频度填写《项目状态周报告》,上报项目经理。
第五条:项目进展和项目计划偏差较大时,应申请变更项目计划,项目经理填写《项目计划变更控制报告》,并提交学院层面审批。
第六条:开发组负责人负责软件开发过程中的风险识别与管理、重大风险应及时上报项目经理。
5、 系统设计
第一条:系统设计应分为概要设计和详细设计,系统设计要遵循完备性、一致性、扩展性、可靠性、安全性、可维护性等原则。
第二条:在系统设计阶段中,用户应充分参与,确保系统设计能满足系统需求。
第三条:项目组进行概要设计,出具《概要设计说明书》、《集成测试案例》。
《集成测试案例》:导航结构、角色描述、UI测试用例、页面交互测试用例、业务交互测试用例、权限测试用例、性能测试用例。
第四条:项目经理组织相关人员和技术人员对《概要设计说明书》、《集成测试案例》进行评审,出具评审报告。
第五条:项目组进行详细设计,出具《详细设计说明书》、《单元测试案例》。
《详细设计说明书》:需要定义系统的输入输出说明和接口设计说明等,现存接口定义应根据新程序需求而更新,并根据系统运行情况的记录,对应用程序系统进行优化设计。
第六条:项目经理组织相关人员和技术人员对《详细设计说明书》、《单元测试案例》进行评审,出具评审报告。
第七条:概要设计评审和详细设计均以《需求规格说明书》为依据,确保系统设计满足全部需求。
6、 系统实现
第一条:系统实现包括代码编写、单元测试和集成测试。
第二条:项目组需要根据详细设计说明书制定《系统实现计划》,并由项目经理对计划可行性进行审批。
第三条:项目组保证开发、测试和生产环境独立,为各环境建立访问权限控制机制、明确项目成员的职责分工,对生产环境、测试环境与开发环境在物理和逻辑方面做到隔离,如果环境的分割是通过逻辑形式实现的,应有专门人员定期检查网络设置。
第四条:项目组进行单元测试和集成测试,出具《单元测试报告》、《集成测试报告》和《BUG管理表》,测试人员签字确认测试结果。
第五条:项目组完成《用户操作手册》和《安装维护手册》,应用系统修改后,应对两个手册进行更新。
7、 系统测试与验收测试
第一条:项目组需制定《系统测试计划》和《验收测试计划》,并提交项目经理对计划可行性进行审批。
第二条:《系统测试计划》和《验收测试计划》需定义测试标准,并明确各种测试的测试步骤和需要的系统设置要求。
第三条:项目组应向数据拥有部门申请获取测试使用业务数据的权限,测试数据要足够模拟生产环境中的实际数据。对获取的数据应进行严格的访问权限,确保只有相关项目人员才能访问和使用,对已评定为敏感信息的数据进行敏感处理和保护。
第四条:系统测试人员测试出具《系统测试报告》。
第五条:系统测试通过后,业务组和开发组建立验收测试环境,业务组根据验收测试用例进行验收测试,出具《验收测试报告》。
第六条:验收测试完成后,项目组应及时更新《用户操作手册》和《安装维护手册》。
8、 试运行
第一条:项目组制定《试运行计划》,上报学院层面审批。
第二条:项目组联合试运行单位进行部署工作,项目组准备培训资料,根据《试运行计划》对相关用户和信息技术人员进行培训。
第三条:项目组根据《试运行计划》明确问题沟通渠道的职责分工,并对可能发生的重大问题制定应急预案。
第四条:项目组根据《试运行计划》进行系统转换和数据转换。系统转换前,需对各个受影响的系统环境做检查,确保运行环境能满足新应用系统的需要,系统转换时要求对原系统中的重要参数、设置等系统运行需要的信息做详细记录。项目组对数据转换的完整性和准确性作出检查,出具《数据转换记录》。系统转换和数据转换由试运行单位和信息技术方面的工作人员共同监督。
第五条:系统转换和数据转换验收通过后,正式启动试运行。在试运行的过程中,试运行单位要对系统运行情况(系统资源使用、反应速度)做记录。
第六条:试运行达到《试运行计划》规定的终止条件后,项目组编写《试运行报告》。
第七条:学院层面审阅试运行结果,决定是否延期或者结束试运行。
第八条:项目组根据测试标准和试运行结果,制定项目生产评估标准。
9、 系统验收
第一条:系统验收分为功能验收和软件验收。分别由业务组和开发组负责完成。
第二条:项目组根据验收情况制定《系统验收报告》,并提交学院层面评审。
10、 系统上线
第一条:系统上线遵循稳妥、可控、安全的原则。
第二条:项目组制定《总体上线计划》,《总体上线计划》应考虑资源和系统现状情况,同时考虑上线后可能给当前系统带来的影响。《总体上线计划》下发到各个上线单位,由上线单位制定各自的《上线计划》。
第三条:项目组制定实施后评估计划,下发各上线单位。
第四条:项目组根据《总体上线计划》做好相关部署工作、培训工作并建立总体问题应对机制,制定详细上线应急预案。
第五条:上线单位在上线初期加强日常运行状态监控,出现问题及时应对处理,对重大问题启动紧急预案。
第六条:各个上线单位在上线完成后,编写《系统上线报告》,上报项目组。
第七条:系统上线后,各上线单位根据《实施后评估计划》对系统进行评估,并做详细《评估记录》。各单位编写《实施评估报告》,上报项目组,由其整理后上报学院作为项目整体实施后评估的依据。
11、 结项管理
第一条:系统上线完成后,项目组提出结项申请,出具《项目总结报告》,上报学院层审批。
第二条:学院层面批准后,业务组和开发组整理项目管理文档和工作成果,统一提交到项目组管理。
第三条:系统结项后,由项目组交由相关运行部门进行维护和支持工作。
12、 配置管理
第一条:项目组制定统一的配置管理规范,软件开发过程中,各项目管理文档和工作成果均作为配置项进行管理,其中包括:需求文档、设计文档、代码、测试用例、测试数据、数据转换记录及其它相关文档。
第二条:项目经理指定项目组成员担当配置管理员,负责配置管理工作。
第三条:配置管理员根据配置管理规范制定《配置管理计划》,并提交项目组审批。
第四条:配置管理员负责配置管理、维护、做好配置库的备份工作。
13、 软件质量保证
第一条:系统质量保证遵循全员负责、以用户需求为导向、持续改进原则。
第二条:项目组制定质量保证员,负责质量保证工作。
第三条:质量保证员制定详细的《质量保证计划》,提交项目经理审批。
第四条:质量保证员对于项目中的质量问题,应及时提交开发组负责人,开发负责人在《质量保证计划》中约定的时间为处理时,质量保证员应及时反馈到项目经理。
第五条:质量保证员根据《质量保证计划》规定的报告频度,撰写《质量管理报告》提交项目经理审阅。
14、 合作开发管理
第一条:合作开发应本着公开、公平、公平的原则。
第二条:合作开发商招标参见采购标准。
第三条:合作开发商应遵循我方软件开发制度。
第四条:合作开发商应按计划定期向我方报告进展状态,并提交阶段性成果文档,若发生重大问题时,合作开发商应及时向我方汇报。
第五条:我方负责人安排专人监控合作开发商质量保证。
第六条:合作开发商应做好技术转移工作,保证我方人员掌握核心技术。
第七条:项目组同合作开发商商定验收的标准和方法。
15、 附则
第一条:本制度自发布之日起开始执行。
十一天SSH项目快速实战课程(第1天) 公司视频课程
1 项目介绍
1.1 项目背景
国税协同办公平台包括了行政管理、后勤服务、在线学习、纳税服务、我的空间等几个子系统;我们本次主要的开发功能是纳税服务子系统的部分模块和基于纳税服务子系统信息的个人工作台首页。纳税服务子系统是办税PC前端或移动端的后台管理系统,主要包括的功能有系统角色管理、用户管理、信息发布管理、投诉受理、纳税咨询、易告知、服务预约、服务调查等模块。
1.2 项目前期
项目前期;一般是由客户经理从客户那边了解到有关该项目的招标信息,然后开发公司再组织竞标;编写标书和详细的项目建设方案。这个阶段一般由商务部门和开发部门的管理层参与。建设方案由部门经理或者项目经理协助完成。项目建设方案中一般包括初步的系统功能、模块设计、软硬件设备、开发组人员介绍等。提供这些信息给客户后他们再评估相应开发公司是否有承建系统能力。
1.3 需求分析
当项目中标后,公司的客户经理、项目经理再到客户环境进行详细的需求调研,完成调研后将初步的调研结果转化成正式的需求文档。需求文档是所有后续流程的基础和非常重要的文档,开发和测试都需要按照需求来开发测试。详细需求见《国税协同平台-纳税服务需求规格说明书.docx》
1.4 设计
在这个阶段主要是针对需求进行详细的开发前的分析和对具体模块的设计。在设计过程中可能包括到的有系统原型设计的完善、界面美工设计切图、数据库设计(概念、物理模型)等;最终需要出详细设计说明书。见《国税协同平台-纳税服务详细设计说明书.docx》
1.5 制定开发计划
在需求和详细设计都已经确定的情况下;项目需要根据开发的时间和任务数来制定开发计划;计划中需要描述所有的开发阶段,从需求阶段到部署上线期间所有要做的任务,每个任务对应具体的开始时间、结束时间,前置任务,工作时长,资源名称。后续的开发都根据该计划进行在每周开周例会上确认开发进度是否和计划保持一致,如果不一致则需要预测好相应方案;保证能如期提交系统给到客户。
1.6 开发
根据开发计划,项目经理将组织开发团队完成具体的开发任务,每周向公司部门、客户主管人员汇报项目进度。对应具体的开发人员则熟悉、理解需求,明白设计文档;按照计划中时间点开发功能,提交代码。
2 框架整合
2.1 新建数据库及web项目
2.1.1 创建itcastTax数据库
-- 创建数据库
CREATE DATABASE itcastTax DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
2.1.2 新建web项目
新建工作空间指定项目编码(或工作空间编码)为utf-8,再建 web project,配置buildpath
引入tomcat 的包:
如若对应的MyEclipse版本没有上述的“MyEclipse Server Library”;可以选择“My Eclipse Library”然后选择ee的包。
选择对应配置的tomcat版本即可。
添加jstl jar包和mysql驱动包;
2.2 框架整合
2.2.1 添加struts2的jar包和配置文件
添加jar包:
commons-fileupload-1.3.1.jar,commons-io-2.2.jar,commons-lang-2.4.jar ,commons-lang3-3.2.jar,freemarker-2.3.19.jar,ognl-3.0.6.jar,struts2-core-2.x.jar
,struts2-spring-plugin-2.x.jar,xwork-core-2.x.jar 到web-inf/lib目录下。
添加struts.xml到src目录下。可在“struts-2.x\apps\struts2-blank\WEB-INF\classes”下复制。
在struts.xml中添加几个常用属性:
配置web.xml:添加struts2 过滤器:
2.2.2 添加hibernate的jar包和配置文件
添加hibernate jar包:
hibernate3.jar,lib/requiredconf/*-spring.xml" />
编写TestAction类
在test的conf文件夹下新建test-struts.xml中配置TestAction :
将test-struts.xml导入到struts.xml文件中。
在webRoot目录下新建test/test.jsp
在浏览器中输入:http://localhost:8080/itcastTax/test.action 查看后台是否能输入service中的打印信息。
2.3.2 整合hibernate 和 spring
在applicationContext.xml中配置如下原本在hibernate.cfg.xml中需要配置的信息,在spring中配置后hibernate.cfg.xml 可删除。
1、 配置c3p0数据库连接源:
2、 db.properties
jdbcUrl=jdbc:mysql://localhost:3306/itcastTax?useUnicode=true&characterEncoding=utf8
driverClass=com.mysql.jdbc.Driver
user=root
password=root
initialPoolSize=10
maxPoolSize=30
3、 配置sessionFactory,并将dataSource指向c3p0创建的dataSource:
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 编写实体类Person和对应的映射文件Person.hbm.xml: 映射文件的头部信息: "http://hibernate.sourceforge/hibernate-mapping-3.0.dtd"> 编写完实体映射文件后,用JUnit测试hibernate和spring的整合,在测试用例中启动spring容器的时候将扫描Person类根据其创建数据库表,并在测试时将向表插入一条数据。 测试hibernate,添加一个人员 测试框架分层的整合(service 与 dao) TestDao 中新增方法 save ,在TestService中通过调用testDao来保存人员信息。 2.3.3 配置spring事务管理 class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 【注意:上面的pointcut expression 表示拦截以Service结尾的bean,或者可写成 execution(* cn.itcast..service.impl.*.*(..))】 完善 TestService接口和TestServiceImpl;利用service中的操作来验证上面配置的事务管理是否生效。 测试方法 Dao中 Service中 2.4 资源文件分类 1、 将配置文件归类到新建config文件夹; 2、 源代码目录按照功能模块进行划分:cn.itcast.子系统.功能模块.* 3、 Jsp放置到WEB-INF目录下; 4、 其它: 2.5 日志工具配置 在控制台会报出日志log4j没有配置好配置文件的信息。 Slf4j 接口jar(slf4j-log4j12-1.6.1.jar) log4j的jar包(com.springsource.org.apache.log4j-1.2.15),配置log4j.properties文件。 测试: 2.6 编写基类BaseDao DAO基类中配备增删改查的操作。 获取泛型类型: // 使用反射得到T的真实类型 ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass(); // 获取当前new的对象的 泛型的父类 类型 this.clazz = (Class } 3 用户管理 3.1 实现CRUD的步骤及用户实体映射文件 1、 用户实体类及映射文件:Usre.java 和 User.hbm.xml 2、 实现UserDao、UserDaoImpl,直接继承BaseDao、BaseDaoImpl; 3、 编写UserService、UserService类,里面包括baseDao中的基本方法; 4、 UserAction中要实现增删改查,需要6个方法;我们约定需要跳转到页面的方法以UI结尾,如果addUI 则说明这是跳转到添加页面,需要对应一个addUI.jsp。在删除、修改、添加完成后应该返回列表页面,这时为了避免重复提交返回使用重定向。 配置user-spring.xml,并将其导入到applicationContext.xml中,然后在applicatoinContext.xml中设置所有业务dao的父类dao,为baseDao中的HibernateDaoSupport注入sessionFactory。 在user-spring.xml中的内容: 3.2 实现用户管理的CRUD方法及显示列表 在UserAction中至少需要有的6个方法: listUI() --- 返回到列表页面对应listUI.jsp addUI() --- 返回到添加页面对应addUI.jsp add() --- 重定向到listUI edit() --- 重定向到listUI editUI() --- 返回到编辑页面对应editUI.jsp delete() --- 删除用户完后重定向到listUI 设置完action后,配置user-struts.xml文件,里面对应各个方法对应的页面;最后将user-struts.xml包含到struts.xml文件中。 接下来引入美工设计好的页面;将数据与页面结合展示。 3.3 完成美工设计页面显示 将美工设计好的页面复制到项目中: 将js、css、image、分别放置到WebRoot目录下;其它的jsp对应...