Category Archives: Agile Development

Agile Software Development

07 Jun, 2010
Written by Effie Sha
Beijing RayooTech Co., Ltd.

What is Agile Software Development
Agile Software Development (ASD) is a methodology in software application development for the creative process that anticipates the need for flexibility and applies a level of pragmatism into the delivery of the finished product. Agile software development can keep code simple, testing often, and delivering functional bits of the application as soon as they’re ready. ASD focuses on building upon small client-approved parts as the project progresses, as opposed to delivering one large application at the end of the project.

Key Features of Agile Software Development
- Iterative: Iteration is an entire application distributed in incremental units. Development time of each iteration is small (for example couple of weeks) fixed and strictly adhered to. Every iteration is a mini increment of the functionality and is build on top of previous iteration.

- Active Customer Involvement: Clients can participate in face-to-face interaction of agile software development. All Iteration needed to test and approved by clients. The feedback from clients will be collected and implemented in the next iterations, and doing this can reduce risks and ensure higher client satisfaction.

- Feature Driven: More emphasis is on providing the required features in the application. 80/20 principle is applied to decide the 20% features which would be used 80% of the time.

- Fixed Time: Each iteration has a fixed time range in delivery.

- Priority based delivery: According to client need prioritization of features and development risks etc, high priority features will be developed firstly. The project priorities will be re-evaluated after every iteration process.

- Adaptive: The application can cater to inflow of new requirements throughout its development because the methodology in general is very adaptive. Goal is not to remove the uncertainty in the very beginning, but instead, it is to adapt to the changing needs.

- Empowered Teams: Usually, the project teams are small and have frequent interaction and communication. No separated team to manage project due to entire team is actively involved and empowered to make decisions.

- People Centric: Using the appropriate experts to do the development more than just following the development processes. Then there will be more time to develop and test software, minimized the documentation and other non-development activities.

- Rapid Development: Light weight development technologies make the development be done quickly.

- More Disciplined: The whole development process involves lots of team and self discipline which requires highly skilled and organized team members in order to deliver each part of software correctly in time.

- Simplicity: Keeping things as simple as possible and ready to open for any changes.

Agile vs. Waterfall: Practical Differences in Methodology
As the industry learned more about software development, development technologies for managing and predicting the cost of projects came into use. The methodology that has dominated software development projects for decades is called ‘waterfall’. In 1970, Winston Royce described a serial method for managing software projects through the five stages shown in the following figure:

One of the most important differences between the agile and waterfall approaches is that waterfall features distinct phases with checkpoints and deliverables at each phase, while agile methods have iterations rather than phases. The output of each iteration is working code that can be used to evaluate and respond to changing and evolving user requirements.

Waterfall supposes to have well understanding of the requirements at the beginning. However, in software development, usually, stakeholder have no idea what they want and their exact requirements. With waterfall, project development team rarely delivers what the client wants even it is what the clients asked for.

Agile methodologies introduce iterations. Software project development team works with stakeholders closely to define prototypes, concepts or other visual elements to solve problems. The project development team defines the user requirements for the iteration, develops the code and test application, finally, clients verify the results.

Benefits to the Client
- Clients are more actively involved in software development than ever and get higher priority.

- Regular and frequent application status and situation will be sent to clients immediately.

- Requirements are accepted after each iteration

- The key functionalities can be available to use as soon as possible since the methodology emphasizes rapid delivery.

- Delivery is defined by fixed timescale. Clients will receive functionality by a fixed time period.

- More testing is done, higher software quality is delivered.

Benefits to the Software Development Teams
- Software Development teams are involved more actively in all stages. The teams collaboratively take the decisions and are more empowered.

- Teams can focus on the specific requirements at any given point of time since the software development is incremental.

- Software development team would spend more attention on project development, not on documentation.

- The teams will receive feedback frequently to promote software project efficiently.

- Spending less time to collect requirements as these requirements are not gathered upfront and are implemented as and when they arise.

- Spending less time to make plans.

- Other non-development work related cost will be reduced.

[ All rights reserved, reprint, please specify source and the author. Thank You. ]

China Software Outsourcing CompanyDownload ‘ Agile Software Development ‘ Article

Did you like this? Share it:

The development of Agile & Scrum Tolls

Currently, an agile training and scrum certification company has released five free agile and scrum tools ScrumMasters which can help Agile teams planning and prioritizing software development projects.

The five tools: a velocity range calculator, relative weighting worksheet, theme scoring tool, theme screening tool and project success sliders, have all been developed to help Agile and Scrum teams stay on time, on top of projects and build better plans with confidence.

“Software development plans created with a 90% confidence interval, are more likely to be accurate than plans created with a point estimate of velocity.” The creator of these Agile tools said. Who has rich experience in the development of Agile & Scrum.

Source: http://refcardz.dzone.com/?oid=bming728_3_blue

Did you like this? Share it:

Getting Started with Agile Software Development

 

Agile development practices can greatly benefit any software development effort. By its very definition, an agile practice allows teams to switch gears with relative ease compared to earlier methods such as the waterfall design process. However, for a team — or even an individual — making the change to agile practices can be quite intimidating. Here’s some tools and tips to get you started.

Continuous Integration
One of the cornerstones of any successful project is ensuring changes don’t break the build. Incorporating a continuous integration system automates the build and testing process so that developers can make their changes to a project and find out fairly quickly (usually within minutes) whether or not they broke other parts of the application.

The Hudson Continuous Integration System is an open source Java-based build server. It includes a large core feature set capable of handling most projects, and also has a large set of community developed plug-ins to extend the system in ways that make it virtually indispensable.

Other good build systems to check out are Cruise Control (also Java-based) and it’s related .NET project, CruiseControl.NET.

There’s several other decent continuous integrations servers available; be sure to test out a few before committing to one, as they all have different strengths and weaknesses.

Project/Feature Tracking
One of the core requirements of a good agile environment is keeping track of what’s requested, what’s planned, and what’s being worked on. There are countless ways of tracking different project features, ranging from simple Word documents and Excel Spreadsheets to full-fledged, high-end commercial management systems.

A good application to start with for a new agile team is the ScrumWorks system. It’s available in both a paid professional version and a limited free version, both of which offer a good feature set to
get your agile process off the ground. It allows keeping track of iterations and releases, a backlog of items planned for future development, and individual tasks required for each feature implementation.

Again, there’s a lot of great software available for project management, and even though ScrumWorks is a good starting point, you would be well served to look around for other systems. Every team is different, with different strengths and weaknesses; find one that plays well to your needs.

Regular Meetings
A lot of developers hate meetings, mainly because it takes away from what they love to do: write code. Unfortunately, regularly scheduled meetings are necessary to keep development teams on task. Certain agile practices, such as Scrum, recommend short meetings every day to cover what each developer has worked on previously, what they’re planning on working on that day, and what (if anything) is holding them up.

In most agile practices, development is normally broken up into sprints or iterations. These are normally 2-3 weeks, though they can be any reasonable length of time. At the beginning of each sprint, the team holds a fairly lengthy set of meetings. These cover what was accomplished in the previous sprint — normally involving non-developers who have an interest in the work — and what the teams are planning on accomplishing in the next sprint.

These regular meetings will definitely seem to be a waste initially, as most developers who aren’t used to an agile environment will see little point in them. After some time, however, the benefits will be noticed as developers begin to get better understandings of what the features are supposed to accomplish, and the rhythm of the iterations will keep the team focused in delivering usable functionality on a regular basis.

Patience

This is by far the most important requirement in converting to an agile development method. In the initial stages, it will be hard to keep to the schedules, as most of those involved are used to delivering functionality on a mostly random basis (generally "as soon as humanly possible, if not sooner"). It’ll take time for everyone to get used to having to wait. It’ll also take time to get used to the procedures involved, and to using different management tools — especially if the primary management tools had always been email and notepads.

Depending on the size of the development team and those involved in the development process, getting used to the agile procedures can take months or even years. But it will pay off, and the development process can start to see noticeable improvements in even a couple of sprints if the development team is committed to converting to the new process.

Get Going!
A lot of managers and companies have a hard time bringing themselves to start the conversion. There’s always a "better time" in the future — after this project is finished, or we’ll do it for this other project coming up. The best time to start with agile development is now. It won’t be any easier in the future — there will always be another project that needs to get finished, or another project that might be a "better" candidate for agile processes. If you keep waiting for the "right" time, you’ll never get started, and you’ll never get to reap the benefits that agile development can bring for you.

Source: http://www.associatedcontent.com/article/5552128/getting_started

_with_agile_software.html?cat=15

Did you like this? Share it:

Agile Manifesto

Source: http://agilemanifesto.org/

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.

Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

Business people and developers must work together daily throughout the project.

Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

Working software is the primary measure of progress.

Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

Continuous attention to technical excellence and good design enhances agility.

Simplicity–the art of maximizing the amount of work not done–is essential.

The best architectures, requirements, and designs emerge from self-organizing teams.

At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Did you like this? Share it:

Agile software development is now mainstream

by Paul Krill, InfoWorld

A new Forrester report finds widespread use of the iterative software development processes

Agile software development  processes, in which software is built in short iterations rather than mapped out fully in advance, have joined the mainstream of development approaches, according to a Forrester Research report released this week.

Forrester surveyed nearly 1,300 IT professionals and found that 35 percent of respondents stated that agile most closely reflects their development process, with the number increasing to 46 percent if the definition of agile is expanded to include practices such as rational unified process or spiral.

[ InfoWorld reported last year that while agile programming is beneficial, it will nonetheless ruffle feathers. ]

“Perhaps the clearest sign of the mainstreaming of agile is the abandonment of orthodoxy: Teams are puzzling out the mix of methodologies and combining them to fit within their organizational realities, blending agile and non-agile techniques and practices to create a hybrid methodology that fits larger organizations,” according to the executive summary of the report, which is entitled “Agile Development: Mainstream Adoption has changed Agility.”

“It’s time for software development professionals to stop sitting on the fence where agile is concerned. According to those who have successfully adopted agile, the benefits are well worth the effort, and with the recent dramatic increase in agile adoption, the probability of working in or with an agile team has increased for everyone,” Forrester said.

The favored agile methodology, scrum, was used by nearly 11 percent of respondents. “Scrum focuses on how people work instead of on the work that they do, and it relies on the principles laid out in the Manifesto for Agile Software Development,” Forrester said.

However, teams are choosing parts of different process models.

“Most teams are not adopting scrum, extreme programming, or another specific Agile approach, but are embracing agile as an ethos or philosophy and cherry-picking the best bits from many different process models to develop a formula unique to their own situation,” according to the report.

Did you like this? Share it:

Agile programming: Beneficial, but it’ll ruffle feathers

[InfoWorld reported last year that while agile programming is beneficial, it will nonetheless ruffle feathers.]

By Paul Krill | InfoWorld

Workshop attendees say that the iterative software development methodology provides enormous flexibility, however it will displease some developers.

In Agile programming teams build software in short iterations instead of mapping everything out in advance from beginning to end, and it offers benefits like flexibility while also poses organizational challenges, stressed by speakers at a workshop Thursday.

During an event at IBM offices in San Mateo, Calif., viewpoints on benefits and issues confronted when moving to an agile paradigm were posted by speakers from the agile development space.

“I think the challenge, whenever we try to encapsulate a short definition of agile, is that it expands in a lot of directions. Really, it’s a set of umbrella terms for a set of approaches that are going to be iterative, incremental and collaborative,” said Rich Mironov, chief marketing officer at agile consulting firm Enthiosys.

In accordance with Mironov’s presentation, the features of agile technologies focus on the frequent delivery of smaller, valuable increments and build quality in instead of adding it in at the end. Part of the process is user’s active involvement, and teams must be empowered and self-motivating. Benefits include strategic flexibility, improved team morale, deeper connection, and alignment with markets and greater profitability.

Through more direct involvement with customers can better market alignment be achieved, while profits can be increased since agile enables more software to be shipped at a higher quality and more products to be built with fewer resources, explained Mironov.

Though agile also enables early identification of project failures, it will not please everyone on the development team, Mironov said. “I haven’t seen [anybody] go through a transformation where everybody came out the other side happy. You’ll lose some folks because it’s not a style fit or they weren’t very good and you may not fit with agile. Expect some fallout or some people who need to move to the part of the organization that’s not going this way,” he added. .

At the same time, collaborative software tools will be necessary when involving remote development teams in agile projects

An audience member emphasized how agile can face opposition.

“My experience with agile is there’s a lot of resistance to it because it’s not the way we’ve done things before,” said Ryan Grisso, software engineering manager at NetSuite, which uses an agile approach and makes a hosted business application.

Johnny Scarborough, vice president of product engineering at GlobalLogic which provides software development services, touted Scrum, one of the more popular agile methods.

Among the features of scrum, there are an agile software development framework and a “ScrumMaster,” that directs the team how to use scrum as well as to serve and protect the team. No specific engineering practices are regulated. Teams are self-organizing and cross-functional when in scrum, Scarborough said. “This is a cultural change in a lot of organizations,” said he.

“Scrum is about being adaptable,” Scarborough said.

Did you like this? Share it:

Agile development needs a new testing strategy

IT Web

Recent studies have confirmed the increased popularity of agile software development. For test managers accustomed to the traditional waterfall approach, this means a change in testing strategy.

Automated software testing will play an important part in the new test strategy, specifically in agile software development projects.

Adopting agile poses some challenges to testing and specifically to automation. In traditional automation, an automation specialist will automate a test as part of the regression suite, after the test has been executed manually by a test analyst. This approach still has its place in agile, but not as the only use of automation in the testing department.

Empower testers

An automation tool in the right tester’s hands can add enormous value to the manual testing effort. Computer-assisted testing focuses on tools to empower a tester to test better and faster.

Not all testers have development skills, but most junior testers entering the market today have these skills, and computer-assisted testing will benefit them the most.

I have seen a tester pair with a developer for one sprint. Both understood what was required and set about performing their particular tasks. While the developer did the coding, the tester developed the test cases, and then wrote a data-driven script to execute these test cases on the GUI. On completion of the development task, the automation script was executed against the development environment.

Almost 30 defects were found on the first test iteration. The good news: the developer could fix these immediately, recompile and retest using the same automated script. This also freed up the tester to focus on integration and exploratory testing.

This approach might not work for every story, or even every sprint, but it proves that automation can add value earlier and not just after the story is marked as done. The challenge will be to identify tasks suitable for automation.

As we adopt agile, we need to change our automation strategy.

Strategy

For automation to succeed, there must be an effective strategy covering tools and resources using these tools, and how both of these add value to the overall testing strategy. Automating everything might be a strategy, but not an effective one. It will not only create a maintenance nightmare, but it will be very expensive and take a long time.

As with any project, automation benefits must be measured in relation to their cost and also to what extent the original objectives have been achieved. Before embarking on any automation exercise, be clear on why automation is considered in the first place.

For example: if the objective is for automation to cover regression testing, ensure there is no duplication of effort in the manual testing strategy. Don’t spend money on something that is not going to be used or add value.

An effective automation strategy will focus on immediate, short- and long-term benefits:

Immediate benefits (small investment, long-term benefits): Scripts that take one or two days to develop and can add value immediately, such as scripts that will assist testers to set up test data, which normally would have been a time-consuming task, and scripts developed when pairing with a developer in a sprint.

Short-term benefits (medium investment, long-term benefits): Scripts that can perform environment build verification or smoke testing. These scripts will test basic functional areas of an application after every new build, and should execute in under 15 minutes. A variant of the smoke test script can be a mission-critical verification script, which executes against high-risk areas of an application.

Long-term benefits (long-term investment, long-term benefits): Regression test suites covering horizontal and vertical tests within the application. Horizontal scripts will cover high-level functionality across an application, and vertical scripts will test each high-level functional area in depth.

The testers of the future will use automation tools on a daily basis, not just for regression testing, but also functional system testing. This will create more challenges, especially in companies using traditional, heavyweight, costly record-and-playback tools because expensive user licenses will not be available to every member of the testing team. An alternative is to use open source test tools for sprint testing, and commercial tools to handle the regression test suite.

Did you like this? Share it: