Applied Agile Software Development
Agile Software Development (ASD) is a set of principles; Applied Agile Software Development (AASD) is one of the choices for making ASD work. AASD is a very tangible set of procedures to develop software in a mature and efficient way, based on the principles of ASD. AASD is strongly based on Scrum. AASD can almost be taken as a method that inherits from Scrum, but there's no formal compromise to use the Scrum procedures the exact way it was registered.
The main principles of Applied Agile Software Development's procedures are
- AASD procedures and methods may copy good practices from wherever it is legally possible. That's why AASD is similar to Scrum.
- AASD procedures should be very applicable, truly "out of the trenches"; there should never exist a procedure that is "good in theory, but can't be used in practice".
- AASD procedures should mention all needed software tools (such as SubVersion, Eclipse, etc.), and its versions.
- AASD emphasizes the use FOSS tools, but that's not an imposition of the method. That is:
COTS tools are not forbidden. The most important goal is to have the method to be really applicable, useful and productive, that is actually used in real firms and produce successful results.
- Since the technology market changes constantly, so is AASD.
The goal is to pursue the excellence in Software Development, proven with practice in real world.
AASD can be applied theoretically to any computer language. Most examples here will be given to Java, and C++.
AASD is mainly conceived as a method for software development. But it should be remarked that it is viable as a method for a non-software project management, specially the tool for "Task Workflow".
This section refers to the actors names very similarly to the Scrum taxonomy.
- Product Owner (also called "client" or "customer")
- Scrum Master (Software Firm Entrepreneur)
- Team (Analyst, Manager, Developer, Tester)
- Other stakeholders (users, investors)
The concept of "task" and "issue" are equivalent. The description of the task workflow is described below.
- An issue is created in state "new".
- The manager makes the issue to go to "queued" state.
- When the developer actually starts to code, he/she should change the state to "doing".
- When the developer finishes the issue, the state should be changed to "done" and assign the issue to the tester; this state has also the meaning of "test queue".
- The tester sees the issues in "done" state as work assigned to them, much like the developers look to states in "queue" assigned to them. The testers do the test and accept or reject. Accepted tests go to "tested" state, while non accepted states go back to "queued".
- The "tested" issues remain in this state until the manager changes them to "closed".
"closed" issues are the ones out of focus, that remain existing for documentation purposes; "closed" issues can be reopened by the manager if some new demand happens related to the issue.
- Source Code Server (repository) SubVersion. Other software of the same category: CVS, Git, Mercurial, Darcs, Bazaar, StarTeam, Perforce, BitKeeper, Visual SourceSafe.
- Software Development State Workflow (also known as bugtrack \ system) Mantis. Other software of the same category: Bugzilla, Redmine, Trac, DotProject.
- IDE (Recommended: Eclipse, other options: NetBeans)
- Coding Standards Auto-Critic
- BuildID Stamper
Implementing Task Workflow with Mantis
You can use Mantis and customize it to easily implement the AASD workflow. Mantis is a bug track software, open source, written for web, using php language. The example below uses Mantis version 1.2.4. Follow the steps below.
- Have some computer configured with Apache web server and php.
- Download Mantis 1.2.4.
- Create file config_inc.php with contents below.
<?php $g_hostname = 'localhost'; $g_db_type = 'mysql'; $g_database_name = '...'; $g_db_username = '...'; $g_db_password = '...'; $g_bug_submit_status = 1; $g_status_colors['new'] = '#ffE0C1'; $g_status_colors['feedback'] = '#ffCC00'; // queued $g_status_colors['acknowledged'] = '#ff6d6d'; // doing $g_status_colors['confirmed'] = '#99ccff'; // done $g_status_colors['assigned'] = '#ccffff'; // testing $g_status_colors['resolved'] = '#00ff00'; // tested $g_status_colors['closed'] = '#d9d9d9'; ?>
- Create file custom_strings_inc.php with contents below.
<?php $s_status_enum_string = '10:new,20:queued,30:doing,40:done,50:testing,80:tested,90:closed'; ?>
- Edit file bug_report.php. Find line below
$t_bug_data->status = config_get( 'bug_submit_status' );
and change to line below.
$t_bug_data->status = NEW_;
If needed, change the default timezone by adding line below to core.php
# added to fix default time zone date_default_timezone_set('America/Noronha');
In the beginning of 2007, a group of developers in UFRJ started to adapt the Scrum practices to fit better the actual software development work. Some people observed this work and since then, effort has been allocated to state clearly what AASD really is.
|This article does not cite any references or sources. (October 2008)|
Real developers, that actually practice software development, tend to be busy people. AASD does exist, but the production of tangible reference (printed books, articles, etc.) is a little late.