Saturday, January 14, 2012

choosing the Right Sdlc For Your task

Choosing the right Sdlc (Software improvement Lifecycle) methodology for your task is as foremost to the success of the task as the implementation of any task supervision best practices. Select the wrong software methodology and you will add time to the improvement cycle. Adding extra time to the improvement cycle will growth your budget and very likely forestall you from delivering the task on time.

Choosing the wrong methodology can also hamper your efficient supervision of the task and may also interfere with the delivery of some of the project's goals and objectives. Software improvement methodologies are someone else tool in the improvement shop's tool inventory, much like your task supervision best practices are tools in your task manager's tool kit. You wouldn't Select a chainsaw to end the edges on your kitchen cabinet doors because you know you wouldn't get the results you want. Select your software methodology thought about to avoid spoiling your task results.

I perceive that not every task manager can Select the software methodology they will use on every project. Your organization may have invested heavily in the software methodology and supporting tools used to design their software. There's not much you can do in this case. Your organization won't look favorably on a ask to cast aside a methodology and tools they've spent thousands of dollars on because you advise a dissimilar methodology for your project. We'll give you some tips on how to tailor some of the methodologies to better fit with your task requirements later in this article. In the meantime, before your organization invests in software improvement methodologies you, or your Pmo, ought to be consulted so that at least a majority of projects are benefited from a good fit.

This report won't cover every Sdlc out there but we will effort to cover the most beloved ones.

Scrum

Scrum is a name rather than an acronym (which is why I haven't capitalized the letters), although some users have created acronyms, and is commonly used together with agile software development. Scrum is typically chosen because of its iterative nature and its ability to deliver working software quickly. It is chosen to design new products for those reasons. There is typically no role for a task manager in this methodology, the 3 key roles are: the scrum scholar (replacing the task manager), the goods owner, and the team who design and build the system. There is only one role that you would be asked to play if your organization is committed to using this methodology, scrum master. If you should settle that this would of course be the best methodology for your project, you'll have to re-examine your role as task manager. You can whether identify a favorable scrum scholar and return to the bench, or fill the role of scrum master.

Scrum suits software improvement projects where its foremost for the task to deliver working software quickly. Scrum is an iterative methodology and uses cycles called sprints, to build a working system. Requirements are captured in a "backlog" and a set of requirements is chosen with the help of the goods manager. Requirements are chosen based on 2 criteria: the requirement takes priority over others left in the backlog and the set of requirements chosen will build a functioning system.

During the sprint, which can last from 2 to 4 weeks maximum, no changes can be made to the requirements in the sprint. This is one of the reasons that a task manager isn't primary for this methodology. There is no need for requirements supervision because no changes are allowed to the requirements under development. All changes must occur in the requirements set in the backlog.

Scrum will be favorable for software improvement projects where the goods is a new software product. By new I mean that it is new to the organization undertaking the project, not in general. The methodology was industrialized to address a need for a recipe to build software when its primary to learn on the fly, not all requirements are known to the organization and the focus is on delivering a working prototype speedily to demonstrate capabilities. You need to be just when selecting requirements to deliver in each sprint to ensure that the set industrialized builds a software theory that is capable of demonstrating the feature set supporting the requirements included.

You also need to ensure that these requirements are well known and understood as no changes are allowed once the sprint starts. This means that any changes to the requirements must come straight through a new set of requirements in the backlog making changes to these requirements very expensive.

This methodology divides stakeholders into 2 groups: pigs and chickens. The inventors of this methodology chose this analogy based on the story of the pig and the chicken - it goes something like this. A pig and a chicken were walking down the road one morning and happened to consideration some poor children who looked like they hadn't eaten for days. The compassionate chicken said to the pig: "Why don't we make those children a breakfast of ham and eggs?" The pig said: "I'm not happy with your suggestion. You're just complex in making the breakfast, I'm totally committed!" The point to this is the goods owner, scrum master, and team are all in the "pig" group. All others are in the "chicken" group. You will be in the "chicken" group if you Select the Scrum methodology as a task manager.

Waterfall

Waterfall methodology calls for each phase of the improvement cycle to be repeated once only. Requirements will be gathered and translated into functional specifications once, functional specifications will be translated to design once, designs will be built into software components once and the components will be tested once. The benefit of this methodology is its focus. You can couple the effort of all your analysts on producing functional specifications while one duration rather than have the effort dispersed throughout the entire project. Focusing your resources in this way also reduces the window while which resources will be required. Programmers will not be engaged until all the functional specifications have been written and approved.

The disadvantage of this approach is its inability to teach the task team whatever while the project. A key distinction between the waterfall approach and an iterative methodology, such as Scrum or Rup, is the opportunity to learn lessons from the current iteration which will improve the team's effectiveness with the next iteration. The waterfall methodology is an ideal methodology to use when the task team has built software systems very similar to the one your task is to deliver and has nothing to learn from improvement that would improve their performance. A good example of a task which would benefit from the waterfall methodology is a task to add functionality to a theory the task team built in the not too distant past. someone else example of an environment that is well great to the waterfall methodology is a agenda to contend a software theory where a task is scheduled for exact periods to improve the system. For example, an order and configuration software theory which is enhanced every 4 months.

The waterfall methodology does not lend itself particularly well to projects where the requirements are not clearly understood at the outset. Iterative approaches allow the goods owners or user society to peruse the follow of building a sub-set of requirements. Exercising the sub-set of requirements in the iteration's build may cause the goods owners or user society to re-examine those requirements or requirements to be built. You won't have that opportunity with the waterfall recipe so you need to be confident of your requirements before you begin the build phase. Interpreting requirements into functionality is not the only aspect of improvement that can benefit from an iterative approach. Designing the theory and building it can also benefit from doing these activities iteratively. You should use the waterfall recipe when your team is customary with the theory being industrialized and the tools used to design it. You should avoid using it when developing a theory for the first time or using a fully new set of tools to design the system.

Rup

The Rational Unified Process, or Rup, combines an iterative approach with use cases to govern theory development. Rup is a methodology supported by Ibm and Ibm provides tools (e.g. Rational Rose) that keep the methodology. Rup divides the task into 4 phases:

1. Inception phase - produces requirements, enterprise case, and high level use cases

2.Elaboration phase - produces refined use cases, architecture, a refined risk list, a refined enterprise case, and a task plan

3. building phase - produces the system

4. Transition phase - transitions the theory from improvement to production

Rup also defines 9 disciplines: 6 engineering disciplines, and 3 supporting disciplines: Configuration and turn Management, task Management, and environment so is intended to work hand in hand with task supervision best practices.

Iteration is not microscopic to a exact task phase - it may even be used to govern the inception phase, but is most applicable to the building phase. The task manager is responsible for an thorough task plan which defines the deliverables for each phase, and a detailed iteration plan which manages the deliverables and tasks belonging to each phase. The purpose of the iterations is to better identify risks and mitigate them.

Rup is essentially a cross between Scrum and waterfall in that it only applies an iterative approach to task phases where the most benefit can be derived from it. Rup also emphasizes the architecture of the theory being built. The strengths of Rup are its adaptability to dissimilar types of projects. You could simulate some of the aspects of a Scrum recipe by making all 4 phases iterative, or you could simulate the waterfall recipe by selecting to avoid iterations altogether. Rup will be especially useful to you when you have some familiarity with the technology but need the help of Use Cases to help clarify your requirements. Use Cases can be combined with storyboarding when you are developing a software theory with a user interface to simulate the interaction between the user and the system. Avoid using Rup where your team is very customary with the technology and the theory being industrialized and your goods owners and users don't need use cases to help clarify their requirements.

Rup is one of those methodologies that your organization is very likely to have invested heavily in. If that's your situation, you probably don't have the authority to make your mind up someone else methodology but you can tailor Rup to suit your project. Use iterations to eliminate risks and unknowns that stem from your team's unfamiliarity with the technology or the system, or eliminate iterations where you would otherwise use the waterfall method.

Jad

Joint Application Development, or Jad, is someone else methodology industrialized by Ibm. It's main focus is on the capture and interpretation of requirements but can be used to manage that phase in other methodologies such as waterfall. Jad gathers participants in a room to contend and clarify requirements for the system. The task manager is required for the workshop to provide background facts on the project's goals, objectives, and theory requirements. The workshop also requires a facilitator, a scribe to capture requirements, participants who conduce requirements, and members of the improvement team whose purpose is to observe.

Jad can be used to speedily clarify and refine requirements because all the players are gathered in one room. Your developers can avert misunderstandings or ambiguities in requirements by questioning the participants. This recipe can be used with just about any software methodology. Avoid using it where the organization's needs are not clearly understood or on large, complex projects.

Rad

Rad is an acronym for Rapid Application improvement uses an iterative approach and prototyping to speed application development. Prototyping begins by building the data models and enterprise process models that will define the software application. The prototypes are used to verify and refine the enterprise and data models in an iterative cycle until a data model and software design are refined enough to begin construction.

The purpose of Rad is to enable improvement teams to create and deploy software systems in a relatively short duration of time. It does this in part by replacing the former methods of requirements gathering, analysis, and design with prototyping and modeling, the prototyping and modeling allow the team to prove the application components faster than former methods such as waterfall. The benefit of this recipe is it facilitates rapid improvement by eliminating design overhead. It's disadvantage is that in eliminating design overhead it also eliminates much of the security net which prevents requirements from being improperly interpreted or missed altogether.

Rad is favorable for projects where the requirements are fairly well known in enlarge and the data is whether an business or enterprise standard, or already in existence in the organization. It is also favorable for a small improvement team, or a task where the theory can be broken down into personel applications that need small teams. Rad is not favorable for large, complex projects or projects where the requirements are not well understood.

Lsd

Lean Software Development, or Lsd, applies the theory of waste discount from the manufacturing world to the enterprise of developing software. The goal of Lsd is to yield software in 1/3 the time, on 1/3 the budget, and with 1/3 the defects of comparable methods. Lean does this by applying 7 theory to the effort of software development:

1. Eliminate waste

2. Amplify studying (both technical and business)

3. settle on requirements as late as possible

4. Deliver as fast as possible

5. Empower the team

6. Build integrity

7. See the whole

Although Lean Manufacturing has been nearby for some time, its application to the process of developing software is relatively new so I wouldn't call it a mature process.

Lsd would be a favorable recipe to use where you have a subject matter scholar in the recipe who has some practical touch in applying lean methods to a software improvement project. "Amplified" studying implies that your improvement team has a depth of knowledge in the software tools provided, and also a breadth of knowledge that includes an comprehension of the enterprise needs of the client. Lsd would be favorable for a task where the improvement team has these attributes.

Lsd depends on a quick turnaround and the late finalization of requirements to eliminate the majority of turn requests, so will not be favorable for a task where a delayed finalization of requirements will have a poor opportunity of eliminating turn requests, or the size and complexity of the theory being industrialized would forestall a quick turnaround.

Extreme Programming (Xp)

Extreme programming places emphasis on an ability to adapt changes to requirements throughout the improvement cycle and testing so that the code produced is of a high degree of ability and has a low failure rate in the field. Xp requires the developers to write concise, clear, and simple code to solve problems. This code is then fully tested by unit tests to ensure that the code works exactly as the programmer intends and acceptance tests to ensure that the code meets the customer's needs. These tests are accumulated so that all new code passes straight through them and the chances for a failure in the field are reduced.

Xp requires the improvement team to listen thought about to the needs and requirements of the customer. Ambiguities will be clarified by asking questions and providing feedback to the buyer which clarifies the requirements. This ability implies a confident degree of familiarity with the customer's business; the team will be less likely to understand the customer's needs if they don't understand their business.

The intent of Xp is to improve coding, testing, and listening to the point where there is less dependency on design. At some point it is startling that the theory will become sufficiently complex so that it needs a design. The intent of the design is not to ensure that the coding will be tight, but that the assorted components will fit together and function smoothly.

Xp would be a favorable software improvement recipe where the improvement team is knowledgeable about the customers enterprise and have the tools to escort the level of testing required for this method. Tools would comprise automated unit testing and reporting tools, issue capture and tracking tools, and multiple test platforms. Developers who are also enterprise analysts and can translate a requirement directly to code are a necessity because design is more architectural than detail. This skill is also required as developers implement changes directly into the software.

Xp won't be favorable where the improvement team does not possess enterprise determination touch and where testing is done by a ability insurance team rather than by the improvement team. The recipe can work for large complex projects as well as simple smaller ones.

There is no law that states you must Select one or the other of these methodologies for your software project. The list I've given you here is not a totally thorough list and some methodologies don't appear on it (e.g. Agile) so if you feel that there is some other methodology that will better suit your project, run with it. You should also look at combining some of the features of each of these methods to convention make a methodology for your project. For example, the desire to eliminate waste from the process of developing software is applicable to any recipe you Select and there is likely waste that could be eliminated in any improvement shop.

Be just to Select a methodology that is a good fit for your team, stakeholders, and buyer as well as your project. Bringing in a new improvement methodology that your team will struggle to learn at the same time they are trying to meet tight deadlines is not a good idea. On the other hand, if you have the latitude you may want to begin studying a new recipe with your project.

No comments:

Post a Comment