| p>Choosing the right SDLC (Software Development | | | | project manager is responsible for an overall project |
| Lifecycle) methodology for your project is as | | | | plan which defines the deliverables for each phase, |
| important to the success of the project as the | | | | and a detailed iteration plan which manages the |
| implementation of any project management best | | | | deliverables and tasks belonging to each phase. The |
| practices. Choose the wrong software methodology | | | | purpose of the iterations is to better identify risks |
| and you will add time to the development cycle. | | | | and mitigate them. |
| Adding extra time to the development cycle will | | | | RUP is essentially a cross between Scrum and |
| increase your budget and very likely prevent you | | | | waterfall in that it only applies an iterative approach |
| from delivering the project on time. | | | | to project phases where the most benefit can be |
| Choosing the wrong methodology can also hamper | | | | derived from it. RUP also emphasizes the architecture |
| your effective management of the project and may | | | | of the system being built. The strengths of RUP are |
| also interfere with the delivery of some of the | | | | its adaptability to different types of projects. You |
| project's goals and objectives. Software | | | | could simulate some of the aspects of a Scrum |
| development methodologies are another tool in the | | | | method by making all 4 phases iterative, or you could |
| development shop's tool inventory, much like your | | | | simulate the waterfall method by choosing to avoid |
| project management best practices are tools in your | | | | iterations altogether. RUP will be especially useful to |
| project manager's tool kit. You wouldn't choose a | | | | you when you have some familiarity with the |
| chainsaw to finish the edges on your kitchen cabinet | | | | technology but need the help of Use Cases to help |
| doors because you know you wouldn't get the | | | | clarify your requirements. Use Cases can be |
| results you want. Choose your software | | | | combined with storyboarding when you are |
| methodology carefully to avoid spoiling your project | | | | developing a software system with a user interface |
| results. | | | | to simulate the interaction between the user and the |
| I realize that not every project manager can choose | | | | system. Avoid using RUP where your team is very |
| the software methodology they will use on every | | | | familiar with the technology and the system being |
| project. Your organization may have invested heavily | | | | developed and your product owners and users don't |
| in the software methodology and supporting tools | | | | need use cases to help clarify their requirements. |
| used to develop their software. There's not much | | | | RUP is one of those methodologies that your |
| you can do in this case. Your organization won't look | | | | organization is very likely to have invested heavily in. |
| favorably on a request to cast aside a methodology | | | | If that's your situation, you probably don't have the |
| and tools they've spent thousands of dollars on | | | | authority to select another methodology but you can |
| because you recommend a different methodology | | | | tailor RUP to suit your project. Use iterations to |
| for your project. We'll give you some tips on how to | | | | eliminate risks and unknowns that stem from your |
| tailor some of the methodologies to better fit with | | | | team's unfamiliarity with the technology or the |
| your project requirements later in this article. In the | | | | system, or eliminate iterations where you would |
| meantime, before your organization invests in | | | | otherwise use the waterfall method. |
| software development methodologies you, or your | | | | JAD |
| PMO, ought to be consulted so that at least a | | | | Joint Application Development, or JAD, is another |
| majority of projects are benefited from a good fit. | | | | methodology developed by IBM. It's main focus is on |
| This article won't cover every SDLC out there but | | | | the capture and interpretation of requirements but |
| we will attempt to cover the most popular ones. | | | | can be used to manage that phase in other |
| Scrum | | | | methodologies such as waterfall. JAD gathers |
| Scrum is a name rather than an acronym (which is | | | | participants in a room to articulate and clarify |
| why I haven't capitalized the letters), although some | | | | requirements for the system. The project manager is |
| users have created acronyms, and is commonly used | | | | required for the workshop to provide background |
| together with agile software development. Scrum is | | | | information on the project's goals, objectives, and |
| typically chosen because of its iterative nature and its | | | | system requirements. The workshop also requires a |
| ability to deliver working software quickly. It is | | | | facilitator, a scribe to capture requirements, |
| chosen to develop new products for those reasons. | | | | participants who contribute requirements, and |
| There is typically no role for a project manager in this | | | | members of the development team whose purpose |
| methodology, the 3 key roles are: the scrum master | | | | is to observe. |
| (replacing the project manager), the product owner, | | | | JAD can be used to quickly clarify and refine |
| and the team who design and build the system. | | | | requirements because all the players are gathered in |
| There is only one role that you would be asked to | | | | one room. Your developers can avert |
| play if your organization is committed to using this | | | | misunderstandings or ambiguities in requirements by |
| methodology, scrum master. If you should determine | | | | questioning the participants. This method can be used |
| that this would actually be the best methodology for | | | | with just about any software methodology. Avoid |
| your project, you'll have to re-examine your role as | | | | using it where the organization's needs are not clearly |
| project manager. You can either identify a suitable | | | | understood or on large, complex projects. |
| scrum master and return to the bench, or fill the role | | | | RAD |
| of scrum master. | | | | RAD is an acronym for Rapid Application |
| Scrum suits software development projects where | | | | Development uses an iterative approach and |
| its important for the project to deliver working | | | | prototyping to speed application development. |
| software quickly. Scrum is an iterative methodology | | | | Prototyping begins by building the data models and |
| and uses cycles called sprints, to build a working | | | | business process models that will define the software |
| system. Requirements are captured in a "backlog" | | | | application. The prototypes are used to verify and |
| and a set of requirements is chosen with the help of | | | | refine the business and data models in an iterative |
| the product manager. Requirements are chosen | | | | cycle until a data model and software design are |
| based on 2 criteria: the requirement takes priority | | | | refined enough to begin construction. |
| over others left in the backlog and the set of | | | | The purpose of RAD is to enable development |
| requirements chosen will build a functioning system. | | | | teams to create and deploy software systems in a |
| During the sprint, which can last from 2 to 4 weeks | | | | relatively short period of time. It does this in part by |
| maximum, no changes can be made to the | | | | replacing the traditional methods of requirements |
| requirements in the sprint. This is one of the reasons | | | | gathering, analysis, and design with prototyping and |
| that a project manager isn't necessary for this | | | | modeling, the prototyping and modeling allow the |
| methodology. There is no need for requirements | | | | team to prove the application components faster |
| management because no changes are allowed to the | | | | than traditional methods such as waterfall. The |
| requirements under development. All changes must | | | | advantage of this method is it facilitates rapid |
| occur in the requirements set in the backlog. | | | | development by eliminating design overhead. It's |
| Scrum will be suitable for software development | | | | disadvantage is that in eliminating design overhead it |
| projects where the product is a new software | | | | also eliminates much of the safety net which |
| product. By new I mean that it is new to the | | | | prevents requirements from being improperly |
| organization undertaking the project, not in general. | | | | interpreted or missed altogether. |
| The methodology was developed to address a need | | | | RAD is suitable for projects where the requirements |
| for a method to build software when its necessary | | | | are fairly well known in advance and the data is |
| to learn on the fly, not all requirements are known to | | | | either an industry or business standard, or already in |
| the organization and the focus is on delivering a | | | | existence in the organization. It is also suitable for a |
| working prototype quickly to demonstrate capabilities. | | | | small development team, or a project where the |
| You need to be careful when choosing requirements | | | | system can be broken down into individual |
| to deliver in each sprint to ensure that the set | | | | applications that require small teams. RAD is not |
| developed builds a software system that is capable | | | | suitable for large, complex projects or projects |
| of demonstrating the feature set supporting the | | | | where the requirements are not well understood. |
| requirements included. | | | | LSD |
| You also need to ensure that these requirements are | | | | Lean Software Development, or LSD, applies the |
| well known and understood as no changes are | | | | principles of waste reduction from the manufacturing |
| allowed once the sprint starts. This means that any | | | | world to the business of developing software. The |
| changes to the requirements must come through a | | | | goal of LSD is to produce software in 1/3 the time, |
| new set of requirements in the backlog making | | | | on 1/3 the budget, and with 1/3 the defects of |
| changes to these requirements very expensive. | | | | comparable methods. Lean does this by applying 7 |
| This methodology divides stakeholders into 2 groups: | | | | principles to the endeavor of software development: |
| pigs and chickens. The inventors of this methodology | | | | 1. Eliminate waste |
| chose this analogy based on the story of the pig and | | | | 2. Amplify Learning (both technical and business) |
| the chicken - it goes something like this. A pig and a | | | | 3. Decide on requirements as late as possible |
| chicken were walking down the road one morning | | | | 4. Deliver as fast as possible |
| and happened to notice some poor children who | | | | 5. Empower the team |
| looked like they hadn't eaten for days. The | | | | 6. Build integrity |
| compassionate chicken said to the pig: "Why don't | | | | 7. See the whole |
| we make those children a breakfast of ham and | | | | Although Lean Manufacturing has been around for |
| eggs?" The pig said: "I'm not happy with your | | | | some time, its application to the process of |
| suggestion. You're just involved in making the | | | | developing software is relatively new so I wouldn't |
| breakfast, I'm totally committed!" The point to this is | | | | call it a mature process. |
| the product owner, scrum master, and team are all in | | | | LSD would be a suitable method to use where you |
| the "pig" group. All others are in the "chicken" group. | | | | have a subject matter expert in the method who |
| You will be in the "chicken" group if you choose the | | | | has some practical experience in applying lean |
| Scrum methodology as a project manager. | | | | methods to a software development project. |
| Waterfall | | | | "Amplified" learning implies that your development |
| Waterfall methodology calls for each phase of the | | | | team has a depth of knowledge in the software |
| development cycle to be repeated once only. | | | | tools provided, and also a breadth of knowledge that |
| Requirements will be gathered and translated into | | | | includes an understanding of the business needs of |
| functional specifications once, functional specifications | | | | the client. LSD would be suitable for a project where |
| will be translated to design once, designs will be built | | | | the development team has these attributes. |
| into software components once and the components | | | | LSD depends on a quick turnaround and the late |
| will be tested once. The advantage of this | | | | finalization of requirements to eliminate the majority |
| methodology is its focus. You can concentrate the | | | | of change requests, so will not be suitable for a |
| effort of all your analysts on producing functional | | | | project where a delayed finalization of requirements |
| specifications during one period rather than have the | | | | will have a poor chance of eliminating change |
| effort dispersed throughout the entire project. | | | | requests, or the size and complexity of the system |
| Focusing your resources in this way also reduces the | | | | being developed would prevent a quick turnaround. |
| window during which resources will be required. | | | | Extreme Programming (XP) |
| Programmers will not be engaged until all the | | | | Extreme programming places emphasis on an ability |
| functional specifications have been written and | | | | to accommodate changes to requirements |
| approved. | | | | throughout the development cycle and testing so |
| The disadvantage of this approach is its inability to | | | | that the code produced is of a high degree of quality |
| teach the project team anything during the project. | | | | and has a low failure rate in the field. XP requires the |
| A key difference between the waterfall approach | | | | developers to write concise, clear, and simple code to |
| and an iterative methodology, such as Scrum or RUP, | | | | solve problems. This code is then thoroughly tested |
| is the opportunity to learn lessons from the current | | | | by unit tests to ensure that the code works exactly |
| iteration which will improve the team's effectiveness | | | | as the programmer intends and acceptance tests to |
| with the next iteration. The waterfall methodology is | | | | ensure that the code meets the customer's needs. |
| an ideal methodology to use when the project team | | | | These tests are accumulated so that all new code |
| has built software systems very similar to the one | | | | passes through them and the chances for a failure in |
| your project is to deliver and has nothing to learn | | | | the field are reduced. |
| from development that would improve their | | | | XP requires the development team to listen carefully |
| performance. A good example of a project which | | | | to the needs and requirements of the customer. |
| would benefit from the waterfall methodology is a | | | | Ambiguities will be clarified by asking questions and |
| project to add functionality to a system the project | | | | providing feedback to the customer which clarifies |
| team built in the not too distant past. Another | | | | the requirements. This ability implies a certain degree |
| example of an environment that is well suited to the | | | | of familiarity with the customer's business; the team |
| waterfall methodology is a program to maintain a | | | | will be less likely to understand the customer's needs |
| software system where a project is scheduled for | | | | if they don't understand their business. |
| specific periods to enhance the system. For example, | | | | The intent of XP is to enhance coding, testing, and |
| an order and configuration software system which is | | | | listening to the point where there is less dependency |
| enhanced every 4 months. | | | | on design. At some point it is expected that the |
| The waterfall methodology does not lend itself | | | | system will become sufficiently complex so that it |
| particularly well to projects where the requirements | | | | needs a design. The intent of the design is not to |
| are not clearly understood at the outset. Iterative | | | | ensure that the coding will be tight, but that the |
| approaches allow the product owners or user | | | | various components will fit together and function |
| community to examine the result of building a sub-set | | | | smoothly. |
| of requirements. Exercising the sub-set of | | | | XP would be a suitable software development |
| requirements in the iteration's build may cause the | | | | method where the development team is |
| product owners or user community to re-examine | | | | knowledgeable about the customers business and |
| those requirements or requirements to be built. You | | | | have the tools to conduct the level of testing |
| won't have that opportunity with the waterfall | | | | required for this method. Tools would include |
| method so you need to be certain of your | | | | automated unit testing and reporting tools, issue |
| requirements before you begin the build phase. | | | | capture and tracking tools, and multiple test |
| Interpreting requirements into functionality is not the | | | | platforms. Developers who are also business analysts |
| only aspect of development that can benefit from an | | | | and can translate a requirement directly to code are |
| iterative approach. Designing the system and building | | | | a necessity because design is more architectural than |
| it can also benefit from doing these activities | | | | detail. This skill is also required as developers |
| iteratively. You should use the waterfall method | | | | implement changes directly into the software. |
| when your team is familiar with the system being | | | | XP won't be suitable where the development team |
| developed and the tools used to develop it. You | | | | does not possess business analysis experience and |
| should avoid using it when developing a system for | | | | where testing is done by a quality assurance team |
| the first time or using a completely new set of tools | | | | rather than by the development team. The method |
| to develop the system. | | | | can work for large complex projects as well as |
| RUP | | | | simple smaller ones. |
| The Rational Unified Process, or RUP, combines an | | | | There is no law that states you must choose one or |
| iterative approach with use cases to govern system | | | | the other of these methodologies for your software |
| development. RUP is a methodology supported by | | | | project. The list I've given you here is not a totally |
| IBM and IBM provides tools (e.g. Rational Rose) that | | | | comprehensive list and some methodologies don't |
| support the methodology. RUP divides the project | | | | appear on it (e.g. Agile) so if you feel that there is |
| into 4 phases: | | | | some other methodology that will better suit your |
| 1. Inception phase - produces requirements, business | | | | project, run with it. You should also look at combining |
| case, and high level use cases | | | | some of the features of each of these methods to |
| 2.Elaboration phase - produces refined use cases, | | | | custom make a methodology for your project. For |
| architecture, a refined risk list, a refined business | | | | example, the desire to eliminate waste from the |
| case, and a project plan | | | | process of developing software is applicable to any |
| 3. Construction phase - produces the system | | | | method you choose and there is likely waste that |
| 4. Transition phase - transitions the system from | | | | could be eliminated in any development shop. |
| development to production | | | | Be careful to choose a methodology that is a good |
| RUP also defines 9 disciplines: 6 engineering disciplines, | | | | fit for your team, stakeholders, and customer as well |
| and 3 supporting disciplines: Configuration and Change | | | | as your project. Bringing in a new development |
| Management, Project Management, and environment | | | | methodology that your team will struggle to learn at |
| so is intended to work hand in hand with project | | | | the same time they are trying to meet tight |
| management best practices. | | | | deadlines is not a good idea. On the other hand, if |
| Iteration is not limited to a specific project phase - it | | | | you have the latitude you may want to begin learning |
| may even be used to govern the inception phase, | | | | a new method with your project. |
| but is most applicable to the construction phase. The | | | | |