dongyong2063 2016-08-10 19:39
浏览 43

如何规划和构建使用框架的敏捷项目? [关闭]

Assuming you would use an Issue & Project Tracking Software like Jira, for the planning of your next upcoming project.

You decide to use an PHP web framework like Laravel, for the development of web applications following the model–view–controller (MVC) architectural pattern.

You write your issues as user stories, add some details, and so on.

[User specific - Component]

  • As a user, I want to be able to manage users.
    • As a User, I want to be able to register a new user.
    • As a User, I want to be able to delete an existing user.
      ...

[Message specific - Component]

  • As a user, I want to be able to make conversations.
    • As a User, I want to be able to send messages to a user.
    • As a User, I want to be able to receive messages from a user.
    • As a User, I want to be able to use emoticons in a message.
    • As a User, I want to be able to attach files to a message.
      ...

[Task specific - Component]

  • As a user, I want to be able to have a task board.
    • As a User, I want to be able to add a new task.
    • As a User, I want to be able to assign a task to a user.
    • As a User, I want to be able mark a task as completed.
      ...

You get it?! No problem at this point. Some of the stories could even be broken down into smaller stories and later in some tasks, following by some sub-tasks.

Lets go one step further: You use a Source-Code Collaborate Platform like github, combined with Fish-Eye and decided to use smart-commits to transition issues. Your Issues and commits are well-structured and easy to trace. (Beautiful thoughts)

If you follow the guideline in a framework laravel, you would have different tasks to follow up:

  • Database (with relationships)
  • Model (with relationships)
  • Controler
  • Routes (API)
  • Views (UI)
  • Validations
  • Events
  • Validations
  • Errors / Exceptions / Logging
  • ...

This, and even more tasks, have to be completed to confirm a component as done. And by components I mean the defined above, like User, Message, Task. All of them has something in common you would repeat over and over. But still you want the issue to be populated with the source-code that is required to fullfil the issue.

User.php (Model relationships)

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * Get the message record associated with the user.
     */
    public function message()
    {
        return $this->hasOne('App\Message');
    }

    /**
     * Get the task record associated with the user.
     */
    public function task()
    {
        return $this->hasOne('App\Task');
    }
}

Task.php (Model relationships)

use Illuminate\Database\Eloquent\Model;

class Task extends Model
{
    /**
     * Get the user that relies the task.
     */
    public function user()
    {
        return $this->belongsTo('App\Task');
    }
}

Message.php (Model relationships)

use Illuminate\Database\Eloquent\Model;

class Message extends Model
{
    /**
     * Get the user that relies the message.
     */
    public function user()
    {
        return $this->belongsTo('App\Message');
    }
}

The above code is only one part of the required tasks to ensure a component is complete. This would look similar to the other tasks. (db-migration, controller, view, validation, events, ect.)

So how would you take this into account if you planning a project which follows the guideline of a framework?

The goal is to ensure, that a component consists of all the mentioned tasks, before it be can confirmed as complete.

  • 写回答

1条回答 默认 最新

  • duanchu3376 2016-08-11 18:07
    关注

    One of the principles of Agile is:

    Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

    How you do that is up to the development team. If you find that a PHP web framework helps you to achieve early and continuous delivery of valuable software then that is great.

    There is nothing in the Agile approach that dictates the technical methods you should use. The key though, is to focus on delivering value, not building out a lot of technical foundations. It is this that allows you to rapidly adjust to change (be they requirement changes or technical changes).

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?