10 Advantages Of Agile SDLC

Long since software development has come into mainstream it has primarily followed sequential development techniques through the development lifecycle. To be very specific, the SDLC (or software development life cycle) has followed waterfall approach most, where each phase of SDLC is completed before the next stage begins. For example, before any coding begins, the requirements gathering and the architecture design are completed. Though this ‘assembly line’ approach to software development was advantageous in early days of software industry it seems to be getting obsolete for the current generation of software development needs.

In today’s world, traditional SDLC models such as waterfall model, pose a lot of challenges and limitations. It limits the teams from revisiting the stages of SDLC as the traditional approach allows the teams to finish every stage before beginning the next stage. The teams do not revisit the previous stages. The fast paced technological changes in our markets, the increased use of embedded software in devices and the ever increasing uncertainty in the market place makes it impossible for the customers to provide all the requirements at the beginning of the SDLC. By the time the software is estimated to be ready, if developed via waterfall SDLC, it is quite likely that the feature/functional requirements of the software become irrelevant for the customer by the time the software is released.

Agile SDLC evolved out of these experiences in the real-time project development by some of the software development protagonists. Agile methodologies propose to develop software through iterative approach. The entire SDLC is followed in incremental way by dividing the SDLC into cadences of work. At the end of each cadence or iteration the teams deliver a shippable piece of incremental work to the customer. This process leaves enough scope to keep requirements gathering a continuous process and helps the stakeholders determine the course of the software being developed. Unlike the traditional software development approach, in Agile the teams revisit the complete SDLC as a result of providing iterative incremental work that is shippable at the end of every iterative piece.

Together the advantages of Agile SDLC can be listed as under:

  1. Agile helps to speed up the SDLC phases and bypasses process steps that add little value to the project.
  2. Usually Agile methodologies promote less formal culture and encourage collaborative team approach.
  3. Agile facilitates smooth flow of knowledge sharing.
  4. Engages the stakeholders continuously so that the new requirements are gathered faster and there is no scope for guess work by the teams.
  5. It incorporates frequent and rapid changes into the SDLC for product functionality and features.
  6. Saves cost, time and efforts by following iterative incremental work delivery and thereby identifying deviations early.
  7. Redistributes leadership at various levels within the teams.
  8. Increases cohesion between the teams to deliver on time.
  9. Follows crisp and flexible documentation policies which save time.
  10. Provides the end result of higher quality of the software delivered and a highly satisfied customer.

Looking at all the advantages and the limitations (of the traditional SDLCs) that Agile overcomes for today’s development landscape, it is understood that most of the Web 2.0 e-commerce and web applications are being developed using Agile SDLC. According to an article on PR Web, industry leaders such as Xerox and Microsoft have switched over to Agile methods simply because it saves them cost and also produces better products. If your company is still following traditional models such as Waterfall model, then the inefficiencies in your development processes will be obvious and you may not be able to meet the customers need precisely.

Please share us your thoughts on whether Agile SDLC should be followed by all type of organizations in the industry.

Key Practices for Agile ALM for Improving Productivity

We have been talking about Agile ALM for quite some time now. Of course we believe that the Agile ALM will become a requisite for accelerated application delivery coupled with superior software development quality. In fact, the future of application development or software engineering holds a strong case for hosted Agile ALM.

The few crucial technology trends have changed the needs of the businesses. It is a pressing need for the businesses to be able to adapt to the market changes and deliver faster to stay ahead of competition. Hence they need to build a capacity to switch to new software and place processes at a faster pace. This creates a demand for developers of the vendors or in-house teams to be more productive. This increased developer productivity can be achieved only when it is supported by appropriate processes and tools.

All these reasons not only make it necessary to use ALM by all types of businesses, it requires vendors to integrate Agile methodologies in the ALM tools and adopt some key practices to implement Agile ALM which support people and processes for improving productivity.

Traditional ALM has always enforced pre-defined standardized processes through tools and people had to adopt software development based around the processes and tools. The end result of software delivery would never be what the customer has been looking for. Though the pre-defined processes would concentrate on maintaining certain levels of quality, often it would lead to delayed production and sub-optimal delivery of software to the end-user. But the traditional method of using ALM will not work in the wake of new trends. Organizations which focus on supporting people and processes through Agile ALM will improve productivity and therefore beat the competition.

”]More agility and impromptu strategies to evolve project specific processes is required in software development lifecycle. It is almost similar to the experiences originating from field sports.  The word Scrum (part of Agile methodologies) has actually been derived from Rugby.

Agile methodologies focus on developing processes and supporting people through tools. They focus on continuous delivery of the software so that the end-user feedback is received at early stages and the changes can be incorporated faster. It is important that Agile is combined with ALM to achieve increased developer productivity. A successful roll-out of Agile ALM requires its vendors to equip organizations by incorporating scope for following suggested vital practices. These practices are based on few of our observations and are congregated from the whitepaper – Redefining ALM with five key practices – published by ThoughtWorks Studios:

Evolve Processes

Agile ALM recognizes that the processes for two different software engineering projects cannot be same. Hence Agile ALM tools must be such that they enable the teams to discover and build their processes progressively. The Agile ALM tools must enable the teams to construct possible roll-ups for reviewing and governance which gives them a chance to reflect and improve upon their processes and also incorporate changes at short intervals that may be suggested by the stakeholders. This flexibility for continuous improvement is essential in Agile ALM tools so that the true benefits of Agile ALM are derived by the organizations implementing it.

Incorporate Heterogeneity

The second good thing about Agile ALM is that it appreciates presence of heterogeneity in different projects. For example, if an organization from Life-sciences industry wants to launch a new SaaS CRM product, then development work may happen based on loosely defined requirements. In this case, the team will need to come out with a prototype, only to improve it based on continuous feedback from a focus-group. On the other hand, if the same organization wants a feature enhancement in an existing product, then the team will have to work on very strict defined processes. Therefore, heterogeneity of situations makes it necessary that the Agile ALM tools also embrace heterogeneity so as to let different teams evaluate and build their own processes.

Collaborative Approach to Management

Flexibility to evolve processes under heterogeneous projects also facilitates collaboration among the team members and stakeholders at every stage of the software lifecycle. The collaborative approach of Agile ALM ensures continuous delivery of features weekly or even daily. It makes sure that the end product does not deviate from the requirements laid down by the end-users. Agile ALM tools should facilitate orchestrating of the entire development lifecycle, instead of stiffening the teams with pre-defined processes that come with traditional ALM tools.

What do you think should be a part of best practices for rolling-out Agile ALM in organizations? Please share your thoughts.

Cloud ALM – An Enterprise Market Disruption Strategy for SMEs?

The biggest problem that SMEs face today is that the playing field is not leveled for them. SMEs typically take a beat from the large enterprises at the technology and the scalability front. Due to lack of up-to-date technology and constraints for scaling up rapidly, SMEs always find expanding their business as the real challenge.

The high upfront cost of buying licenses for owning the IT or getting customized software application developed does not permit the small players to automate processes completely and competitively. Yet the ALM as a process is necessary requirement even for the SMEs to be competitive in the future. This argument will be understood in much stronger way if you refer to the following two articles:

  1. Application Lifecycle Management through Cloud and Agile – A Case for Hosted Agile ALM
  2. Rise of Developer Platforms – A Paradigm Shift

Historically, software development has grown more complex and the tasks involved have developed the need to automate the complete software development cycle. Early on, the automation started with development of tools to control and manage source code versions, based on the Source Code Control System (SCCS). Software development needs further evolved and gave shape to Integrated Development Environments (IDEs). All these efforts were to automate and integrate the features of the SDLC and thereby maximize the productivity of developers.

Moving on, the software development has further felt the need to integrate other stages outside the core of software development but which are closely involved in shaping an application. These are requirements gathering, architecture designing, deployment and management, and these together form the basis for Application Lifecycle Management (ALM).

ALM does not happen as a single step in a single instance, but it happens at various stages engulfing the traditional SDLC and reaching beyond. In order to automate the processes SMEs usually invest in buying tools that fit best in their overall ALM strategy and then try to integrate them. But wouldn’t it be better if the ALM functionalities required for automation were built in a single platform and that was also available in cloud?

So, can ALM Platforms in the cloud bring the change that the SMEs are looking for? Yes, certainly it can. It can level the playing field for the SMEs. Since cloud computing provides reduced cost of using technology, it can be the answer to the prayers of many SMEs. Here are some benefits why I think Cloud ALM will be the business disruption strategy for SMEs:

Low Capital Investment

Utilizing IT services on pay-per-use reduces the upfront capital investment drastically as utilizing IT in the cloud comes at a fraction of the cost of buying on-premise IT infrastructure. It releases much of your budget for other business functions. This gives plenty of scope for the SMEs to become more competitive vis-à-vis the larger enterprises.

Improved Productivity

ALM tools, which integrate the complete application lifecycle and make application development a more managed business process, enable SMEs to improve the developer productivity. The developers can focus more on business requirements and programming than on mode switching due to use of disconnected tools for various processes in the entire application lifecycle. As explained in the earlier point, the ALM tools in the cloud can further add to the appeal – improve operational efficiencies of the SMEs – to make it a tool of top choice.

Robust Scalability

Most of the time SMEs are not able to scale up and hence they lose business to larger enterprises. Since business is variable and uncertain, SMEs would not want to invest further if there is no certainty of long-term ROI. With hosted ALM tools it becomes easy to scale-up because cloud gives you the option of scaling up or down as per your business requirements with just a click of a button. So you need not invest heavily just for scaling up for one of your customers by opting for traditional way of owning IT.

Our team at BootStrapToday has done immense research on software development and, coupled with our own programming experiences, have integrated features like Version Control, Tracking System, Milestones, Git & Subversion Hosting, and Knowledge Repository, and have weaved intelligence in our ALM Platform. We are developing an Integrated and Intelligent ALM platform for complete project management, and which is already available as SaaS and has an option for in house set-up also.

What is your take? How do you think ALM will chart the future of software development? Share your thoughts here.

Application Lifecycle Management through Agile and Cloud – A Case for Hosted Agile ALM

Application Lifecycle Management (ALM) has evolved through years and is going to witness a landmark change in its form 2012 onwards. ALM, by definition, is a process of managing the entire lifecycle of software engineering through governance at various stages. These stages of software engineering include requirements gathering, architecture designing, coding, testing, debugging, and release management. The ALM is actively supported by tools and is said to improve developer productivity and software quality as the team follows best practices throughout the software development lifecycle.

ALM is seen best accepted by organizations dealing with larger projects (i.e., the large enterprises), and does not sell very well with the SMEs. But once the ALM tools are offered as SaaS Agile ALMs, the resistance by SMEs in adopting ALM will reduce.

Since ALM is a process it continues to evolve. The best practices keep getting introduced as part of ALM processes. Agile methodologies are also now into mainstream with various styles of its adoption into application development lifecycles by various organizations. It has been noted that the Agile methodologies should be integrated into the ALM processes in order to bring about a combined synergic value (following the dogma of ‘the whole is greater than the sum of its parts’ by Aristotle) for increasing developer productivity and software quality along with reduced time to the project release.

The biggest problem of available ALM stack solutions is that they are too tool-heavy. Agile integration with ALM tools will be beneficial only when there is flawless horizontal and vertical automation. In the era where the case for embedded software development in hi-tech devices and smart mobile devices is gaining high momentum, Agile methodologies are in great demand. Organizations can see clear benefits of engaging with Agile methodologies for their multifaceted software development. Naturally this pull – being from the demand side – has drawn Agile into mainstream computing. This trend has also brought a paradigm shift in development industry and has given rise to the developer platforms in the cloud.

Agile adoption, which is also akin to Just-In-Time (JIT) concept of production (evolved in manufacturing segment), will especially benefit in a scenario where the stack consists of hosted developer platforms with automated and integrated IDEs, and integration with SaaS ALM tools. The true automation of processes is optimally feasible only through cloud solutions. Hosted developer platforms and the need for one-point solution for Agile ALM will force vendors to come up with service models in the cloud providing business value to their customers. We will see emergence of many Agile ALM tools in the near future as the most widely accepted way to application development.

Demand for mobile development environments is also on exponential growth. The iPhone, iPad (supported by iOS) and other smart mobile devices supported by Android have opened up many possibilities in application development. Many large enterprises encourage the distributed work culture and use of smart mobile devices in order to improve their productivity and keep costs at bay. There is growing trend where employees have a say in defining their work schedules. This creates a need to stay connected (almost always) and for effective collaboration for managing projects. It also creates a need for more enterprise applications that are deployable on mobile devices.

Such work trends will necessitate adoption of both processes – Agile and ALM – in hosted environments for managing projects with higher development velocity and higher individual productivity. Vendors in ALM market will now offer solutions with Agile methodologies integrated with the ALM tools and they cannot be shy of hosting them in the cloud. Clearly, there is a strong case emerging for hosted Agile ALM in the near future.

What do you think of it? Please share your thoughts.

5 Steps on How to Achieve Hyper-productivity in a Team

Over the years software development has become more sophisticated to help evolve Agile Methodologies. Today it is understood that productivity of agile teams is 25 to 50 per cent higher than teams that follow traditional waterfall software development model. But it will alarm you if I say that there are studies done by Dr. Jeff Sutherland which show that some agile teams are 400 to 800 per cent more productive than their traditional counterparts! So, what are these teams doing different that makes them hyper-productive? Here are 5 steps which an ardent agile follower would agree with:

1. Using Scrum

It has been touted over and over that a scrum team scores much better in productivity over the traditional waterfall approach to software development. Scrum is an agile framework used for project management which actually increases the velocity of the software development.

For those who are a bit unfamiliar…

Scrum is not a methodology but a type of framework or skeleton for a set of activities which implement Agile Methodologies. Scrum has a product owner (or the stakeholders) which creates a list of prioritized activities also commonly known as product backlog. During planning a sprint backlog is created by pulling out a chunk of prioritized activity from the product backlog. The team then decides on how to implement the prioritized activity. This is done during a certain amount of time also known as the sprint. A sprint is generally for 2-3 weeks. But many teams practice daily scrum too, where they meet every day to assess the progress. At the end of a sprint the team has a deliverable product to the customer. This entire process is monitored by ScrumMaster (which plays the role of a project manager) to keep the team focused on the target.

The entire cycle repeats itself as iterations until all the backlogs are cleared.

The whole process is based on the assumption that there will be an effective team collaboration (with implicit healthy team chemistry,) and the team will be efficient to turn inputs into desired outputs within the time line defined by the product owner (customer). The team will brainstorm and mutually come out with the most efficient ways of coding. Now if is this is true, then what can stop the team from being hyper-productive?

2. Communicate and collaborate often

Implementing and using Agile Project Management with Scrum enforces frequent communication and collaboration with the teams. But using Scrum alone will not lead to hyper-productivity. The teams need to be self-driven and collaborate to get the sprint backlogs done within a sprint. A clear definition of requirements at the start of iteration will ensure that the collaborative efforts are for jotting down steps for development work, so that the sprint backlog (a part of the project) is “done” at the end of the iteration.

3. Engineering Practices

Again, coming back to the point of achieving hyper-productivity level, hyper-productivity is not achieved by just rolling out the Scrum in your organization. It needs certain other practices by the team members, which gives the break-through performances in team productivity.

According to a study published in Gantthead (Shriver, R., April 26, 2010, “Hyper-productive Agile”) on whether scrum leads to hyper-productivity, teams which are self-disciplined and continuously stick to practices decided (maybe informally specific to various projects), demonstrate hyper-productivity vis-à-vis those teams who just follow Scrum-by-the-book. One of the important practices is to implement engineering procedures, such as, automatically creating new builds that pass all the test cases, automating developer-written tests, and automating QA-written tests that are based on automated regression to ensure new changes do not break any previous functionality.

4. Self-Organization

Self-organization is perhaps the simplest practice to state but most underestimated practice. Self-organization can not only improve productivity in software development, it can lead you to achieve break through results in any goal of your life. In project management, it requires the cross-functional teams to collectively focus and commit on highest priority product backlog. The team collectively completes it in the most efficient manner and pairs it immediately to the testing before moving to the next in stack in the product backlog. This collaborative approach ensures that the various prioritized backlogs are completed within sprints and this leads to hyper-productivity.

5. Build Team Chemistry

Another important ingredient of teams achieving hyper-productivity is healthy team chemistry among the teammates. The very fundamental of using Scrum framework is that the team members should be able to collaborate positively, exuberate positive vibes and intelligently work together towards removing obstacles and redundancies which could cause potential slowdown in project velocity. To ensure healthy team chemistry, you should ensure that all the team members are trained in agile methodologies, so as to work collectively within a sprint and achieve “done” software at the end of single iteration.

What is your take? We would love to hear your version.

 

5 Crucial Technology Development Trends in 2012

In about a fortnight we will adieu 2011 goodbye. Whereas the year 2011 saw many progresses in spheres of cloud computing and technology for enriching user experience on smartphones and other mobile devices, the year 2012 promises to take these developments to a higher plane. According to me, some of the important areas for significant developments in 2012 are:

1. HTML5

HTML5 is the fifth version of the HTML standards that were created for structuring and presenting the content on the World Wide Web. It is being developed to support multimedia content on the internet especially for the changing hardware preferences for accessing the internet. HTML5 tries to support multimedia content on browsers for low powered devices such as smart phones and tablet computers. It has also been seen as a potential mark-up language for developing web apps cutting down the cross-platform mobile app development and compatibility issues. HTML5 was the reason for Adobe to drop development of flash technology for mobile devices. Though it is still under continuous development, HTML5 will be most in demand especially that browsing on the mobile phones and other low powered internet-enabled mobile devices is gaining popularity.

If you still have a doubt, then consider this. According to news published in Silicon.com, freelance website Elance noted a 238 per cent y-o-y increase in demand for HTML5 skills in year 2011.

2. Cloud Security

Year 2011 has been the year which has seen surge in popularity of cloud computing as the de-facto way of utilizing IT services, as well as surge in use of internet enabled mobile devices. The year 2011 has witnessed many cloud service providers foray into the mainstream. IT service consumers have either started consuming cloud services (SaaS being the most widely adopted) or have the plan in their overall business strategies to migrate to the cloud.

In a report IDC predicts that 80% of new commercial enterprise applications will be deployed on cloud platforms in 2012. With such a cascading effect, the data generated in the cloud will increase multi-fold. Managing, accessing, storing and securing data in the cloud will now take the precedence. Data security and storage in the cloud will be the key trends to watch for in 2012.

3. Mobile Cloud

With increased use of mobile devices and almost an accepted norm of IT as ‘consumerism’ through cloud computing, it is not a distant future that the ‘mobile cloud’ will become the focus for many entrepreneurial activities, as well as the strategic area of investment by many cloud service providers. ‘Mobile cloud’ simply means that the access point for cloud applications will be the internet enabled mobile devices. This will be a very strategic point of focus in 2012 to capture market share especially for SaaS providers.

This segment is getting support from continuous development of HTML5 which is an advanced technology for web browsers to support latest multimedia in smart phones, feature phones, tablets and other computers. Simultaneously this creates a strong demand for improvement in mobile data security. In a report IDC says that they believe that by 2013, 90% of the smart phones and tablets will be able to support HTML5 capable web browsers. Also, according to a news article published in Silicon.com, 15% of the apps set to be launched in 2012 are HTML5 web apps already.

With such evolutions and mobility in work as the preferred choice, ‘mobile cloud’ will see important activities in 2012.

4. Agile ALM

Agile ALM will be more widely accepted in the year 2012 as the developers seek to collaborate and work together for increasing their productivity and cutting down the project turn-around time.  Cloud computing has brought in more demand for the web-based tools such as integrated IDEs and ALMs which can support the Agile Methodologies. Software development with collaboration (among various teams, customers and vendors), and automation will be another key element in 2012.

5. Data Analytics

Till about recently the importance of data crunching and analytics was not felt with a pressing need. But with social media gaining importance as the indispensable marketing tool and the concept of Vertical Ad Networks, the advertisers are leaning more towards gathering relevant data and using analytics to target the right set of audience. Not only is data analytics important in business functions such as advertising, inventory management and demand forecasting,  it can prove beneficial even for security purposes such as ‘pre-crime detection’.

Image Credit: http://www.freedigitalphotos.net/images/view_photog.php?photogid=721