Back in the
|
|
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
:

What this ended up causing is some provably difficult problems with the entire engineering process, particularly for large-scale development projects:
discretein nature, and were executed in a step-wise fashion
locked inon the idea that this is the proper way to organize 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:

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 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]
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.
|
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 |
conceptual design. This may include trade studies of which technologies to use, risk assessments, software tools, and so forth.
storyboardswhich can be done easily using UML [and other types of] diagrams
stakeholders. For a large project, it may be a week's worth of all-day meetings. They are kind of cool, since the companies usually go all out and have special conference rooms, computer hookups, presentation technology, and of course free food. There may be two or three of these during the design phase(s) of the project:
fills the bill. If there are changes, they can still be made, but it is likely going to cause schedule slips (
moving to the right) which is not a good thing. Schedule slips cost $$$$$, and also may cause the customer to view the solution provider in a somewhat less than favorable light. They may not want to work with you again…
The first 90% of development takes the first 90% of the development time, and the last 10% takes the other 90% of the development time.
The Mythical Man-Month, says:
The hardest single part of building a software system is deciding precisely what to build. No other part of the conceptual work is as difficult as establishing the detailed technical requirements, including all the interfaces to people, to machines, and to other software systems. No other part of the work so cripples the resulting system if done wrong. No other part is more difficult to rectify later.
Here is a table that shows the main features of the two software approaches, taken from [Ashmore p. 3]:
| Waterfall | Agile |
|---|---|
| Prescriptive | Abstract |
| Extensive documentation | Minimal documentation |
| Sequential | Continuous |
| Formal | Informal |
| Process focus | Communication focus |
| Gradual change | Rapid change |
So what do those table entries actually mean? From the Ashmore book [Pilone p. 6]:
form over functionsituations which can stifle productivity and often don't foster the trust needed to build and maintain a cohesive team.
descriptiveand not just
prescriptive. By using tools like TDD and Continuous Integration, you can present your customer with working software that they can try out, and that will allow them to provide you with constructive feedback on a regular short-term basis, that can be used to insure your team is producing what the customer determines is providing them business value.
I have an ethical problem with this idea or this application, and trust that the team and/or the customer will at least have the courage and reciprocal trust to hear out the rationale before taking any action.
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:
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:
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.