<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-32494743</id><updated>2011-04-22T04:29:18.151+10:00</updated><title type='text'>Agile Development</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://agile-simon.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://agile-simon.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Simon La Macchia</name><uri>http://www.blogger.com/profile/15778266883119885424</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-32494743.post-116107852604162908</id><published>2006-10-17T19:48:00.000+10:00</published><updated>2006-10-20T18:57:09.630+10:00</updated><title type='text'>Paired Programming</title><content type='html'>&lt;p&gt;&lt;b&gt;&lt;span style="font-size: 13.5pt;"&gt;Introduction&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Pair programming requires two software engineers to participate in a combined development effort at one workstation. Each member performs the action the other is not currently doing: While one types in unit tests the other thinks about the class that will satisfy the test, for example. The person who is doing the typing is known as the &lt;i&gt;driver&lt;/i&gt; while the person who is guiding is known as the &lt;i&gt;navigator&lt;/i&gt;. It is often suggested for the two partners to switch roles at least every half-hour or after a unit test is made.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;h2&gt;&lt;span style="font-size: 13.5pt;"&gt;Benefits&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;  &lt;p&gt;Pair programming is touted to yield the following benefits:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;Increased discipline.      Pairing partners are more likely to "do the right thing" and are      less likely to take long breaks.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Better code. Pairing      partners are less likely to go down rat holes and tend to come up with      higher quality designs.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Resilient flow. Pairing      leads to a different kind of flow than programming alone, but it does lead      to flow. Pairing flow happens more quickly: one programmer asks the other,      &lt;i&gt;"What were we working on?"&lt;/i&gt; Pairing flow is also more      resilient to interruptions: one programmer deals with the interruption      while the other keeps working.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Improved morale. Pair programming      can be more enjoyable for some engineers than programming alone.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;Collective code ownership.      When everyone on a project is pair programming, and pairs rotate      frequently, everybody gains a working knowledge of the entire code base.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Mentoring. Everyone, even      junior programmers, possess knowledge that others don't. Pair programming      is a painless way of spreading that knowledge.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Team cohesion. People get      to know each other more quickly when pair programming. Pair programming      may encourage team gelling.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Fewer interruptions. People      are more reluctant to interrupt a pair than they are to interrupt someone      working alone.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;One fewer workstation      required. Since two people use one workstation, one fewer workstation is      required, and therefore the extra workstation can be used for other      purposes.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;h2&gt;&lt;a name="Criticisms"&gt;&lt;/a&gt;&lt;span style="font-size: 13.5pt;"&gt;Criticisms&lt;/span&gt;&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;Experienced developers may      find it tedious to tutor a less experienced developer in a paired      environment.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Many engineers prefer to      work alone, and may find the paired environment cumbersome.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Productivity gains or      losses are hard to compare between paired and non-paired environments, as      metrics of programmer productivity are controversial at best.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Differences in coding style      may result in conflict.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;In the case where the team      has slightly different work schedules, which is common in an environment      that values work-life balance, the pair is only available during the      overlap of their schedules. Therefore, not only does it require more      man-hours to complete a task, a typical day has less pair-hours available,      which further increases the overall task completion time.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32494743-116107852604162908?l=agile-simon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agile-simon.blogspot.com/feeds/116107852604162908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32494743&amp;postID=116107852604162908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/116107852604162908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/116107852604162908'/><link rel='alternate' type='text/html' href='http://agile-simon.blogspot.com/2006/10/paired-programming.html' title='Paired Programming'/><author><name>Simon La Macchia</name><uri>http://www.blogger.com/profile/15778266883119885424</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32494743.post-116037709667322084</id><published>2006-10-09T16:57:00.000+10:00</published><updated>2006-10-09T17:00:45.723+10:00</updated><title type='text'>Agile Model Driven Development (AMDD)</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Overview&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;AMDD is the agile version of Model Driven Development (MDD). The MDD approach to software development is where extensive models are created before any coding happens. The difference with AMDD is instead of creating extensive models before coding, you instead create agile models which are just barely good enough.  &lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;a style="font-weight: bold;" name="InitialModeling"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Initial Modelling&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;The initial modelling effort is typically performed during the first week of a project. This task may vary from a few hours to a couple of weeks depending on the size of your project&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;For the first release of a system you need to take several days to identify some high-level requirements as well as the scope of the release. The goal is to get a good feel of what the project is all about. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;For your initial requirements model you will need some form of:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;span style="font-weight: bold;"&gt;Usage model&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt; &lt;/span&gt;As the name implies usage models enable you to explore how users will work with your system.  This may be a collection of essential use cases on a Rational Unified Process (RUP) project, a collection of features for a Feature Driven Development (FDD) project, or a collection of user stories for an Extreme Programming (XP) project.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;span style="font-weight: bold;"&gt;Initial domain model&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;A domain model identifies fundamental business entity types and the relationships between then.  Domain models may be depicted as a collection of Class Responsibility Collaborator (CRC) cards, a slim UML class diagram, or even a slim data model.  This domain model will contain just enough information: the main domain entities, their major attributes, and the relationships between these entities.  Your model doesn’t need to be complete. It just needs to cover enough information to make you comfortable with the primary domain concepts.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;span style="font-weight: bold;"&gt;User interface model&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;For user interface intensive projects you should consider developing some screen sketches or even a user interface prototype.&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;The goal of the initial architecture modelling effort is to try to identify an architecture that has a good chance of working. On the architecture side of things it is recommend to create:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;span style="font-weight: bold;"&gt;Free-form diagrams&lt;/span&gt;&lt;br /&gt;I’ve found that 99% of the time we simply need to create some free-form diagrams on a whiteboard to explore how we think we’ll build the system.  It’s important to remember that you will still need to prove that the architecture works through code.  &lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;span style="font-weight: bold;"&gt;Change cases&lt;/span&gt;&lt;br /&gt;An optional, and very interesting technique, at this point is to identify change cases which are potential architecture-level requirements which your system may need to support.  Change cases allow you to test the long-term viability of your architecture without requiring you to overbuild your system because you can think through the impact of likely changes to ensure yourself that your system will still work.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;a name="ModelStorming"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Model Storming&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;The vast majority of modelling sessions involve a few people, usually just two or three, who discuss an issue while sketching on paper or a whiteboard.  These sessions are typically impromptu events, one project team member will ask another to model with them, typically lasting for five to ten minutes (it’s rare to model storm for more than thirty minutes). The people get together, gather around a shared modelling tool and explore the issue until they're satisfied that they understand it. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;Model storming is just in time (JIT) modelling: you identify an issue which you need to resolve, you quickly grab a few team mates who can help you, the group explores the issue, and then everyone continues on as before.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;You will model storm to analyse requirements.  For example, a user may tell you that the system you’re building must display a chart representing the bonus schedule for sales people.  Together you create a sketch of what the screen will look like, drawing several examples until you come to a common understanding of what needs to be built.  Sketches such as this are inclusive models because you’re using simple tools and modelling techniques, this enabling the Agile Modelling (AM) practice of Active Stakeholder Participation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;/span&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;a name="Implementation"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:Arial;font-size:130%;"  lang="EN-AU" &gt;&lt;o:p&gt;Implementation&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;Implementation is where your team will spend the majority of its time. During development it is quite common to model storm for several minutes and then code, following common coding practices such as Test-Driven Development (TDD) or refactoring (which is a part of TDD), for several hours and even several days at a time. Why does this work?  Because your model storming efforts enable you to think through larger, cross-entity issues whereas with TDD you think through very focused issues typically pertinent to a single entity at a time. With refactoring you evolve your design via small steps to ensure that your work remains of high quality.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;How is AMDD Different?&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;From a design point of view the AMDD approach is very different than traditional development approaches where you create a design model first then code from it. With AMDD you do a little bit of modelling and then a lot of coding, iterating back when you need to. Your design efforts are now spread out between your modelling and coding activities, with the majority of design being done as part of your implementation efforts.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;a style="font-weight: bold;" name="Why"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Why Does This Work?&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;AMDD works for several reasons:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;span style="font-weight: bold;"&gt;You can still meet your "project planning needs"&lt;/span&gt;&lt;br /&gt;By identifying the high-level requirements early, and by identifying a potential architecture early, you have enough information to produce an initial cost estimate and schedule.  &lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;You manage technical risk&lt;/span&gt;&lt;br /&gt;Your initial architecture modelling efforts enable you to identify the major areas of technical risk early in the project without taking on the risk of over modelling your system.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;o:p style="font-weight: bold;"&gt; &lt;/o:p&gt;&lt;span style="font-weight: bold;"&gt;You minimize wastage&lt;/span&gt;&lt;br /&gt;A JIT approach to modelling enables you to focus on just the aspects of the system that you're actually going to build.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;span style="font-weight: bold;"&gt;You ask better questions&lt;/span&gt;&lt;br /&gt;The longer you wait to model storm a requirement, the more knowledge you'll have regarding the domain and therefore you'll be able to ask more intelligent questions.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;span style="font-weight: bold;"&gt;Stakeholders give better answers&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;Similarly, your stakeholders will have a better understanding of the system that you're building because you'll have delivered working software on a regular basis and thereby provided them with concrete feedback.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt; &lt;/span&gt;&lt;a name="Approaches"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=""&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;Approaches&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt; to AMDD&lt;/span&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;br /&gt;There are three basic approaches to applying AMDD on a project:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;span style="font-weight: bold;"&gt;Manual&lt;/span&gt;&lt;br /&gt;Simple tools, such as whiteboards and paper, and inclusive models are used for modelling. &lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Design Tool&lt;/span&gt;&lt;br /&gt;Inclusive models are used to explore requirements with stakeholders, and to analyse those requirements.  Developers then use sophisticated modelling tool for detailed design, (re)generating source code from the models. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;span style="font-weight: bold;"&gt;Agile MDA&lt;/span&gt;&lt;br /&gt;Very sophisticated, MDA-based modelling tools used to create extensive models from which working software is generated.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32494743-116037709667322084?l=agile-simon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agile-simon.blogspot.com/feeds/116037709667322084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32494743&amp;postID=116037709667322084' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/116037709667322084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/116037709667322084'/><link rel='alternate' type='text/html' href='http://agile-simon.blogspot.com/2006/10/agile-model-driven-development-amdd.html' title='Agile Model Driven Development (AMDD)'/><author><name>Simon La Macchia</name><uri>http://www.blogger.com/profile/15778266883119885424</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32494743.post-115991664688575058</id><published>2006-10-04T09:03:00.000+10:00</published><updated>2006-10-04T09:44:59.473+10:00</updated><title type='text'>Agile Unified Process</title><content type='html'>The Agile Unified Process (AUP) is a simplified version of the Rational Unified Process (RUP). It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. The AUP applies agile techniques include test driven design (TDD), Agile Modeling, agile change management, and Database Refactoring to improve your productivity.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt; Phases&lt;/span&gt;&lt;br /&gt;&lt;dl&gt;&lt;dt style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt;Inception&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span style="font-size:100%;"&gt;The goal is to identify the initial scope of the project, a potential architecture for your system, and to obtain initial project funding and stakeholder acceptance.&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt;Elaboration&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span style="font-size:100%;"&gt;The goal is to prove the architecture of the system.&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt;Construction&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span style="font-size:100%;"&gt;The goal is to build working software on a regular, incremental basis which meets the highest-priority needs of your project stakeholders.&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt;Transition&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt style="font-weight: bold;"&gt;&lt;span style="font-weight: normal;font-size:100%;" &gt;The goal is to validate and deploy your system into your production environment.&lt;/span&gt;&lt;/dt&gt;&lt;/dl&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Disciplines&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Model&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;The goal of this discipline is to understand the business of the organization, the problem domain being addressed by the project, and to identify a viable solution to address the problem domain.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Implementation&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt; The goal of this discipline is to transform your model(s) into executable code and to perform a basic level of testing, in particular unit testing.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Test&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt; The goal of this discipline is to perform an objective evaluation to ensure quality. This includes finding defects, validating that the system works as designed, and verifying that the requirements are met.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Deployment&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt; The goal of this discipline is to plan for the delivery of the system and to execute the plan to make the system available to end users.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Configuration Management&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;The goal of this discipline is to manage access to your project artifacts. This includes not only tracking artifact versions over time but also controlling and managing changes to them.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Project Management&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt; The goal of this discipline is to direct the activities that takes place on the project. This includes managing risks, directing people (assigning tasks, tracking progress, etc.), and coordinating with people and systems outside the scope of the project to be sure that it is delivered on time and within budget.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Environment&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt; The goal of this discipline is to support the rest of the effort by ensuring that the proper process, guidance (standards and guidelines), and tools (hardware, software, etc.) are available for the team as needed.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;a name="Philosophies" id="Philosophies"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;h2&gt;&lt;span style="font-size:130%;"&gt;Philosophies&lt;/span&gt;&lt;/h2&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Your staff knows what they're doing&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt; People aren't going to read detailed process documentation, but they will want some high-level guidance and/or training from time to time. The AUP product provides links to many of the details, if you're interested, but doesn't force them upon you.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Simplicity&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt; Everything is described concisely using a handful of pages, not thousands of them.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Agility&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt; The Agile UP conforms to the values and principles of the agile software development and the Agile Alliance.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Focus on high-value activities&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;The focus is on the activities which actually count, not every possible thing that could happen to you on a project.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Tool independence&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt; You can use any toolset that you want with the Agile UP. The recommendation is that you use the tools which are best suited for the job, which are often simple tools or even open source tools.&lt;/span&gt;&lt;/p&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Releases&lt;/span&gt;&lt;/span&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;The Agile Unified Process distinguishes between two types of iterations. A Development Release Iteration results in a deployment to the Quality Assurance and/or Demo area. A Production Release Iteration results in a deployment to the Production area.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;References:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Web:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;http://en.wikipedia.org/wiki/Agile_Unified_Process&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32494743-115991664688575058?l=agile-simon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agile-simon.blogspot.com/feeds/115991664688575058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32494743&amp;postID=115991664688575058' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/115991664688575058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/115991664688575058'/><link rel='alternate' type='text/html' href='http://agile-simon.blogspot.com/2006/10/agile-unified-process.html' title='Agile Unified Process'/><author><name>Simon La Macchia</name><uri>http://www.blogger.com/profile/15778266883119885424</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32494743.post-115872927329187323</id><published>2006-09-20T12:12:00.000+10:00</published><updated>2006-09-20T15:50:48.810+10:00</updated><title type='text'>Crystal Clear</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Intro&lt;br /&gt;&lt;/span&gt;Crystal Clear is a member of the Crystal methodologies and is an example of a lightweight methodology.  The Crystal family of methodologies focus on efficiency and habitablity as components of project safety. Crystal Clear methodologies are for development of systems that are not life-critical. Crystal Clear focuses on people, not processes or artifacts.&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Team Description&lt;/span&gt;&lt;/p&gt;&lt;p&gt;There is only one team, generally consisting of up to 6-8 members, seated together  in close proximity i.e. the same or adjoining offices.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Roles&lt;/span&gt; (requiring separate people)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sponsor&lt;/li&gt;&lt;li&gt;Senior designer-programmer&lt;/li&gt;&lt;li&gt;Designer-programmer&lt;/li&gt;&lt;li&gt;User (part-time at least)&lt;/li&gt;&lt;/ul&gt;One of those team members may become project coordinator, one will become the business expert and either one or more may become requirements gatherers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Policy Standards&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Software is delivered incrementally and regularly (every 2 - 3 months).&lt;/li&gt;&lt;li&gt;Progress is tracked by milestones consisting of software deliveries or major decisions.&lt;/li&gt;&lt;li&gt;At least some automated regression testing of application function.&lt;/li&gt;&lt;li&gt;User has direct involvement.&lt;/li&gt;&lt;li&gt;2 user viewings per incremental release.&lt;/li&gt;&lt;li&gt;Downstream activities start as soon as upstream is &lt;span style="font-style: italic;"&gt;'stable enough to review'.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;'Product and methodology tuning workshops'&lt;/span&gt; are held at the start and middle of each iteration.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Products Produced&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Release sequence&lt;/li&gt;&lt;li&gt;Schedule of user viewings and deliveries&lt;/li&gt;&lt;li&gt;Annotated use cases or feature descriptions&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Design sketches and notes needed&lt;/li&gt;&lt;li&gt;Screen drafts&lt;/li&gt;&lt;li&gt;A common object model&lt;/li&gt;&lt;li&gt;Running Code&lt;/li&gt;&lt;li&gt;Migration Code&lt;/li&gt;&lt;li&gt;Test Cases&lt;/li&gt;&lt;li&gt;User Manual&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Team Internal Matters&lt;/span&gt;&lt;br /&gt;Set and maintained by the team.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Templates for the work produced&lt;/li&gt;&lt;li&gt;Standards for coding and user interface&lt;/li&gt;&lt;li&gt;Standards and details of regression testing&lt;/li&gt;&lt;/ul&gt;Crystal Clear does require documentation to be produced. Just what documentation consists of  is not spelled out by Crystal.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-weight: bold;"&gt;Text:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;i&gt;Agile Software Development, &lt;/i&gt;&lt;span style=""&gt;Alistair Cockburn&lt;/span&gt;; Addison-Wesley, 2002&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32494743-115872927329187323?l=agile-simon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agile-simon.blogspot.com/feeds/115872927329187323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32494743&amp;postID=115872927329187323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/115872927329187323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/115872927329187323'/><link rel='alternate' type='text/html' href='http://agile-simon.blogspot.com/2006/09/crystal-clear.html' title='Crystal Clear'/><author><name>Simon La Macchia</name><uri>http://www.blogger.com/profile/15778266883119885424</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32494743.post-115811080053433345</id><published>2006-09-13T11:19:00.000+10:00</published><updated>2006-09-13T11:37:12.383+10:00</updated><title type='text'>Feature Driven Development (FDD)</title><content type='html'>&lt;h4 style="font-weight: normal;"&gt;&lt;span style="font-weight: bold;"&gt;Overview&lt;/span&gt;&lt;br /&gt;&lt;/h4&gt;&lt;h4 style="font-weight: normal;"&gt;FDD is a model-driven short-iteration process that consists of five basic activities. For accurate state reporting and keeping track of the software development project milestones that mark the progress made on each feature are defined.&lt;/h4&gt;&lt;span style="font-weight: bold;"&gt;Activities&lt;/span&gt; &lt;p&gt;FDD describes five basic activities that are performed within the software development process. In the figure on the right the meta-process model for these activities is displayed. During the first three sequential activities an overall model shape is established. The final two activities are &lt;a href="http://en.wikipedia.org/wiki/Iteration" title="Iteration"&gt;&lt;/a&gt;iterative for each feature.&lt;br /&gt;&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Develop Overall Model&lt;/span&gt; &lt;p&gt;The project starts with a high-level walk through of the scope of the system and its context is performed. Next, detailed domain walkthroughs are held for each modeling area. In support of each domain, walkthrough models are then composed by small groups which are presented for&lt;a href="http://en.wikipedia.org/wiki/Peer_review" title="Peer review"&gt;&lt;/a&gt; peer review and discussion. One of the proposed models or a merge of them is selected which becomes the model for that particular domain area. Domain area models are merged into an overall model, the overall model shape being adjusted along the way.&lt;/p&gt;  &lt;p&gt;&lt;a name="Build_Feature_List" id="Build_Feature_List"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h4&gt;Build Feature List&lt;/h4&gt; &lt;p&gt;The knowledge that is gathered during the initial modeling is used to identify a list of features. This is done by functionally decomposing the domain into subject areas. Subject areas each contain business activities&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;, the steps within each business activity form the categorized feature list. Features in this respect are small pieces of client-valued functions expressed in the form &lt;action&gt; &lt;result&gt; &lt;object&gt;, for example: 'Calculate the total of a sale' or 'Validate the password of a user'. Features should not take more than two weeks to complete, else they should be broken down into smaller pieces.&lt;/object&gt;&lt;/result&gt;&lt;/action&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name="Plan_By_Feature" id="Plan_By_Feature"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h4&gt;Plan By Feature&lt;/h4&gt; &lt;p&gt;Now that the feature list is complete, the next step is to produce the development plan. Class ownership is done by ordering and assigning features (or feature sets) as classes to chief programmers.&lt;a href="http://en.wikipedia.org/wiki/Programmer" title="Programmer"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name="Design_By_Feature" id="Design_By_Feature"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h4&gt;Design By Feature&lt;/h4&gt; &lt;p&gt;A design package is produced for each feature. A chief programmer selects a small group of features that are to be developed within two weeks. Together with the corresponding class owners, the chief programmer works out detailed sequence of diagrams for each feature and refines the overall model. Next, the class and method prologues are written and finally a design inspection is held.&lt;/p&gt;  &lt;p&gt;&lt;a name="Build_By_Feature" id="Build_By_Feature"&gt;&lt;/a&gt;&lt;/p&gt; &lt;span style="font-weight: bold;"&gt;Build By Feature&lt;/span&gt; &lt;p&gt;After a successful design inspection a per feature activity to produce a completed client-valued function (feature) is being produced. The class owners develop the actual code for their classes. After a unit test and a successful code inspection, the completed feature is promoted to the main build.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Milestone&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt; &lt;p&gt;Since features are small, completing a feature is a relatively small task. For accurate state reporting and keeping track of the software development project it is however important to mark the progress made on each feature. FDD therefore defines six milestones per feature that are to be completed sequentially. The first three milestones are completed during the Design By Feature activity, the last three are completed during the Build By Feature activity. To help with tracking progress, a percentage complete is assigned to each milestone.  A feature that is still being coded is 44% complete (Domain Walkthrough 1%, Design 40% and Design Inspection 3% = 44%).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32494743-115811080053433345?l=agile-simon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agile-simon.blogspot.com/feeds/115811080053433345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32494743&amp;postID=115811080053433345' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/115811080053433345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/115811080053433345'/><link rel='alternate' type='text/html' href='http://agile-simon.blogspot.com/2006/09/feature-driven-development-fdd.html' title='Feature Driven Development (FDD)'/><author><name>Simon La Macchia</name><uri>http://www.blogger.com/profile/15778266883119885424</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32494743.post-115750867295537151</id><published>2006-09-06T11:55:00.000+10:00</published><updated>2006-09-06T12:57:38.940+10:00</updated><title type='text'>Lean Software Development (LSD)</title><content type='html'>&lt;h3&gt;&lt;span style="font-family: Arial;"&gt;What is LSD?&lt;/span&gt;&lt;/h3&gt; &lt;p&gt;LSD is the application of Lean principles to the craft of software development.&lt;span&gt; &lt;/span&gt;So what is Lean?&lt;span&gt; &lt;/span&gt;According to the National Institute of Standards and Technology Manufacturing Extensions Partnership’s Lean Network, Lean is:&lt;/p&gt; &lt;blockquote dir="ltr"&gt; &lt;p&gt;“A systematic approach to identifying and eliminating waste through continuous improvement, flowing the product at the pull of the customer in pursuit of perfection.”&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote dir="ltr"&gt; &lt;p&gt;“Lean Software Development reduces defects and cycle times while delivering a steady stream of incremental business value.”&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Lean Software Development is more strategically focused than other Agile methodology.&lt;span&gt; &lt;/span&gt;The goals are to develop software in one-third the time, with one-third the budget, and with one-third the defect rate. Lean Software Development is not a management or development methodology per se, but it offers principles that are applicable in any environment to improve software development.&lt;/p&gt; &lt;h3&gt;&lt;span style="font-family: Arial;"&gt;The LSD Principles&lt;/span&gt;&lt;/h3&gt; &lt;p&gt;&lt;b&gt;Eliminate waste&lt;/b&gt;.&lt;span&gt; &lt;/span&gt;In software development, waste is anything that does not improve the quality of code, reduces the amount of time and effort it takes to produce code, or does not deliver business value to the customer.&lt;span&gt; &lt;/span&gt;In other words, any activity that does not “pay for itself” in reduced effort elsewhere in the system.&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/p&gt;&lt;b&gt;Amplify learning&lt;/b&gt;.&lt;span&gt; &lt;/span&gt;For programmers to develop a system that delivers business value, they will have to learn about many things.&lt;span&gt; &lt;/span&gt;Some are technical, such as the advantages and disadvantages to various approaches to do remote communications in .NET (i.e., remoting, COM+, web services, etc.).&lt;span&gt; &lt;/span&gt;Others are requirements related, such as understanding what the business user really needs versus what the developer thinks the user needs.&lt;b&gt;&lt;br /&gt;&lt;br /&gt;Decide as late as possible&lt;/b&gt;.&lt;span&gt; &lt;/span&gt;The idea here is to wait until what the authors term “the last responsible moment” to make a decision.&lt;span&gt; &lt;/span&gt;This is the moment at which, if the team does not make a decision, the decision will be made for them (doing nothing is a choice).&lt;span&gt; &lt;/span&gt;The benefits of this are avoiding or delaying the costs of change, which obviously cannot be incurred if you have not limited your options yet.&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;b&gt;&lt;br /&gt;Deliver as fast as possible&lt;/b&gt;.&lt;span&gt; &lt;/span&gt;This is the foundation of iterative development.&lt;span&gt; &lt;/span&gt;Requirements change as a percentage of the original requirements increases non-linearly as the amount of time increases.&lt;span&gt; &lt;/span&gt;Typical 9-12 month projects generate roughly a 25 percent change in requirements.&lt;span&gt; &lt;/span&gt;However, the amount of requirements change over a month averages only 1-2 percent.&lt;span&gt; &lt;/span&gt;And it is much easier to get users to accept waiting until next month rather than next year.&lt;b&gt;&lt;br /&gt;&lt;br /&gt;Empower the team&lt;/b&gt;.&lt;span&gt; &lt;/span&gt;The quality of a software team (the people factor) is the most important element in successfully delivering software.&lt;span&gt; &lt;/span&gt;In order to get people to take responsibility, get motivated, and gel as a team, they need to be responsible for the outcome and authorized to make it happen.&lt;b&gt;&lt;br /&gt;&lt;br /&gt;Build integrity in&lt;/b&gt;. &lt;span&gt;&lt;/span&gt;The authors make the distinction between perceived integrity and conceptual integrity.&lt;span&gt; &lt;/span&gt;Perceived integrity is the customer’s experience with your software.&lt;span&gt; &lt;/span&gt;Conceptual integrity is how well the architecture and system components flow together to bring about the perceived integrity.&lt;span&gt; &lt;/span&gt;Obviously testing, unit and integration, is a major part of integrity.&lt;b&gt;&lt;br /&gt;&lt;br /&gt;See the whole&lt;/b&gt;.&lt;span&gt; &lt;/span&gt;Systems thinking has been around for a while, but the typical response to solving problems is to break them down into their constituent parts and optimize each individual piece.&lt;span&gt; &lt;/span&gt;This is suboptimization, which leads to the “tragedy of the commons.”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-weight: bold;"&gt;Web:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;http://www.poppendieck.com/&lt;br /&gt;&lt;br /&gt;http://sphereofinfluence.com/soiblogs/tscheer/archive/2005/09/19/159.aspx&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;http://codebetter.com/blogs/darrell.norton/articles/50341.aspx&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32494743-115750867295537151?l=agile-simon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agile-simon.blogspot.com/feeds/115750867295537151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32494743&amp;postID=115750867295537151' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/115750867295537151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/115750867295537151'/><link rel='alternate' type='text/html' href='http://agile-simon.blogspot.com/2006/09/lean-software-development-lsd.html' title='Lean Software Development (LSD)'/><author><name>Simon La Macchia</name><uri>http://www.blogger.com/profile/15778266883119885424</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32494743.post-115681162812466121</id><published>2006-08-29T10:33:00.000+10:00</published><updated>2006-08-30T15:38:36.290+10:00</updated><title type='text'>SCRUM</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Scrum_%28management%29" title="Scrum (management)"&gt;&lt;/a&gt;Scrum is a lightweight agile method for software development. Scrum is named after the scrum in rugby, which is a way to restart the game after an accidental infringement.&lt;br /&gt;&lt;br /&gt;Pitched as: &lt;span style="font-style: italic;"&gt;"Management and control process that cuts through complexity"&lt;/span&gt;&lt;br /&gt;Invented by: &lt;span style="font-style: italic;"&gt;Jeff Sutherland, Ken Schwaber, Mike Beedle. Senior managers wanting to get product out faster.&lt;/span&gt;&lt;br /&gt;Where invented: &lt;span style="font-style: italic;"&gt;USA&lt;/span&gt;&lt;br /&gt;Year first used: &lt;span style="font-style: italic;"&gt;1994&lt;/span&gt;&lt;br /&gt;First used on: &lt;span style="font-style: italic;"&gt;Advanced Development Methods - process automation software. 8 developers.               VMARK - OO software development environments.&lt;/span&gt;&lt;br /&gt;Now used on: &lt;span style="font-style: italic;"&gt;All over the place with different groups/people.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Scrum assumes that the software development process is complicated and unpredictable and treats it as a controlled black box instead of a theoretical, fully-defined process. This is main differences between Scrum and &lt;i&gt;Waterfall&lt;/i&gt; methodologies, which view the software development process as a fully defined process. Most problems encountered when using these older, formal types of methodologies like waterfall are:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Requirements are &lt;b style="font-style: italic;"&gt;not fully understood&lt;/b&gt; at the beginning of the process.&lt;/li&gt;&lt;li&gt;Requirements&lt;span style="font-weight: bold; font-style: italic;"&gt; &lt;/span&gt;&lt;b style="font-weight: bold; font-style: italic;"&gt;change during the process&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;The process becomes &lt;b style="font-style: italic;"&gt;unpredictable when new tools and technologies&lt;/b&gt; are used.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Another characteristic of Scrum is that the software development process isn’t treated as a linear process, unlike the Waterfall, Spiral and Iterative methodologies. In a lot of cases this linear process consists of the following four activities: Analysis, Design, Implementation and Testing. Scrum, however, doesn't prescribe a sequence in which the activities must be implemented. A project can start with any activity, and can change between activities at any time. This increases the project's flexibility and productivity. Other characteristics of Scrum are:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Flexible schedule&lt;/li&gt;&lt;li&gt;Flexible deliverables&lt;/li&gt;&lt;li&gt;Small teams&lt;/li&gt;&lt;li&gt;Frequent review&lt;/li&gt;&lt;li&gt;Object oriented&lt;/li&gt;&lt;li&gt;Collaboration between and within teams&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-weight: bold;"&gt;Web:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;http://agilethinking.net/blog/what-is-scrum/&lt;br /&gt;&lt;br /&gt;http://en.wikipedia.org/wiki/SCRUM#Simplified_Scrum&lt;br /&gt;&lt;br /&gt;http://www.balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;&lt;br /&gt;http://en.wikipedia.org/wiki/Scrum_%28development%29&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32494743-115681162812466121?l=agile-simon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agile-simon.blogspot.com/feeds/115681162812466121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32494743&amp;postID=115681162812466121' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/115681162812466121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/115681162812466121'/><link rel='alternate' type='text/html' href='http://agile-simon.blogspot.com/2006/08/scrum.html' title='SCRUM'/><author><name>Simon La Macchia</name><uri>http://www.blogger.com/profile/15778266883119885424</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32494743.post-115621078729983950</id><published>2006-08-22T11:39:00.000+10:00</published><updated>2006-08-23T13:14:36.603+10:00</updated><title type='text'>Agile Risk Management</title><content type='html'>Agile Software development can help reduce Risk in a software development project by reducing the risk level of 5 of the top 10 project risks:&lt;span style="" lang="EN-GB"&gt;  &lt;/span&gt; &lt;ul&gt;&lt;li&gt;     &lt;p style=""&gt;&lt;span style="" lang="EN-GB"&gt;Feature creep&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=""&gt;&lt;span style="" lang="EN-GB"&gt;Gold plating&lt;/span&gt;   &lt;/p&gt;&lt;/li&gt;&lt;li&gt;     &lt;p style=""&gt;&lt;span style="" lang="EN-GB"&gt;Short changed quality&lt;/span&gt;   &lt;/p&gt;&lt;/li&gt;&lt;li&gt;     &lt;p style=""&gt;&lt;span style="" lang="EN-GB"&gt;Overly optimistic estimates&lt;/span&gt;   &lt;/p&gt;&lt;/li&gt;&lt;li&gt;     &lt;p style=""&gt;&lt;span style="" lang="EN-GB"&gt;Friction between developers and customers&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;   Agile methods attempt to minimize risk by developing software in short timeboxes, called iterations, which generally extend from one to four weeks. Each iteration is like a mini software project of its own, and includes all of the tasks necessary to release the mini-increment of new functionality: planning, requirements analysis, design, coding, testing, and documentation. While an iteration may not add enough functionality to warrant releasing the product, an agile software project intends to be capable of releasing new software at the end of every iteration. At the end of each iteration, the team re-evaluates project priorities.&lt;br /&gt;&lt;br /&gt;Agile methods also emphasize working software as the primary measure of progress. Combined with the preference for face-to-face communication.&lt;br /&gt;Agile methods emphasize realtime communication, preferably face-to-face, over written documents. This requires constant communication (feed-back) between the customer and the software development team, particularly after each iteration of deliverables.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Text:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;Agile Software Development, &lt;/i&gt;&lt;span style=""&gt;Alistair Cockburn&lt;/span&gt;; Addison-Wesley, 2002&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Web:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;http://www.balagan.org.uk/work/agile_comparison.htm&lt;br /&gt;&lt;br /&gt;http://en.wikipedia.org/wiki/Agile_development&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32494743-115621078729983950?l=agile-simon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agile-simon.blogspot.com/feeds/115621078729983950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32494743&amp;postID=115621078729983950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/115621078729983950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/115621078729983950'/><link rel='alternate' type='text/html' href='http://agile-simon.blogspot.com/2006/08/agile-risk-management.html' title='Agile Risk Management'/><author><name>Simon La Macchia</name><uri>http://www.blogger.com/profile/15778266883119885424</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32494743.post-115553579270929298</id><published>2006-08-14T15:57:00.000+10:00</published><updated>2006-08-16T13:11:46.173+10:00</updated><title type='text'>Extreme Programming (XP) Summary</title><content type='html'>&lt;span style="font-weight: bold;"&gt;What is XP?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;XP is a software engineering methodology, the most prominent of several agile software development methodologies. XP prescribes a set of day-to-day practices  for developers and managers said to enable the development process to be more responsive to the customers needs. XP tends to trade predictability more for adaptability. Proponents believe XP's flexibility is more realistic than traditional methodologies.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;XP Values&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Simplicity - It is better to implement the simplest solution.&lt;/li&gt;&lt;li&gt;Communication - Increases cooperation, group productiveness, and decreases mistakes.&lt;/li&gt;&lt;li&gt;Feedback - Keeps the project on track.  Feedback should be almost continuous.&lt;/li&gt;&lt;li&gt;Courage - Required to be able to throw code away when it is appropriate, or to refactor late in the design to increase system performance. &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;XP Principals&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pair programming - Ensures quality code. One programmer is thinking whether the approach will work, about testing, or ways to simplify the code while the other programmer writes the code. The roles of the two programmers may change often, and programmer pairs may change often. &lt;/li&gt;&lt;li&gt;Simple design - Keep the design as simple as possible for the moment and don't add features that are not needed for current functionality. The reasoning behind this is that if a feature is not valuable now, it is not worth the investment until it is valuable. &lt;/li&gt;&lt;li&gt;Small releases - There is a short time between versions. &lt;/li&gt;&lt;li&gt;Refactoring - The code is restructured as necessary to improve structure and performance. Refactoring is done before additional capabilities are added, not while they are being added to be sure the system is not broken during refactoring. &lt;/li&gt;&lt;li&gt;Testing - Tests are written first and must run for design to continue. Testing is done often. Customers may determine tests required to determine what features work. &lt;/li&gt;&lt;li&gt;Integration - Code is continuously integrated together. &lt;/li&gt;&lt;li&gt;Correct working hours - Generally limited to 40 hours per week with no overtime for more than one week at a time. This is to keep programmers alert so they do not make mistakes. &lt;/li&gt;&lt;li&gt;Customer availability - The customer is on site to answer questions or at least is readily accessible. &lt;/li&gt;&lt;li&gt;Standards of coding - There are group rules for code so all members can understand the code readily. &lt;/li&gt;&lt;li&gt;Group ownership of code - All members of the group can change any code at any time. &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;When to use XP?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;XP is more suited to projects where the full requirements are simply not known up front, are vague, and are very likely to change. In these situations it can be better to get something out to the user quickly, to get feedback early and often.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;p class="DefaultParagraphFont1" style="line-height: 12pt;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Text:&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="DefaultParagraphFont1" style="line-height: 12pt;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;i&gt;Agile Software Development, &lt;/i&gt;&lt;span style=""&gt;Alistair Cockburn&lt;/span&gt;; Addison-Wesley, 2002&lt;/span&gt;&lt;/p&gt;&lt;p class="DefaultParagraphFont1" style="line-height: 12pt; font-weight: bold;"&gt;&lt;span style="font-size:85%;"&gt;Web:&lt;/span&gt;&lt;/p&gt;&lt;p class="DefaultParagraphFont1" style="line-height: 12pt;"&gt;&lt;span style="font-size:85%;"&gt;http://en.wikipedia.org/wiki/Extreme_Programming&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;http://www.byte-vision.com/MovingToXPArticle.aspx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32494743-115553579270929298?l=agile-simon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agile-simon.blogspot.com/feeds/115553579270929298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32494743&amp;postID=115553579270929298' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/115553579270929298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/115553579270929298'/><link rel='alternate' type='text/html' href='http://agile-simon.blogspot.com/2006/08/extreme-programming-xp-summary.html' title='Extreme Programming (XP) Summary'/><author><name>Simon La Macchia</name><uri>http://www.blogger.com/profile/15778266883119885424</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32494743.post-115519331052265010</id><published>2006-08-10T17:01:00.000+10:00</published><updated>2006-08-16T13:05:14.970+10:00</updated><title type='text'>Intro to Agile Development</title><content type='html'>Agile, agile.. why am I doing this again?? umm... that's right to find out what all the hype is about.. is it really as good as what I have heard? What scenarios is it best suited to and what isn't it so hot for? What practises work better than others? Is it one size fits all? Or is the right tool for the right job more the focus here? I hope to find the answers to these and many more of questions in the coming weeks.&lt;br /&gt;&lt;br /&gt;After my first few lectures on agile methodoligies I understand that we are throwing away a lot of traditional documentation (YAY). Well not throwing it away, more like trading it for great communication (bonding) with team mates and a more dynamic and less structured documentation process. Very interested to see how well this style works. Will post my concluding thoughts about one of my later posts.&lt;br /&gt;&lt;br /&gt;We have formed teams this week. I think I'm in a good team. Got some great, very hard working team mates which I look forward to working with this semester.. some I have known previously and some new ones. Go Team 'Rocket'.. who thought of that name again?!?!&lt;br /&gt;&lt;br /&gt;Thought I'd let you all know that this is like my first blog ever. Probably very obvious!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32494743-115519331052265010?l=agile-simon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agile-simon.blogspot.com/feeds/115519331052265010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32494743&amp;postID=115519331052265010' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/115519331052265010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32494743/posts/default/115519331052265010'/><link rel='alternate' type='text/html' href='http://agile-simon.blogspot.com/2006/08/intro-to-agile-development.html' title='Intro to Agile Development'/><author><name>Simon La Macchia</name><uri>http://www.blogger.com/profile/15778266883119885424</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
