星期四, 五月 26, 2005

系?开发过程

1.项目确定
1.1 问题(Problem)
1.2 机会(Opportunity)
1.3 指示(Directive)
主要用PIECES框架来做问题提纲

2.经典项目阶段
系统分析阶段
2.1 范围定义阶段
2.1.1 问题陈述(Problem statement)
2.1.2 约束条件(Constraint)
2.2 问题分析阶段
2.3 需求分析阶段
2.4 逻辑设计阶段
2.4.1 建立系统模型(System Model)
2.4.2 逻辑设计(Logic Design)或概念设计和要点设计.
2.4.3 方法论.Rational的RUP(统一过程)或现在的敏捷开发(Agile Process)
分析瘫痪症(analysis paralysis)

决策分析阶段
3 可行性评价
3.1 技术可行性
3.2 运行可行性
3.3 经济可行性
3.4 进度可行性
3.5 风险可行性
最后的输出件RFP(Request for Purpose),系统建议请求.
3.1 物理设计和集成阶段
必须在可行性及方案批准之后.
物理设计两种方法论
3.1.1 按照规格说明设计
3.1.2 按照原型设计
3.2 构造和测试阶段
3.2 安装和发布阶段

4.跨生命周期的活动
4.1 调查研究(fact-finding)
4.2 记录文档和演示汇报(Document and Presentation)
5.开发路线和方法(Development RoadMap and Methodology)
5.1 模型驱动的开发路线(Model Driven Development ,MDD)
模型驱动对于需求已经充分理解并且系统不是太复杂的时候最有效.
3种流行的模型驱动
5.1.1 过程建模(Process Modeling).以过程为中心
5.1.2 数据建模(Data Modeling)
5.1.3 对象建模(Object Modeling)面向对象的分析和设计(OOA&D)
6.快速开发(RAD.Rapid Application Development,RAD),让用户参与一系列系统工程原型开发
过程中
RAD 时间盒(timeBoxing)是一段不能延长的时间段(60-90天).

星期二, 五月 24, 2005

CMM Diagram

需求分析的Framework.

目前需求分析方法论中,参考的Framework是PIECES Problem-Solving Framework
PIECES是五大类问题的缩写:

?性能( Performance )
?吞吐量、响应时间
?信息( Information and Data)
?输入/输出的来源/去向、介质/设备、表达方式、格式、内容、使用频率
?经济( Economics )
?项目的预算、自动化问题、人员转化问题
?控制( Control (and Security)
?系统安全性、保密性
?效率 Efficiency :
?服务 Service :
?对意外情况的处理

系统开发的十个原则

  1. 让系统用户参与
  2. 使用一套方法解决步骤
    2.1 研究并理解问题,问题的上下文和问题的影响
    2.2 定义方案必须满足的需求
    2.3 确定满足需求的侯选方案,并选择"最佳"方案
    2.4 设计和/或实现选出的方案
    2.5 观察并评估此方案的影响,相应的细化该方案
  3. 确立开发阶段和开发活动
    用一种方法论(Methodology)比如:RUP或Agile Process.
  4. 在开发过程中记录文档.
    两个目的.
    4.1 商业社会中,防止人员流动造成的效率损失
    4.2 提高关联人员之间的交流和相互接受程度
    4.3 需要在文档的价值和编写文档的工作量之间寻求平衡
  5. 建立标准.
  6. 管理项目和过程(注意:过程管理的难度远远高于项目管理)
    6.1 CMM2要求一个项目管理的技能.但CMM3/CMM4/CMM5/都是属于过程管理的优化.
    过程管理(Process Management).关心:阶段(Phase/MileStone),活动,交付件和质量标准.
    项目管理(Project Management).界定范围,规划,组织人员,组织,指导和控制一个项目的过程.
  7. 把信息系统当作重要的投资看待.需要评估项目的成本效益(Cost-effectiveness)
  8. 不必害怕取消和返工
    8.1 逐步投入(Creeping commitment).可以给项目增加几个评估和可行性的检查点.
    8.2 风险管理(Risk management).
  9. 分而治之.
  10. 设计系统时应考虑到增长和变化.

注意:我们系统科学家用来描述所有系统随着时间不可避免地出现衰退的现象.

一个信息系统的临界点是:维护的费用超出了开发一个新系统的费用.

增加系统熵的变化推动力是:需求的变化.


星期一, 五月 23, 2005

Java Inner Class的使用技巧

public class test
{
public class Adjust
{
String name;
String gender;
}

public static void main(String[] args)
{
Adjust adjust = new test().new Adjust();//注意语法的用法

}

}

星期日, 五月 22, 2005

最简单的Http Client

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.net.Socket;
import java.net.URL;
import java.net.URLConnection;
import java.util.Hashtable;
import java.util.Date;
import java.util.Vector;
import java.util.StringTokenizer;

public class HTTPHammer
{
/** input and output streams for mSocket */
protected DataInputStream mIn;
protected DataOutputStream mOut;
URL url ;
protected Socket mSocket;

protected void openSocket() throws IOException
{
int port = url.getPort();
mSocket = new Socket(url.getHost(),
(port >= 0) ? port : 80);
mIn = new DataInputStream(new BufferedInputStream(mSocket.getInputStream()));
mOut = new DataOutputStream(new BufferedOutputStream(mSocket.getOutputStream()));
}

public static void main(String[] args) throws Exception
{

//URLConnection conn = new URLConnection(url);
HTTPHammer hammer= new HTTPHammer();
hammer.url = new URL("http://www.szonline.net");
hammer.openSocket();
String protocol="GET / HTTP/1.0\r\nHost: www.szonline.net\r\n\r\n";
hammer.mOut.write(protocol.getBytes());
hammer.mOut.write("\r\n".getBytes());
hammer.mOut.flush();
byte[] b=new byte[40960];
long length=0L;
long totalLength=0L;
while((length=hammer.mIn.read(b))!=-1)
{
totalLength+=length;
System.out.println(new String(b));
}
System.out.println("Length:"+totalLength);
hammer.mSocket.close();
}
}

Telnet and Http Protocol

HTTP 1.0
GET / HTTP/1.1 Host: www.apache.org

% telnet www.apache.org 80
HEAD / HTTP/1.1
Host: www.apache.org

Causion:sent two enter

get Response:

HTTP/1.1 200 OK Server: Apache/1.3.0

星期五, 五月 20, 2005

Sun 网站上的Groovy资源

http://java.sun.com/developer/technicalArticles/JavaLP/groovy/

星期三, 五月 04, 2005

BitKeeper is out of Linux Kernel.

"Non-free programs are dangerous to you and to your community. Don't let them get a place in your life."----RMS Ana

关于创新

比尔.盖茨就评论说:"如果你将研究与产品捆的太紧,你就可能面临对研发的‘过度管理’的风险,因此将潜在的创新扼杀。"