关于作者

用户名:JasonYe
笔名:JasonYe
地区: 上海-上海
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



他山之玉

.NET CF Blogs

色影网络

C & Linux

embedded

Smartphone

Web Devs

VSTS

访问统计:
文章个数:52
评论个数:40
留言条数:2




Powered by BlogDriver 2.1

Jason's Scribble

 


发表是最好的记忆
                  ——胡适

文章

草根 + 互动 + 共享 => 互联网的新时代

Web2.0,IPTV,Mobile TV,网游,Skype,胡戈,UUSee,OpenV,YouTube ...

这些关键字的背后体现了“草根、互动、共享”,也是它们带给互联网无限的活力。

互联网是虚拟的世界,但它早已深入千家万户,改变着人们的生活方式,产生着无数新的产业模式。

互联网无国界,但叱咤风云的互联网巨头到了中国都没有延续往日的风光——亚马逊、eBay、雅虎莫不如此,也许Google即将步此后尘。

造就草根、互动、共享的技术都不能算新,如AJAX和P2P,那为什么在短短1年多的时间内一批新锐如雨后春笋般崛起?他们又靠什么迎合了大众的需求?

有一点是毋庸质疑的,互联网的新时代即将真正到来,能否赶上这班快车,就看你有没有点儿想法了?

- 作者: JasonYe 2006年10月11日, 星期三 18:18  回复(0) |  引用(0) 加入博采

总算为开源做了贡献

用了这么多开源的好DD,一直想着自己也为开源社区做点贡献,终于这些日子比较空,花了三天时间完成了这份自己布置了好久的小作业。

这份作业是用managed code对现有的USB Webcam driver (for WinCE)的封装,同时包括一个WinForm的测试程序。有了我的这个.net wrapper,现在在WinCE平台上可以用.net来写摄像头采集的程序,是不是轻松多了?

项目地址:http://www.gotdotnet.com/workspaces/workspace.aspx?id=0eb87e35-13e4-4fa3-9fde-71e9136f47de

Douglas Boling可是这个Workspace的Owner哦。

- 作者: JasonYe 2006年08月31日, 星期四 15:38  回复(1) |  引用(0) 加入博采

Best Practice

这篇blog源自近来.NET社区对O/R Mapping的争论,其实问题的核心就在于现有的一些ORM框架能否很好的支撑起企业级的应用。

ORM的全称是Object Relational Mapping,即对象关系映射。它的实质就是将关系数据(库)中的业务数据用对象的形式表示出来,并通过OO的方式将这些对象组织起来,实现系统业务逻辑的过程。ORM实质是一种机制,在面向对象的系统设计中把对象持久化到关系型数据库,和从关系型数据库中获取对象(包括对象间关系)。

搞清楚了这个实质,也就了解了ORM框架(工具)是帮助我们把各种SQL语句从业务逻辑代码中分离出来,实现分层体系架构的DAL层的。它不仅可以使我们从繁琐的CRUD中解脱,还能大大简化从设计到部署过程中很多重复性的劳动。

前两年NHibernate和iBATIS.NET讨论的比较多,但由于学习曲线比较陡、配置比较复杂,实用效果并不理想。最近看了博客园里Teddy的NBear,感觉不错,使用和配置都很方便,准备在接下来的项目中采用。

言归正传,主题是要写我自己的Best Practice,并不是每个项目都算得上是企业级的应用,所以系统设计没必要搞得过于复杂。企业级应用更多的是考虑到后期的部署和维护,而对于那些需求变化不大,仅需要1、2人在三个月内完成的系统,则不必要把每一层分的过于严格。相比那些ORM框架,这正是Typed Dataset和DLinq的用武之地,.NET Framework 2.0新增的Typed Dataset,使我们可以用鼠标和简单的几句SQL就完成DAL层所需要的大部分工作。但它也有过于依赖代码生成,对象消耗大,不够灵活的缺点。LINQ为CLR以及针对CLR 的语言添加了查询功能,于ADO.NET的集成(DLinq)使关系数据获得语言集成查询的优点。DLinq可以使“SQL语句”做到编译期检查,但要防止其被滥用,因为这种便捷性很容易导致BLL层的权力扩大化。不过一旦它跟随.NET Framework 2.x/3.0正式推出,现有的ORM工具很多都会用其重写。

罗唆了这么多,下面才是正文(针对需多人开发的,需求不太稳定的系统设计)

【Best Practice】
1、负责需求分析的人写业务文档,画用例图,确认需求。
2、负责架构设计的人写设计文档,画类图,数据库模型图,生成数据库;创建ServiceInterfaces项目。参考画的类图,在VS类设计器里设计业务服务层(BLL)的接口;也可以用visio生成类的代码,再重构提取出接口。面向接口编程是面向对象的核心,有了这个业务服务的接口,就可以使多个实现任意切换,也就是工厂模式,NBear.IOC的底层是用Castle实现的。
3、负责DAL开发的人创建Entities项目,根据数据库生成Entity(用NBear的工具)。
4、定义好了BLL层的接口,就可以创建Web项目和ServiceImpls(BLL)项目,从而使两者的开发并行。根据Web开发方面的需求,开发人员可以提交更新BLL接口的申请,由架构设计人员更新类图和接口定义,从而指导BLL的实现。
5、负责BLL实现的人通过业务类,创建单元测试项目,为所有的公有方法创建单元测试用例,这就算是TDD吧。
6、利用NBear框架开发业务类,刚才只是生成了一些业务方法的框架,现在填充代码。这些代码随时可以进行单元测试。
...... 部署、测试。

【相关链接:】
NBear:http://teddyma.cnblogs.com/articles/Ilungasoft_Framework.html
Grove:http://www.mp3cha.com/grove/grove.htm
NHibernate: http://www.hibernate.org/343.html
                    http://sourceforge.net/projects/nhibernate
iBATIS.NET:  http://ibatis.apache.org/dotnetdownloads.cgi

- 作者: JasonYe 2006年08月28日, 星期一 09:27  回复(0) |  引用(0) 加入博采

谁来保护自主创新?

不知具体从哪天,自主创新的口号开始充斥在我们的周围。

一年前就听说“微点主动防御软件”,多家媒体报导主动防御技术世界首创,国家相关部门也作出鉴定,被专家称为防计算机病毒的一场伟大革命,同时也是对过去杀毒软件的颠覆。

记得当时就有测试版本可以下载,但出于对新鲜事物的警惕性,同时也考虑到这么好的杀毒软件应该很快就会上市,我还是等等再说吧。那个瞬间,很多知名的杀毒软件从我脑海闪过,难道杀毒软件届又要有一番血雨腥风?

可是这一等就是溜溜的一年,杀毒软件行业比前两年要平静的多。难道这又是一起昧良心的假创新?(有没有感觉到麒麟和汉芯在你眼前飘过)

值得庆幸并且值得我们佩服和尊敬的是,由刘旭领导的科研团队,的确成功研制了国际上首套全新技术的主动防御软件,同时申请了6项国家专利。 然而正是这样一项创新成果,却在长达一年多的时间里,无法上市。防病毒软件产品的销售许可证迟迟不能下发,公司数十台研发部和财务部的机器被扣押,公司副总经理被有关部门以涉嫌“故意制造、传播计算机病毒”为由拘捕。令人费解的是,存有微点主动防御软件方案设计、源程序等核心机密的计算机被送到了竞争对手——某杀毒软件公司。

据媒体报导,在经历创新成果被封杀一年多的厄运后,刘旭依然坚持不肯将自己的成果卖给国外厂商。他说,“微点主动防御软件已到了生死存亡的关口,公司资金难以为继,我本人也身心憔悴,究竟谁来保护自主创新?”

我不明白为什么会有这样一个戏剧性的过程,既然得到了那么多院士、专家的肯定,又有人站出来向上级反应,全国工商联也表示出同情,难道就因为触动了某些公司的利益就能产生如此大的效应?不管怎样,这都不会是最终结果,自主创新只是个口号?

- 作者: JasonYe 2006年08月16日, 星期三 16:21  回复(0) |  引用(0) 加入博采

在那比赛的日子里

又被比赛洗礼了一次,再次眼镜跌落,说再次,是因为这些年比赛的过程走下来,这样的事情常有,发生在自己身上或者是身边,但这次算是跌大发了。

不是我不明白,这个世界变化快。

仿佛这些年过来只学会了荣辱不惊,或者可能也许就是麻木。比赛的结果不可谓不重要,但我们还没有强大到可以掌握自己的命运。在这个圈子里玩了这么多年,才发现自己原来只是陪衬,也就是传说中跑龙套的,那主角又是谁呢?

无数的事实不断地在教育我们,这个世界的主角永远属于那些制定规则的人。如果我们不去制定属于自己的规则,那么就只有陪别人玩的份儿了。

说到制定规则,不免让人想到可怜的WAPI。多次从有关报道上看到中方代表团为了抗议不公正对待而中途退场,姑且不论这其中牵扯到了哪些利益集团,也不去辨别这样的退席有无意义,单就这个过程来看,想要制定自己的规则也不是那么容易的,因为我们还是需要人家的规则做到公开公正公平,而这样的信息不对称本身就是一种不公平。

虽然摆在眼前的是种种困难,但我们也不能望而却步。只有像TD-SCDMA、AVS这样对中国产业界有着深远影响的国际标准不断出台,我们才能真正赚到外国人的钱,否则永远都像DVD机一样拼了命的帮老外赚钱。

技术的进步需要日积月累,今天TD-S的核心技术很多都要采用人家高通的,但只要我们的政府坚持科教兴国,大力扶持国有标准的制定,我们的科研机构和企业坚持搞真正的科技创新,而不是盲目的在专利数量上做文章,不久的将来整个世界将按照我们的规则运转。

- 作者: JasonYe 2006年07月26日, 星期三 12:10  回复(0) |  引用(0) 加入博采

XScale,记忆中的“王者”?

没想到,真的没想到,Intel这么快就决定把养了8年的“孩子们”给卖了。他们中稍大些的出生在DEC,更多还未满8岁的,则土生土长在Intel,这些姓“StrongARM”或“XScale”的孩子们可谓命运多舛。他们体内有着ARM的基因,但却与其他有着ARM基因的同类不同,他们的核心基因是经过改良设计的,也许是唯一一个被授权允许改造核心基因的种群。

这些孩子虽没有像姓“IA”的大哥们为人们所熟知,但其实他们早已生活在你的周围,而且他们更多的是藏在你随身的皮包或者口袋中,在关键时刻给你提个醒儿,在路上帮你消磨时光或者方便你移动办公......

为了满足人们与日俱增的对移动计算的需求,他们前仆后继,不断挑战单位功耗能带来的性能极限,他们中的每一代无不是智慧的结晶,在他们身上闪耀着如IPP、GPP、iWMMX、SpeedStep、QuickCapture等等的光辉,令人眩目。

虽然他们再次遭遇易手的命运,但相信他们还是会一代代的发展下去,毕竟他们早已在高端的嵌入式处理器领域占据了大半江山,唯一为人诟病的也许就是片内未集成基带,而是采用AP+CP(Hermon)的解决方案,从这点来看,他们到了Marvell的新家后,必定会在通讯处理器的方向上走出一大步;从另一方面也反映出AMD对Intel的威胁究竟有多大,市场的竞争是多么的残酷。

祝XScale一路走好,无论你们以后姓什么,从现在的情况看,很有可能不会再有新一代的XScale Core了,因为这种允许修改ARM核心的授权期限已到。不过即使是这样,我现在也不愿这一天真正的到来,毕竟XScale Core真的是一个不错的值得学习的架构,比起那些姓“IA”的,甚至是“IA”的新秀“Conroe”更具学习和研究的价值。

同时也希望那些Intel XScale的架构师们不要向DEC里StrongARM-110的首席架构师们一样弃其而去,愿高性能嵌入式处理器的市场不久能迎来真正的杀手级应用,愿TI OMAP能稳扎稳打,FreeScale DragonBall MX、Samsung S3Cxxxx能吸取教训渐入佳境。

- 作者: JasonYe 2006年07月7日, 星期五 01:38  回复(2) |  引用(0) 加入博采

MEDC2006之WindowsCE v.s. Linux
以下两个表格都是在相同的硬件条件下,测量一千次的平均值。

中断的表现: 

 

平均反应时间 (Time) (us)

平均落差时间 (Jitter) (us)

 

Windows CE

Linux

Windows CE

Linux

Interrupt Service Routine (ISR)

32.8

400

25.7

398

Interrupt Service Thread (IST)

126

408

108

402


任务调度的表现:

 

平均反应时间 (Time) (us)

平均落差时间 (Jitter) (us)

 

Windows CE

Linux

Windows CE

Linux

Context Switch
Same process

8.7

101

1

86.5

Context Switch
Different Process

15.1

105

2.5

50.7

- 作者: JasonYe 2006年05月17日, 星期三 22:59  回复(0) |  引用(0) 加入博采

Rescue & Recovery

IBM Rescue and Recovery 是个不错的DD,但其实IBM Rapid Restore Ultra 4.0并没有包含R&R的全部功能,比如删除备份。RRU的备份文件一般是在系统隐藏目录RRUbackups里面,正常情况下无法删除,看到网上有好多人也在问这些备份文件该如何删掉的问题,答案一般是进安全模式删除或者卸载R&R后删除,不过这样的答案无法让人满意,况且R&R这样的软件如果连删除这样的功能都无法提供的话,也未免太◎#¥%……

解决这个问题的办法其实很简单,因为R&R有个命令行的工具RRUCMD。

#Change directories to \Program Files\IBM\IBM Rapid Restore Ultra
cd %rru%
#Delete All backups from local HDD silently
rrucmd delete location=L silently

当然,正如你所想的,rrucmd可以完成Rapid Restore Ultra4.0的所有功能,具体的就看它的help吧。

另外,今天windows 2003 server也给了我一个惊喜,那就是Backup Utility for Windows,可以像Norton Ghost 10一样做增量备份,但是Ghost 10是不能用在2003 server上的,以前都是用Ghost做系统备份,后来发现windows xp里也有这个DD,不知道2000里是不是也早就有了。汗,又土了一把。

还有一点需要补充,尽量不要在服务器上使用Ghost,不知道是因为它对SATA支持不好,还是对RAID支持不好,反正从老版本到新版本的GHOST都无法在DELL PowerEdge 830上启动。如果不幸已经安装了,并发现无法启动到原来的系统了,首先请不要惊慌,其次不要去使用其他复杂的硬盘分区工具去修复,比如PQMagic、DiskGenius等,只要用fdisk删除那个ghost新建的分区,然后激活原有C盘所在分区即可。

- 作者: JasonYe 2006年05月4日, 星期四 01:40  回复(1) |  引用(0) 加入博采

Update for Windows CE 5.0
摘要:不知从何时开始,对WinCE失去了最起码的兴趣,最近由于竞赛的原因再度拾起,苦于没有时间专注与此,仅以此文做个Backup。 查看全文

- 作者: JasonYe 2006年04月29日, 星期六 14:26  回复(0) |  引用(0) 加入博采

Joni don’t cry
摘要:怀旧,伤感的旋律,简单的歌曲,讲述了一个伤感的故事。 查看全文

- 作者: JasonYe 2006年03月5日, 星期日 19:26  回复(0) |  引用(0) 加入博采

IPv6 + Ad-hoc != WSN

首先声明,WSN is Wireless Sensor Network,可不是猥琐男哈。

WSN这几年好像很火,不知从什么时候开始,我对WSN的直觉就是IPv6和Ad-hoc,所以对它也并不感冒,感觉可能是在炒概念,新瓶装旧酒。

今天也不知怎么的,从Google中国新推出的Google学术搜索这条新闻开始,搜着搜着就转到了“无线传感器网络”这个关键词上了,也就此长了见识,更正了一下自己浅薄认识。

山东省计算机网络重点实验室“在无线传感器网络的研究初期,人们一度认为成熟的Internet技术加上Ad-hoc路由机制对传感器网络的设计是足够充分的,但深入的研究表明:传感器网络有着与传统网络明显不同的技术要求。前者以数据为中心,后者以传输数据为目的。为了适应广泛的应用程序,传统网络的设计遵循着“端到端”的边缘论思想,强调将一切与功能相关的处理都放在网络的端系统上,中间节点仅仅负责数据分组的转发,对于传感器网络,这未必是一种合理的选择。一些为自组织的Ad-hoc网络设计的协议和算法未必适合传感器网络的特点和应用的要求。节点标识(如地址等)的作用在传感器网络中就显得不是十分重要,因为应用程序不怎么关心单节点上的信息;中间节点上与具体应用相关的数据处理、融合和缓存也显得很有必要。”

中科院计算所博导崔莉如是说,传感器网络不能简单借用以往(所谓“传统的”)ad-hoc 网的协议。原因如下:
1. 传感器网络中的节点数量和分布密度远远超过以往ad-hoc 网络中的节点数;
2. 大部分节点不像ad-hoc 节点一样快速移动;
3. 传感器节点出现故障的可能性要大于ad hoc 网络;
4. 传感器节点的存储能力、计算能力和电能有限;
5. 传感器节点主要采用广播方式通信,而ad hoc 网络大都采用点对点方式通信;
6. 由于数目极大,传感器节点不一定具有全球唯一的标识;

上面两段精辟的总结可以很好的说明为什么IPv6 + Ad-hoc != WSN。那么传感器网络的研究热点和关键技术又是什么呢?

目前一般把传感器网络按其功能抽象成五个层次,包括基础层(传感器集合)、网络层(通信网络)、中间件层、数据处理和管理层以及应用开发层。

其中,基础层以研究新型传感器和传感系统为核心,包括应用新的传感原理、使用新的材料以及采用新的结构设计等,以降低能耗、提高敏感性、选择性、响应速度、动态范围、准确度、稳定性以及在恶劣环境条件下工作的能力。还包括多通道传感器以及无线通信芯片的系统集成,以及嵌入式处理器的集成化。此外,还包括通过对嵌入式操作系统的研究,实现利用有效资源对整体系统进行高效率的事件处理、能源管理、命令处理和工作描述。另外,超低能耗的传感器节点的设计、各功能部件的接口及系统集成方法、与信号处理中心之间实现高速的通信以保证决策人做出迅速及时的反应也是研究的重点内容。目前这一代节点产品大都采用各类通用芯片(如普通八位微处理器,如Atmega128L,以及通用无线通信模块CC1000 等)和元器件进行集成开发。而某些面向2010 年的下一代节点将完全采用SOC 方法,以真正实现微型化并大大降低节点成本。这方面代表性的项目有非常有名的Smart Dust。

网络层以通信网络为核心,实现传感器与传感器、传感器与用户之间的通信,对传感器节点进行有效的控制和管理,支持多传感器协作完成大型感知任务。需要展开的研究工作包括低能耗、高速率、长生命周期的无线传感器网络的随机自组织通信协议、通信方式及自重构、自调整性;无线传感器网络的可扩展性、容错性、可维护性及安全性、隐私性;传感器网络的特性(有别于已有的互联网和Ad hoc 无线网络);适用于传感器网络的网络通信模式、支持传感器网络通信的各种协议、时间同步、任务分配与协调控制以及相应的软硬件资源等方面。

中间件层研究具有通用性能的标准中间层软件结构,负责传感器网络系统的资源管理、动态环境分析,以及普适应用的开发支持,如应用功能改换、功能扩展、系统升级、重复再利用等关键性能的实现。数据处理和管理层以传感器数据管理与处理软件为核心,包括以数据为中心的实时分布式数据流管理、查询及相关信息处理技术;支持感知数据的采集、存储、查询、分析等各种数据管理和分析处理软件系统,新型统计算法、排除误差信息的方法、对大型分布式传感器阵列的协同处理、图象识别方法等。
应用开发层由各种传感器网络应用软件组成。

显然,围绕实现网络整体低功耗运行,在基础层上针对传感器节点开展研究工作是整体传感器网络研究的起点和基础。以上提到的网络节点中涉及到的各项技术无疑是最为关键的传感器网络一部分技术。此外,针对适合传感器网络特点、支持传感器网络工作的网络协议这一关键技术的研究也是极为重要和迫切的。而关于这方面的协议的研究重点集中在网络层和MAC(Media Access Control)层。

以上介绍传感器网络的文字摘录自中国科学院计算技术研究所信息网络室的一篇文章,题为“传感器网络”(李天璞 鞠海玲 崔莉),文章中还对传感器网络协议做了部分介绍。基于这方面的最新进展可以参考他们的另一篇文章“无线传感器网络研究进展”(刊登于《计算机研究与发展》2005-1)

最后再唐一句,写这篇Blog的真实心情在于,觉得这是个不错的研究领域,关键是可以和我自己的知识背景所结合,另外也苦于近期还处于考试阶段,无暇做更深入的探索,故在此先埋个伏笔。

- 作者: JasonYe 2006年01月11日, 星期三 16:21  回复(0) |  引用(0) 加入博采

一个项目经理的经验总结 (转载)

本人做项目经理工作多年,感到做这个工作最要紧的就是要明白什么是因地制宜、因势利导,只有最合适的,没有什么叫对的,什么叫错的,项目经理最忌讳的就是完美主义倾向,尤其是做技术人员出身的,喜欢寻找标准答案,耽误了工作进度,也迷茫了自己。以下是本人一些做项目的个人体会,写出来供大家指点,在讨论过程中共同提高水平。

项目开始阶段是一个最重要的阶段。项目经理在接手一个新项目的时候,首先要尽可能地多从各个方面了解项目的情况,如:

 1.这个项目是什么项目,具体大概做什么事情,是谁提出来的,目的是解决什么问题。在国内很多客户都很不成熟的情况下,千万不要根据项目的名称望文生义地去想象项目的目标。一个名为办公自动化的项目很有可能在你进场以后一个月才发现客户其实需要的是一个计算机生产管理辅助信息系统系统。前期了解情况的工作越详细,后面的惊讶就越少,项目的风险就越小。

2.这个项目里牵涉哪些方面的人,如投资方、具体业务干系方、项目建成后的运营方、技术监督方等等,很多项目里除了业主单位的结构很复杂以外,还有一些其他单位也会牵涉进来,如项目监理公司、业主的行业主管机构等。项目经理需要了解每个方面的人对这个项目的看法和期望是什么。事先了解各个方面的看法和期望,可以让你在做项目碰到问题的时候,就每件事情分析哪些人会在什么方面支持你,哪些人会出于什么目的反对你,从而提前准备联合朋友去对抗敌人,让事情向你所希望的方向发展。没有永远的朋友,也没有永远的敌人,只有一致的利益,这句话作为项目经理是一定要记住的;

  3.基本了解了客户的情况后,下面的事情就是了解自己公司各方面对这个项目的看法。首先是高层领导是否重视,这个决定了你在需要资源的时候,公司是否会根据你的要求提供最有力的支持。领导口头肯定是说支持的,你需要做的是了解公司对这个项目的实际期望,是想把项目越做越大还是想赚钱?是想做样板工程还是干脆想敷衍了事,公司领导对项目的态度决定了你做这个项目的战略,而这个战略方针将对你做项目计划产生直接的影响;

      4.在做整体项目计划前,还要大致计算一下你手上的资源。首先是时间,现在市场竞争激烈,往往很多项目要求在几乎不可能的时间范围里完成。对于这一点,你在做项目的风险控制计划的时候要充分考虑。其次是人员,根据项目预算和已往经验,大致计算一下未来的项目小组有多少种角色,每个角色目前公司是否有人,是否能完全归这个项目使用,是否需要另外招聘一些人员,招聘的准备工作要尽早启动。最后就是一些设备的准备,项目所需大件关键设备要尽早预定,以后不管发生设备等人还是人等设备的情况,浪费的都是你的时间;

  5.现在是做项目说明书的时候了。一份好的项目说明书不仅将要做的事情描述得很清楚(主要是讲做什么,而不是说怎么做),而且把如何检查也说明得很透彻。也就是说它不仅说明白了要做哪些事情,也让客户的业务人员(一般不懂技术)知道项目做成什么样就算完成了。简单地说,项目说明书描述项目做哪些事情和每件事情做到什么程度以及如何检查每一个结果。

  6. 是到做总体计划的时间了吗?不,你现在已经知道了客户的目标和你手上的资源,那么做计划以前,你还需要和你的经理和客户充分沟通资源的问题。因为很多资源是还不明确的,你需要写一份报告,详细分析这个项目的风险以及对资源的需求情况。如果一些问题不能得到解决的话,将发生什么样的后果。如果资源不够,就要高层改变策略,增加对这个项目的投入。甚至在条件许可的情况下,有些公司会放弃这个项目。总之,没有人能完成一个不可能完成的任务,如果项目经理不能尽早发现风险,那么就只能去当烈士了。
  
 
  
 7.明白了要做哪些事情和你手上的筹码以及你做这个项目的总体策略,现在是成立项目小组的时候了。很多项目经理都没有自己选择组员的权利,那么,就尽量发挥你的影响力去寻找那些你想要的人吧。成员的组成根据项目不同,相差较大,很难有什么具体要求,但是,一定要有精通客户业务的人,很多小项目里,这个人就是项目经理本人,大项目里会配备行业专家(Industry expert),这样和客户沟通起来才不会鸡同鸭讲,双方才可以相互理解。我经常看到的情况是我们的技术人员和客户交谈时满口的专业术语,结果搞得客户一头雾水,反过来,他还指责客户不懂技术。其实,明白自己想做什么的客户已经是很好的客户了,不知道自己要做什么,更不懂怎么做还要指手画脚的客户到处存在,但是要明白,是客户选择了你,而不是你选择了客户,有了客户你才有工资拿,心平气和一点吧。

8.现在你要面对三群人:你的领导、你的组员和你的客户,和这些人沟通,让他们知道你打算怎么做,什么时候要他们做什么准备这些事情将是你的主要工作。既然沟通这么重要,那些事先定义一下沟通的原则也是一件很要紧的事情。很多沟通原则都是潜规则,如果你在一个部门时间做长了,对这些规则的运用觉得是一件理所应当的事情,但是,你现在面对的是多个部门甚至多个单位,不把沟通规则说清楚,你以后就会吃亏。下面的东西看起来无聊,其实还是很管用的:第一个是规定信息的流动方式和介质,是推还是拉。推的意思就是项目经理将主动发布信息,不管通过电话、邮件还是书面方式,保证将信息传达到每个人。这种情况适合小项目,人少;拉的意思就是项目经理就是一个类似web服务器,你自己需要什么信息就去问他。当然,没有项目经理把自己搞得那么累,他会用发布信息到公共介质的方式公布信息,简单的是白板,复杂一点的是项目的公共信息交互区,潜规则就是我发了你没去看就不要说我没告诉你。说这些看似很无聊,其实里面牵涉信息传达不完全的责任问题。当然,这些都是指一般的方式,而且不要绝对化,一般情况下,主动沟通和被动访问是同时存在的,尤其是对领导,项目经理更加应该主动去和领导沟通。第二个问题就是文档问题,很多人怕写文档,但是项目经理一定要牢记好记性不如烂笔头的道理。有理有时候为什么会说不清呢?就是因为没有证据。所以项目经理开始就要和客户说清楚有些文档是必须签字的,比如项目经理的项目日志,每个星期至少让客户签字,另外所有达成共识的东西,比如会议纪要,甚至领导的讲话记录,都要写成文档,双方签字,这样以后扯皮的时候,就能做到有据可查。记住:说了的就和没说一样,只有写下来大家签字后才算真正发生了的。还有一些问题,比如你提交的报告,给领导(包括本方领导和客户领导)做一个选择题,结果领导压住不批,让你无所适从,结果拖延了进度。这时候,你可以等,但是注意要留记录,标明是谁的责任;另外,如果你在开始阶段就和领导商定:如果批示提交三天后没有得到领导答复就算对方同意,这样你就会主动很多。再比如不同事件的审批流程问题:什么等级的事情记录在项目日志里、什么等级的事情要双方项目经理专门签署备忘录、什么等级的事情要双方领导出面签署合同附件等等。事先想得越周到,以后的工作就越主动。

9. 好了,做了很多前期工作,定义了一些游戏规则,现在是坐下来做计划的时候了。这一节,任意找一本项目管理的书都会说得比我好,所以我就少写一点,说一些自己的体会就是了。首先是找几个关键组员,比如客户业务专家、系统分析员等等,做一下项目模块划分工作。项目分成几块去做,每一块完成什么,模块之间的信息如何交换等等。需求定义的是做什么的问题,而这里说的是怎么做的问题。这里要强调一点:完成一个目标有很多种方式,你要选一种你最熟悉的,而不是看上去最完美的,这个思路会让你的项目减少很多风险。有时候客户会被某种新技术打动,坚持要你采用那种新技术,你就应该告诉他:你选我做这个项目,就应该容许我采用自己最喜欢的方式做事情,新技术之所以有诱惑力,就是因为吃亏的人还不多,我不希望你成为第一批受害者。采用一个计划会让你的工作更加明确,比如用微软的Project软件,你填写完表格以后,就可以知道这个项目有多少件事情要做,每件事情需要什么资源,他们之间的前后关系如何,消耗的时间有多长,完成后有什么标志等。所有的结果最后用一个叫做甘特图的形式表现出来。你做完这个表以后会惊奇地发现,甘特图上项目的结束时间会远远落后于你的计划结束时间(签合同的人永远不会先征求你的意见的)。当然,学过项目管理的人会大谈什么WBS、优化路径之类的东西,但是我的经验是你再优化也不可能把这些东西安排到计划的时间结束。如果你没碰到这个问题,在我恭喜你挑了一个轻松活之前,请你再去确认你是否罗列了所有要做的事情和正确评估了他们所需要的时间。这时候,你就要考虑牺牲一些任务的时间(也意味着质量)了。按照什么标准牺牲?这个项目的战略!我们在第三节提到过的战略。我的经验是如果你什么都赶进度,其结果可能就是十件事情你一件也没做好,想想多么失败啊。所以,把资源投到你熟悉和有把握的事情上,最后的结果是十件事情,你有三件做成了精品,三件完成,还有四件因为某些原因延误,成绩单是否靓丽了很多呢?战略决定优先级,而正确排列事情的优先级是一个项目经理能力的主要体现。

好,现在项目已经完成了前期工作,了解了项目的目标、搞清楚了手上的资源,制定了项目的策略,然后编制了项目的整体计划,项目进入实施阶段。进入这个阶段反而是项目经理比较空闲的时候,不像前期的时候项目经理要象记者一样到处和不同的人接触,搞清楚他们在说什么,努力猜测他们在想什么和他们的真正目的,那才是最累人的事情。当然,小项目的项目经理往往自己也是一个资源,要做很多事情,这时候反而比谁都苦。项目经理这段时间的主要工作是保持和客户领导以及自己领导的沟通。和客户领导沟通时特别要注意,除非你需要对方给你支持,那么你才需要讲得具体一点,否则,告诉他一切正常就可以了,而且态度要积极一些,千万不要说一些领导不懂的细节,比如:王局长,最近项目进度还算正常,就是JVM经常发生一些内存泄漏的情况…”王局长:“…”。和自己的领导汇报也要注意这个问题,除非他是一个技术高手,你需要他的技术经验,否则一般就汇报进度是否正常以及有问题时你的对策和打算就可以了,有些需要他支持的地方,比如资源调用需要说详细一点。

和组员开会,除了一些项目进度跟踪会议以外,还有很多讨论会,需要大家用头脑风暴方法给出解决问题。与会人员很多都是技术人员,他们的特点是注重细节、缺乏大局观、有点消极悲观、自尊心强(如果总结得不对,欢迎大家拍砖),所以,你作为会议的主持人,只要负责提出问题和记录下他们的观点,千万不要做评判者的角色。一个问题,有很多方面,从不同的角度看,现象是完全不同的,想想盲人摸象的故事吧。这些技术人员,他们往往精通一个方面,就自己的角度发表见解,除非一些很特别的情况,你都应该认为,他们提出的方案,从他们的角度来看是最合理的。你的长处是掌握事情的优先级,评估各个方面的轻重缓急,从而根据他们的意见得出一个合适的(而不是正确的)方案。所以,在会议上,你要充分尊重每一个人和他的意见,夸奖那些意见提得比较好的人,千万不要把会议带入无休止的争论(你要让大家知道事情不是非黑即白的,而是多元的,唉,我们的教育惹的祸)。会后,你自己写文档,做决定。会议上大家的面子都被照顾了,自然实施起来的阻力就小,如果还有意见的,你就私下找他聊,如果还不能说服他,你就要让他明白,因为你负责这个项目、你担当风险,所以,这个优先级应该你来判断。组织中的高层,并不见得水平会比一般的成员高,但是,他要承担组织的风险,加之信息的不对称性,所以,对事情的优先级的判断肯定比下属强。

在开发过程中,内部管理还要注意的一点是时刻强调以验收为目的的思想,每个任务的最终可交付成果一定要是可以被检查的,比如,【界面要求:美观大方、简洁明快】,这个要求我就不知道如何检查。所以,给开发小组布置任务的时候就要考虑如何检查结果,比如我见过一个计划,里面有一个任务【开发人员熟悉EJB编程】,这个任务,除了让这些人去参加一些专业认证考试,否则,结果很难被检查。所以,时刻考虑如何检查结果、如何向客户交付是项目经理一直要注意的事情,我听说有些老项目经理拿到项目是倒排计划的,即首先看如何验收和验收标准,然后决定工作计划。很多项目开始了很久,还不知道如何验收,那么这个项目出问题的可能性就很大了。做项目就是为了验收,我们的角色不是研究机构,我们的目的就是在付出那么多劳动后得到结果。另外我插一句:我是极其不主张到客户现场开发的。尤其是一大群技术人员直接和客户交流,很容易引起冲突和矛盾(技术人员的本性决定的)。我的做法是项目经理和项目实施人员到现场,软件开发人员还是在公司做项目。项目实施人员就是初级项目经理,他们了解自己的产品,懂得一些客户的业务,关键是在于他们具有良好的沟通能力,俗称皮厚。他们是客户和研发人员的桥梁,其职业方向也是很机动灵活,以后可以有很多方向可以转,比开发人员的路要宽得多。

接着,我们再谈谈最让人头痛的需求变更问题。变更通常分为两种:一种是部分更改了原先的目标,即需求变更;另一种是没改变目标,但是客户不满意目前的实现方式,大到流程的实现,小到界面的布局,都是属于这类。碰到这种情况是难以避免的,主要是事先沟通的不够充分和客户随着项目的进展,慢慢想清楚了问题,改变了以前的思路。这时候,如果需要改并且你的战略是容许这种情况的,那么注意下面几点:

1.确保以前的文档,就是记载着以前的结论的东西,客户是否签过字,如果没有,赶紧把你的工作停下来,赶快再和客户自己确认一下你的方案,然后让他签字,避免以后说话没有凭据;

2.和客户坐下来,自己探讨他修改的根本目的是什么,是不是有同样能达到相同目的,但是对你来说有代价更小的选择?

3.(项目初期的工作)明确更改流程,一般是客户指定一人签字(否则客户每个领导都有权力来插一杠子,你就废了),以正式项目文件的方式提交给你,然后,你做评估分析,分析对成本、进度的影响,在你的领导同意后,出相应意见书,主要是要说明更改设计的原因和指出由此带来的不确定后果(这个东西先写出来,后面如果真的发生了,至少不是你的错)。然后再让客户在上面签字。见过医院给病人做手术以前让家人签的免责条款吗?对,就学习那个,让大家都意识到任何的更改都有成本和代价。

- 作者: JasonYe 2005年12月18日, 星期日 18:27  回复(2) |  引用(0) 加入博采

Howto: VSS2005 Internet Access

VSTS虽好但对机器的要求太高,VSS2005支持Internet Access足以满足我现阶段的需求,但没想到设置会这么麻烦。

1. 我安装的VSS2005是VSTS for Dev里面的。

2. 配置IIS and 注册ASP.NET V2.0 (aspnet_regiis -i, 64位的机器如何配置请参考MSDN上面那篇文章,链接在文后)

3. 那么在VSS Administrator中建立一个新的VSS DB。然后先用本地方式打开,如"D:\VSS",再在server->configure中勾上“enable sourcesafe internet for this computer"
    此时将在IIS中建立虚拟目录:"SourceSafe";
    在资源管理器中共享 "D:\VSS" 目录,更改权限为Administrator全访问;
    然后在VSS Administrator中重新用"\\computer name\vss"打开,进入server->configure菜单,再勾上"enable sourcesafe internet for this database"
    此时将在虚拟目录sourcesafe目录下再建立两个虚拟目录:vssupload_db1, vssdownload_db1

4. 虽然VSS Administrator自动在IIS里面创建了几个虚拟目录,但还有几点需要检查一下
   SourceSafe的属性里ASP.NET version必须是2.0.xxxxx
   vssupload_db1和vssdownload_db1手动设置目录的访问权限(因为D:\VSS共享目录的权限是Administrator)

   * Allow Read access to vssuploa_db1
   * Allow Write access to vssdownload_db1

5. 如果SourceSafe这个虚拟目录没有设置SSL,那么很重要的一点就需要在VSS Administrator里添加一个User(关于这点很多文章里都没有提到,而设置SSL又挺麻烦的)
   关于这个User的用户名,则应该是登陆客户端那台机器的用户名(一般就是Administrator吧)
   上面这个方法毕竟太灵活,如果想用VSS服务器已经分配好的用户登陆,进一步提高远程访问的安全性,可以参考下面那篇Set Up SSL

5. 如果VSS2005所在的这台服务器只有默认的一个Web Site,这时服务器端就算是配好了。
   但如果像我一样,服务器上本来有好几个Web Site,那就要参考下面那篇Enable Remote Access Manually

6. 下面是客户端即VS2005的设置(当前MS还没有支持Internet Access的VSS Client,只能用VS2005)
   在Tools->Options->Source Control中选择Microsoft Visual SourceSafe (Internet)
   注意:如果服务器端没有配置SSL,需要在Plug-in Settings->Advanced中uncheck "use SSL to connect to the server".

7. 最后一步就是选择一个Solution将其添加到服务器上的VSS2005中,这时会弹出选择SourceSafe Database的对话框。
   第一次需要Add,指定服务器的DNS或者IP,Folder里面输入服务器上共享的那个目录"\\computer name\vss"(这个目录是给VSS2005那个WebService去访问的,并不需要客户端也能访问)
   如果接下来Open能看到VSS Database的内容就一切OK!

下面是一些关于VSS2005相关的链接,我也是碰到问题找到这些地方才得以解决的

How to: Enable Remote Access Manually  
http://msdn2.microsoft.com/en-us/library/ms230398(en-US,VS.80).aspx

How to: Set Up Secure Sockets Layer (SSL)  
http://msdn2.microsoft.com/en-us/library/ms181053.aspx


MSDN Newsgroup & Microsft Forum on VSS:
http://msdn.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.vstudio.sourcesafe

http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=50&SiteID=1

- 作者: JasonYe 2005年12月16日, 星期五 20:54  回复(1) |  引用(0) 加入博采

五五二十五

二十五,仍然对自己熟识无睹

二十五,异地他乡却不解孤独

二十五,探求真理的神工鬼斧

二十五,迷时师渡,悟时自渡

二十五,叶子依然在风中飞舞

二十五,我的人生才刚刚起步

- 作者: JasonYe 2005年12月11日, 星期日 02:28  回复(4) |  引用(0) 加入博采

天冷了...
凛凛岁云暮,
蝼蛄夕鸣悲。
凉风率已厉,
游子寒无衣。
锦衾遗洛浦,
同袍与我违。
独宿累长夜,
梦想见容辉。
良人惟古欢,
枉驾惠前绥。
愿得常巧笑,
携手同车归。
既来不须臾,
又不处重闱。
亮无晨风翼,
焉能凌风飞?
眄睐以适意,
引领遥相睎。
徙倚怀感伤,
垂涕沾双扉。

- 作者: JasonYe 2005年12月3日, 星期六 13:22  回复(0) |  引用(0) 加入博采