我再次踏入求职者队伍。

领域建模顶级高手。目前做过的项目超过6个。参见我的blog<如何设计软件〉.
spring,hibernate,webwork 顶级高手。目前做过的大小项目超过6个。
lucene 顶级高手。做过的项目超过两个。
垂直搜索顶级高手。两个spider 项目,一个价格更新项目。
软件项目管理顶级高手。参见我的blog<图解软件项目管理〉。


posted @ 2007-04-18 09:28 西津渡 阅读(132) | 评论 (0)编辑 收藏
 
留住客户,促使客户产生购买行为。这就是网站要做的。
白给钱,评测报告,网友推荐,商家的商誉。先行赔付。不满意包换。1折。


posted @ 2007-04-04 15:26 西津渡 阅读(185) | 评论 (0)编辑 收藏
 

我的比较购物网站的理想

1.与 b2c 商店合作拿数据,承诺在5年内佣金只很小的比例,如果销售额不能达到某个值,不拿佣金
2.大规模的铺服务器,吸收最大量的b2c 商家,保证性能
3.对通过我们网站购物的消费者,提供无风险保证,先行赔付
4.管理商家的信誉,对不能达到信誉的商家提高佣金比例
5.为今后的b2c 市场扩展留下广阔的收钱空间

这个商业模式的要点在于
a. 承担中国的b2c 商家的信誉管理责任,这是无价之宝


a.数据主要不靠 spider, 与 EShopping 软件提供商合作,直接用webService 方式拿数据
b. 数据由b2c 商家积极提供,保证质量
c. 订单跟踪直接用 webservice 方式拿,保证及时可靠质量。
posted @ 2007-04-03 18:09 西津渡 阅读(217) | 评论 (0)编辑 收藏
 
pair programming

这个小项目只有我们两个人,通过3天的pair programming ,我把自己的编程习惯,风格,设计理念全部共享给同事。
我们一起思考业务,设计,项目进展非常好。进度提高一倍以上。
多年来,我几乎不肯把自己的经验分享给别人,如今念佛悔改,几乎没有一点保留。

pair programming 的好处在交流,在于知识的共享。
今后做项目也多了一个非常得力的帮手。
我自己考虑,今后我带的所有项目成员,都要经常交叉进行pair programming.充分的交流。




posted @ 2007-03-28 10:03 西津渡 阅读(233) | 评论 (0)编辑 收藏
 
总监,在于权利欲,在于毅力强。
系统分析员,在于综合能力,在于灵活,在于平衡。
架构师,在于执着,在于超然物外。

小的项目,就容不了这么多人,项目经理就够了。
posted @ 2007-03-12 11:07 西津渡 阅读(237) | 评论 (0)编辑 收藏
 
     摘要: 读书,编码,架构师之路,每天都在进步。  阅读全文
posted @ 2007-03-07 11:17 西津渡 阅读(2320) | 评论 (0)编辑 收藏
 
     摘要: 垂直搜索。  阅读全文
posted @ 2007-02-14 11:51 西津渡 阅读(216) | 评论 (0)编辑 收藏
 
     摘要: java cache 策略。  阅读全文
posted @ 2007-02-10 16:38 西津渡 阅读(1257) | 评论 (1)编辑 收藏
 
这个肤浅的东西,该有新的东西替代了。
计划 《ddd 》,《设计模式、算法和架构》,《分布式计算和data sharding>.
半年内作完。

附件:
 
请下载。如何设计软件-我的体会.rar
最近把一年多的工作总结了,先有 ‘图解软件项目管理’,又有这一篇。

如何设计软件

-我的体会

李建奇

2007-02-05

 

我信心不足,勉强为之!

几乎没有普遍适用的原则。设计似乎是一种偶然的事情。所以还称为手艺。

我陈述的主要是自己的经验。

 

第一章理想的设计

三个判断准则:

l         维护成本低。

l         可以被重用。

l         易于理解。

第二章代码是最好的设计工具

我的做法是,写可以运行的代码,然后生成可以讲解的图形。

好处当然是明显的,避免出现普遍的错误,看起来不错的设计其实不能用。

 

第三章不管怎样,先让结果出来

Engine can work :  can produce the output

 

我的经验:

   我总是这么做。比如:

抓取数据:Jobo + htmlParser ,只是把别人的软件连接起来,结果就出来了。

 

第四章硬核,总有一些东西是可以稳定的

一、      发现领域的硬核,是关键的设计问题。

Firm core: model is steady

 

我的经验:

Merchandise 的三个要素:name, seller, price. 缺了任何一项就不是一个merchandise 了。

二、      事物之间的关系不外乎111对多,多对一

  为什么不说多对多?

  因为我只见

       Public class A {

B b;

Collection <C> l;

}

 

 为什么说多对一?

 

第五章模块的主要接口(约定)是稳定的

先把主要接口用简单的方式实现出来,然后让整个系统转起来。

我的经验:

解析模块的主要接口:

Public Object parse(String content , String url){ ……}

      

 

第六章功能可扩展

一、      Observer 设计模式:

我的经验:

       有一点类似LogicOrParser ;

我知道的:

       我认为 JMX 是使用 Observer 模式。

二、      Chain of  Responsibility :

我的经验:

n         StringReplacer :  next ().

我知道的:

n         Lucene filterChain

n         Web app ServletFilter.

n         Lucene TokenStream .

三、      Strategy 设计模式

可以增加新的策略。

我的经验。

       失败的经验:

              PricePattern 有一个地方用 InstanceOf

         原因是:我不知道Spring 配置Collection 有无可以使用Interface 的!

              谁知道?

 

       成功的经验:

       UrlPattern一个基于hibernate inheritance 映射的适用经验:

       Public interface UrlPattern {

       Public Boolean isInstance( String url  ) ;

}

 

第七章模块可插拔

一、      Programming to interface :最重要的设计原则

  几乎是所有好的设计的基石!

 

我的经验:

l         Spring 是我必用的工具。

      

l                UrlPattern一个基于hibernate inheritance 映射的适用经验:

       Public interface UrlPattern {

       Public Boolean isInstance( String url  ) ;

}

l                HttpReader

当我发现 JoboHttpReader 不能满足的时候,我用HttpClientHttpReader 替换了。

二、      组合优于继承

继承破坏了可替换性。

我的经验:

        我好几次把 template method 模式转移到Strategy 或者 command模式。

       PriceUpdatorManager 迁移到 command 模式。

 

       我现在基本不使用抽象类。

              不过也有例外: AbstractHibernateDAO 一直在用。

三、           封装 proxy pattern : managing third party APIs

我的经验:

       lucene 的使用封装起来。

有两个好处:

       可替换。

       封装好的东西可以方便地用在别的地方。

 

四、      不要牵涉无关的东西 ISP interface segregation principle ,或者叫 split interface

我的经验:

       我有过几次失败的教训,当时的担心,类太多了,类太小了。

       后来有些改了,有些没有。

抄录一段话:<prefactoring >

       Split a single interface into multiple interfaces if multiple clients use different portions of the interface .

第八章分离关注separation of concerns

  我的经验:

        Spring transaction 机制

        我用SpringAop ehcache 实现  method cache ;

        Acegi 把安全管理分离出来。

第九章性能可扩展

一、      线程池:

基本的提高性能的办法。

我的经验:

       blocked Queue :

       Semaphore:

二、      分布式运算:

我的经验:

       基于RMI 的分布式使用。

 

第十章结构

一、      减少依赖

我的经验:

       似乎没有?!

我知道的:

              ???在哪里?可能大家都是这么干的!

二、           分层layering

我的经验:

   总是使用的、不变的设计: model, dao, service :

   我对Lucene 的封装:一个抽象。

       Public  void addDocument( Document doc );

       Public Document getDocumentById( Long id );

第十一章设计思想的变迁

变迁太快,去年的最好的书,一年以后就过时了。

一、      主要的阶段,以及framework 阶段

Structure , 30

OO  10

Pattern 10

framework …… 这是我自己定义的。

             

       主要的原因是,很多成熟的framework 的出现,使得我们主要是学习好他们,然后把自己的领域吃透,用好这些 framework 就可以生产出较好的软件。

 

二、      Jolt  图书大奖

2003        <agile software development>

2004        <Waltzing with Bears: Managing Risk on Software Projects>

2005        <headfirst design pattern>

2006        <prefactoring >

2007         ????

 

第十二章导师

l         我自己的项目经验

l         Eric Gamma  < design pattern>

l         Rod  Johnson <SpringFramework>

l         Eric freeman   <headfirst design pattern>

l         Gavin King   <hibernate >

l         Pugh <prefactoring>

l         Robert  <agile software development>

 

 


posted @ 2007-02-06 15:39 西津渡 阅读(2213) | 评论 (0)编辑 收藏
 
     摘要: 软件项目管理琢磨了十年,每次总结,总要进步一些,再次总结。2月5日修订了一些内容。
  阅读全文
posted @ 2007-02-03 15:07 西津渡 阅读(1985) | 评论 (3)编辑 收藏
仅列出标题
共11页: First 上一页 3 4 5 6 7 8 9 10 11 下一页