2006年02月24日

【总的思想】
1、以业务层(领域模型)为核心
2、高内聚、低耦合

【特点】
1、将DAO接口置于业务层;
2、在数据访问层实现DAO接口,PO服务于DAO接口

【分层】
显示层-业务层-数据访问层(下面简称数据层)
业务层:细分为事务层-操作层-实体层-DAO接口,DAO接口进一步分为读接口和写接口
数据层:DAO实现+PO
显示层:这个比较简单,用MVC框架,然后调用业务层即可

【业务层与数据层的关系】
数据层服务于业务层,业务层定义数据访问的接口(DAO接口),数据层来实现,数据层的PO是为了持久化的目的设计的,这也是PO唯一的存在价值,PO不属于业务层范畴,不具备反映业务逻辑的职责,它的活动范围被严格限制在数据层之内,换句话说,无论是业务层还是显示层都不能引用PO。

是否设计PO与所使用的持久化技术有关,如果业务实体能够直接拿来持久化,而且性能没有问题,那么就不需要单独设计PO。总之PO属于数据层的实现细节,业务层的设计可以不考虑PO的任何问题,只管提DAO接口就是了。当然DAO接口只能用业务实体做参数,而不能有PO。

【业务层的设计原则】
事务层:包含事务的业务逻辑。必须定义接口。如果用Spring,则在此层绑定事务
操作层:不包含事务的业务逻辑。必须定义接口
实体层:包含简单的、操作自身和聚合边界内其它实体的业务逻辑。接口定义不是必须的。可变的、不稳定的业务逻辑通过在操作层、事务层应用策略模式等方式解决。
DAO接口:接口的语义仅限于反映实体的持久化操作,比如create、update、delete、findByXXX,DAO接口不能带有业务语义。不遵守这个原则会造成业务逻辑与数据逻辑的混淆,不符合高内聚的最高原则

【依赖关系】
总的依赖方向:显示层->业务层

十步法是结构化项目管理的基石。
1)可视化目标:关注结果。
2)给要做的工作列清单。
3)必须要有一个领导。
4)分工明确,责任到人。
5)管理期望值和风险储备。
6)采用恰当的领导风格。
7)了解正在发生的事情。
8)告诉人们正在发生的事情。
9)重复第1步到第8步,直到第10步。
10)结果。

    这10个步骤的重要性并不相同,每个步骤都有自己相应的权重。将它们的权值相加就得到一个成功概率指数(Probability of Success Indicator,PSI)。
    PSI是一个实时测量项目成功与否和可能性的方法。

项目组中存在的成员,分为以下几类:
1)有能力且希望去做
    最理想的人,作为项目的一部分,如果能得到一个人并且让他估他希望做的事,就能得到这世上最强大的力量。
2)有能力且准备去做
    这种人有做这项工作的能力,也许他们以前做过,或者能确信这些工作在他们的能力范围之内。也许或多或少要劝说他们做这项工作。尽管可以这样,可还是应当注意,劝说人们去做他们不希望做的事情的次数应当受到限制。如果一直要求人们做的事情不符合他们个人的计划,从长远观点来看,你是在逆流而上。
3)有能力但不准备去做
    遇到这种人会有麻烦,他们有能力,却不愿意干。也许他以前做的次数太多,已经厌倦了,也许他觉得没有得到足够的回报。总之原因种种。
4)通过培训或指导后有能力做
    a. 要准备追加培训的时间和费用
    b. 在项目时间进度中考虑到培训时间
    c. 要考虑到额外的管理费用
    d. 要准备承担风险,即这样做可能没有达到预期效果。
5)没有能力
    最大的问题,也许你要花一些时间才能得到这样的结论,即有些人不能胜任他们的工作,但是如果你最终得到这样的结论,你需要给这些人寻找他们能胜任的项目中的工作。如果做不到,他们就不属于这个项目了。