skyxia's profile走过 路过 写过 思考过 看过 见过 飘过 无...PhotosBlogLists Tools Help

Blog


    February 26

    QCon全球企业开发大会:众星云集

    QCon全球企业开发大会(QCon Enterprise Software Development Conference)是由C4Media媒体集团
    InfoQ网站 <http://mailer.infoq.com/link.php?M=1268973&N=423&L=115&F=H>
    主办的全球顶级技术盛会,每年在伦敦和旧金山召开。自2007年3月份在伦敦召开首次举办以来,已经有包括金融、电信、互联网、航空航天等领域的近万名架构师、­项目经理、团队领导者和高级开发人员参加过QCon大会。

    2009年4月7日~4月9日,QCon全球企业开发大会这一在全球企业开发领域享有盛名的大会将首次来到北京。秉承QCon伦敦、QCon旧金山的高品质特性­,QCon北京大会将不仅是一次顶级技术盛宴,还是一次众星云集的大会!

    *InfoQ中文站诚挚地邀请您出席本届QCon全球企业开发大会(北京站)<http://mailer.infoq.com/link.php?M=1268973&N=423&L=3746&F=H>
    !*

    目前QCon大会通票的优惠折扣是75%,合计2100元/人。如团队购票,可享受以下折扣优惠(3月15日之前):

       - 2人以上:2000元/张
       - 5人以上:1900元/张
       - 10人以上:1800元/张

    *部分演讲嘉宾包括:*

       - Martin Fowler:敏捷宣言缔造者、ThoughtWorks首席科学家
       - Rod Johnson:Spring创始人
       - Randy Shoup:eBay网站高级架构师
       - Jeff Bar:Amazon云计算战略师
       - Dylan Schiemann:Dojo Tookit创始人
       - Henrik Kniberg:《硝烟中的Scrum和XP》的作者
       - Floyd Marinescu:InfoQ和TheServerSide的创始人
       - 高焕堂:台湾软件架构设计大师
       - 周爱民:《大道至简》和JS语言精粹等图书作者,盛大前高级架构师
       - 以及来自IBM、Google、百度、腾讯、西门子、优酷、豆瓣等企业的技术负责人。

    *六大技术主题包括:*

       - Java:企业级Java开发
       - Agile:敏捷——在路上
       - Architecture:设计优良的架构
       - RIA:炫富互联网应用
       - Cloud Computing:云计算——下一代架构
       - Case Studies:网站架构案例分析

    December 28

    天寒落日淡孤村

    高光() 09:08:38
    山近朔风吹积雪,天寒落日淡孤村
    Me() 09:12:13
                                                     楼观
                                                 [宋]  苏 轼

                                  乌噪猿呼昼闭门,      寂寥谁识古皇尊①。
                                  青牛久已辞辕轭②,    白鹤时来访子孙③。
                                  山近朔风吹积雪,      天寒落日淡孤村。
                                  道人应怪游人众④,    汲尽阶前井水浑⑤。 
    09:23:00
    高光 最近有高人逸士之风。



    December 27

    XP梦魇

    SUN's TOP 100 JUG Program

    SUN's TOP 100 JUG Program Last update 12-11-2006 -- more updates coming via Aaron
    For more information, contact Sun JUG Program jug_program @ sun.com

    Count JUG JUG Leader website
    North America
    1 San Diego Java Users Group Paul Webber https://sdjug.dev.java.net/
    2 Philadelphia Area Java Users Group Dave Fecak http://phillyjug.org/
    3 Java Metroplex Java MUG (Dallas TX) Stephanie Smith http://www.javamug.org/
    4 New York JAVASIG Frank Greco http://www.nyjavasig.com
    5 Ann Arbor Java Users Group Dr. Ron Suarez http://www.aajug.org
    6 New England Java Users Group Steve Maienza http://www.nejug.org/
    7 Austin TX Java Users Group Albert Leigh http://www.austinjug.org/index.jsp
    8 Kansas City Java Users Group Troy Landers http://kcjava.org/kcjava.htm
    9 St. Louis Java Users Group Jeff Cunningham http://www.ociweb.com/javasig/
    10 Denver Java Users Group Chris Huston http://www.denverjug.org/index.jsp
    11 Princeton Java Users Group Yakov Fain http://www.weekendwithexperts.com/princetonjug
    12 South Florida Java User's Group Jeannette Lawrence http://www.soflojug.org
    13 Triangle Java User Group Lee Haslups http://trijug.org/
    14 Phoenix AZ JUG Todd Ellermann or Srinivasa K attaluri http://www.phxjug.org
    15 Atlanta JUG Burr Sutter http://www.ajug.org
    16 Connecticut Object-Oriented User Group Java SIG Ryan Cuprak http://www.cooug.org/java/index.html
    17 Silicon Valley Java Users Group * https://svjug.dev.java.net/
    18 Toronto JUG Steve Rosenberg http://www1.sitraka.com/JUG/
    19 Seattle Java Users Group Jayson Raymond http://www.seajug.org/
    20 JUG UP Mexico Jorge Vargas http://www.javaup.org/
    21 Wisconsin Java Users Group Paul Heberer http://www.wjug.org/
    22 Central Ohio Java Users Group (COJUG) Chris Judd http://www.cojug.org
    South America
    23 Sociedade de Usuarios Java - SouJava - São Paulo - Brazil Bruno Souza or Cecillia Martin (Sun-Sao Paulo) http://www.soujava.org.br
    24 Distrito Federal Java Users Group - DFJUG - Brasillia - Brazil Daniel de Oliveira http://www.dfjug.org
    25 JUG Peru Telly Tirado *
    Europe
    26 Associacio d'Usuaris de Java de Catalunya-Spain Jordi Pujol *
    27 JUG Cologne (Germany) Michael Huettermann * http://jugcologne.org/ * http://huettermann.net/
    28 JUG Sardegna Italy Fabrizio Gianneschi http://www.jugsardegna.org
    29 Belgian JUG Stephan Janssen http://www.bejug.org
    30 Switzerland JUG Ursula Burri http://www.jugs.ch/
    31 London JavaSig? Nathan Sowatskey *
    32 NL.JUG – Netherlands Klaasjan Tukker http://www.nljug.org
    33 JUG Torino Italy Bruno Bossola http://www.jugtorino.it
    34 JUG Milano Italy Marcello Teodori and Filippo Diotalevi http://www.jugmilano.it
    35 JUG.RU – St. Petersburg Russia Yakov Sirotkin http://www.jug.ru
    36 Club des Utilisateurs de Java Thibaut Regnier *
    37 JUG Stuttgart Michael Paus *
    38 JUG Padova Dario Santamaria http://www.jugpadova.it
    39 JavaBin? - Norway "Totto" Hetland http://java.no or http://javabin.no
    40 CZ JUG Czech Republic Roman Strobl https://czjug.dev.java.net
    Asia & Pacific Rim
    41 Hong Kong Java Users Group Kehong Wang *
    42 JUG Beijing China Mo Li *
    43 Tsinghua University JUG China TBD *
    44 Calcutta JUG Caljug Angsuman Chakraborty *
    45 Java Geekz – Bangalore India Arun Nachimuthu http://www.javageekz.com/
    46 The Server Side – India Jiger Patel *
    47 JUG Indonesia Frans Thamura http://www.jug.or.id
    48 The Java Community Organization - Korea Mr. Sooyeul Yang http://www.jco.kr
    49 JavaVietnam? Organization - Vietnam Mr. Khanh Le Ngoc Quoc http://www.javavietnam.org
    _ Middle East
    50 JDesk "Javadesk" Israel Evgeny Gesin http://www.gesinsoft.com/gesinsoft/main/jug
    51 The Egypt Java User Group Ahmed Hashim http://www.egjug.org
      Virtual (Online only) JUGs
    52 Game Developers JUG TBA https://gamejug.dev.java.net/
    53 Java-Developpez-com French language JUG Vincent Brabant https://java-developpez-com.dev.java.net
    -- JenniferPalmEnsign - 15 Mar 2006
    -- Main. Aaron Houston Sun Developer Programs - 20 Oct 2006
    -- Main.step2me - 31 Oct 2006

    Topic SunTop50JUGProgram . { Edit | Ref-By | Printable | Diffs | r1.15 | > | r1.14 | > | r1.13 | More }

     

     

    ps: 有一些jug:提供了讲义下载 :,比如:  和 denverjug

     

    November 22

    最近活动比较多

      IBMAMD美国专家前来演讲——IBM Developer Works技术加油站



    AMD-ORACLE-SUN 新兴市场合作伙伴论坛





    总结: AMD+IBM 对Linux 的重视,是要打破UNIX+Windows的统治.
    其实从他们ppt的数据表明: Linux 抢占的不是windows的份额,而是UNIX.

    Oracle 的举动是;重视新兴市场,为了对抗SQLServer,我也可以面对中小企业级应用,我也可以有标准版.

    一句话: 自己能便宜就便宜,不能便宜就组合便宜好使的方案,无论如何要用上自己的产品.
    November 14

    书香 花香 留影[4]



    毕业设计的参考书:做毕业设计,看电影多,刘军成天跟女孩租碟。

    EJB设计模式:谈EJB的年代,必须谈到的红宝书那会:不谈EJB就是老土

    Java方面的:靠这个吃饭,更多的是看电子书

    需求方面的:

    数据库应用类书籍

    管理类

    书香 花香 留影[3]


    几大奇书

    黄大侠:不文集

    : 通过阿里巴巴的淘宝购买的:李克勤讲说:人生必读的教科书

    98年: HTML学习笔记

    书香 花香 留影[2]


    饮食

    王,顾,黄 都是厉害人物

    唐诗与宋词

    史记

    书香 花香 留影

    奉领导之命 整理了若干书籍。
    回顾一下 书的故事。
    《古典版
    司马迁[史记]说岳伯虎全集阅微与儒林 司马迁[史记] 说岳 伯虎全集 阅微与儒林
    《技术版
    最显眼的AOSD:一直还没看

    字画
    November 07

    郭杜公园记

    郭杜公园记
       郭杜,原古杜。今属联合国试点镇。北邻紫薇田园,南望终南秦岭,西达户县,东接韦曲。
    修园以怡情,建林遗后世。逶迤数公里,蜿蜒而盘旋,婀娜而生姿。
       山石涟漪,逸木青翠。见松柏之高洁,现碧草之别调。春则鲜花盛开,蝶舞翩翩;夏则郁郁葱葱,
    林木掩映;秋则云淡风轻,落英缤纷;冬则银妆素裹,分外妖娆。奇石屹立,方圆有致,鬼斧神工;
    天连芳草萋萋,地设周易玄机;东篱采菊,西隅煮酒,南山垂钓,四季各得其乐。 余赞:美矣;
       林晚鸟争树,园春蝶护花。平凹有通幽之辞,启功作春风之章。饮春得佳句,食草著百篇。
    缀高人逸士之句,刻名流书家之书。三生石上,尽是江郎才情;绿杨荫里,无不豆蔻词工。余曰:雅极!
       疏影横斜,烟花摇曳。竹西留佳人之倩影,灵石存情侣之余温。稚童求学必经之路,才子雅集之地,
    佳人流连之所。大隐于市,何必山林。携三五好友游于此,手谈可,纸牌可,麻将亦可;独自坐于斯,
    写生佳,咏句佳,情笺更佳。余曰:乐乎!
        天高桂香飘天外,小子闲写草木情。子潮在世,当在此共赏幽梦之书。                                 
      
    October 18

    javascript tip

    1: from
    • Everything in JavaScript is an Object. Even functions
    • Every object is always mutable
    • The dot operator is equivalent to de-referencing by hash (e.g., foo.bar === foo["bar"])
    • The new keyword creates an object that class constructors run inside of, thereby imprinting them
    • Functions are always closures (combine w/ previous rule to create OOP)
    • The this keyword is relative to the execution context, not the declaration context
    • The prototype property is mutable

    2: compatible JS

     

    The nether explore accord  with  W3C standard:

    Netscape 6.0+Mozilla 0.9+

    IE/Win 5+IE/Mac 5+

    Opera7+

    WEB Programming

     

    Based TEXT

    Based DOM

    compatible

    innerHTML document.write、、outerHTML

    只能用于IE

    Dom 操作:

    通过不断创建节点,附加文本的方式来达到类似效果

    可用于Netscape 6.0+Mozilla 0.9+

    IE/Win 5+IE/Mac 5+

    Opera7+

    Efficiency

    慢一点

    代码量

    举例

     见例子1

    见例子2

     

     

     

     例子1:

    function setMessageUsingInline(message) {
        mdiv = document.getElementById("userIdMessage");
        if (message == "false") {
           mdiv.innerHTML = "<div style=\"color:red\">Invalid User Id</div>";
        } else {
           mdiv.innerHTML = "<div style=\"color:green\">Valid User Id</div>";
        } 
    }

     例子2:

    function setMessageUsingDOM(message) {
         var userMessageElement = document.getElementById("userIdMessage");
         var messageText;
         if (message == "false") {
             userMessageElement.style.color = "red";
             messageText = "Invalid User Id";
         } else {
             userMessageElement.style.color = "green";
             messageText = "Valid User Id";
         }
         var messageBody = document.createTextNode(messageText);
         // if the messageBody element has been created simple replace it otherwise
         // append the new element
         if (userMessageElement.childNodes[0]) {
             userMessageElement.replaceChild(messageBody, userMessageElement.childNodes[0]);
         } else {
             userMessageElement.appendChild(messageBody);
         }
     }

     

     3. div vs span

       在CSS的布局概念中,
    SPAN是一个内联元素(inline),而DIV是一个块级元素(block)。在一个内联元素
    的前后出现的内容,能够和他们显示在同一行里。而每一个块级元素,都是从一
    个新行开始显示,而且其后的元素也必须另起一行进行显示。当你明确自己要描
    述的是一行内容时,就应该使用<span>标签,比如blog的标题,作者,日期等
    待。而对于blog的正文,则肯定是一篇文章,这是你就应该使用<div>标签.

      from zbw:[ajax新手快车道]

        另外div 常用于Layer操作.

    <div style="position:relative; font-size:50px; z-index:2;">LAYER 1</div>

     <div style="position:relative; top:-50; left:5; color:red; font-size:80px; z-index:1">LAYER 2</div>

    4.结构(Structure)、表现(Presentation)和行为(Behavior)应该分离

     网站重构的观念.

    css,js应该是单独的文件,尽量避免自行定义css和在页面中充斥大量的脚本.尽量考虑对代码复用.

     

    October 13

    英语 学习

    Oh yeah! Like when you came to my birthday party last year!
     
     

    gift

    present; offering

    celebrate

    feast; hold celebrations; praise

    Listen Listen
    October 12

    烦[后现代诗一首]

    江湖: 烦
    和尚[13:22:49]
    我穷所以我烦
    造反[13:23:01]
    我烦所以我穷
    和尚]13:23:22]
    我累,所以我觉得生活无味
    造反[13:23:38]
    我生活无味,所以我觉得累
    江湖[13:23:42]
    我严重同意
    September 27

    5年--记录岁月沧桑老男人

         不修边幅生活照三张.
     
          
    September 13

    关联与依赖:讨论在继续[2]

    区分关联、依赖和聚集关系
     
     
    【作者】 孙卫琴 【来源】JavaThinker.org 【阅读数】1488

     
    正文

    摘自《Java面向对象编程》一书,作者:孙卫琴 来源:www.javathinker.org

    在建立对象模型时,很容易把依赖、关联和聚集关系混淆。当对象A和对象B之间存在依赖、关联或聚集关系时,对象A都有可能调用对象B的方法,这是三种关系之间的相同之处,除此之外,它们有着不同的特征。

    1.依赖关系的特征


    对于两个相对独立的系统,当一个系统负责构造另一个系统的实例,或者依赖另一个系统的服务时,这两个系统之间主要体现为依赖关系,例如生产零件的机器和零 件,机器负责构造零件对象。再例如充电电池和充电器,充电电池通过充电器来充电。再例如自行车Bicycle和打气筒Pump,自行车通过打气筒来充气。 图1-39为Bicycle类与Pump类的类框图。



    图1-39 Bicycle类与Pump类的依赖关系

    Bicycle类和Pump类之间是依赖关系,在Bicycle类中无需定义Pump类型的变量。Bicycle类的定义如下:

    public class Bicycle{
    /** 给轮胎充气 */
    public void expand(Pump pump){
    pump.blow();
    }
    }


    在现时生活中,通常不会为某一辆自行车配备专门的打气筒,而是在需要充气的时候,从附近某个修车棚里借个打气筒打气。在程序代码中,表现为Bicycle类的expand()方法有个Pump类型的参数。以下程序代码表示某辆自行车先后到两个修车棚里充气:

    myBicycle.expand(pumpFromRepairShed1); //到第一个修车棚里充气
    myBicycle.expand(pumpFromRepairShed2); //若干天后,到第二个修车棚里充气

    2.关联关系的特征
    对于两个相对独立的系统,当一个系统的实例与另一个系统的一些特定实例存在固定的对应关系时,这两个系统之间为关联关系。例如客户和订单,每个订单对应特 定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司;再例如自行车和主人,每辆自行车属于 特定的主人,每个主人有特定的自行车,图1-40显示了主人和自行车的关联关系。而充电电池和充电器之间就不存在固定的对应关系,同样自行车和打气筒之间 也不存在固定的对应关系。

    图1-40 主人和自行车的关联关系


    Person类与Bicycle类之间存在关联关系,这意味着在Person类中需要定义一个Bicycle类型的成员变量。以下是Person类的定义:

    public class Person{
    private Bicycle bicycle; //主人的自行车

    public Bicycle getBicycle(){
    return bicycle;
    }
    public void setBicycle(Bicycle bicycle){
    this.bicycle=bicycle;
    }
    /** 骑自行车去上班 */
    public void goToWork(){
    bicycle.run();
    }
    }


    在现时生活中,当你骑自行车去上班时,只要从家里推出自己的自行车就 能上路了,不象给自行车打气那样,在需要打气时,还要四处去找修车棚。因此,在Person类的goToWork()方法中,调用自身的bicycle对 象的run()方法。假如goToWork()方法采用以下的定义方式:

    /** 骑自行车去上班 */
    public void goToWork(Bicycle bicycle){
    bicycle.run();
    }

    那就好比去上班前,还要先四处去借一辆自行车,然后才能去上班。


    3.聚集关系的特征


    当系统A被加入到系统B中,成为系统B的组成部分时,系统B和系统A之间为聚集关系。例如自行车和它的响铃、龙头、轮胎、钢圈以及刹车装置就是聚集关系, 因为响铃是自行车的组成部分。而人和自行车不是聚集关系,因为人不是由自行车组成的,如果一定要研究人的组成,那么他应该由头、躯干和四肢等组成。由此可 见,可以根据语义来区分关联关系和聚集关系。

    聚集关系和关联关系的区别还表现在以下方面:

    (1) 对于具有关联关系的两个对象,多数情况下,两者有独立的生命周期。比如自行车和他的主人,当自行车不存在了,它的主人依然存在;反之亦然。但在个别情况下,一方会制约另一方的生命周期。比如客户和订单,当客户不存在,它的订单也就失去存在的意义。

    (2) 对于具有聚集关系(尤其是强聚集关系)的两个对象,整体对象会制约它的组成对象的生命周期。部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的 生命周期,当整体消失,部分也就随之消失。比如小王的自行车被偷了,那么自行车的所有组件也不存在了,除非小王事先碰巧把一些可拆卸的组件(比如车铃和坐 垫)拆了下来。
    不过,在用程序代码来表示关联关系和聚集关系时,两者比较相似。图1-41为自行车Bicycle与响铃Bell的聚集关系。

    图1-41 自行车和响铃的聚集关系

    以下例程1-6是Bicycle类的源程序。

    例程1-6 Bicycle.java

    public class Bicycle{
    private Bell bell;

    public Bell getBell(){
    return bell;
    }

    public void setBell(Bell bell){
    this.bell=bell;
    }

    /** 发出铃声 */
    public void alert(){
    bell.ring();
    }
    }


    在Bicycle类中定义了Bell类型的成员变量,Bicycle类利用自身的bell成员变量来发出铃声,这和在Person类中定义了Bicycle类型的成员变量,Person类利用自身的bicycle成员变量去上班很相似。

    关联与依赖:讨论在继续

    类之间设置成“关联”or“依赖”似乎全在
    个人喜好…
    ooandoo:
    类之间的联系设置成“关联
    (association)”or“依赖(dependency)”似乎全
    在个人喜好,有无一个容易操作的判断标准?
    Jasperyeh:
    一个项目,目的是建立文章库,其中要做的是
    收集各种书籍,文章,期刊,杂志,等等文字类的
    素材。
    于是,基于此,评论文章和书,是关联关系。
    评论文章可以单独被收列在文章库目录列表中。
    如果,第二个项目,我们要建立的是书库,目
    的是收集古今中外的著名书籍,长篇的,短篇的,
    古代的,现代的。
    那么,评论文章和书之间,就存在依赖关系,
    盖因这时候,评论文章不能独立成为一个目标对象
    了。它不能被单独收列在目录列表中。
    唉,这个例子还不太准确,算了,回头有空我
    再举个象话一点的吧,:)
    jasper
    mouri:
    我的直观看法:书本身是客观存在的,有没有
    相应的评论文章,它都是一本书。而评论文章就不
    同了,如果没有了评论对象,它也就没有存在的价
    值了。这决不是个人喜好可以改变的关系。
    Jasperyeh:
    但我要想强调的是区别,而不是reality 中的
    存在关系。
    在具体的项目中,对象已经存在了,这时候如
    何对待对象,取决于我们要干什么,目的不同,可
    能导致对象间的关系不同。即使是同样两个对象,
    因为利用这俩对象完成的目标不同,也导致我们对
    其关系的设定有所不同。
    (应该看到OO 的目标固然是为了准确反应
    real world,但是OO 的更大目标是为了提供一种
    描述方式来描述现实,以便以一种简便直观的方法
    来处理它。)
    所以,我举那样一个例子,尽管不太合适。也
    许,下一次,我还是设法从图形处理上弄个例子来
    吧。
    Zhushuangmin:
    "关联"和"依赖"是最容易区分的.把"关联"和
    "组合","聚合"搞混到是有,但很少有人把"关联"
    和"依赖"搞混的.
    关联是类之间的联系,是客观存在的,是在某活
    动中产生的,例如学生和老师,因为学生要听老师上
    课,所以学生和老师之间就有关联,而依赖是一种引
    用关系, 例如类中的某个方法的参数的类型是某个
    类,或方法种引用了某类的对象等.
    不知这样解释行不?,可以讨论一下
    jackmoongong:
    好象不是这样吧,关联里经常会有引用的。就
    如组合就标记为aggrecation by reference(or
    unspecifed),而聚合就为aggrecattion by
    value。我个人认为组合,聚合是一种强制程度的
    关系。如果你采用聚合,而散失了必要的灵活性,
    就采用组合,采用组合仍然不能解决其它问题就采
    用一般关联。
    Kinsing:
    Some notations of UML is similar with the
    notation of Coad/Yordon , so if you once
    read the books of OOA/OOD written by
    Coad/Youdon , you can grasp the the
    notation of UML through comparing them to
    them of OOA/OOD .
    UML Coad/Youdon
    1 Association(UML) : instance connection
    (Coad/Youdon)+ Message link(Coad/Youdon)
    2 Aggregation(UML) : whole/part structure
    (Coad/Youdon)
    3 dependency(UML) : message link without
    association
    for example :
    A: the type of one parameter of a service
    uses the supplier class
    B: the return value of a service uses the
    supplier class
    Xingzeng:
    区分“关联”or“依赖”必须根据你的
    requirement
    In one situation you may have two classes
    in association, and in other situation you
    may have them in dependency. This purely
    depends on your requirement. Normally you
    can based on the following rule to set the
    relation:
    Assume you have two class A and B, if you
    set A and B in association, you can get A
    instance from B instance or get B instance
    from A instance depending the direction of
    the association; if you only set dependency
    relation, normally you do not have the
    capability to get the one class instance
    from other one.
    Woodysteven:
    让我来把它说得清楚点:
    关联本身即是一种依赖。共同点是:
    1,一个类依赖另一个类,意味着依赖的类在
    源代码级别引用了被依赖的类,你需要
    #include(c++)或import
    2,如果被依赖的类的接口发生了改变,将导
    致依赖它的类重新编译。
    不同点是:关联是一种更特殊的依赖。表现
    为:关联的类“静态”地引用了被关联类的实例变
    量,这种引用通常表现为被关联类以类属性的形式
    出现在关联类的类定义中,也可以表现为关联类引
    用了一个类型为被关联类的全局变量。相反,依赖
    却是比较动态的,通常表现为依赖的类的某个方法
    以被依赖的类作为其参数。依赖还有一种形式是:
    若class A 的某个方法创造了 class B 的实例,
    则class A 依赖于class B。
    若A 既依赖B 又和B 关联,则它们是关联关
    系,由此可见,关联比依赖更强。
    September 11

    The OMG Model Driven Architecture

              来源:MDA_panel_omg.pdf
               作者:
                Jon Siegel, Ph.D.
               [ Director, Technology Transfer
                 Object Management Group]
                  siegel@omg.org
              翻译:lzhuacuo/sunny
             一:什么是MDA?
                    指定/建设系统的新途径:
                   --基于建模和UML
                   -- 支持全生命周期:分析设计,实现,部署,维护和进化[evolution]
                   --加强协作能力,突出便捷性
                   -- 降低成本,使投资回报最大化
                   --直接应用到你要面对的软件/硬件的混合
                       • 编程语言• 网络
                       • 操作系统•中间件
             二:中间件平台
                  • CORBA®: Vendor, OS- 独立中间件
                  但是不是唯一,例如:                 
                  – COM/DCOM/MTS
                  – Java/EJB
                  – XML/SOAP
                  – C#/.Net
                  – 什么是下一代最好的选择?
               三:建造一个MDA™ 应用
                使用 UML,可以定义多个Lever。以平台独立模型[PIM]开始。
             基于 level PIM,只描述业务功能,行为以及平台无关的技术细节。
              四:Platform-Specific Model
              MDA tool applies an    MDA 工具应用一个符合OMG™规范的映射---形式上,一个UML 文件---  来产生PSM。这个模型,和PIM类似,也得非常详尽。这个步骤可能需要依赖于工具和环境的手动编辑。
              五:Multiple Middleware Models
               OMG 讲使过程标准化,MDA工具将实现 mapping到多个中间件平台。每个mapping,形式上仍然是一个XML,定义单个PIM到目标平台的PSM.
              六:Generate Implementation
             一个PSM其实包含一个系统的所有信息,只是PSM是通过UML而不是代码来表达而已。MDA 开发工具可以从PSM生成一个应用的所有或者绝大部分:接口,模板,配置文件以及更多的东西。
             七:MDA Applications Interoperate
               MDA 工具也可以生成跨平台桥接代码来连接一个MDA应用实例或者把一个应用连接到其他应用。
              
              Together软件的MDA工具:见下图

    软件过程及其项目管理的方法与实践

    软件过程及其项目管理的方法与实践

    报告与研讨会

    时间:上周四2006-9-07

    主办:西安软件园

    承办:西安软件园-IBM软件创新中心

    流程:专题报告〉抽奖〉高峰论坛〉再抽奖〉答疑

    感想:

    创新中心的陈博士是娓娓道来,谈及国内软件现状以及软件质量存在的问题,也有振臂一呼的激动和感慨。有几点,颇有感触。针对大学生所信仰的高手[国外叫HeroJ]论,以及不够重视测试和质量管理的情况,博士谈到国外软件从业人员薪酬问题拿钱最多的是BAarchitect 和质量管理人员。并对开发人员,测试人员的制衡关系以及如何建立切实可行的考核制度做了具体的方法建议。[一般的交流会议,都不够Low Lerver,就是没有落地]

           长天的老总发言,在公司战略的高度来定位,选择的问题。赢来掌声阵阵,会后,不少与会人员是激赏万分。我以为,发言掺杂点E文还是很重要的。华海医疗的副总一看就是技术型,谈了项目范围,对于交付物的管理,以及设置产品经理的重要性,获取真实进度的方法等等,我觉得一些做事的方法,确实是可以效仿的。

           Sybase的女士在谈到一些经验时,估计是英文说溜了,中文就XXX。对于团队建设,项目计划等方法可谓蜻蜓点水,风过无痕。就是我还是不知道他们有什么具体的方法和思路,或许是由于保密的关系,该女士才讳言如此。

           互动环节,有2个问题要讲一下。

           对于客户可接受的质量,市场可接受的质量的问题。

    这个名词是会议上陈博士提出的,长天先生呢,阐述颇有特点。什么是用户可接受的质量呢?

           一:首先要可用。[满足表面功能]

           二:要有亮点,在亮点上下功夫。

           我认为和同事黄源提出的卖点工作法是有异曲同工的意思的。具体来讲,就是有亮点以后,即使有瑕疵也会瑕不掩瑜;更具体的,还是掌握客户的真正需求。

           如何获取客户的需求以及选择业务分析师,设计开发人员是否需要真正懂得业务呢?

           华海李总的建议是让具体负责设计/开发的人员去客户工地呆 一段时间,我觉得是不错的Idea,调研基本都是在面谈和参考历史数据,真正的体验很重要。当然,这存在一个老板是否理解,并愿意为这件事情支付成本;客户是否配合的问题。

           闭门造车,以为的亮点绝不是真正的亮点。

           对于需求膨胀的应对,长天先生提出筛选客户,设置黑名单。不爽的客户不做。赫赫,这话听听还行,或者说至少需要经历一定阶段才能够“嚣张”。一个才创业的公司,它可以说不吗?

           请客户吃饭,旅游,再解释理解差异。也是长天先生建议应对难缠客户的方法。我理解其实质是,先稳定,缓和关系,建立基于物资/心理/或者关系的一些信任,然后告诉他,你错了!:}*&

           我听了报告会,是以为记。

        :)

        对了,抽奖这个活动呢,有点小气了,会议主持人呢> 不够洒脱.

          

    September 07

    更好地领导一个项目的诀窍[体会]

    更好地领导一个项目的诀窍

    Warren Keuffel,自:SDMagazine,1999年9月

    Think(think@umlchina.com)译
    lzhuacuo评论
    技术管理就像开车。当你做得正确时,没有人注意,一旦某个环节出错,问题会接踵而来。以下是我11 年来作为Interviewing Manager的Team管理体会,排名不分先后,你必须注意每一点。

    不要重复过去二三十年来别人犯过的错误

    这句话来自Steve Mcconnell,IEEE软件编辑和软件开发畅销书作家。Mcconnell的作品包括经典著作“Code Complete”。Mcconnell认为,“大量阅读”是避免凡重复错误的最好方法。

    80%的管理就是选择正确的人选

    Scott Adams, Dilbert漫画的作者认为一个好的项目经理必须创造一个人尽其用的环境。所有的项目经理都应该读一读Tom Demarco和Tim Lister的新书“Peopleware:Productive Projects and Teams” (2nd Edition, Dorset House, 1999)。
    我认为人尽其用包含2点:根据需要选择合适的人、根据人选择适合他做的事情【扬长避短】。

    总是试图雇用比你强的人

    不要让你的自负成为项目的瓶颈。组织一支聪明的队伍,给他们足够的资源和解决问题的规则,让员工自己解决问题。
     更多的时候,是领导不愿支付高额的成本来组建足够聪明的队伍,组建合理的阶梯型的队伍似乎更符合现实

    不要浪费时间

    Tom Bragg,Intellisys Technology Corp.的首席技术官员,认为太多的项目由于不能如期开始最后陷入麻烦。通常导致延迟的原因包括其它任务的干扰,人事变动,不准时的经理等等。 一般情况下 能做到不浪费

    最优的未必是最大的

    Tom Bragg的另一个建议是:密切注意项目开始后发生的事情。Bragg说:“计划好你的工作然后如期进行,过分紧张的工作强度反而往往导致生产率的降低,可能保持每周50小时以内的工作强度是最佳的。

    真实的,公正的估计

    项目经理应该避免“依照管理者的欲望修改计划”的陷阱。“一个有效的估计的特征是所估计的时间与金钱比实际情况低和高的概率相等”,Bragg说。

    对于功能评估,领导的口头禅:我们能不能改成60个人月

    对于计划,某天领导会说客户要求国庆节提交一个版本

    真实的,公正的估计,每当领导突然一拍脑袋有想法的时候,应该告诉他如果如此如此,我们的计划会XX

    使你的组织结构更有效率

    很多情况下,你可以采用另外一种与现在不同的组织结构。看一看Apache Web server的开发小组,他们的层次组织并不分明,却开发出了成功的产品。
    我理解是保持沟通的直接和畅通

    使用WWW上的免费工具

    >>http://sunnet.usc.edu/winwin/winwin.html,你可以下载由Barry Boehm的学生开发的,能够把W理论(WinWin模型)和螺旋形模型结合起来的工具。在项目管理研究所的网址www.pmi.org,你可以下载它的联机手册。从www.spmn.com你可以看到从CMM模型出发的一些建议以及两套工具:Control Panel和 Risk Radar。Control Panel是Excel表格形式,由于监测生产率和质量;Risk Radar是一个Access数据库,对项目的风险进行量化管理。

    不要小看老程序员

    重新训练现有的程序员比雇用新毕业的大学生要有价值。老的程序员在以往的多个项目上有丰富的经验,通过新技能的训练后,他们的经验和知识会帮助年轻的程序员(包括项目经理)节约时间和金钱。

    为你的项目选择定正确的工作流程

    并不是所有的项目都适用一种开发流程。Intel公司有规律地检查每个开发小组的工作质量,如果出现了延迟交付或质量问题,Intel鼓励该小组改进他们的工作流程。 恩,改进

    做好你的生存计划