自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 资源 (250)
  • 收藏
  • 关注

原创 Java基于双向链表实现列表结构(算法源码)

/* 高手之作,本人谨以收藏者身份共享源码,供大家参考之! */ /* * 列表ADT接口 */package dsa;public interface List {//查询列表当前的规模 public int getSize();//判断列表是否为空 public boolean isEmpty();//返回第一个元素(的位置) public Position first

2010-01-23 14:25:00 866

原创 MsSQL跨数据库同步数据

SET QUOTED_IDENTIFIER ON GOSET ANSI_NULLS ON GO ALTER  PROC [dbo].[P_Utils_SynchronousMssqlData]                  ( @srv_lnk NVARCHAR(200), @SourceTable NVARCHAR(300),

2011-07-26 10:26:38 1021

原创 昨天面试遇到的笔试题,关于String操作的。

// 例题二 // 统计一个字符串中的每个字符出现的次数,并记录出现最多的一个字符,返回字符+次数 // 分析:首先将所有字符放到一个数组中,然后遍历这个数组,将每个字符与数组比较,记录出现次数,与事先声明的标记值进行比较。 static String countStr(String str){ if(str==null){ return null; } char maxKey = 0; // 标记出现最多的字符 int maxCount = 0; // 标记字符

2010-12-23 17:28:00 923 2

原创 Java基于列表实现的元素迭代器、位置迭代器、树迭代器(算法源码)

/* 高手之作,本人谨以收藏者身份共享源码,供大家参考之! */ /* * 迭代器ADT接口 */package dsa;public interface Iterator { boolean hasNext();//检查迭代器中是否还有剩余的元素 Object getNext();//返回迭代器中的下一元素}  /* * 基于列表实现的元素迭代器 */packag

2010-01-23 14:31:00 927 1

原创 Java基于可扩充数组的向量实现(算法源码)

/* 高手之作,本人谨以收藏者身份拿出共享供大家参考! */ /* * 向量接口 */package dsa;public interface Vector {//返回向量中元素数目 public int getSize();//判断向量是否为空 public boolean isEmpty();//取秩为r的元素 public Object getAtRank(int r

2010-01-23 14:14:00 693

原创 怎样才能在同一个连接上同时实现Send&Recv啊..???

 怎样才能在同一个连接上同时实现Send&Recv啊..???很苦恼啊,近日刚刚学习Socket编程,现在在写一个发送文件的小demo,需要实现的功能时,在同一个连接上,客户端可以向服务端发送文件,同时服务端也可以向客户端发送文件..代码重构了N次了,都没有达到预想的效果..总是一个操作(send or recv)完了,才能执行另一个操作(recv or send)..希望各位高手指点指点

2009-10-13 09:06:00 739 1

网络数据库编程指南--详细分析

网络数据库指南 java,socket,网络编程,数据库编程,网络数据库编程

2010-02-02

关系型数据库的并发操作

数据库的并发操作 java,jdbc,数据库,数据库并发操作,连接数据库

2010-02-02

移动Java3D设计

移动Java3D设计 java,3d,网络开发,j2me,java游戏开发

2010-02-02

数据库结构与算法分析

数据库结构与算法 java,date,数据结构,算法,算法程序

2010-02-02

Spring_IOC代码分析

Spring_IOC代码分析 java,j2ee,spring,框架,ioc

2010-02-02

java时间格式大全(算法源码)

java时间格式大全(算法源码) java,date,时间,时间格式,算法源码 * * @return */ public static String getTimeShort() { SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); Date currentTime = new Date(); String dateString = formatter.format(currentTime); return dateString; } /** * 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss * * @param strDate * @return */ public static Date strToDateLong(String strDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ParsePosition pos = new ParsePosition(0); Date strtodate = formatter.parse(strDate, pos); return strtodate; } /** * 将长时间格式时间转换为字符串 yyyy-MM-dd HH:mm:ss * * @param dateDate * @return */ public static String dateToStrLong(java.util.Date dateDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = formatter.format(dateDate); return dateString; } /** * 将短时间格式时间转换为字符串 yyyy-MM-dd * * @param dateDate * @param k * @return */ public static String dateToStr(java.util.Date dateDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); String dateString = formatter.format(dateDate); return dateString; } /** * 将短时间格式字符串转换为时间 yyyy-MM-dd * * @param strDate * @return */ public static Date strToDate(String strDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); ParsePosition pos = new ParsePosition(0); Date strtodate = formatter.parse(strDate, pos); return strtodate; } /** * 得到现在时间 * * @return */ public static Date getNow() { Date currentTime = new Date(); return currentTime; } /** * 提取一个月中的最后一天 * * @param day * @return */ public static Date getLastDate(long day) { Date date = new Date(); long date_3_hm = date.getTime() - 3600000 * 34 * day; Date date_3_hm_date = new Date(date_3_hm); return date_3_hm_date; } /** *

2010-02-02

项目文档模版--需求文档

项目文档模版--需求文档 项目说明书,程序说明书,详细文档,需求分析,测试文档

2010-02-02

项目文档模版--测试文档

项目文档模版--测试文档 项目说明书,程序说明书,详细文档,需求分析,测试文档

2010-02-02

项目文档模版--详细设计

项目文档模版--详细设计 项目说明书,程序说明书,详细文档,需求分析,需求文档模板

2010-02-02

项目文档模版--规范文档

项目文档模版--规范文档 项目说明书,程序说明书,详细文档,需求分析,需求文档模板

2010-02-02

项目文档模版--程序说明书

项目文档模版--程序说明书 项目说明书,程序说明书,详细文档,需求分析,需求文档模板

2010-02-02

21天学会用JAVA编写网络游戏

21天学会用JAVA编写网络游戏 java,j2me,Java游戏开发,网络编程,网络游戏

2010-02-01

Oracle数据库10g:Java, JDBC, Web服务

Oracle数据库10g:Java, JDBC, Web服务

2010-02-01

JSP考试试题——多个试题+详细设计文档+源代码

JSP考试试题——多个试题+详细设计文档+源代码 java,jsp,jsp考试试题,项目源码,设计文档

2010-02-01

java学习笔记JDK6课件和课本代码

java学习笔记JDK6课件和课本代码 java,jdk,java源代码,学习课件,学习代码

2010-02-01

基于Java通讯开发jms源代码 (jms通讯开发源码)

基于Java通讯开发jms源代码 (jms通讯开发源码) java,net,socket,通讯开发,jms /* * @(#)Message.java 1.60 02/04/09 * * Copyright 1997-2002 Sun Microsystems, Inc. All Rights Reserved. * * SUN PROPRIETARY/CONFIDENTIAL. * This software is the proprietary information of Sun Microsystems, Inc. * Use is subject to license terms. * */ import java.util.Enumeration; public interface Message { String getJMSMessageID() throws JMSException; void setJMSMessageID(String id) throws JMSException; long getJMSTimestamp() throws JMSException; void setJMSTimestamp(long timestamp) throws JMSException; byte [] getJMSCorrelationIDAsBytes() throws JMSException; void setJMSCorrelationIDAsBytes(byte[] correlationID) throws JMSException; String getJMSCorrelationID() throws JMSException; Destination getJMSReplyTo() throws JMSException; void setJMSReplyTo(Destination replyTo) throws JMSException; Destination getJMSDestination() throws JMSException; void setJMSDestination(Destination destination) throws JMSException; int getJMSDeliveryMode() throws JMSException; void setJMSDeliveryMode(int deliveryMode) throws JMSException; boolean getJMSRedelivered() throws JMSException; void setJMSRedelivered(boolean redelivered) throws JMSException; String getJMSType() throws JMSException; void setJMSType(String type) throws JMSException; long getJMSExpiration() throws JMSException; void setJMSExpiration(long expiration) throws JMSException; int getJMSPriority() throws JMSException; void setJMSPriority(int priority) throws JMSException; void clearProperties() throws JMSException; boolean propertyExists(String name) throws JMSException; boolean getBooleanProperty(String name) throws JMSException; byte getByteProperty(String name) throws JMSException; short getShortProperty(String name) throws JMSException; int getIntProperty(String name) throws JMSException; long getLongProperty(String name) throws JMSException; float getFloatProperty(String name) throws JMSException; double getDoubleProperty(String name) throws JMSException; String getStringProperty(String name) throws JMSException; Object getObjectProperty(String name) throws JMSException; Enumeration getPropertyNames() throws JMSException; void setBooleanProperty(String name, boolean value) throws JMSException; void setByteProperty(String name, byte value) throws JMSException; void setShortProperty(String name, short value) throws JMSException; void setIntProperty(String name, int value) throws JMSException; void setLongProperty(String name, long value) throws JMSException; void setFloatProperty(String name, float value) throws JMSException; void setDoubleProperty(String name, double value) throws JMSException; void setStringProperty(String name, String value) throws JMSException; void setObjectProperty(String name, Object value) throws JMSException; void acknowledge() throws JMSException; void clearBody() throws JMSException; } 通讯开发必备源码资料!

2010-01-29

apache开源项目源码ibatis-3-core-src-3.0.0.227(ibatis框架java源程序)

apache开源项目源码ibatis-3-core-src-3.0.0.227 ibatis框架java源程序 spring,struts,hibernate,ibatis,框架源码 各种ibatis框架应用源码,你会从中得到意想不到的效果! apache开源组织开发的开源项目源码,其优良的代码风格和高质量的源码是学习者难得的学习资料!

2010-01-28

apache开源项目源码log4j-src(高质量常用代码)

apache开源项目源码log4j-src(高质量常用代码) javaapache,log4j开源项目源码,经典代码 各种log4j的工具类源码,你会从中得到意想不到的效果! apache开源组织开发的开源项目源码,其优良的代码风格和高质量的源码是学习者难得的学习资料!

2010-01-28

后台管理系统UI设计_第四模板

后台管理系统UI设计_第四模板 web,div+css,ui设计,网页设计,网站源码

2010-01-28

后台管理系统UI设计_第三模板

后台管理系统UI设计_第三模板 web,div+css,ui设计,网页设计,网站源码

2010-01-28

项目经理学之项目岗位设置

项目经理学之项目岗位设置 共有岗位 项目经理 开发经理 需求调研员 系统分析员 架构设计师 系统设计师 模块设计师 程序员 测试经理 试工程师 测试员 实施经理 实施工程师 SQA 经理 SQA 工程师 配置管理工程师 配置管理员 美工 各岗位职责说明 项目经理 主要职责: 1. 组织制定项目的总体计划和阶段计划; 2. 协调项目组资源和内部工作关系,安排项目组成员工作; 3. 跟踪、检查项目组成员工作质量; 4. 为保障项目正常运作,与客户、项目组成员之间进行必要的沟通; 5. 负责控制项目,保证项目在预算成本范围内按规定的质量和进度达到项目目标。 开发经理 主要职责: 1. 负责制定从需求分析开始到系统测试前的开发计划; 2. 在开发计划的约束下,协调项目组相关资源,完成系统分析、架构设计、系统设计、模块设计、代码实现、单元测试和集成测试工作; 3. 在项目开发阶段,跟踪、检查项目组成员的工作质量; 4. 负责重点代码检查和单元测试; 5. 负责编写《集成测试用例》和集成测试脚本,负责组织相关人员执行集成测试并提交《集成测试报告》; 6. 负责编写《系统管理手册》和《安装手册》。 需求调研员 主要职责: 1. 根据《需求调研计划》进行需求调研; 2. 收集整理客户需求,负责编写《用户需求说明书》; 3. 负责解决《用户需求说明书》被评审后发现的问题; 4. 就《用户需求说明书》的内容与项目组、用户达成一致并得到用户的确认。 系统分析员 主要职责: 1. 深入分析和归纳用户需求,总结翻译出系统需求; 2. 负责将系统需求整理成《软件需求规格说明书》; 3. 负责解决《软件需求规格说明书》被评审后发现的问题; 4. 必要时负责向架构设计师或系统设计师解释系统需求。 架构设计师 主要职责: 1. 深度剖析系统需求,抽象出应用系统架构模型,确定应用系统实现模式; 2. 利用当前先进、成熟的计算机应用技术,负责设计和实现稳健、实用、灵活、高效的应用系统(技术)架构; 3. 指导项目组相关人员了解并灵活使用(技术)架构; 4. 协助测试人员进行系统架构测试。 系统设计师 主要职责: 1. 深入分析系统需求,剖析出界面层、业务层和数据层应用模块; 2. 针对项目选定的(技术)架构,负责完成应用系统的概要设计和详细设计; 3. 负责完成应用系统的数据库逻辑设计和物理设计; 4. 指导项目组相关人员完成模块设计; 5. 协助编写《集成测试用例》和集成测试脚本。 模块设计师 主要职责: 1. 在系统设计师的指导下,负责进行模块设计(包括功能界面布局设计和人机交互界面设计)和编写设计文档; 2. 在系统设计师的指导下,负责编写《集成测试用例》和集成测试脚本; 3. 负责完成应用系统的集成测试并编写集成测试报告; 4. 指导程序员根据模块设计进行代码实现。 程序员 主要职责: 1. 在模块设计师指导下,根据模块设计进行代码实现; 2. 编写《单元测试用例》和单元测试脚本; 3. 负责执行代码走读和单元测试,记录单元测试结果; 4. 执行集成测试。 测试经理 主要职责: 1. 独立编写测试计划; 2. 独立编写测试用例; 3. 安排和指导测试工程师/测试员的工作; 4. 协调测试团队内部的工作以及与开发团队之间的工作。 测试工程师 主要职责: 1. 在测试经理的安排和指导下,编写测试计划; 2. 在测试经理的安排和指导下,编写测试用例; 3. 在测试经理的安排下,独立完成“执行测试”的工作; 4. 在测试经理的指导下,掌握较深层次的测试方法、测试技术和较复杂的业务流程。 测试员 主要职责: 1. 在测试经理的安排和指导下,编写测试用例; 2. 在测试经理的安排和指导下,完成“执行测试”的工作; 3. 在测试经理的指导下,基本完成测试计划的编写工作; 4. 在测试经理帮带下,掌握基本的测试方法、测试技术和业务流程。 实施经理 主要职责: 1. 负责制定项目实施计划; 2. 在项目实施计划的约束下,协调项目组相关资源,完成系统实施相关工作(包括系统安装、用户培训、系统上线、系统试运行等); 3. 在项目实施阶段,跟踪、检查实施人员的工作质量; 4. 负责编写《用户手册》、《操作手册》和相关培训教材; 5. 负责协助用户进行“用户确认测试”和编写《确认测试报告》。 实施工程师 主要职责: 1. 在实施经理安排和指导下,执行项目用户现场实施任务; 2. 参与编写《用户手册》、《操作手册》和相关培训教材; 3. 参与进行“用户确认测试”和编写《确认测试报告》。 SQA 经理 主要职责: 1. 负责被分派项目的质量审计; 2. 对工程部门进行CMM 过程培训和指导; 3. 负责被分派的过程改进工作; 4. 负责过程工具的研究、推广与维护。 2. 对工程部门进行CMM 过程培训和指导; 3. 负责过程工具的研究、推广与维护,负责过程数据库维护工作。 SQA 工程师 主要职责: 1. 负责被分派项目的质量审计; 2. 对工程部门进行CMM 过程培训和指导; 3. 负责过程工具的研究、推广与维护,负责过程数据库维护工作。 配置管理工程师 主要职责: 1. 负责部门项目配置管理库的管理并承担大型项目的配置管理活动; 2. 指导配置管理员编写《配置管理计划》并实施配置管理活动; 3. 为部门各项目提供SCM 理论和相关工具的培训,并提供技术支持; 4. 对配置管理流程进行监督、跟踪,并提供优化改进建议。 配置管理员 主要职责: 1. 据软件项目计划制定配置管理计划; 2. 在配置管理计划约束下,负责配置项、基线的生成、变更和相关管理; 3. 为项目组提供SCM 理论和相关工具的培训,并提供技术支持。 美工 主要职责: 1. 负责完成项目经理安排的功能界面设计。

2011-07-06

项目经理学之软件项目管理

软件项目管理 了解软件项目和软件项目管理的概念 了解对软件策划的要求 掌握软件策划的工作内容和过程 掌握软件项目计划文档的内容 了解软件项目计划文档的格式条目 项目管理是通过项目经理和项目组织的努力,运用系统理论和方法对项目及其资源进行计划、组织、协调、控制,旨在实现项目的特定目标的管理方法。 项目管理是一种管理方法体系。 项目管理的对象是项目。 项目管理的主要目的是实现项目的预定目标。 项目管理的职能是对组织的资源进行计划、组织、指挥、控制。 项目管理的任务是对项目及其资源的计划、组织、协调、控制。 项目管理的要素 人员(People) 软件工程是人的智力密集的劳动 问题(Problem) 项目经理 项目经理的职责就是确保客户满意。 对项目经理的挑战是防止、预测和克服计划的意外情况,以便能够在预算内按时地、使客户满意地实现项目工作范围。 良好的计划和沟通对于防止问题发生,以及当问题发生时,使问题对实现项目目标的影响降到最小,都是很必要的。 项目经理必须在计划和沟通上提前做好准备,并领导项目团队实现项目目标。 客户满意意味着把客户作为一个合作伙伴加入到项目中来,在整个项目过程中积极参与,以获得项目的成功。 必须明确项目的目的和范围,考虑可选的解决方案 项目管理的基本内容 项目定义 项目计划 项目执行 项目控制 项目结束 项目管理被认为是一种建立在公认的管理原理基础上的方法和技术,用于计划、估算和控制项目活动,以工具规范在预算之内,按时实现项目的最终目标。 项目管理过程 就是 制定计划 然后 按计划工作

2011-07-06

软件工程之软件开发成本估算

软件开发成本估算 软件开发成本主要是指软件开发过程中所花费的工作量及相应的代价。它不包括原材料和能源的消耗,主要是人的劳动的消耗。 人的劳动消耗所需代价就是软件产品的开发成本。 软件产品开发成本的计算方法不同于其它物理产品成本的计算。 软件的开发成本是以一次性开发过程所花费的代价来计算的。 软件开发成本的估算,应是从软件计划、需求分析、设计、编码、单元测试、组装测试到确认测试,整个软件开发全过程所花费的代价作为依据的。 对于一个大型的软件项目,由于项目的复杂性,开发成本的估算不是一件简单的事,要进行一系列的估算处理。主要靠分解和类推。 基本估算方法分为三类。 自顶向下的估算方法 自底向上的估计法 差别估计法 这种方法的主要思想是从项目的整体出发,进行类推。 估算人员根据以前已完成项目所消耗的总成本(或总工作量),推算将要开发的软件的总成本(或总工作量),然后按比例将它分配到各开发任务单元中去,再来检验它是否能满足要求。 ...... 差别估计法 这种方法综合了上述两种方法的优点,其主要思想是把待开发的软件项目与过去已完成的软件项目进行类比,从其开发的各个子任务中区分出类似的部分和不同的部分。 类似的部分按实际量进行计算,不同的部分则采用相应方法进行估算。 这种的方法的优点是可以提高估算的准确程度,缺点是不容易明确“类似”的界限。

2011-07-06

项目经理学之项目时间管理

时间是一种不可再生的 资源 时间就是金钱 1.时间在项目中为何如此重要? • 在谈论项目时– 时间是所提及的一件重要事情 • 大多数项目都有一个规定的交付日期,这是因为: – 需求 – 市场环境 • 进度控制是项目管理工作的一个主要的组成部分 • 时间易于测量,缺乏弹性 • 进度问题是项目管理中最普遍的原因 • 一般只比较实际进度与计划进度,忽略被批准的变更

2011-07-06

项目经理学之研发项目经理职责定位,任务分配

项目经理学之研发项目经理职责定位 一位教授精心准备一个重要会议上的演讲,会议的规格之高、规模之大都是他平生第一次遇到的。全家都为教授的这一次露脸而激动,为此,老婆专门为他选购了一身西装。晚饭时,老婆问西装合身不,教授说上身很好,裤腿长了那么两公分,倒是能穿,影响不大。晚上教授早早就睡了。老妈却睡不着,琢磨着儿子这么隆重的演讲,西裤长了怎么能行,反正人老了也没瞌睡,就翻身下床,把西装的裤腿剪掉两公分,缝好烫平,然后安心的入睡了。早上五点半,老婆睡醒了,因为家有大事,所以起来比往常早些,想起老公西裤的事,心想时间还来得及,便拿来西裤又剪掉两公分,缝好烫平,惬意的去做早餐了。一会,女儿也早早起床了,看妈妈的早餐还没有做好,就想起爸爸西裤的事情,寻思自己也能为爸爸做点事情了,便拿来西裤,再剪短两公分,缝好烫平 ……这个裤子还能不能穿?

2011-07-06

项目经理学之项目团队建设

项目经理学之项目团队建设 1.形成阶段 此时团队成员由个体而归属于团队,归属的需求得到满足,总体上有一种积极向上的愿望,团队成员的情绪特点包括:激动、希望、怀疑、焦急和犹豫,在心理上处于一种极不稳定的阶段。此时项目经理需要为整个团队明确方向、目标和任务,为每人确定职责和角色。 2.震荡阶段 项目团队成员开始合作后就会有人发现各方面与当初的设想和期望不一致动而出现失望,结果产生矛盾和抵触。此时团队成员情绪的特点是:紧张、挫折、不满、对立和抵制。项目经理需设法解决出现的各种问题和矛盾,消除震荡的关键在于容忍不满的出现和积极解决冲突,消除团队中的震荡因素。 3.规范阶段 此时项目团队成员的情绪特点:信任、合作、忠诚、友谊和满意。项目经理此时应通过正负强化等激励手段去规范人们的行为,应开展积极授权和支持项目团队成员的建议和参与,应使整个团队和每个团队成员的行为都能为实现项目目标服务。 4.辉煌阶段 此时项目团队的成员积极工作,项目团队不断取得辉煌成绩。此时团队成员开放、坦诚、相互依赖和具有很高的团队集体感和荣誉感。项目经理在这一阶段应该采用自我管理和自我激励的模式开展管理。 三、团队精神的内涵 1.高度的相互信任 2.相互依赖性 3.统一的共同目标 4.全面的互助合作 5.平等的关系与积极的参与 一、项目经理的角色与职责 1. 项目领导者/决策人 2. 项目计划者/分析师 3. 项目组织者/合作者 4. 项目控制者/评价者 5. 项目利益协调人/促进者 三、项目经理技能要求 1.项目经理的概念性技能 2.项目经理的人际关系能力 3.项目经理的专业技能 四、项目经理的素质要求 1.要有勇于承担责任的精神 2. 要有积极创新精神 3. 要有实事求是的作风 4. 任劳任怨积极肯干的作风

2011-07-06

项目经理学之项目管理

项目经理学之项目管理 (1)项目管理框架(1) (2)项目的范围管理(3) (3)项目的时间管理(3) (4)项目的成本管理(2.5) (5)项目的质量管理(3) (6)项目的风险管理(1.5) (7)项目的人力资源管理(1) (8)项目的沟通管理(1) (9)项目的采购管理(0.5) (10)项目的综合管理(2) (11)答疑与交互(1.5)

2011-07-06

项目管理之软件项目质量管理

软件项目质量管理 软件质量管理的基本概念 软件质量控制 缺陷预防 质量体系 软件项目质量管理计划(案例) 缺陷跟踪工具Bugzilla

2011-07-06

项目管理之质量保证计划模版

1 概述 1 2 质量目标 1 2.1 项目质量目标 1 2.2 过程质量目标 1 3 PPQA活动计划 2 3.1 质量预测 2 3.2 同行评审计划 3 3.3 过程评审计划 4 3.4 产品审计计划 6 3.5 测试计划 7 4 PPQA工作的度量 7

2011-07-06

软件项目进度表:协调与并行提高工作质量

软件项目进度表:协调与并行提高工作质量 在软件项目管理工作中,对软件项目的进度安排有时比对软件成本的估算要求更高。成本的增加可以通过提高产品定价或通过大批量销售得到补偿,而项目进度安排不当会引起顾客不满,影响市场销售。     制定软件项目进度表有两种途径:其一是软件开发小组根据提供软件产品的最后期限从后往前安排时间;其二是软件项目开发组织根据项目和资源情况制定软件项目开发的初步计划和交付软件产品的日期。多数软件开发组织当然希望按照第二种方式安排自己的工作进度。然而遗憾的是,大多数场合遇到的都是比较被动的第一种方式。       在软件项目管理工作中,对软件项目的进度安排有时比对软件成本的估算要求更高。成本的增加可以通过提高产品定价或通过大批量销售得到补偿,而项目进度安排不当会引起顾客不满,影响市场销售。软件项目的进度安排必须妥善处理以下几个问题:     1、任务分配、人力资源分配、时间分配要与工程进度相协调     在小型软件开发项目中,一个程序员能够完成从需求分析、设计、编码,到测试的全部工作。随着软件项目规模的扩大,人们无法容忍一个人花十年时间去完成一个需要十几个人年才能完成的软件项目。大型软件的开发方式必然是程序员们的集体劳动。由于软件开发是一项复杂的智力劳动,在软件开发过程中加入新的程序员往往会对项目产生不良影响。因为新手要从了解这个系统和以前的工作做起,当前正在从事这项工作的“专家”不得不停下手中的工作,抽出时间对他们进行培训。于是,在一段时间内,工作进度便拖后了。软件开发人数的增加将导致信息交流路径和复杂性的增加,项目进行中盲目增加人员可能造成事倍功半的效果。适用于大型项目的Rayleigh-Norden曲线[4]表明,完成软件项目的成本与时间的关系不是线性的,使用较少的人员,在可能的情况下,相对延长一些工作时间可以取得较大的经济效益。然而值得指出的是,程序员小组的正常技术交流能改进软件质量,提高软件的可维护性,减少软件错误,降低软件测试和正确性维护的开销。任务、人力、时间三者之间存在最佳组合,必须引起项目负责人的足够重视。     2、任务分解与并行化     软件工程项目既然需要软件开发人员集体的劳动,就需要采取一定的组织形式,将软件开发人员组织起来。软件人员的组织与分工是与软件项目的任务分解分不开的。为了缩短工程进度,充分发挥软件开发人员的潜力,软件项目的任务分解应尽力挖掘并行成分,以便软件施工时采用并行处理方式。     3、工作量分布     用前几节介绍的软件估算技术可以估算出软件开发各个阶段所需要的工作量,通常用人月或人年表示。软件在需求分析和设计阶段占用的工作量达到总工作量的40%~50%,说明软件开发前期的活动多么重要。当然这也包括分阶段开发原型的开销。大家熟悉的编码工作只占全部工作量的10%~20%,而软件测试和调试的工作量占到总工作量的30%~40%。这对于保证软件产品质量是十分必要的,实时嵌入式系统软件的测试和调试工作量所占的比例还要大些。       4、工程进度安排     软件项目的工作安排与其他工程项目的进度安排十分相似,通常的项目进度安排方法和工具稍加改造就可以用于软件项目的进度安排。目前,程序评估与审查技术(PERT)和关键路径方法(CPM)是两种比较常用的项目进度安排方法。两种方法都生成描述项目进展状态的任务网络图。网络图中按一定的次序列出所有的子任务和任务进展的里程碑,它表示各子任务之间的依赖关系。网络图也是作业分解结构(WBS)的发展。20世纪70年代,作业分解结构就已广泛应用于航天、航空、航海、雷达、通信、火控系统等领域的基于计算机项目的分解,并用以命名各项子任务,这些子任务不仅可以用网络图的形式表示,还可以用树型或层次结构图表示。PERT和CPM方法为软件规划人员提供了定量描述工具,包括:     ①关键路径。完成关键路径上所有任务时间的总和,就是项目开发所需要的最短时间。     ②用统计模型估算开发每个子任务需要的工作量和时间。     ③计算各子任务的最早启动时间和最迟启动时间,即确定启动子任务的时间窗口边界。     某个子任务的最早启动时间被定义为该子任务的所有前导任务完成的最早时间。反之,某个子任务的最迟启动时间被定义为在保证项目按时完成的前提下,最迟启动该子任务的时间。与最早启动时间和最迟启动时间对应的概念是最早结束时间和最迟结束时间。它们分别是最早启动时间和最迟启动时间与完成该子任务所需要时间的和:在任务进度安排过程中,应先寻求关键路径并在关键路径上安排一定的机动时间和节假日,以便应付意想不到的困难和问题。采用这些工具可以大大减轻软件项目管理人员在制定软件项目进度表方面的工作量,并可提高工作质量。(编辑:妤婕)

2011-07-06

敏捷项目管理-软件开发指导思想

工作的软件是首要的进度度量标准。 敏捷过程提倡平稳的开发节奏;发起人、开发者和用户应该能够保持一个长期的、恒定的开发速度。 不断地关注优秀的技能和好的设计会增强敏捷能力。 简单化是根本(不做过度设计和预测)。 最好的构架、需求和设计出自于自组织的团队。 每隔一定时间,团队会在如何才能更有效地工作方面进行反思并对自己的行为进行相应调整。

2011-07-06

Google Maps SDK+API

Google Maps SDK+API Map: MapOptions MapTypeId MapTypeControlOptions MapTypeControlStyle NavigationControlOptions NavigationControlStyle ScaleControlOptions ScaleControlStyle ControlPosition MapPanes MapCanvasProjection Marker: MarkerOptions MarkerImage MarkerShape Polyline: PolylineOptions Polygon: PolygonOptions InfoWindow: InfoWindowOptions Geocoder: GeocoderRequest GeocoderStatus GeocoderResult GeocoderAddressComponent GeocoderGeometry GeocoderLocationType DirectionsRenderer: DirectionsRendererOptions DirectionsService: DirectionsRequest DirectionsTravelMode DirectionsUnitSystem DirectionsWaypoint DirectionsStatus DirectionsResult DirectionsRoute DirectionsLeg DirectionsStep DirectionsDistance DirectionsDuration ElevationService: LocationElevationRequest PathElevationRequest ElevationResult ElevationStatus 叠加层和地图类型: OverlayView MapType MapTypeRegistry Projection ImageMapType ImageMapTypeOptions StyledMapType StyledMapTypeOptions MapTypeStyle MapTypeStyleFeatureType MapTypeStyleElementType MapTypeStyler Rectangle RectangleOptions Circle CircleOptions GroundOverlay GroundOverlayOptions 图层: BicyclingLayer FusionTablesLayer FusionTablesLayerOptions FusionTablesMouseEvent FusionTablesCell KmlLayer KmlLayerOptions KmlLayerMetadata KmlMouseEvent KmlFeatureData KmlAuthor TrafficLayer 街景视图: StreetViewPanorama StreetViewPanoramaOptions StreetViewAddressControlOptions StreetViewLink StreetViewPov StreetViewPanoramaData StreetViewLocation StreetViewTileData StreetViewService StreetViewStatus 事件: MapsEventListener 事件 MouseEvent Base: LatLng LatLngBounds Point Size MVC: MVCObject MVCArray

2011-02-24

复杂邮件程序完整Java源码,支持添加附件,图片,HTML格式文本,支持远程WebService调用

/* 复杂邮件程序完整Java源码,支持添加附件,图片,HTML格式文本,支持远程WebService调用*/ package com.hx.mail; import java.io.File; import java.util.Map; import javax.mail.Message.RecipientType; /** * MailServices 邮件接收发送接口定义类 * * @author [email protected] * Date 2010-05-11 * @version 1.0 */ public interface HexiangMailService { /** * sendMail 发送邮件函数 * * @param sender 是String类型,邮件发送者信息 * @param password 是String类型,邮件发送者密码 * @param addressee 是String类型,邮件接收者信息 * @param subject 是String类型,传入邮件主题 * @param text 是String类型,传入邮件消息 */ void sendMail(String sender,String password,String addressee,String subject,String text) throws Exception; /** * sendMail 发送邮件函数 * * @param sender 是String类型,邮件发送者信息 * @param password 是String类型,邮件发送者密码 * @param addressee 是String类型,邮件接收者信息 * @param subject 是String类型,传入邮件主题 * @param text 是String类型,传入邮件消息 * @param enclosures Map 邮件附件 * @param copyToSends Map 邮件抄送信息 */ void sendMail(String sender,String password,String addressee,String subject,String text,Map enclosures,Map copyToSends) throws Exception; /** * sendMail 发送邮件函数 * * @param sender 是String类型,邮件发送者信息 * @param password 是String类型,邮件发送者密码 * @param subject 是String类型,传入邮件主题 * @param imgs 是File[]类型,邮件正文中附件的图片信息 * @param htmlContent 是String类型,传入邮件消息正文 * @param enclosures Map 邮件附件 * @param copyToSends Map 邮件抄送信息 */ void sendMail(String sender,String password,String subject,File[] imgs,String htmlContent,Map enclosures,Map copyToSends) throws Exception; } package com.hx.mail; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Proper

2010-08-19

简易实用的JavaMail邮箱程序

package com.hx.mail; import java.util.HashMap; import java.util.Map; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.Session; import javax.mail.PasswordAuthentication; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; /** * MailServices 邮件接收发送接口实现类 * * @author [email protected] * Date 2010-05-11 * @version 1.0 */ public class KumMailServicesImpl implements KumMailServices { /** MailboxType 邮箱类型 */ private static Map<String,String> MailboxTypes = null; /** host 邮箱服务器类型 */ private String host = null; /** sender 邮件发送者 */ private String sender = null; /** addressee 邮件接收者 */ private String addressee = null; /** subject 邮件主题 */ private String subject = null; /** text 邮件消息 */ private String text = null; public static void init(){ MailboxTypes = new HashMap<String,String>(); MailboxTypes.put("163","smtp.163.com"); MailboxTypes.put("139","smtp.139.com"); MailboxTypes.put("126","smtp.126.com"); MailboxTypes.put("qq", "smtp.qq.com"); MailboxTypes.put("live","smtp.live.cn"); MailboxTypes.put("msn","smtp.msn.com"); MailboxTypes.put("kum", "mail.kum.net.cn"); MailboxTypes.put("hotmail","smtp.hotmail.cn"); } /** * initialization 实例化类成员变量 */ private void initialization(String sender,String addressee,String subject,String text){ this.sender = sender; this.addressee = addressee; this.subject = subject; this.text = text; this.host = getHost(sender); //System.out.println("sender->"+this.sender+" | addressee->"+this.addressee+" | subject->"+this.subject+" | text->"+this.text+" | host->"+this.host); } /** * getHost 获取目标邮箱服务器类型 * * @param sender 是String类型,传入邮件发送者邮箱地址信息 * @return String 返回目标邮箱服务器类型 */ private String getHost(String sender){ String _host,_host_ = null; _host = sender.substring(sender.indexOf("@")+1,sender.indexOf(".")); if(MailboxTypes==null){ init(); } _host_ = MailboxTypes.get(_host); // System.out.println(_host+" <--> "+_host_); if(_host_==null){ //MailboxTypes.put(_host,"smtp."+_host+".com"); MailboxTypes.put(_host,"smtp."+sender.substring(sender.indexOf("@")+1,sender.length())); } return MailboxTypes.get(_host); } public void sendMail(String sender, String password, String addressee, String subject, String text) throws Exception { initialization(sender,addressee,subject,text); Properties props = System.getProperties(); { props.put("mail.smtp.host",this.host); props.put("mail.smtp.auth","true"); } ValidateAuther auther = new ValidateAuther(this.sender,password); Session session = Session.getDefaultInstance(props,auther); MimeMessage msg = new MimeMessage(session); InternetAddress fromAddr = new InternetAddress(this.sender); // 发送者邮箱地址 InternetAddress toAddr = new InternetAddress(this.addressee); // 接收者邮箱地址 msg.setFrom(fromAddr); msg.addRecipient(Message.RecipientType.TO, toAddr); /** * Message.RecipientType.TO -- 接收者 * Message.RecipientType.CC -- 抄送 * Message.RecipientType.BCC --秘密抄送者 */ msg.setSubject(this.subject); // 邮件主题 msg.setText(this.text); // 邮件信息 Transport.send(msg); // 发送邮件 } } /** * ValidateAuther 邮件验证类,验证邮件发送者信息 */ class ValidateAuther extends Authenticator { /** 邮件发送者 */ private String sender; /** 邮件接受者 */ private String password; /** * ValidateAuther 验证邮件发送者信息 * * @param userName 是String类型,传入邮件发送者账户 * @param password 是String类型,传入邮件发送者账户密码 */ public ValidateAuther(String sender, String password) { this.sender = sender; this.password = password; } /** * getPasswordAuthentication 验证邮件发送者账户信息的函数 * * @param userName 邮件发送者账户信息 * @param password 邮件发送者账户密码 * @return PasswordAuthentication 返回邮件发送者账户验证信息 */ @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(sender, password); } }

2010-08-19

李勇JPA快速入门05_jpa中的查询

李勇JPA快速入门05_jpa中的查询 java,jpa,框架,j2ee框架,jpa学习资料

2010-02-02

SQLServer数据库设计与管理

SQLServer数据库设计与管理 jdbc,sqlserver,数据库编程,数据库设计,数据库设计与管理

2010-02-02

关系型数据库习题与解答

关系型数据库习题与解答 java,jdbc,数据库编程,关系型数据库编程,关系型数据库习题与解答

2010-02-02

数据库原理--完整详细的介绍数据库存储原理

数据与信息的联系 数据是信息的符号表示或载体,信息则是数据的内涵,是对数据的语义解释。 如上例中的数据2000、30%被赋予了特定的语义,它们就具有了传递信息的功能。 1.1.2 数据处理 数据处理是将数据转换成信息的过程,包括对数据的收集、存储、加工、检索、传输等一系列活动。其目的是从大量的原始数据中抽取和推导出有价值的信息,作为决策的依据。 可用下式简单的表示信息、数据与数据处理的关系: 信息=数据+数据处理 数据是原料,是输入,而信息是产出,是输出结果。“信息处理”的真正含义应该是为了产生信息而处理数据。

2010-02-02

数据库应用教程--详细资料

数据库应用教程--详细资料 java,jdbc,数据库编程,数据库应用教程,数据库资料

2010-02-02

EJB设计模--详细讲解

EJB设计模--详细讲解 java,ejb,设计模式,Java服务端开发,EJB设计模式

2010-02-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除