Application Development Lifecycles

In software engineering and software development processes, application development lifecycle (or as known as, application development lifecycle management) is the process of managing the application or a product throughout the stages of inception, development, testing, maintenance and deployment. Application lifecycle management (or the ALM) is the process of

  1. Researching the feasibility of the project
  2. Understanding requirements and use cases of the project which has to be built
  3. Designing and graphing out the idea,
  4. Developing the project with the tools required
  5. Testing the project for finding bugs, or logical mistakes, performance barriers etc.
  6. Deploying/Publishing the application
  7. Maintaining the application

ALM is broader as compared to the software development lifecycle, as in, the SDLC only talks about the software requirements, development and testing processes. Once the software (or app, or product) has been developed it no longer works on it to manage and modify the product as the time changes or as the needs of users change. This is why mostly enterprises and organizations work with the ALM side, and the the small scale industries or ad-hoc software development teams work in the SDLC side.

Stages of ALM

The stages of ALM are the steps and processes that your team or management must undergo before they can release a product in the market. In most cases the process starts when the product is still in the inception phase, and an idea is being drafted out for others to research and deduce the feasibility for. The stages also include multiple processes and methodologies that further decide the steps and communication within the organization.

Stages of the ALM can be thought of the steps, that one must take before completing a task. These steps have been produced after years of research and thus are useful when you are trying to develop a product, release it in the market and to manage and maintain the userbase that you get once your product has been launched. If you do not follow the steps, your product will still be out there, but it may not perform at its best. I have been in a few projects initially where we had to skip out these steps believing, we have enough understanding of the ecosystem. We were wrong on every detail once we were near the final phases of the development. These stages are defined to help you minimize the investment to be made, and the time to be spent during the requirements analysis and understanding what your customers demand from your products.

Although they are miniature steps that you can understand and visualize here, implementing them is the main key. How you implement these stages, how you stack them over, what SDLC phase or methodology you implement is a key-component to success. You would need some research before you can get the maximum output from a product and to minimize the cost of development and maintenance of the products. I will try to share a few golden tips with you so that you know when you are on the right path and when you need to visit the previous stages for a while more.

Now let us talk about the stages of ALM and which of them are of utmost importance and which need extra time, and which have to be invested with more manpower.

Inception of the project

The inception of the project means the idea of the project. Idea can be any requirement, need or a tool for yourself, customers, community or an organization. Inception phase, as the name suggests, mainly is the phase of idea drafting and sketching many things to discuss

  1. What the project must be?
  2. What is the need of it?
  3. What customers would need?
  4. What market to target?
  5. And much more...

The most important question is, would you get enough customers with the product to make it a business, or would it always be a waste of time only? Things like this, if discussed in the beginning of the project development, result in a good product and better returns on the investment.

The inception phase consists of the phases such as the feasibility testing phase. Where your teams test out whether a product can be/should be launched in the market or would it be better to rethink the approach. Most of the times, research teams go out in the market, visit multiple potential customers. They conduct some surveys to understand the needs of customers, how their customers are performing now, and what they may be expecting in a product that can change their current processes. In most cases, they are done and either result in a good positive approach, or they help the investors to understand that the product might not be a good business approach and that it should be aborted. a good inception phase will always help in investing in the right projects and at the right time.

Requirements analysis and feasibility tests

Once you have capture all of the survey reports, and you understand what your customers need, now you need to move onwards and process the reports. The requirements analysis includes the requirements of your customers and your ability to provide those services in the appropriate budget.

The feasibility reports decide whether product has a good fit inside your overall company's product showcase and whether it can be a good product to be invested in. You not only have to discuss what services do your customers require, but also to understand whether or not you can provide them. In case where your customer need a service which you cannot offer, you must not try to invest into hiring more man-power, or catching up more IT infrastructure. Up until this stage, you must not invest any money in the product or any phase. Everything, from the surveys, to reports and to customer relations should be done with zero or almost zero or none budget, because if the product fails to launch you are losing all of the money you have invested, in a product that was a complete failure.

In most cases, you should hold a good list of the potential customers and their references. Understanding the product, and the requirements of the customers introduce you to some more areas of the products that you were not paying attention to. Most of the times, a customer may provide you with some feedback that may be valuable to the overall productivity of the product. Thus, in this phase you must understand all of those facts and figures that make your product an attractive product for the customers.

Development process

The development process in most cases, comprises of other phases and processes in itself. Once you have a green go signal from the surveys and reports and you know that the product can be a success, now you need to go one step ahead and start the development process so that your product can be launched. In this phase, the SDLC can be added to support more flexible and cost efficient methodologies to be implemented.

The software development can be done through various different methods, such as,

  1. Waterfall
  2. Iterative
  3. DevOps

And many more of the same methods, which I will discuss in the topics later. For the time being, they are the selected ones from the three categories of software development phases. The Waterfall model is the least flexible model, and requires you to put most effort in the requirement analysis, the Iterative model requires you to understand the requirements and implement them, and continue to evolve the software as time goes. The last, but the most widely accepted and considered-valid approach is the DevOps approach, in DevOps you work with the customers, they tell you about the software, you give them to test it out and tell you where things go wrong.

Thus, the phase is already broken down into more chunks and more pieces. However, this is the most important part because either your product is a great success, or a great failure and it also decides and dictates the amount of investment you need to put into the testing phase next. In most cases the SDLC itself comprises of the testing so that you do not release the product without proper test, sometimes your test is conducted but the product is not final and much more. I will discuss all of them as we dig deeper here.

Testing phases

Testing phases come during the last stages of the development of the product, right before when you are about to release the product in the market. Testing phase typically requires a human-tester, who understands the requirement of the customer and then tries to mimic their actions on the software product to figure out what is working and what is not.

In some cases, during the development phase, some test cases are also written to check the validity and resilience of the code written. Such as, whether the code breaks on an input, how does the code prompt the user for important input, how likely is the code going to manage when an input is not provided and much more. These tests come in different shapes are sizes, few of most commonly used test cases include,

  1. Unit testing
  2. Integration testing
  3. System testing

And so on, the testing phases include some most important checklists that try to answer such questions like, "Will our customer be able to do what they want to?", or "Does this software run without crashing?" and much more of the same sense and meaning.

But, if the first stage of the cycle is done correctly — requirements analysis, and good reports are generated which result in good iterations of the software development then the testing can be minimized because you are already testing and writing the code which is needed. If a test fails in this phase, the problem has to be understood and the development has to be done again, which in most cases costs double. Thus, one of the reasons to spend more time on the research, requirement understanding and development is only to understand what your product is expected to do before writing the final software code.

Deployment and Management

The deployment and management phase of the ALM process requires a very robust and agile team to take care of the product. The management requires your team to take care of feedback that your customers are providing as well as understanding where your product needs modifications.

  1. Bugs in the product
  2. Performance issues
  3. Logical mistakes in the product
  4. Security and data management issues
  5. Updates and features

There are several other cases, where your customers may not be happy with the product. In these cases you must undergo a few steps to better understand what your customers need. Sometimes, you have to chose between deciding to either update the product entirely, or to support different editions/versions of your suite and deliver them separately. Mostly, software services vendors deliver multiple edition of their services and products, each ranging different features and services based on several factors.

These necessary steps taken are all part of the feedback and how your customers and the market drives your product. You must adapt to the patterns of the market, otherwise your product will fail even if it is working perfectly and passed every test and requirement. Remember the quote of Nokia's CEO?

we didn’t do anything wrong, but somehow, we lost

The same can be said for anyone else, who does not adapt to the market and the customer's needs. The management phase also must undertake a few other necessary steps such as offerings, services and more features to the customers who are with you for a long time.

Tools for ALM

Several tools are available for ALM, and SDLC, and each organization, open source community have developed some primary tools that let the teams/enterprises record each step to take necessary steps. Jira, Mylyn, HP ALM and GitLab are a few of the most commonly known ALM toolkits for ALM productivity, however as the chapter drills down I will be focusing more on Visual Studio Team Services, which is a cloud service for ALM and includes everything from basic inception all the way up to the DevOps practices and more. The service comes free for teams with 5 members or less.

The reason I am using VSTS is because I can get the resources for this service and can demonstrate every end of the service through some subscriptions and other offerings from Microsoft — being a Microsoft MVP. But the overall steps and concepts of the ALM are similar in every other tool you might have at hand.

Sadly, this chapter does not have any topics to share.