﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-JAVA随笔-随笔分类-others</title><link>http://www.blogjava.net/qujingbo/category/18392.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 26 Jun 2007 19:02:44 GMT</lastBuildDate><pubDate>Tue, 26 Jun 2007 19:02:44 GMT</pubDate><ttl>60</ttl><item><title>闭环跟踪--提高软件开发质量，推动过程改进</title><link>http://www.blogjava.net/qujingbo/archive/2007/05/25/119896.html</link><dc:creator>曲静波</dc:creator><author>曲静波</author><pubDate>Fri, 25 May 2007 01:52:00 GMT</pubDate><guid>http://www.blogjava.net/qujingbo/archive/2007/05/25/119896.html</guid><wfw:comment>http://www.blogjava.net/qujingbo/comments/119896.html</wfw:comment><comments>http://www.blogjava.net/qujingbo/archive/2007/05/25/119896.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qujingbo/comments/commentRss/119896.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qujingbo/services/trackbacks/119896.html</trackback:ping><description><![CDATA[&nbsp;
<p align=center><strong><span>闭环跟踪</span></strong><strong></strong></p>
<p align=right><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>--</span><span>提高软件开发质量，推动过程改进</span></p>
<p align=right>&nbsp;</p>
<p><span>有幸在</span><st1:chsdate w:st="on" Year="2007" Month="5" Day="24" IsLunarDate="False" IsROCDate="False"><span>07</span><span>年</span><span>5</span><span>月</span><span>24</span><span>日</span></st1:chsdate><span>参加</span><span>Telelogic</span><span>组织的&#8220;闭环跟踪&#8221;研讨会。</span><span>John Carrillo</span><span>在会上做了精彩的演讲，会议开始就提出了主题&#8220;如何提高软件开发质量，推动过程改进&#8221;。</span></p>
<p>&nbsp;</p>
<p><span>John</span><span>提出提高软件开发质量，主要以下三点：</span></p>
<p><span><span>(1)<span>&nbsp;&nbsp; </span></span></span><span>业务流程优化</span><span> BPO (Business Process Optimization)</span></p>
<p><span><span>(2)<span>&nbsp;&nbsp; </span></span></span><span>应用生命周期</span><span> ALM (Application Lifecycle Management)</span></p>
<p><span><span>(3)<span>&nbsp;&nbsp; </span></span></span><span>模型驱动开发</span><span> <span>MDD (</span></span><span>Model-Driven Development)</span></p>
<p>&nbsp;</p>
<p><span>创新、简化开发流程及开发业务，遵循规则开发、依据规则管理，可以有效提高生产率。</span></p>
<p>&nbsp;</p>
<p><span>John</span><span>在谈及&#8220;提前管控质量&#8221;时，以例说明，你要去瑞士参加重要会议，刚下飞机，将随身携带的旅行箱丢失，里面有你的正装，而你又要去参加一个重要会议，这时你怎么办？。</span><span>John</span><span>提出的例子很有说明性，其实你可能想再买一套就可以啦，那为什么不去考虑怎么可以在丢失之前去管控呢。项目中也如此，</span><span>John</span><span>提出数据，从项目开始发现问题到最终版本发现问题，这时最终版本发现问题会比开始发现问题的损失增长成百上千倍，那项目中需要管控有哪些呢？</span></p>
<p>&nbsp;</p>
<p><span><span>(1)<span>&nbsp;&nbsp; </span></span></span><span>最终发行版本仅反映最初所分配需求的</span><span>52%</span><span>。</span><span><br></span><span>其导致原因无非两点</span><span>,1)</span><span>需求调研的需求与客户提出需求不符。</span><span>2)</span><span>需求多，膨胀，软件开发商做不到。</span></p>
<p><span><span>(2)<span>&nbsp;&nbsp; </span></span></span><span>需求剧变，</span><span>John</span><span>提出数据，以</span><span>1</span><span>年项目为例，每月</span><span>1%-13%</span><span>的需求变更，最终</span><span>30%</span><span>的需求变更。</span><span><br></span><span>导致原因：</span><span>1)</span><span>引发客户变更。</span><span>2)</span><span>系统需求变更</span></p>
<p><span><span>(3)<span>&nbsp;&nbsp; </span></span></span><span>发布版本。</span><span><br></span><span>导致原因：</span><span>1)</span><span>需求变量对发布有影响</span></p>
<p>&nbsp;</p>
<p><span>最终</span><span>John</span><span>提出结论：</span><span>70%</span><span>功能缺陷，不具备可操作性，无法交付。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>John</span><span>开始进入主题，&#8220;闭环跟踪&#8221;，其实这种研讨会无非就是宣传公司产品，开始宣传他的思想，让你接受他的思想，好，他又用软件产品实现了他的思想，买吧。</span></p>
<p><span>正题，闭环跟踪主要有三种方法：</span></p>
<p><span><span>1)<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>自上而下</span></p>
<p><span><span>a)<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>收集&#8220;客户反馈&#8221;，确保在整个开发生命周期中有效管理、审查并跟踪客户请求。</span></p>
<p><span><span>b)<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>需求工作流程管理，通过灵活和可重复流程来保持对需求变更的跟踪。</span></p>
<p><span><span>c)<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>需求执行，确保需求变更在最终产品中得以执行。</span></p>
<p><span><span>2)<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>自下而上</span></p>
<p><span><span>a)<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>需求执行，任务执行。</span><span> </span></p>
<p><span><span>b)<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>任务追述到需求，再从需求追述到客户反馈。</span></p>
<p><span><span>c)<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>需求验证任务是否满足客户反馈是否相符，确认软件可以满足用户提出的需求。</span></p>
<p><span><span>3)<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>提高跨生命周期的可见性和可预测性</span></p>
<p><span><span>a)<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>通过自上而下和自下而上两种方法，利益相关者无疑可以轻松地在整个产品工作流程中保持对需求变更和变更请求的跟踪。管理需借助自上而下的状态信息来确定开发团队达成其目标的具体方式。警报和考核有助于项目经理及他人开展对期限、需求、项目分配和软件开发其它方面的跟踪。各级经理不但可以清晰把握开发进程的各个阶段，还可以了解不同角色的与组件间的互动方式。定期警报将协助项目经理针对进度或预处中所出现的偏差迅速作出响应，并在事况恶化前及时修改。</span><span><br></span><span>以上是</span><span>Telelogic</span><span>白皮书中介绍的，其实总结出来，无非就是出些报表、驻状图、饼图什么的，再加上可以配置一些预警。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>John</span><span>强调</span><span>CMMI</span><span>只是告诉你&#8220;做什么。&#8221;不会告诉你&#8220;应该怎么去做&#8221;，一般过</span><span>CMMI</span><span>的过程：参考模型</span><span>-&gt;</span><span>培训课程</span><span>-&gt;</span><span>评估方法（打&#8220;对号&#8221;，就是哪项满足规范就打个对号）。</span><span>CMMI</span><span>需要三个主要组成元素：人，规则，工具。而</span><span>CMMI</span><span>不会告诉你做什么，这时就有我们的工具规范你怎么去做，唉，终于提正题，介绍</span><span>Telelogic</span><span>公司的产品了。</span></p>
<p>&nbsp;</p>
<p><span>茶歇</span></p>
<p>&nbsp;</p>
<p><span>该演示产品了，首先是需求管理工具</span><span>Doors</span><span>，说白了其实就是一个流程，首先用户提出需求</span><span>-&gt;</span><span>审核（是否同意）系统需求</span><span>-&gt;</span><span>用例</span><span>-&gt;</span><span>提出实施请求（使用状态跟踪）。</span><span>Doors</span><span>可以按项目及需求说明书、概要设计、详设逐一关联，举个例子，提出功能</span><span>A</span><span>需求，可关联功能</span><span>A</span><span>概要设计，功能</span><span>A</span><span>的详细设计。不就是我们一个工单吗？拿这种产品来唬人，不过人家的思想是先进的，我们取其精华。其实人家也是有特点的。</span></p>
<p><span>下面就说说配置管理工具</span><span>Synergy CM</span><span>，其实我看</span><span>CM</span><span>代码管理部分就像</span><span>Source safe</span><span>，只是人家将</span><span>Doors</span><span>与</span><span>CM</span><span>有机的集成在一起，其实感觉就数据源一样就解决集成了。一样</span><span>Doors</span><span>提出的请求实施与</span><span>CM</span><span>的任务联系在一起，例：我在</span><span>Doors</span><span>提出</span><span>A</span><span>功能的请求实施并派给实施人，然后实施人登入</span><span>CM</span><span>将看到派来的任务，之后实施人分析派来的任务，这时就要</span><span>source safe</span><span>了，实施人员</span><span>check out</span><span>要完成任务所涉及的代码，完成后</span><span>commit</span><span>。在</span><span>CM</span><span>中可以追述</span><span>Doors</span><span>的数据，也就是说有提出提出实施请求，用例，审核，需求人是谁（这就是自下而上了）</span><span>CM</span><span>提供类似</span><span>Source safe,svn ,cvs</span><span>的功能，代码比较，目录比较，形成基线。基线比较，任务比较。提供任务，代码，基线告等的报告，统计、总体实施进度等。典型的自下而上，代码</span><span>-&gt;</span><span>任务</span><span>-&gt;</span><span>实施请求</span><span>-&gt;</span><span>需求。</span><span>CM</span><span>提供</span><span>eclipse plugin</span></p>
<p>&nbsp;</p>
<p><span>ＯＫ，总算说完了，我总结下吧。其实</span><span>John</span><span>的思想是好的，需求不断的变更导致项目的成本增加，管理难度增大。</span><span>John</span><span>提出了使用</span><span>Doors</span><span>工具来管理需求，来规范化，梳理你的开发流程，而又用</span><span>CM</span><span>来管理开发人员的开发任务管理。而</span><span>Doors</span><span>与</span><span>CM</span><span>集成更是一把利器，梳理你的开发流程。其实</span><span>Doors</span><span>及</span><span>CM</span><span>根本没有什么技术难度，但它可以解决像</span><span>CMMI</span><span>无法帮你解决的，如</span><span>Jhon</span><span>所说，</span><span>CMMI</span><span>只是告诉你做什么，而</span><span>Telelogic</span><span>会告诉你怎么做。</span></p>
<p>&nbsp;</p>
<p align=right><st1:chsdate w:st="on" Year="2007" Month="5" Day="25" IsLunarDate="False" IsROCDate="False"><span>2007-5-25</span></st1:chsdate></p>
<img src ="http://www.blogjava.net/qujingbo/aggbug/119896.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qujingbo/" target="_blank">曲静波</a> 2007-05-25 09:52 <a href="http://www.blogjava.net/qujingbo/archive/2007/05/25/119896.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>规则容器的实现</title><link>http://www.blogjava.net/qujingbo/archive/2007/04/28/114253.html</link><dc:creator>曲静波</dc:creator><author>曲静波</author><pubDate>Sat, 28 Apr 2007 01:49:00 GMT</pubDate><guid>http://www.blogjava.net/qujingbo/archive/2007/04/28/114253.html</guid><wfw:comment>http://www.blogjava.net/qujingbo/comments/114253.html</wfw:comment><comments>http://www.blogjava.net/qujingbo/archive/2007/04/28/114253.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qujingbo/comments/commentRss/114253.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qujingbo/services/trackbacks/114253.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1、规则规范业务流程，且现有规则已经实现不仅使用在流程平台上且可以其他模块，如：作业计划。仅需配置。<br>2、支持xml中配置表达式，工程人员将输入/输出参数使用表达式配置进行赋值（不需书写任何代码），故而影响流程的流向。<br>3、支持xml中配置规则分组，并将规则赋予优先级，规则会按照规则分组优先级执行规则，直到满足规则条件退出。<br>4、支持除表达式复杂的业务逻辑，工程人员可以开发java代码实现业务方法，在xml中简单配置即可以实现复杂业务逻辑。<br>5、支持listener，在调用规则之前、之后都会触发before(),after()方法。工程人员可按业务编写多个lisener，使lisener有效只需要简单xml配置。<br>6、支持输入输出参数的验证，根据二次开发人员的xml配置，按输入输出参数配置类型进行验证，若输入/输出参数不符合业务要求则抛出异常。&nbsp;&nbsp;<a href='http://www.blogjava.net/qujingbo/archive/2007/04/28/114253.html'>阅读全文</a><img src ="http://www.blogjava.net/qujingbo/aggbug/114253.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qujingbo/" target="_blank">曲静波</a> 2007-04-28 09:49 <a href="http://www.blogjava.net/qujingbo/archive/2007/04/28/114253.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebSphere Integration Developer 初步认识</title><link>http://www.blogjava.net/qujingbo/archive/2007/02/02/97574.html</link><dc:creator>曲静波</dc:creator><author>曲静波</author><pubDate>Fri, 02 Feb 2007 07:39:00 GMT</pubDate><guid>http://www.blogjava.net/qujingbo/archive/2007/02/02/97574.html</guid><wfw:comment>http://www.blogjava.net/qujingbo/comments/97574.html</wfw:comment><comments>http://www.blogjava.net/qujingbo/archive/2007/02/02/97574.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/qujingbo/comments/commentRss/97574.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qujingbo/services/trackbacks/97574.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 通过 29-31 为期 3 天的 IBM WPS 培训。使我对 IBM WID 有了感观上的认识，并对炒的火热的一些概念（ SOA 、 SCA 、 SDO ）更进一步的认识。现就我理解对 WID 的培训进行总结，若哪里有问题，请各位指正。 &nbsp; SCA &nbsp; 刚上课， IBM 讲师就开始大谈 SCA ，现在就我理解谈下对 SCA 的认识。 Service Compo...&nbsp;&nbsp;<a href='http://www.blogjava.net/qujingbo/archive/2007/02/02/97574.html'>阅读全文</a><img src ="http://www.blogjava.net/qujingbo/aggbug/97574.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qujingbo/" target="_blank">曲静波</a> 2007-02-02 15:39 <a href="http://www.blogjava.net/qujingbo/archive/2007/02/02/97574.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面向组件的一些想法</title><link>http://www.blogjava.net/qujingbo/archive/2006/12/15/87863.html</link><dc:creator>曲静波</dc:creator><author>曲静波</author><pubDate>Fri, 15 Dec 2006 01:45:00 GMT</pubDate><guid>http://www.blogjava.net/qujingbo/archive/2006/12/15/87863.html</guid><wfw:comment>http://www.blogjava.net/qujingbo/comments/87863.html</wfw:comment><comments>http://www.blogjava.net/qujingbo/archive/2006/12/15/87863.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/qujingbo/comments/commentRss/87863.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qujingbo/services/trackbacks/87863.html</trackback:ping><description><![CDATA[
		<div>
				<font face="Verdana">     这几天一直在思考几个问题，现在提出了SCA（面向构件）的思想。而现在提出的SCA是在SOA的基础上建立的。而我就我们目前产品的状况，谈一谈我使用古老的技术实现SCA的思想，当然不是建立在SOA上的。因为我们每个模块和每个模块的联系甚小（不好抽出共享service)。还考虑到SOA一些成本的问题。还是用比较本，但应该行之有效的方法解决，以下为解决方案。<br /><br /></font>
		</div>
		<div>
				<font face="Verdana">     产品背景：研发人员频繁的出差，主要是因为产品在各地市（移动，联通，网通，电信）的业务需求不同导致，需要在主版本上修改功能以满足各地市的需求。这样我们的产品无疑是湖北移动，湖北电信，福建电信，福建移动等等，各出一个版本。其实我们做了很大一部分重复的工作。我们的产品也就不能称为产品，而我们一直在做项目。<br /><br />     现在就可定制、可复用以节省开发成本提出一些我的想法。</font>
		</div>
		<div>
				<font face="Verdana">    </font>
		</div>
		<div>
				<font face="Verdana">     我想我们的产品应该面向组件，也就是说要松偶合，可复用，可定制。我们的平台（基础模块）只包括系统管理(用户、权限及公用工具、也可以用portal）一部分。而其他模块，像作业计划，值班管理，信息发布等等。每个都是一个单独可以部署在主版本（系统管理）的应用。而平台向外发布web servie接口以及也可以传统java方式调用，这些是可配的。这样可以做到每个模块各布署到单独的应用。如果这样我们可能还需要一个单点登陆（除portal）。这些工作是由研发人员进行控制。研发人员提供实施人员页面操作，实施人员通过配置可以将模块（组件也就是作业计划，值班管理）配到平台（基础模块）上。这样我们来维护一个组件库，组件库中包括各模块的应用。组件库的丰富是一个漫长的过程，也就是说，假如我们现在有一个福建移动的作业计划，而不满足福建电信的要求的，若需要新增功能，我想应该在原来版本上进行新增（由研发人员控制），若要修改功能，如果功能修改量比较小，而又对业务要求不是很合适。我们可以试着让项目经量说服客户。如果二义性比较大，这样我们可以在原来版本上新建一个版本，形成一个新版本。OK，现在我们有两个版本的作业计划了，随着时间的增加。我们的组件库越来越丰富。如果某个地市说要上产品一期，我们会拿出需求去比对，按照每个相应的组件去配置形成一个满足某地市的需要。而这些工作完全可以不用研发人员做。而这样，我们就实现了一个可定制的版本。如果这个地市要上二期，我们保持主版本的向后兼容，可以直接将新要上的模块挂上去。<br /><br />   目前面临的问题：<br />      1.平台（基础模块）要修改，会改动很多模块。而我的想法是，基础模块的修改应该保持向下兼容。若修改应明确记录，其我们的多个组件也应修改。这样才能使已经上线的产品可以很容易的升级或新增组件。<br />      2.需要有一个组件管理库，它用来管理组件，组件的版本，主要实现内容啦。修改组件的log，发布的组件啦。这是一个非常重要的事情。应该由研发人员撑控。<br /></font>
		</div>
		<div>
				<font face="Verdana">      总之主要面临的问题就是版本的管理。<br /><br />   我目前也只是构思。也希望听听各位的意见。希望能给出意见。可能我的思想很老套了，但确实可以解决我们现在的问题。</font>
		</div>
		<div>
				<font face="Verdana">
				</font> </div>
<img src ="http://www.blogjava.net/qujingbo/aggbug/87863.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qujingbo/" target="_blank">曲静波</a> 2006-12-15 09:45 <a href="http://www.blogjava.net/qujingbo/archive/2006/12/15/87863.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>