`
fly_ever
  • 浏览: 152709 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

当遭遇系统的切面功能时,如何去写user stories呢?

阅读更多
这段时间在看如何实施敏捷开发方法,仔细看了如何写user story ,还有很多疑惑的地方希望得到各位的指导。
当写user stories时,如果一些功能是在用户描述每个功能时都会涉及到的,我暂且称为切面功能吧,
比如一个系统中的用户访问行为记录,权限设置功能等。
此时我们如何处理这些切面功能呢,是按用户的描述,把切面功能分别放入各个user stories中,
还是单独拿出来作为一个user stories来实现呢?
当然如果权限简单的话,可以融合到具体的各个user stories中,
http://www.iteye.com/topic/53246
这里讨论的,角色和权限比较简单,就可以把功能划分,并分别放入相应的user stories即可。
但是一个复杂的权限系统,需要对系统进行整体考虑,然后单独进行设计来实现,
这样的话,把这些切面功能放到各个user stories中显然是不合适的。
例如一个权限的例子:如果用户查看数据时,需要达到这样的控制,用户属于具体的一个省份,因此默认情况下用户只能查看所在省份的数据,但管理员可以看到所有省份的数据,同时管理员可以指定某些用户一些省份列表,使他们能查看多个省份的数据。
这种权限该如何写到user story中去呢?
还希望那些实践过user stories的兄弟们能够指导指导
分享到:
评论
11 楼 抛出异常的爱 2008-09-01  
我正在维护的一个系统
不知道什么意思
里面就是有几个不用实现方法的接口。

在查找时用IDE很快能找到这几个实现类,很是方便。
比在spring里瞪眼找可方便多了。

10 楼 nonocast 2008-09-01  
抛出异常的爱 写道
对于一个接口进行描述。。。。
之后重构时把需要的类加上这个接口。。。
就像写一个普通功能user story一样。


PS:这个接口不需要有必须实现的方法。



这样的话还是需要考虑设计问题,如果都这样考虑的话,上来就会存在本身用不到的接口集,虽然是空的,但依然要花时间去验证,因为很多接口都是在重构中不断调整,放着的意义并不大啊
9 楼 抛出异常的爱 2008-09-01  
对于一个接口进行描述。。。。
之后重构时把需要的类加上这个接口。。。
就像写一个普通功能user story一样。


PS:这个接口不需要有必须实现的方法。

8 楼 fly_ever 2008-09-01  
evanyuan 写道
User Story细节不清楚,Use Case的话,看看以下两方面是否可行

(1)划分业务需求和系统需求,记日值这种可列为系统需求,针对该需求添加单独的UseCase,在需要使用到该系统需求的业务需求中,添加注释,比如“该用例遵守XXX系统需求”

不知道user story是否可以按这样分为描述业务的story和描述系统的story?如果可以这样分的话,那倒是可以把切面功能作为系统story来实现,等系统story实现之后,再按相关的约定来实现业务story。
以前只看到用户故事可以描述非功能需求,如http://www.iteye.com/topic/16904中所写。
7 楼 fly_ever 2008-09-01  

nonocast 写道
在敏捷估计与规划中写到:
12.4 去除横切考虑
....
指导原则:考虑出去横切考虑(例如安全处理,日志记录,错误处理等),为用户故事建立两个版本:一个具备对横切考虑的支持,另一个不具备这种支持。

版本1,不考虑横切功能的user stories:
普通用户,能查看所在省份的数据
管理员,能查看所有省份的数据
版本2,考虑横切功能的user stories:
普通用户,能查看所在省份的数据,以及能查看管理员授权的省份的数据。
管理员,能查看所有省份数据,能为普通用户授权。
这时候,第一次迭代实现版本1的user stories,第二次迭代实现版本2的user stories。
也就是说,在敏捷估计与规划这本书中的观点为,把切面功能分别放入各个涉及到的user stories中,分多次迭代来达到实现切面功能的目的。
可我还是那么觉得
引用
但是一个复杂的权限系统,需要对系统进行整体考虑,然后单独进行设计来实现,
这样的话,把这些切面功能放到各个user stories中显然是不合适的。


6 楼 evanyuan 2008-08-31  
User Story细节不清楚,Use Case的话,看看以下两方面是否可行

(1)划分业务需求和系统需求,记日值这种可列为系统需求,针对该需求添加单独的UseCase,在需要使用到该系统需求的业务需求中,添加注释,比如“该用例遵守XXX系统需求”

(2)象权限这种,在需求文档中,未必非要写到UseCase中,你可以列个单独的章节,对系统进行角色权限及通用规则的描述。如果只是很少的业务需求涉及到权限,或者说差异太大很难总结出通用的规则,那么可以在UseCase里加个Memo项,作为对操作步骤的补充说明。(每个UseCase的Actor本身是否可以说明这个操作的使用者身份?)
5 楼 nonocast 2008-08-29  
在敏捷估计与规划中写到:
12.4 去除横切考虑
....
指导原则:考虑出去横切考虑(例如安全处理,日志记录,错误处理等),为用户故事建立两个版本:一个具备对横切考虑的支持,另一个不具备这种支持。
4 楼 fly_ever 2008-08-25  
我想这个应该是涉及到敏捷开发中的隐喻(metaphor)的问题了。
在从最简单的权限系统做到复杂的权限系统时,把user stories分得更细,在几个迭代的周期中来实现,并不断的进行系统设计和重构。
引用
如果你知道怎么做,你就要考虑现在做和将来做,这两种情形之间不同的成本。反过来说,如果你没有处理过那样的问题,不仅是你无法正确判断需要的成本,你也比较不可能把事情做好,这种情形,你就要选择将来再做。

3 楼 nonocast 2008-08-23  
不知道是否可以这样理解
一个用户层面的功能点或者说是UserStory,都是由横向和纵向构成的。
横向就是你说的切面,用户权限,数据库,网络库或者日志等,纵向就是具体任务,查看省份数据。

相当于这个UserStory由2部分组成,他的进度也由这2部分承担,
你可以先完成切面工作,也可以先完成具体任务而忽略切面,2种都可以,视具体情况(进度)而定。
2 楼 fly_ever 2008-08-22  
tobato 写道
为了保证系统的安全,作为使用系统的的普通用户,默认只能察看所在省份的数据.

为了保证系统的安全,作为使用系统的的管理员,可以察看所有省份的数据.

为了保证系统的安全,作为想要查看其它省份数据的普通用户,必须通过管理员的授权.


如果写user story的话,这样是不是更好点:

普通用户,能查看所在省份的数据,以及查看管理员授权的省份的数据。
管理员,能查看所以省份数据,能为普通用户授权。

我的意思是,如果按这种方法来写的话(不管是你的写法还是我的写法),那权限这些功能就需要分别在各个user stories中去实现了。
而权限这个功能是需要统一考虑的,可能统一在后台实现了权限相关的功能,我们才好去方便的实现上面那些user stories。
那这样是不是说我们就需要根据权限的需求,来写一个user story,也就是把上述的user stories中有关权限的功能单独拿出来,用来描述权限呢?
比如:管理员,能为普通用户授权。

可这样的话,又出现了问题:
敏捷开发中,写完user stories后,确定优先级,然后可以任意选择某些user stories来实现,这样说来,user story的实现是没有严格的顺序的。
可如果我们加入了权限相关的user story之后,则需要先实现这个权限相关的user story,然后才能去实现其他的user stories。

敏捷新手,还希望能够得到各位的指正
1 楼 tobato 2008-08-21  
为了保证系统的安全,作为使用系统的的普通用户,默认只能察看所在省份的数据.

为了保证系统的安全,作为使用系统的的管理员,可以察看所有省份的数据.

为了保证系统的安全,作为想要查看其它省份数据的普通用户,必须通过管理员的授权.

相关推荐

    User Stories Applied: For Agile Software Development

    User Stories Applied: For Agile Software Development <br>by Mike Cohn <br>Publisher: Addison-Wesley Professional (March 11, 2004) <br> Agile requirements: discovering what your users...

    面向切面编程

    面向切面编程的核心思想是在运行时,动态地将代码切入到类的指定方法或位置上,以此来处理那些在多个业务逻辑中重复出现的功能。 #### AOP与OOP的关系 面向对象编程(Object-Oriented Programming,简称OOP)通过...

    User.Stories.Applied

    1. 敏捷软件开发(Agile Software Development):文件中提到的"User.Stories.Applied"是关于如何在敏捷软件开发中应用用户故事的一本书。敏捷开发是一种强调快速迭代、响应变化和用户参与的软件开发方法论。它的...

    User Stories Applied - For Agile Software Development (pdf REPOST)

    - **概念**: 用户故事(User Stories)作为敏捷开发方法中的一个核心组成部分,最初源于极限编程(Extreme Programming, XP)。它是一种轻量级的需求捕获技术,旨在通过简洁的语言来描述用户的期望功能。 - **起源**: ...

    敏捷测试中的User Story 详解

    如果你已经编写完 User Stories 了,Cohn 将会指导你怎样去组织他们,怎样来划分优先级,以及怎样运用他们来进行计划、管理和测试。 用户角色模型是理解用户的共同和不同之处的重要方法,获取 stories 可以通过用户...

    springboot实现消息转换、切面AOP和Redis缓存

    例如,当你需要将JSON数据转换为Java对象或反之亦然时,SpringBoot会自动配置一些默认的转换器,如`Jackson2JsonHttpMessageConverter`。你可以通过扩展`WebMvcConfigurer`接口并覆盖`extendMessageConverters`方法...

    Spring 动态代理和aop切面编程例子

    切面是跨越多个对象的行为或责任的模块化,而通知则是在特定连接点(Join Point)执行的代码,比如方法调用前、后或异常发生时。 在实际应用中,我们可以通过定义切面来组织这些关注点。切面通常包含切入点表达式...

    vanessa-bdd-editor, 具有BDD风格的Epics和 UserStory.zip

    在使用vanessa-bdd-editor时,开发者可以利用Markdown语法来编写Epics和User Stories,这样不仅易于阅读,而且便于团队成员之间的协作。此外,工具可能还提供了诸如实时预览、版本控制、导入导出等功能,以提升用户...

    C# 使用Usercontrol与主窗体进行消息传递

    3. **在UserControl中触发事件**:当UserControl的内部状态(如按钮点击)发生变化时,触发该事件,并传递相关数据。例如,按钮的Click事件处理程序可以是这样的: ```csharp private void button_Click(object ...

    Fifty Quick Ideas to Improve Your User Stories 50个测试创意方案

    书中的“Fifty Quick Ideas to Improve Your User Stories”提供了改进用户故事的方法,旨在帮助团队更好地理解用户需求,提高产品价值。 2. 共享质量视图:建立一个共同的质量愿景可以帮助团队成员理解期望的软件...

    Example User Stories

    The following example user stories were written to describe the functionality in an early version of the Scrum Alliance website. These stories were written in early 2004. Some stories are good, some ...

    用户故事与敏捷方法(User.Stories.Applied:For.Agile.Software.Development)

    诠释了用户故事的重要价值,用户故事的实践过程,良好用户故事编写准则,如何搜集和整理用户故事,如何排列用户故事的优先级,进而澄清真正适合用户需求的、有价值的功能需求。 《用户故事与敏捷方法》对于软件开发...

    VectorCast_(user_code)使用教程

    User Code是指在VectorCast测试框架中添加的用户自定义代码,它能够扩展VectorCast的基本功能,使得测试更加精确地针对特定项目或系统的需求。User Code可以用于创建测试用例、处理参数、模拟环境、甚至与硬件进行...

    Android Superuser源码

    本文将深入探讨Superuser的源码,揭示其在Android系统中的核心功能、工作原理以及如何通过源码学习和理解其内部机制。 一、Superuser的职责 1. 权限管理:Superuser作为Android系统的root权限管理系统,负责监控和...

    sid2user&user2sid

    在IT安全领域,尤其是系统身份验证和权限管理中,了解如何操作和理解安全标识符(Security Identifier,简称SID)是至关重要的。SID是Windows操作系统中唯一标识用户、组和计算机账户的唯一数字序列。在标题提到的...

    Android 系统Superuser 源码

    在Android系统中,Superuser是实现Root权限管理的关键组件,它是对系统权限进行提升的核心工具。Root权限,也称为超级用户权限,允许用户访问和修改系统级别的文件和设置,这对于开发者调试、系统优化或者安装自定义...

    The_programs_use_nltk_to_cluster_user_stories_b

    The_programs_use_nltk_to_cluster_user_stories_base_Clustering-of-user-stories

    系统辨识国外知名大学教材system identification- theory for the user

    根据提供的标题、描述和标签,我们可以确定这是一本关于系统辨识的专业教材——《System Identification: Theory for the User》。由于具体内容部分并没有提供教材的实际内容,我们无法直接从中提取知识点,因此,接...

Global site tag (gtag.js) - Google Analytics