猪窝

2008-01-09

如何更好的建立最外层用例——用例学习

Filed under: 用例 — admin @ 10:56 pm

在上一篇文章,通过用例了解系统设计范围中,我们提到了一个概念:最外层用例,同时也描述了建立最外层用例的好处。

这里给大家提供一个比较权威的最外层用例的建立方法。

声明:此部分内容摘自《编写有效用例》

1)  以一个用户目标最为开始

2)  提问“这个目标对主执行者AA(最好在外部)提供什么服务?”执行者AA是我们想要收集的用例的最终执行者。

3)  找出最外层设计范围S,使得AA仍然在S之外。给S命名。通常,我们能找到三个最外层设计范围

l  公司

l  组合软件系统

l  被设计的具体软件系统

4)  找出最终主执行者AA在设计范围S中的所有用户目标

5)  找出执行者AA对系统S具有的概要目标GG

6)  为执行者AA对系统S的目标GG编写概要用例。

即使在规模最大的系统中,通常也有4~5个这样的最高层用例,他们概括了3~4个最终主执行者AA的利益

l  对公司而言:客户

l  对组合软件系统而言:市场部

l  对软件系统本身而言:安全部

最外层用力对于在总体上将工作联系起来很有帮助,所以极力推荐。当然,最外层用例不能为开发组提供被创建系统的功能需求。

2008-01-07

通过用例来了解系统的设计范围-用例编写学习

Filed under: 用例 — admin @ 10:57 pm

今天的内容还是接着上一篇:了解用例–用例编写的学习,建议不懂的朋友可以先了解一下

范围用来描述项目开发人员负责的设计工作的边界,以便与应由其他人负责的设计工作或已完成的设计工作相区别。

一般可以采用4个工具来确定项目提供服务的范围:

  • 构想陈述:汇集了全部需要讨论的内容,有助于首先决定哪些东西在范围内,哪些东西在范围外。
  • 设计范围图
  • “内/外”列表
  • 执行者-目标列表

这四个工具的形式或者是图,或者是文档,或者是表格。

稍后会提供表格样式给大家参考。

通过以上工具可以完整的了解系统提供功能的范围,从而保证系统或功能所提供的服务是最有效,没有浪费或重叠。

用例的范围

每一个功能及情景的描述都存在一个范围: 比如QQ的QQshow,用户所有的操作只会出现在QQshow这个系统中,不会影响到其他模块,只有当保存形象并关联的时候,才会给其他系统提供数据进行展示。

举例:为一个新的服务/系统开发前所做的准备应该包括哪些流程?

  1. 确定系统提供的功能及用户目标: 首先通过以上工具,对系统的服务及功能进行讨论及描述,最终确立这个系统所要提供的全部功能,保证功能的有效性及高效性,没有“鸡肋”功能!
  2. 编写业务用例及概述级别的系统用例:业务用例是用来描述这个服务在公司(即线下)所需要走的流程,比如业务员与客户的接触,遇到问题客服的应对,需要有财务参与的涉及到费用的流程;系统用例最好的程度是撰写一个最外层用例,用来确保每一个子功能点都被描述进来不被忽视,同时减少花费在细节设计中的时间。
  3. 最外层用例:通常,一个用例总可以找到一个更广的设计范围,而主执行者仍然处于这个范围之外。如果不断扩大该范围,可以找到一个临界点,一旦越过这个临界点,主执行者就会被包含在范围之内,这个临界点就是最外层用例。
  4. 现在我们确定了系统功能的范围,确保了业务流程的合理并顺利,确认了整个系统提供的功能及流程已实现最终的收益或目标,我们开始从系统的最外层用例中细分每一个可扩展的环节,撰写功能点的子用例。
  5. 最终讨论确认每个用例,进入开发过程。

本篇结束

访问更多关于用例的文章

原创: 猪猪

转载请注明链接!谢谢

2008-01-06

随便做了一个“严肃”的页面-DIV+CSS

Filed under: CSS学习 — admin @ 11:04 pm

随便做了个相对严肃点的页面,应一个网友要求做的。页面参考的是xfouce.net。

全页DIV+CSS,DIV的排布用的百分比,适合用作DEDE。

严肃点的页面:http://www.djpig.com/1/xfocus/

这个页面适合用作“安全,标准”等类似的方面。

2008-01-02

了解用例–用例编写的学习——用例学习笔记

Filed under: 用例 — admin @ 9:41 pm

由于工作需要,javascript学习暂时搁置,先进行用例编写的学习。有空会继续学习javascript。

用例这个概念最开始接触是由于了解UML,开始了解和赞叹用例的强大。再加上现在工作的需要,开始集中精力学习用例。

今天第一篇:了解用例

1. 什么是用例?用例是代表系统中各个项目相关人员之间就系统的行为所达成的契约。通俗点讲,用例可以作为系统需求交付给技术,同时可以用用例来衡量及测试最终的产品功能进行验收。

而为了不同水平程度的人交流及理解用例的方便性,首选用例格式应该是文本方式。

2. 用例的作用:

用例可以激发项目组针对系统的讨论;

可以用来记录实际需求;

可以记录一个功能点需求;

可以记录一个组织的业务过程;

3. 用例需要注意的几点:

一个编写良好的用例应该具有良好的可读性,这里可以借用UML里面的一个概念“可驳倒性”;

用例是由多个句子组成,所有句子都采用同一种语法形式——一个简单的执行步骤;

4. 用例编写者必须掌握而且时刻提醒自己的三个概念:

范围: 真正被讨论的系统是什么

主执行者: 谁有要实现的目标?

层次: 目标的层次是高还是低?

用例需要具备的组成部分:

执行者: 任何具有行为的人或物

范围: 界定被讨论的系统行为的契约;

前置条件和保证: 在用例执行之前和之后必须满足的条件;

主成功场景: 一切顺利的情况;

扩展: 场景执行过程中的不同情况;

部分内容参考《编写有效用例

2008-01-01

新年新气象!大家加油

Filed under: 生活经验 — admin @ 9:39 pm

新年新气象,网上祝福的话很多,我就不多说了。

希望大家能够朝着自己的目标和理想逐步前进!

每天进步一点点!

2007-12-20

又有新的读书任务了

Filed under: 生活随笔 — admin @ 10:45 pm

新的读书计划

今天又到手三本书,都是在china-pub买的,第一次在那里买书,除了网站设计上的缺陷,其他还是挺好的。其中《编写有效用例》是只有china-pub才有货的。当时为了买那本书到处找,现在到手了,大致翻了翻感觉还不错。仔细读了之后会再继续分享心得。《情感化设计》是第二版的,所以颜色,大小都不一样,虽然很多人都有,可以直接借来看,但是经典的东西还是需要收藏的,嘿嘿。

另外在卓越买的书在下周应该也能到了,书柜开始丰富了,读书任务加重了!

加油,努力。顺利度过生理低潮期,并且发现一个解决我低潮期的方法:买书。 =。=

2007-12-18

思维汇总

Filed under: 工作经验 — admin @ 11:01 pm

最近实在是没有大块的时间用来总结和写博客,但是又不忍心不更新,所以直接从反否中摘出来平时思维的点滴。

  •  永远不要责备一个人,如果你没有让自己处在他的情境下或者没有仔细思考他的处境。
  • 网站可以参考传统行业的另一个模式:外包
  • 销售,开发,财务,合作伙伴,设计师,管理层,用户,产品经理需要面对的角色实在是不少,追求平衡点
  • 理论知识是用来说服他人的基础
  • 方法论都应该再进行细分:技巧与基本方法
  • 合理的利用挖掘资源,从需求中提炼出重点,在验收中把握住核心,虽然都是很虚的概念,但是需要用这些概念来指导工作中的执行
  • 想过的,说过的,学过的,记过的,不要只是重复在嘴里和心里,养成习惯做到行为里才是有效果的,真正学会的,真正提高了。
  • W3C发布amaya,号称所见即所得还真是所见即所得啊。暂时没找到怎么看源代码。有空研究研究。
  • 人,物,关系,细分每一个主体,考虑再来考虑SNS,六度理论应该不局限人与人之间的问题,人与物? 用豆瓣考虑:豆瓣里的每一本书的信息,你能通过少于通过其他六本书中间的关联来获得? 好像能有点意思
  • 以情节和事件为中心的设计是对用户为中心的设计的一种提升与改进,但是同时又依赖与用户为中心,因为事件的主体是人,是用户,用户又带来各种感觉及思想上的限制。这样理解应该能更正确些。这个是辩证法?
  • 一个好的产品,首先是用户需要(或市场需求)和企业利益的结合,其次是用户需要节约时间和学习成本获得最好的享受,而企业对利益的追求需要降低开发成本,这两者又反过来刺激了技术的发展。 这句话包含了几个点?

2007-12-16

点击链接更换图片及文字内容: JavaScript学习笔记

Filed under: JavaScript — admin @ 12:37 am

终于进入激动人心的第四章了,从本章开始,需要接触大量的实例分析及效果实现。

今天带来的就是如何实现点击页面的文字链接来更换图片的展示及文字的内容。用CSS也可以实现,但是用JavaScript实现可以更简单,更方便。

让我们先来分析一下这个需求:

首先有大量的图片需要展示,而同时希望用户点击图片,即可在页面内显示结果,而不同单独再弹出页面来观看。同时我们对这个功能的函数进行扩展,在点击链接时不只是更换图片,同时也可以实现文字的更换。

在这里只列出JS代码,html代码可以自由变换:

首先我们来编写点击链接实现图片更换的函数,方便后面的调用

function showPic(whichpic) {

var source = whichpic.getAttribute(”href”);

var pic = document.getElementById(”pictureshow”);

pic.setAttribute(”src”, source) ;

}
JS部分很简单吧,我们先来分析一下。

首先获得用户点击文字链接所要展示的图片地址,然后获得页面显示图片位置的<img>标签的对象,最后用前面获得的地址替换<img>标签的src属性,即可实现点击文字链更换图片显示的效果。

函数很简单,我们在页面中调用。

onclick为调用条件,将链接传给函数showPic(which)作为参数值。

同时,传给链接一个flase条件,来避免浏览器点击链接的默认行为发生,html部分为

<a href=”images/1.jpg” title=”pic1″ onclick=”showPic(this); return false;”>图片链接1</a>

如果想实现鼠标划过(经过)图片就更换,则可以将onclick更改为onmouseover,即可实现

具体的实例可以看这里,已经做好的效果:
点击文字链接更换图片显示效果-JavaScript
如果有问题大家可以直接留言

其他JavaScript学习笔记:

了解DOM,学习DOM: JavaScript学习笔记

了解JavaScript中的对象的概念

JavsScript中的循环与函数

什么是JavaScript

原载:猪窝

转载请注明链接,谢谢

2007-12-11

DOM的基础-JavaScript学习笔记

Filed under: JavaScript — admin @ 11:21 pm

第三章: DOM

节点的概念

四个非常适用的DOM方法:getElementById, getElementByTagName, getAttribute和setAttribute

  1. 文档:DOM中的”D”

DOM是”Document Object Model”(文档对象模型)的首字母所写。如果没有document(文档),DOM也无从谈起。

  1. 对象: DOM中的”O”

“对象”是一种独立的数据集合。与某个特定对象相关联的变量被称为这个对象的属性;可以通过某个特定的对象去调用的函数被称为这个对象的方法。

JS里,对象分为三种类型:

  • 用户定义对象: 程序员自己创建的对象。
  • 内建对象: 内建在JS语言里的丢向,如Array,Math
  • 宿主对象:浏览器提供的对象

宿主对象中,最基础的是window对象。

window对象对应着浏览器窗口的本身,这个对象的属性和方法通常被称为BOM(浏览器对象模型)。

  1. 模型: DOM中的”M”

M代表着”Model”,但说它代表着”Map”也可以。含义都是某种事物的表现形式。DOM代表着被加载到浏览器窗口里的当前网页:浏览器向我们提供了当前网页的地图(或者说模型),而我们可以通过JS去读取这张地图。

先了解表述这个地图的记号的意义:

DOM把一份文档表示为一棵树,这是我们理解和运用这一模型的关键。

  1. 节点

节点(note)这个名词来自网络理论,代表着网络中的一个连接点。网络是由节点构成的集合。DOM中的节点类型还包含着其他类型的节点。

  1. 元素节点

DOM的原子是元素节点。

一个页面是由元素来构成的。而各种标签则提供了元素的名字。元素可以包含其他的元素。html元素是节点树的根元素。

  1. 文本节点

文本节点总是被包含在元素节点的内部。但并非所有的元素节点都包含有文本节点。

  1. 属性节点

注释也是一种节点类型。元素都或多或少的有一些属性。我们可以利用这个属性对包含在元素里的东西做出准确的描述。并非所有的元素都包含着属性,但素有的属性都会被包含在元素里。

  1. getElementById()方法

DOM提供了一个名为getElementById()的方法,这个方法将返回一个与那个有着给定id属性值的元素节点相对应的对象。

这个方法是与document对象相关联的函数。在脚本代码里,函数名的后面必须跟有一组圆括号。这组圆括号包含着函数的参数。getElementById()方法只有一个参数:你想获得那个元素的id属性值。而且必须放在单引号或双引号里。

document.getElementById(”purchases”)

这个调用将返回一个对象,这个对象对应着document对象里的一个独一无二的元素。

我们还可以利用DOM提供的另外一种方法来提取对象

  1. getElementsByTagName()方法

getElementByTagName()方法将返回一个对象数组,每个对象分别对应着文档里有着给定标签的一个元素。它的参数是XHTML标签的名字:

element.getElementsByTagName(tag)

这个方法返回的是一个数组。

document.getElementsByTagName(”li”)

这个调用将返回一个对象数组,每个对象分别对应着document对象中一个列表项(li)

我们可以利用length属性查出这个数组的元素个数。

for (var I =0 ; I < document.getElementsByTagName(”li”).length; I++) {

    alert (typeof document.getElementsByTagName(”li”)[i]);

}

将方法名称赋值给变量,可以缩减打字量并提高函数的可读性,如

var items = document.getElementsByTagName(”li”);

for (var I = 0 ; I < itemts.length; i++) {

alert (typeof items[i]);

}

alert(document.getElementsByTagName(”*”).length);

可以让我们方便的获得一个页面总共有多少个元素节点。

如果只想知道其id属性值是purchase的元素包含着多少个列表项(li)的话,需要更具体的对象来调用这个方法:

var shopping = document.getElementById(”purchase”);

var items = shopping.getElementsByTagName(”*”);

在这两条语句执行完毕后,items数组将只包含其id属性值是purchase的无序清单里的元素。

3.4 趁热打铁

简要总结:

  • 一份文档就是一棵节点树
  • 节点分为不同类型:元素节点,属性节点和文本节点等。
  • getElementById()方法将返回一个对象,该对象对应着文档里的一个特定的元素节点
  • getElementByTagName()方法将返回一个对象数组,它们分别对应着文档里的一个特定的元素节点
  • 这些节点中的每个都是对象

3.4.1 getAttribute()方法

我们可以利用getAttribute()方法把获得的元素对象各种属性值查询出来。

var paras = document.getElementsByTagName(”p”);

for (var i = 0; i < paras.length; i++) {

alert (paras[i].getAttribute(”title”));

}

null是JS语句中的空值,若文档中含有多个未定义title属性的p标签,则会显示null。让我们重新修改这段代码,使其只在title属性存在时才弹出消息,同时提高可读性。

var paras = document.getElementsByTagName(”p”);

for (var i = 0; i < paras.length; i++) {

    var title_text = paras[i].getAttribute(”title”);

    if (title_text != null) {

        alert(title_text);

}

}

进一步把代码缩短:当检查某项数组是否是null值时,我们其实是在检查它是否存在。这种检查可以简化为直接把被检查的数据用作if语句的条件。

if(title_text != null)可以替换为 if(title_text)

3.4.2 setAttribute()方法

修改节点属性值的方法。

此方法也是只能通过元素节点对象调用的函数,需要向它传递两个参数:

object.setAttribute(attribute, value);

下面的语句我们首先获得purchase属性的元素,然后修改这个元素的属性值。

var shopping = document.getElementById(”purchase”);

shopping.setAttribute(”title”, “a list of goods”);

若一个元素没有setAttribute()方法中定义的属性值,则会先创建这个属性,然后再赋值。

一个细节: setAttribute()方法对文档的修改,将似的文档在浏览器窗口里的显示效果发生变化,但是源代码中不会有任何修改,也就是说,这个方法的修改不会影响任何原来的文档数据,这个是DOM的工作模式决定的:先加载文档的静态内容,再以动态方式对他们进行刷新,刷新不会影响文档的静态内容。

第三章总结:

  • getElementById()方法
  • getElementsByTagName()方法
  • getAttribute()方法
  • setAttribute()方法

这四个方法将是DOM的基石。

 

 

 

 

 

 

 

2007-12-09

对象:JavaScript学习笔记

Filed under: JavaScript — admin @ 10:38 pm

2.9 对象

对象是一种非常重要的数据类型。对象是自我包含的数据集合,包含在对象里的数据可以通过两种形式:即属性方法访问:

  • 属性是隶属于某个特定对象的变量
  • 方法是只有某个特定对象才能调用的函数

对象就是由一些彼此相关的属性和方法集合在一起构成的一个数据实体。

在JS脚本里,属性和方法都需要使用一下语法来访问:

Object.property

Object.method()

我们可以假设一个对象的名字为person,分别有两个属性: 心情和年龄

Person.mood

Person.age

加入Person对象还关联着一些诸如walk()和sleep()之类的函数,这些函数是这个对象的方法。

Person.walk()

Person.sleep()

把这些属性和方法全部集合在一起,就得到了一个Person对象。换句话说,我们可以把Person看做是所有这些属性和方法的统称。

为了使用Person对象来描述一个特定的人,我们需要创建一个Person对象的实例(instance)。实例是对象的具体表现;对象是统称,实例是个体。

JS语言里,为给定对象创建一个新实例需要使用new关键字

var Jeremy = new Person;

这个语句创建了person对象的一个新实例jeremy,有了新实例,我们可以利用对象的属性检索jeremy信息:

Jeremy.age

Jeremy.mood

用户可以通过JS创建自己的对象: 术语称之为用户定义对象

JS提供了一系列预先定义好的对象,我们可以把这些对象直接用在脚本里,这些对象称为:内建对象。

2.9.1 内建对象

数组就是一个内建对象,当我们新建数组时,其实就是创建一个Array对象的新实例:

var beatles = new Array();

当需要了解数组有多少个元素时,我们利用Array对象的length属性来获得这一信息:

beatles.length;

其他例子包括Math对象,Date对象,例如Math对象的round方法可以把十进制数值舍为一个与之最接近的整数:

var num = 7.561;

var num = Math.round(num);

alert(num);

Date对象可以用来存储和检索一个特定的日期和时间相关的信息。在创建Date对象的新实例时,JS解释器将自动的使用当前日期和时间对它进行初始化:

var current_date = new Date();

Date对象提供了getDay(), getHours(), getMonth()等一系列方法,以供人们来检索与特定日期有关的信息。getDay()可以告诉我们给定日期是星期几;

var today = current_date.getDay();

2.9.2 宿主对象

除了各种JS内建对象,我们还可以在JS脚本里使用其他一些已经预先定义好的对象,后者不是由JS语言本身而是由它的运行环境提供的。具体到web应用,这个环境就是浏览器。由浏览器提供的预定义对象被称为宿主对象。

宿主对象主要包括Form, Image和Element。 我们可以铜鼓哦这些获得关于某给定网页上的表单,图像和各种表单元素的信息。

第三章: DOM

节点的概念

四个非常适用的DOM方法:getElementById, getElementByTagName, getAttribute和setAttribute

  1. 文档:DOM中的”D”

DOM是”Document Object Model”(文档对象模型)的首字母所写。如果没有document(文档),DOM也无从谈起。

  1. 对象: DOM中的”O”

“对象”是一种独立的数据集合。

« Previous PageNext Page »

Powered by WordPress