忏悔

  我的肠和胃们,你们好。我向你们忏悔。

  前些日子,由于我的胃口好,让你们超负荷工作,什么东西都吃,好吃的东西就暴食暴饮。现在你们终于不堪重负,消极怠工了。弄得我很不舒服,非得去看医生了。我想你们也不舒服吧。

  现在,我向你们保证,一定不让你们接受自己难以承担的工作。一定要让你们有规律的作息。一定要给你们休息和休闲的时间。只求你们让我不要这么难受。也不让你们自己难受。

  俗语说得好:病从口入。我一定要把握好“口”这一关,在进口产品的时候,多多想想你们的感受、你们的难处。

  哎,我忏悔。

(转帖)开发一个dvd play er系统,用例到底应该如何划分呢

转自:umlchina yahoo讨论组

  To: UMLChina@yahoogroups.com

From: "赵鹏" <zhaopeng@webservice.com.cn>  Add to Address Book  Add Mobile Alert 

Date: Fri, 13 Jan 2006 12:49:01 +0800

Subject: 答复: 回复: [UMLChina] 开发一个dvd play er系统,用例到底应该如何划分呢

   

一般而言,一个用例就是参与者的一个目标,它是一个可观察到、可度量的过程。

对于参与者是一个在有限时间内可完成的一个过程。

如“播放碟片”,从不同角度看,就会有不同的解释。

从功能看,就是播放机上的一个按钮,是播放机的一个功能。

从目标看,对参与者是一个完整的过程,它包含一些列的功能(其中包括上面的功能),它是参与者的一个意图。

如果把“播放碟片”写成用例可能像如下的例子

 

播放碟片(仅作示例)

参与者:想看碟子的人

前置条件:播放机已经接通电源。

主要场景:

1、参与者打开播放机电源。

2、播放机点亮电源指示灯。

3、参与者打开碟片舱门。

4、播放机弹出舱门,指示灯闪烁。

5、参与者关闭舱门。

6、播放机确认舱门正确关闭,并确认碟片可以播放,显示碟片时间。

7、参与者播放碟片。

8、播放机按照碟片预设的流程播放。

扩展

3a、如果参与者连续发出关闭和打开舱门命令,播放机近当舱门打开后才接受最后一条指令。

3b、如果参与者发出其它指令,播放机将忽略。

5a、如果参与者连续发出关闭和打开舱门命令,播放机近当舱门关闭后才接受最后一条指令。

5b、如果参与者发出其它指令,播放机将忽略。

6a、碟片不可识别,播放机弹出碟片。

8a、参与者可以随时中止播放。

 

相关的用例可能还会包括:

一、用户从指定时间处开始播放。

二、用户回看播过的内容。

。。。。。。。

 

从上面的用例可以看到“播放碟片”即出现在用例这个层次,也出现在具体功能这个层次(本人觉得应该避免这种名次的混淆,此处仅作为示例)。

从指这样的用例可以分析和提炼出,一个播放机具体需要具有哪些系统特性,即可以得到一个功能列表,如你在问题中所提到的。

系统特性,可以用“系统可以做....”这样的语句来验证。

如,播放机可以播放碟片、播放机可以调到指定时间、播放机可以快进.............

 

 

--------------------------------------------------------------------------------

赵鹏

软件开发部

上海星移软件有限公司

MSN:dearzp@hotmail.com

Email:zhaopeng@webservice.com.cn

Biz Tel:021-54395480

more for www.webservice.com.cn

 

--------------------------------------------------------------------------------

发件人: UMLChina@yahoogroups.com [mailto:UMLChina@yahoogroups.com] 代表 周

发送时间: 2006年1月13日 12:15

收件人: UMLChina@yahoogroups.com

主题: 回复: [UMLChina] 开发一个dvd player系统,用例到底应该如何划分呢

 

如果说快进快退实现了用户定位影片的目的,可以作为单独的用例,那类似于“下一曲”“上一曲”以及搜索查找都可以做为单独的用例吗?

weijie xu <iam_xuwj@yahoo.com.cn> 写道: 用例的粒度大小是否合适,主要还是要看这个用例是否已经实现了对用户有价值的结果,或者实现了用户的某一个有价值的目标。对于"停止播放"来说,用户的真正目的并不是仅仅用DVD播放软件来停止播放DVD,停止播放单独存在对用户而言毫无意义,只能是作为播放DVD过程中的一个步骤。所以“停止播放”不能作为一个单独的用例,只能作为“播放DVD”这个用例中的一个步骤,并且是最后一步。“快进快退”则不同,它的存在对用户而言是有意义的,它实现了用户定位影片的目的,可以作为一个单独的用例存在。而“选时播放”则是一个比较特殊的播放用例,可以将“播放DVD”include进来,以实现重用和简化的目的。

 

一家之言,仅供参考。

iadomcn <iadomcn@yahoo.com.cn> 写道:

对于用例粒度的选择有点疑惑,

用户作为主要的参与者,以"播放DVD"作为用例,

如果仅仅只是这个用例似乎又包含太多的东西,如"停止播放","快进快退""

选时播放"等等,还是这些都可以单独作为用例呢

那样是不是又将用例划分的太小呢,用例之间的 关系将变得复杂起来

请教 到底应该怎样来划分用例呢

基于目标的日记系统是学习日记的核心

  路是一步一步走的,如果这一步都还没有走稳就急急的跨出下一步,容易摔跤是无疑的。

  学习日记目前这个未来框架的一个核心的运作试点都无人参与的话,构建未来的新版本无疑是冒失的。目前的想法还是继续完善功能和改善界面。使有那么一些赞同这种目标导向的朋友能真正参与进来。

  只有这样,才能证明这种运作方式是有朋友认同的,有那么一群适合于这种学习方式的朋友。

  只有这样,未来的基于这种核心运作思想构建的新系统的基础才会证明是可靠的。

  但是,学习日记目前根本就没有什么文档,可能别人几乎没有办法参与进来。如果真有朋友愿意参与进来的话,完善文档的issue可能要提上正式的日程。

  如果,只有我一个人来做的话,文档在我心里,再去完善一套文档可能反而会影响完善学习日记的进度。一个人的精力是有限的,集中一样就会疏于另一样。

  所有的一切都是朝着一个目标奋斗:“我们致力于以JAVA技术构建一个普遍适用的开源网络学习交流平台”。为了更好的实现这一目标,我的前进路线会根据实际情况不断调整的。

应该提倡中国的传统道德观念

  前两天,有一个采访节目:讲的是一个能干的从偏僻地区来的女大学生,由于交友不慎,在一个外国人那里惹上了爱滋病。她勇敢的在网上和周围公布了自己的爱滋病经历,以警示别人。

  这个女大学生是不幸的,同时又是伟大的。

  在这里,我想的是,中国传统文明在西方文化的冲击下被大家忽视。须知,历史的厚重的沉淀是我们中华民族的宝贵财富,一定要继承和发扬。

疑问:不知道在Struts标签中怎么引用jsp片断里的变量

如下面这段代码:

      <td width = "30%" align="center">

        <%/* pseudo code:

           * get the lastUpdated sub-article of anGoal,called sub-article as:subArt;

           * if (subArt is a goal)

           *   display:Goal:subArt.getArticleName();

           * else if (subArt is a diary)

           *   display:Diary:subArt.getArticleName();

           * else {

           *   if (getTypeIDByID(getParentIDByID(subArt.getArticleID()))==1) 

           *     display:advice for goal:subArt.getArticleName();

           *   else

           *     display:advice for diary:subArt.getArticleName();

           * }       

           */  

           int goalID = anGoal.getArticleID();

   TransContext trans = new TransContext();

           ArticleDB myDB = new ArticleDB(trans);

           ArticleInfo lastUpdatedArt=myDB.getLastArtByID(goalID, Consts.HTML_FLAG);

           int lastArtID=lastUpdatedArt.getArticleID();

           String lastArtName=lastUpdatedArt.getArticleName();

           String lastAuthorName=lastUpdatedArt.getUserName();

           int lastArtTypeID=lastUpdatedArt.getTypeID();

           int lastParentID=lastUpdatedArt.getParentID();

           if (lastArtTypeID==1){

         %>目标:

          <html-el:link action="disGoalContentAction.do?goalID=${anGoal.articleID}&naviStr=${requestScope['naviStr']}" target="_blank">

           <%= lastArtName %>

          </html-el:link><br>

          <%= lastAuthorName %><br>

         <%

           }else if(lastArtTypeID==2){

         %>日记:

          <a href="disDiaryContentAction.do?searchDiaryID=<%= lastArtID %>&goalID=<%= lastArtID %>&naviStr=<%= request.getAttribute("naviStr") %>" target="_blank">

           <%= lastArtName %>

          </a><br>

          <%= lastAuthorName %><br>

         <%

           }else {

               if (myDB.getArtTypeByID(myDB.getParentIDByID(lastArtID))==1){

         %>评论目标:

          <html-el:link action="disGoalContentAction.do?goalID=${anGoal.articleID}&naviStr=${requestScope['naviStr']}" target="_blank">

           <%= lastArtName %>

          </html-el:link><br>

          <%= lastAuthorName %><br>

         <%

           }  else {

         %>评论日记:

          <a href="disDiaryContentAction.do?searchDiaryID=<%= lastParentID %>&goalID=<%= lastParentID %>&naviStr=<%= request.getAttribute("naviStr") %>" target="_blank">

           <%= lastArtName %>

          </a><br>

          <%= lastAuthorName %><br>

         <%

             }

           } 

         %>

        <bean:write name="anGoal" property="lastUpdate" scope="page" filter="false"/>

      </td>

  怎样用Struts的标签完成呢?搞不懂,尤其是: <a href="disDiaryContentAction.do?searchDiaryID=<%= lastArtID %>&goalID=<%= lastArtID %>&naviStr=<%= request.getAttribute("naviStr") %>" target="_blank">

           <%= lastArtName %>

          </a><br>

怎么用<html:link/>来完成这个功能呢?

先记在这里,希望知道的朋友提示一下。

莫名其妙的文件删除

  今天晚上,用eclipse2.1更新白天在单位上做的文件时,突然发现少了很有几个文件,一看是分散的几个目录就有文件被自己删除了。时间大概是上午。

  我上午明明只是更新了几个文件没有删除任何文件,这是怎么一回事呢?搞不懂了。还不会用cvs的文件恢复,只得手工在learndiary.tigris.org上把在attic里的文件下载下来,拷入本地目录中。

疑问:不知道中value的用法

结果用了下列方法完成功能,真被动。还是要好好的把书看一遍了。

       <c:if test="${param.typeID == 3}">

         <html-el:text value="re:${requestScope['parentName']}" property="articleName" maxlength="60" size="60"/>

       </c:if>

       <c:if test="${param.typeID == 4}">

         <input type="text" name="articleName" maxlength="60" size="60" value="<bean:message key="learndiary.message.defaultName"/>">

       </c:if>

或:

<%@ page pageEncoding="gb2312" %>

...

       <c:if test="${param.typeID == 3}">

         <html-el:text value="re:${requestScope['parentName']}" property="articleName" maxlength="60" size="60"/>

       </c:if>

       <c:if test="${param.typeID == 4}">

         <html:text value="留言" property="articleName" maxlength="60" size="60"/>

       </c:if>

来代替。如果把上面"html:text"换成"html-el:text"在tomcat5.0下正常,但在虚拟空间的resin下面就会报错,不知为什么。

         <c:if test="${param.typeID == 4}">

         <html-el:text value="留言" property="articleName" maxlength="60" size="60"/>

       </c:if>