Post navigation

Featured

Dear Reader,
We have decided to focus our blog theme only on Environment and Mountain biking & trekking. All tech and IT blogs will be published in blog section of www.anaghaagilesystems.com website. So for all technology related posts please visit www.anaghaagilesystems.com and for all environment blogs please follow this blog website.

SCRUM is an excellent framework for developing complex software products. Broadly speaking, SCRUM is a collection of ideas related to project management time boxed to provide a high quality working software. Specific to IT, SCRUM is a simple framework for effective team collaboration on complex projects. SCRUM provides a small set of rules that create just enough structure for teams to be able to focus their innovation on solving the product requirements what might otherwise be an insurmountable challenge.

SCRUM Framework is an iterative incremental product development approach where interaction with the environment is allowed, accepts changes to the project scope, technology, functionality, cost, and schedule whenever required. Controls are used to measure & manage the impact of change. SCRUM accepts that the requirements are changing and unpredictable, the working product developed using SCRUM is the BEST possible software, factoring in cost, functionality, timing and quality.

Later, Ken Schwaber and Jeff Sutherland, the co-creators of SCRUM, Ken worked with Jeff Sutherland to formulate the initial versions of the SCRUM development process and to present SCRUM as a formal process at OOPSLA’95.

The SCRUM framework consists of SCRUM Teams and their associated roles, events, artifacts, and rules. Each component within the framework serves a specific purpose and is essential to SCRUM’s success and usage.

SCRUM employs an iterative, incremental approach to optimize predictability and control risk. Three pillars which uphold every implementation of empirical process control are

transparency, inspection, and adaptation.

Transparency:

Significant aspects of the process must be visible to those responsible for the outcome.

Inspection:

Adaptation:

If an inspector determines that one or more aspects of a process deviate outside acceptable limits, and that the resulting product will be unacceptable, the process or the material being processed must be adjusted. An adjustment must be made as soon as possible to minimize further deviation.

SCRUM prescribes four formal opportunities for inspection and adaptation:

- Sprint Planning Meeting

- Daily SCRUM

- Sprint Review

- Sprint Retrospective

Characteristics of SCRUM are as follows

1. Self Organizing Teams
2. Product progresses in a series of month long sprint.
3. Requirements are captured as items in a list of product backlog
4. No specific engineering practices prescribed
5. Uses generative rules to create an agile environment for delivering projects
6. One of the “agile processes”

The essence of SCRUM is

The team is committed to achieve its goal – high quality working software.

The team self organizes itself for meeting its commitment.

The team delivers at each iterative cycle the most valuable features to the product owner.

The team adapts to the changing needs suggested by feedback and retrospective from sprint review & retrospective meeting.

The team’s performance is transparent and can be measured in terms of progress being made.

The team and management honestly communicate about progress and risks.

The SCRUM way of working is based on values of commitment, team spirit, self respect, respect for others, trust and courage. SCRUM never suggest any methodology or engineering practice to teams to do their work but expect team to fulfill the commitment – high quality product.

The SCRUM FRAMEWORK consists of the Team, SCRUM Master and Product Owner.

TEAM is collectively responsible for meeting the commitment of each sprint goal and of the project as a whole.

TEAM

are self organized, self-managing and motivated cross-functional members. The team is fully dedicated to innovate and create working product from product backlog items incrementally within the sprint.

is philosopher, guide to the team, helping the team to implement the scrum methodology for product development. He removes any impediments or hurdles for the team. He makes sure the process is moving. Institutionalize SCRUM process to the complete organization.

PRODUCT OWNER

is responsible for delivering the vision in a way that maximizes the ROI & minimizes the risk, formulates the plan and converts it to product backlog. He responsible to communicate the progress and changes of the working product to all the stakeholders of the Product. PO is also responsible for prioritizing the functionality of the product that needs worked upon by the team.

All work is done in Sprints; each sprint is an iteration of 2-4 consecutive weeks. Each Sprint is initiated with a Sprint planning meeting where Product Owner and Team get together to collaborate what product backlog items needs to be worked upon in next sprint.

All the backlog items that team commits is put into sprint backlog where each product backlog item is divided into multiple tasks in sprint backlog, the tasks in the sprint backlog emerge as the sprint evolves. With Sprint planning, the sprint starts and the clock starts to tick towards Sprint time-box.

The team members needs to attend the DAILY SCRUM meeting and keep the sprint backlog up-to-date. Everyone answers 3 questions in DAILY SCRUM meeting

What did you do yesterday?

What will you do today?

Is anything in your way?

The SCRUM Master updates the Task board based on the briefing in the Daily SCRUM meeting. These are not status updates but commitments in front of peers.

At the end of the sprint, a sprint review meeting is held. the purpose of the sprint review meeting is to demo the working software to the product owner. Product owners discusses with the stakeholders and team potential rearrangement of the Product Backlog based on the feedback. Stakeholders give feedback and identify any new functionality and request additions to the Product Backlog for prioritization.

After this SCRUM Master holds Sprint retrospective meeting with the team, At this time-boxed meeting SCRUM Master encourages team to review, within the scrum process to make it more effective for the next sprint. To track remaining work Sprint Burndown chart is used, This reports remaining estimated workload over the course of the project

To Summarize, SCRUM is a most popular framework of AGILE project management methodologies. It has ROLES (Product Owner, Scrum Master, Team), CEREMONIES/EVENTS (Sprint Planning, Sprint Review, Sprint Retrospective, Daily Scrum meeting) and ARTIFACTS (Product Backlog, Sprint Backlog, Burndown charts). In my future coming articles I will be explaining in detail all the ROLES, CEREMONIES/EVENTS and ARTIFACTS of SCRUM FRAMEWORK till then happy reading and drop me any feedback or comments below.

Agile empowers teams continuously plan their release to optimize its value throughout development life-cycle, so teams are competitive as possible in the marketplace. Development using an agile methodology preserves a product’s critical market relevance and ensures a team’s work doesn’t wind up on a shelf, never released.

A small group of people got together in 2001 to discuss their thoughts about the failure of traditional approach of software development life-cycle and is there a better way to do this? They came up with the agile manifesto, which describes 4 important values that are still relevant today, The use of the word agile in this context derives from the agile manifesto. It says, “we value:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.” Ever since then, the use of methods that support these values has become increasingly popular.
The twelve Agile principles derived from four key values in agile manifesto.

These twelve Agile principles are as follows:

1. To meet the Customer Product expectations through iterative high quality, customer friendly software
2. To accept changes as the come from customer to increase customer’s competitive advantage in the market.
3. Deliver incremental working software to the customer in agreed time-boxes or period.
4. Team is mix of cross functional professionals i.e. both technical and business domain experts.
5. Team works in a highly motivated helpful environment, team enjoys all support & trust during project life-cycle.
6. Most effective communication among team members to convey information between them regularly i.e. daily face to face meeting.
7. Working Product is the only measure of progress.
8. Agile believes in constant iterative development, all the team members & sponsors need to keep up this constant development speed.
9. Continuous focus on Quality & Design Enhancements improves effectiveness & usability of the product being developed.
10. Simplifying the art of identifying the incomplete work is the important factor for continuing the product development.
11. Only the most motivated & highly disciplined self-organizing teams can innovate best designs and specifications for the product.
12. The team effectively adapts itself to ever-changing needs of the project & product requirements.

The real goal of any business is the Quality working software and the way to get there is all these things that Agile principles asks us to do, through a continual process of learning.

In the next article of Agile Framework and Methodologies series I will be discussing about finer details about SCRUM Methodologies.

In this article, I will explain why follow Agile Framework instead of Waterfall. Later I will explain the different methodologies of Agile Framework.
Enterprises following agile development process helps their team to cut risks and to mitigate uncertainty. This has led to cut development time and delivering of relevant high quality product to the current market.

Agile Methodology is becoming popular and catching up with the IT industry because of the following reasons:
1. It helps teams embrace rapid changes & increase adaptability with customers easily.
2. It helps teams to mitigate risks at early stages of product life-cycle.
3. Customers see the visible progress as they are able feel of working software.
4. Customers give feedback at every stage of the product life cycle, since they are part of the product development.
5. Early adaptation of feedback leads to a system that meets the needs of various stakeholders.
6. Complexity of the features are properly prioritized and easily managed by the team.
7. Team has chance to learn from mistakes during each iteration of development.

Using the Agile methodologies helps team to avoid pitfalls of traditional approach such as
1. Stabilization of Product and Releases are too long.
2. Unable to carry out Frequent Code changes
3. Unable to do rework development.
4. Requirements are not clear as client is not involved in every iteration of development.
5. The time difference between requirements taken and product released time was very long, This elapsed time made product irrelevant as market has changed rapidly.

For all the above reasons IT teams are embracing Agile Methodologies and develop new rapidly changing products.

The Different methodologies of Agile Framework are as follows:
1. DSDM : Dynamic System Development Methodology is an agile framework for software projects, it was used to fine tune the traditional approaches. The most recent version of DSDM is called DSDM Atern. The name Atern is a shortening of Arctic Tern – a collaborative bird[citation needed] that can travel vast distances and epitomizes many facets of the method which are natural ways of working e.g. prioritization and collaboration. DSDM addresses the most common failures of information systems projects, including exceeding budgets, missing deadlines, and lack of user involvement and top-management commitment
2. Scrum: Scrum is most popular agile framework in the world, Scrum uses iterative and incremental development model. Scrum concentrates particularly on how to manage tasks within a team-based development environment. Scrum provides the simple framework of basic tenets to solve problems and deliver good results – more valuable software faster.
3. XP : Extreme Programming is a type of agile software development, it advocates frequent “releases” in short development cycles, which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted. The methodology takes its name from the idea that the beneficial elements of traditional software engineering practices are taken to “extreme” levels. Extreme Programming is a software-development discipline that organizes people to produce higher-quality software more productively. XP addresses the analysis, development and test phases with novel approaches that make a substantial difference to the quality of the end product.
4. TDD: Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: first the developer writes an (initially failing) automated test case that defines a desired improvement or new function, then produces the least amount of code to pass that test, and finally refractors the new code to acceptable standards.
5. Lean: Lean is a production practice that considers the expenditure of resources for any goal other than the creation of value for the end customer to be wasteful, and thus a target for elimination. Working from the perspective of the customer who consumes a product or service, “value” is defined as any action or process that a customer would be willing to pay for. Lean is centered on preserving value with less work.
6. Kanban: Kanban is a system to control the logistical chain from a production point of view, and is not an inventory control system. Kanban was developed by Taiichi Ohno, at Toyota, to find a system to improve and keep up a high level of production. Kanban is one method through which JIT is achieved. Kanban became an effective tool in support of running a production system as a whole, and it proved to be an excellent way for promoting improvement.

To close Agile Framework helps teams to benefit like
1. Faster Time to Market.
2. Reduce Uncertainty & Risk.
3. Increase ROI by focusing on Customer Value.
And all the teams who want to carry out Agile can choose one of the above methodologies depending upon their team flexibility and adaptability.
In my next blog article I will explain about Agile Values and Principles.

An enterprise that aspires to respond in real-time should be agile and show affinity towards rapid adaptability. Every passing day end users needs are changing very fast, as they want more than their basic needs. This leads to very dynamic markets.

In this dynamic market, Agile methodology is an alternative to traditional project management like waterfall, typically used in software development. It helps teams respond to unpredictability through incremental, iterative work cadences, known as sprints.

Agile is all about embracing and rapidly adapting to changes, work is performed in a highly collaborative manner by self-organizing teams that embrace and adapt changes to ensure that customer’s needs are truly met.

The idea behind the Agile approach is that of an organization would adapt to dynamic changing conditions by breaking a release into smaller shorter cycles of 1 to 6 weeks called sprints, instead of building a release as in waterfall that is huge in functionality and often late to market making product irrelevant to the changing market.

Agile development methodology provides opportunities to assess the direction of a project throughout. This is achieved through regular cadences of work, known as sprints or iterations, at the end of which teams must present a potentially working product incrementally.

In waterfall methodology, development teams only have one chance to get each aspect of a project right. In an agile paradigm, every aspect of development is constantly reviewed throughout the lifecycle. When a team stops and re-evaluates the direction of a project every two weeks, there’s always time to steer it in the right direction.

To understand better, every IT Professional is his career would have come across this question:

Can a Client envision his product features completely before interacting with working prototype ?
Many development teams have realized the solution for this a hard way and struggle to provide a proper fix for the product when the product is in the last stages of development, making the software irrelevant at the end of the project since the business realities would have changed rapidly. This scenario would lead to huge losses to the customer as well as the development team. This situation is very familiar to the teams who have been following the waterfall development cycle. In waterfall, teams have only one chance at the begin of the product development cycle to interact with the business to ensure that the project is moving in the right direction. This leaves the development team & the client to take huge risk and uncertainty as business requirements keeps changing rapidly.

Main difference between traditional approach like Waterfall Methodology & Agile Methodology is that
1. Team work in linear phase as in relay race.
2. Each phase is succeeded by another phase sequentially.
3. Traditional team have numerous specialized teams which rarely interact and collaborate for project ultimate goal.
4. At the end the Feedback is taken

In Agile
1. Team work is iterative & incremental as in rapid race.
2. No phase development, Multiple features of product are prioritized and worked incrementally & simultaneously by the team to complete features in working software.
3. Team is composed of mixed skills focused on completing on the committed features
4. Feedback is taken at each incremental sprint in during sprint review meetings from the business and the customer.

In 1970, Dr. Winston Royce presented a paper entitled “Managing the Development of Large Software Systems,” which criticized sequential development. He recommended against the phase based approach in which developers first gather all of a project’s requirements, then complete all of its architecture and design, then write all of the code, and so on. Royce specifically objected to this approach due to the lack of communication between the specialized groups that complete each phase of work.

Agile empowers teams to continuously revise their release plan to optimize its value throughout development, allowing them to be as competitive as possible in the marketplace. An agile development preserves a product’s critical market value and ensures a team’s work doesn’t wind up on a shelf, never released.

In Agile Software Development, Each cycle is called an iteration, or sprint, and it’s almost like a miniature software project of its own, because it includes all of the tasks necessary to release the incremental new functionality. At the end of each sprint, the product should be ready for a GA release.

In addition, one of the most broadly applicable techniques introduced by the agile processes is to express product requirements in the form of user stories. Each user story has various fields including an “actor”, a “goal” or task that they need to perform, an explanation of “why” it is needed and the associated value, and a corresponding “priority”.

Most agile teams include all the people necessary to release software. Typically an agile team will also include a testers, interaction designers, technical writers, and programmers.

At a minimum each agile project has, team of programmers and the group they are developing the application for, i.e. “customers”, customers define the product; a.k.a product owners. And to facilitate between product owners & the team there is Scrum Master. Scrum Master plays a pivotal role, he is guide, philosopher, friend to the agile team, helping the team to complete the commitments in the rapidly changing requirements.

Agile Methods are used in:

Large scale enterprise software projects

Consumer software products

US FDA approved software

High Availability Systems

Financial Payment Applications

Multi Location development

Non Software Projects

Overall, Agile is a management framework to develop a product usually it is software product. Agile can be implemented in projects where market is dynamic and requirements from the customers keep changing, in this scenario the final working product is of high quality and very much relevant to the current market needs. Agile development can be a very exciting and exhilarating approach. The collaboration and visibility offers a much more rewarding richer experience for teams to develop great software products.

This is first article of 10 part series of article on “Agile Framework and Methodologies”.

In the next I will explain the why Agile should be used and different Methodologies already existing in the IT Industry.

As the Earth warms, the amount of rain or snow falling in the heaviest one percent of storms has risen nearly 20 percent on average. The findings about effects of Global Warming show that the combined effects of warming and predation could lead to more widespread extinction than are currently predicted, as animals or plants are unable to shift their habitat ranges. Dubbed the “deadly dozen,” sicknesses such as Lyme disease, yellow fever, plague, and avian influenza, or bird flu, may skyrocket as global shifts in temperature and precipitation transform ecosystems.”Most of the increase in disease is due to pollution by chemicals and biological wastes, and shortages of food and nutrients — and global warming will only make matters worse.”Impacts from increasing temperatures :

•Researcher Bill Fraser has tracked the decline of the Adélie penguins on Antarctica, where their numbers have fallen from 32,000 breeding pairs to 11,000 in 30 years. •Ice is melting worldwide, especially at the Earth’s poles.

What is Type in .NET Framework The .NET Framework is built around types. A type in .NET is a class, structure, interface, enumeration, or delegate. A type is the fundamental unit of programming in .NET. In C#, a type can … Continue reading →

Today, applications are created using the types developed by Microsoft or custom built by you. If these types are developed using any language that targets the common language runtime (CLR), they can all work together seamlessly, i.e. different types created … Continue reading →

Introduction The Common Language Runtime (CLR) How Common Language Runtime Loads: IL and Verification: Unsafe Code The NGen Tool The Framework Class Library The Common Type System The Common Language Specification Introduction This is one of my initial blogs on … Continue reading →

Bridge Pattern The bridge pattern is a design pattern used in software engineering which is meant to “decouple an abstraction from its implementation so that the two can vary independently”.[1] The bridge uses encapsulation, aggregation, and can use inheritance to … Continue reading →

Adapter Pattern Two different objects have unfriendly interfaces and then we introduce adapter to communicate and interact between them without any changes to the existing interface of the two objects. Adapter converts the interface of a class into another interface … Continue reading →

Abstract Factory A factory class helps us to centralize the creation of classes and types. Abstract factory helps us to bring uniformity between related factory patterns which leads more simplified interface for the client. Abstract factory expands on the basic … Continue reading →

Design patterns are documented tried and tested solutions for recurring software problems in a given design context. So basically you have a problem to be solved and the proposed solution in the form of design pattern for the same problem. … Continue reading →

Annontations of C# Fundamentals: In this blog I have written breifly about each of the fundamental features of C# Programming language, I feel the annotations listed below highlights some of the fundamental features of every .NET developer should know before he … Continue reading →

Generic Programming is a methodology for the development of reusable software libraries and API’s which are highly efficient and composable. The Generic Programming helps develop multiple libraries which can be combined seamlessly without any modification to any of the interface … Continue reading →

Recursion is a process which evaluates an object in terms of a simpler case of itself is called Recursion. The recursive algorithm invocation must eventually reduce to some computation of one or more simplest possible, non-recursive cases. Every Recursion contain … Continue reading →

This is my first blog, so I thought of writing the blog on creating awareness about our environment and stop GLOBAL WARMING. I wonder whether we would live for another 100 years. I wonder whether our children would have properly … Continue reading →

Like this:

There is a festival time ahead for all .NET Developers. With lots of Launching Events coming in next two quarters, it is going to be a very hectic and pleasant surprises for all Microsoft Developers. I think this year at October would be one of the major events taking place post Bill Gates Era. So every Microsoft fan would be very anxious to watch and enjoy the events unfolding in the next coming months. Following are the some of the major events which I would be keenly following

To keep pace with the range of products and development tools that will be made available from Microsoft in the coming two quarters, Visit some of the resources of Microsoft that can be used to develop world class .NET Software and Windows 8 Apps.