Scrum

Scrum is an Agile framework for software project management. Scrum defines a set of roles, artifacts, and practices.

Roles

  • ScrumMaster: Responsible for facilitating the Scrum process. Directs meetings, enforces rules, keeps team focused, manages artifacts.
  • Product Owner: Represents the stakeholders and the business. Articulates their needs.
  • Team: Responsible for delivering the product. A cross-functional group that does the analysis, design, coding, testing, communication and documentation.

Artifacts

  • User Story: A description of a feature to be implemented, and the acceptance testing criteria for that feature. Typically written by the Product Owner.
  • Technical Story: A description of technical work that must to done to support the product. Typically written by the Team.
  • Product Backlog: The collection of all stories that have not been completed.
  • Sprint Backlog: The collection of stories to be completed in the current Sprint.
  • Burndown: A chart that displays remaining work to be done versus time. It is intended to give everyone insight into the progress of the project.

Practices

  • Sprint: The period of development, typically lasting 2 to 4 weeks. Scrum uses the term “Sprint” for the Agile concept of “iteration”.
  • Sprint Planning Meeting: Prior to the start of the Sprint, this meeting is held to determine which stories from the Product Backlog will be entered into the Sprint Backlog. The Product Owner will prioritize the stories, and the Team will plan the Sprint.
  • Daily Scrum: A 15-minute daily meeting for the Team, where each team member describes: what they did yesterday, what they are doing today, and any roadblocks encountered.
  • Scrum of Scrums: Used when teams are not co-located. A representative from each team will attend this meeting that occurs after the Daily Scrum.
  • Sprint Review Meeting: Review the work that was completed and not completed. Present (demo) the completed work to the stakeholders; incomplete work is not presented.
  • Sprint Retrospective: Reflect on the last Sprint, in order to improve the process. Questions to ask: What what well in the last Sprint? What could be done better in the next Sprint?

The Agile Model of Software Development

The Agile Model of Software Development evolved to address the problems that were encountered with teams using the Waterfall Method. The primary problem with Waterfall is that it makes the assumption that every requirement and function can be captured on paper at the beginning of the project. Changes to the software requirements specification after sign-off are costly, especially if the project is well into the development phase. Anyone familiar with the phrase “I’ll Know It When I See It” can understand that a customer is likely to want to change how the software looks or functions after they have had a chance to interact with the software. The Agile solution to this problem is Iterative and Incremental Development (IID).

IID breaks down the development process into short iterations, where each iteration touches all the phases of the software development process: requirements are gathered, architecture and design decisions are made, code and tests are written. At the end of the iteration the customer is able to interact with functional code. By allowing the customer to prioritize the work that is done in each iteration, small increments of functional code are produced according to the customer’s business needs. Iterations are thus able to accelerate the delivery of initial business value; through continuous planning and feedback, that value can be maximized throughout the development process. In a typical Agile project the iterations will last from 2 to 4 weeks, and the number of iterations will be the project length divided by the iteration length.

Although incremental software development methods had been in use for years, Agile became formally described in early 2001 in the Manifesto for Agile Software Development Link. The Manifesto reads:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.


The following Principles Link underlie the Agile Manifesto.

We follow these principles:

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

Welcome changing requirements, even late in
development. Agile processes harness change for
the customer’s competitive advantage.

Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference to the shorter timescale.

Business people and developers must work
together daily throughout the project.

Build projects around motivated individuals.
Give them the environment and support they need,
and trust them to get the job done.

The most efficient and effective method of
conveying information to and within a development
team is face-to-face conversation.

Working software is the primary measure of progress.

Agile processes promote sustainable development.
The sponsors, developers, and users should be able
to maintain a constant pace indefinitely.

Continuous attention to technical excellence
and good design enhances agility.

Simplicity–the art of maximizing the amount
of work not done–is essential.

The best architectures, requirements, and designs
emerge from self-organizing teams.

At regular intervals, the team reflects on how
to become more effective, then tunes and adjusts
its behavior accordingly.


Agile is a conceptual framework for lightweight software development. While there are a number of software development methodologies that use Agile methods, two of the most popular are Scrum and Extreme Programming (XP).

Configuring FTPS For WordPress Updates

WordPress has a convenient feature for updating itself and plugins through the Dashboard. Unfortunately it doesn’t support SFTP (SSH FTP), which would be provided by the excellent OpenSSH package. Instead, you’ll need to set up an FTPS (FTP over SSL) server. This short tutorial will guide you through installing a secure FTPS server on Ubuntu 11.10.

Step 1: Install vsftpd
APT (Advanced Packaging Tool) is the software package manager for Ubuntu.

> sudo apt-get update
> sudo apt-get install vsftpd

Step 2: Shut down vsftpd
The service will be started immediately after installation. For security reasons, we will shut it down until it is properly configured.

> service vsftpd stop

Step 3: Configure vsftpd
Edit /etc/vsftpd.conf and make these suggested changes and additions.

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
connect_from_port_20=NO
listen_port=2112

Step 4: Restart vsftpd
Now that anonymous access has been disabled and SSL has been enabled, the FTPS service can be restarted.

> service vsftpd start

Step 5: Create FTPS user
It’s a good idea to create a separate account for updates through the WordPress dashboard. For simplicity, I created a system account with the same username I use for the WordPress admin account. In this example I’m using “ftps”; use whatever username works best for you. The last argument must be the path to the web server directory; ignore the warning about the home directory not belonging to the user. Be sure to give the account a strong password.

> sudo adduser ftps –home /srv/www

Step 6: Add the FTPS user to the www-data group
The new user will need to belong to the www-data group. Again, I’m using “ftps” as the example username.

> sudo vi /etc/group
www-data:x:32:ftps

Step 7: Give the www-data group read/write access
The www-data group will need read/write access to the web server directory.

> sudo chgrp -R www-data /srv/www
> sudo chmod -R g+w /srv/www

The Waterfall Model of Software Development

The Waterfall Model is the classic Software Development model. The model consists of several distinct phases, which proceed in sequence with little to no overlap. It is so named because work flows from one phase to another in a downward fashion, like a waterfall.

The phases, and activities performed during the phases, typically consist of the following.

Phases and Activities of the Waterfall Model of Software Development

Phase Activites
Requirements Document all business requirements
Design Design the software architecture and user interface
Development Develop the software per the design and business requirements
Testing Verify that the software meets the design and business requirements
Release Release the software into production
Maintenance Fix bugs, add features, improve performance, etc.


This model is similar to what is often used in manufacturing and engineering, and works well when the requirements gathered at the beginning of the project do not change (or change very little). The model became popular for software development for a number of reasons, including its structured approach, clear delineation of roles and responsibilities, and suitability to estimation and scheduling. Perhaps most importantly, it forces the development team and the business team to agree on the details and scope of the project before any code is written. This last feature is especially important for development teams that are working on a fixed budget or schedule; changes to the documented and signed-off business requirements would necessarily add cost, time or both to the project.

In practice, however, it is seldom the case that the business and project requirements can be correctly captured in the early phases. Frequently the business requirements or processes will change during the course of the project. When the customer finally has a chance to see and interact with the software, near the end of the development phase, it is very common to find that a business requirement was not correctly or adequately documented. The customer may also find that once they have had a chance to interact with the software, that they become aware of a multitude of changes for improvement. Changes at this stage of the project are very costly because the change must start in the requirements phase and then trickle down to the current phase. The Agile Model of Software Development, by comparison, maintains a tight feedback loop with the customer through frequent releases of working software.