CMSI 543 / SYEG 557: Welcome to Week 02

This Week's Class Agenda

OK — Let's start at the beginning!…

Back in the good ol' days

In the early days of software, it used to be written by hand, and without much of an idea to issues of maintenance, deployment, bug fixes, organization, or anything else, really, except getting the software to work. If you read through the 1968 work by Don Knuth, in a series of books called The Art of Computer Programming, people started applying the idea of discipline to the whole software development process.

Later, Fred Brooks' book The Mythical Man Month [Amazon link] gave us a documented experience of one of the first major, large-scale software engineering projects. It rapidly became apparent that just applying discipline was not enough; that process needed to include concepts of engineering like system architecture, formalized design processes, testing before release, and building for maintenance.

Velociraptor mongoliensis

Just what IS Agile, anywho!?

All this engineering was modeled on the traditional approach of building hardware, which is done in an exceedingly linear fashion. By linear, I mean that there were distinct sets of steps that were followed from conception to delivery and beyond. The following diagram gives you an idea of what I mean by linear:

Traditional V-diagram of software development

What this ended up causing is some provably difficult problems with the entire engineering process, particularly for large-scale development projects:

Another way to look at this process [straightening out the Vee] is as a waterfall, in which the flow of the activities moves consistently downward from the inception to the conclusion, like this:

Waterfall Model


Reasons why the waterfall model may fail:

So…… to help resolve some of these issues

With the arrival of rapidly changing software for things like the Internet and the World Wide Web, the tradional Waterfall Model didn't really work so well. Businesses needed more fleixibility to be able to respond to markets, and they needed the agility to be able to adapt and be flexible in the face of changes that might occur during product development. They also found that the heavyweight documentation required by Waterfall meant that teams of people had to spend lots of time and energy [and money of course] keeping all that documentation up to date so that it accurately reflected the actual product.

AGILE TO THE RESCUE!

Agile is an overarching term that include iterative approaches to software development the 'Manifesto for Agile Software Development'[Ashmore p.2]. Agile is designed to focus more on customer needs and providing business value than on documentation. It uses the concept of short iteration and producing working software with each pass through the process, as well as constant customer feedback and involvement. Thus, Agile helps organizations to focus on efficiency, collaboration, quality, and the creation of customer value. [Ashmore, p. 3]

What is the basic theory that it started with?

The basic idea is to take the best parts of the Waterfall process, namely the parts that EVERY software development project MUST perform, and shorten them up, performing the resulting cycle over and over again. With each iteration [sometimes called a sprint] the team adds more functionality to the product, and maintains a working software application through the entire development effort.

Spiral Model

Notice that in this spiral model there are five main activities that happen again and again, within each iteration. That means with every pass through the process the team will be planning, designing, building, testing, and deploying a working software application. Notice also that these five activities are the CORE of the software development process, regardless of what methodology [or life cycle model, in the parlance of our times] is being used. These actions can be formally described as follows:

Some interesting things to be aware of:

To help you keep it straight……

Here is a table that shows the main features of the two software approaches, taken from [Ashmore p. 3]:

Waterfall Agile
Prescriptive Abstract
Extensive documentationMinimal documentation
Sequential Continuous
Formal Informal
Process focus Communication focus
Gradual change Rapid change

The Nuts and the Bolts…

So what do those table entries actually mean? From the Ashmore book [Pilone p. 6]:

Products

There are a number of applications [quite a large number, actually] that can help you manage an Agile project. No matter which flavor of Agile you choose, there are several very good tools that you can choose from. The ones listed below have the added advantage of being web-based and best of all they are FREE. The following list is a small selection; if you have a favorite that is not listed here, feel free to tell me about it and I will add it:

The Cayman Design Case Study

Your Ashmore textbook uses a running case study to provide examples of all the concepts discussed in presenting the material. As can be seen from the explanation on page 8 of the text, the Cayman Design Company is a made-up entity. However, there are a number of good examples that are made using this fiction.

The company is a 10-year-old web design company that is headquartered in Austin, TX, with a branch development team in India. They develop for both computer and mobile applications. Their management team has decided to start using Agile as part of their expansion into mobile applications. Their development teams are a mix of new hires and experienced professionals. To facilitate the move to Agile, Cayman hired a consultant to train the staff, implementing Scrum, Kanban boards, and XP. They also use video conferencing, e-mail, and instant messaging for communicating between and among teams. There are currently an average of six to eight Scrum teams.

Here are some highlights with page numbers from the text so you can read about them:

Coming up…

Next week we'll look into things a bit more deeply, starting with the different ways of looking at an organization, to see some of the different ways that the people IN that organization may view the processes and activities of software development in general, and Agile in particular. This will lead us [in future weeks] to the different roles that are required for an Agile development effort.