CHAPTER 2

image

Introduction to Application Lifecycle Management

What do you think about when you hear the term Application Lifecycle Management, or ALM as it is usually referred to? During a seminar tour in 2005 in Sweden presenting Visual Studio Team System, we asked people what ALM was and whether they cared about it. To our surprise, many people equated ALM with operations and maintenance. This is still often the case today when we visit companies.

Maybe that was your answer as well? Doesn’t ALM include more than just operations? Yes, it does. ALM is the thread that ties together the development lifecycle. It involves all the steps necessary to coordinate the development lifecycle activities. Operations are just one part of the ALM process.

Roles in the ALM Process

All software development includes various steps performed by people playing specific roles in the process. There are many different roles or perhaps we could call them disciplines in the ALM process, and I define some of them in this section. (Please note that the process could include more roles, but I have tried to focus on the main ones.) Take a look at Figure 2-1, which illustrates ALM and some of its roles.

9781430243441_Fig02-01.jpg

Figure 2-1.  The Application Lifecycle Management process and some of the roles in it

It is essential to understand that all business software development is a team effort. The roles collaborate on projects in order to deliver business value to the organization. If we don’t have this collaboration, the value of the system most likely will be considerably lower than it could be. If we look at it one step up from the actual project level, it is also important to have collaboration between all roles involved in the ALM process, so that we perform this process in the most optimal way possible.

The roles in the ALM process include the following:

  • Business manager: Somebody has to make the decision that a development activity is going to start. After initial analysis of the business needs, a business manager decides to initiate a project for the development of an application or system that will deliver the expected business value. A business manager, for instance, will have to be involved in the approval process for the new suggested project, including portfolio rationalization, before a decision to go ahead is reached. Other people involved in this process are of course IT managers, because the IT staff will probably be involved in the project’s development and deployment into the infrastructure.
  • Project manager, Product owner or scrum master: Suitable individuals are selected to fill these roles and set to work on the project after the decision to go ahead is made. Ideally, these people continue leading the project all the way through, so that we have continuity in project management.
  • Project Management Office (PMO) decision makers: These individuals are also involved in planning because a new project might very well change or expand the company’s portfolio.
  • Business analyst: After requirements collection starts, the business analyst has much to do. A business analyst is responsible for analyzing the business needs and requirements of the stakeholders, to help identify business problems and propose solutions. Within the systems development lifecycle, the business analyst typically performs a collaborative function between the business side of an enterprise and the providers of services to the enterprise.
  • Architect: The architect starts drawing the initial picture of the solution. I will not go into great detail here because Chapter 4 does that. But briefly, the architect draws the blueprint of the system, and the system designers or engineers use this blueprint. This blueprint includes the level of freedom necessary in the system. For instance scalability, hardware replacement, new user interfaces, and so on. All of these issues must be considered by the architect.
  • User Experience (UX) design team: Hopefully UX design is a core deliverable and not something we leave to the developers to handle. UX design is sadly overlooked and should definitely have a more consideration. It is important to have close collaboration between the UX team (which could be just one person) and the development team. The best solution is obviously to have a UX expert in the development team all through the project, but that is sometimes not possible. The UX design is so important in making sure users can really perceive the value of the system. We can write the best business logic in the world, but if the UX is badly designed, the users will probably never think the system is any good.
  • Database administrators (DBAs): Almost every business system or application uses a database in some way. The DBAs are the ones who can make our databases run like lightning with good up-time, so it is essential to use their expertise in any project involving a database. Be nice to them; they can give you lots of tips on how to make a smarter system.
  • Developers: Developers, developers, developers as Microsoft CEO Steve Ballmer shouted in a famous video. And who can blame him? These are the people doing their magic to realize the system that we are building by using the architecture blueprint drawn from the requirements. Moreover, these are the people who have to modify or extend the code when change requests come in.
  • Test: I would rather not see testing as a separate activity. Testing is something we should consider from the first time we write down a requirement, and continue doing during the whole process.
  • Operations and maintenance staff: Here it is. When an application or system is finished, it is handed over to operations. The operations staff takes care of it until it retires, often with the help of the original developers who come in a do bug fixes and new upgrades. Don’t forget to involve these people early in the process, at the point when the initial architecture is considered, and keep them in the project until all is done. They can give great input as to what can and can’t be done in the company infrastructure. So operations is just one part, but an important one, of ALM.

All project efforts are done as collaborative work. No role can act separate from any of the others if we are to succeed with any project. It is essential for everybody in a project to have a collaborative mindset and to have the business value as the primary focus at every phase of the project.

If you are part of an agile project like a scrum project, you might have only three roles; product owner, scrum master and team members. This does not mean that roles described above do not apply, though! They are all essential in most projects; it’s just that in an agile project you may not be labeled a developer or an architect. Rather, you are there as a team member and as such you and your co-members share responsibility for the work you have committed to. We will go deeper into the agile world later in the book.

Four Ways of Looking at Application Lifecycle Management

Application Lifecycle Management is the glue that ties together all these roles and the activities they perform. Let’s consider four ways of looking at ALM (see Figure 2-2). We have chosen these four because we have seen this separation in so many of the organizations I have worked with or spoken to:

9781430243441_Fig02-02.jpg

Figure 2-2.  The four ways of looking at ALM

  • Software Development Lifecycle (SDLC) view: This is perhaps the most common way of looking at ALM because development has “owned” management of the application lifecycle for a long time. This could very well be an effect of the gap between the business side and the IT side in most organizations, and IT has taken the lead on this.
  • Service management or operations view: Operations have also had (in our experience) an unfortunate separation from IT development. This has resulted in operations having their own view of ALM and the problems in this area.
  • Application Portfolio Management (APM) view: Again maybe because of the gap between business and IT, I have seen many organizations with a portfolio ALM strategy in which IT development is only one small part. From a business view, the focus has been on how to handle the portfolio itself and not on the whole ALM process.
  • Chief information officer (CIO) view (or the unified view): Fortunately, some organizations focus on the whole ALM process by including all three of the preceding views. This is the only way to take control over, and optimize, ALM. For a CIO, it is essential to have this view all the time; otherwise, things can easily get out of hand.

The SDLC View

Let’s take a look at ALM from an SDLC perspective first. In Figure 2-3, you can see the different phases of a typical development project. Keep in mind that this is just a simplified view for the sake of this discussion. We have also tried to fit in the different roles from the ALM process presented earlier.

9781430243441_Fig02-03.jpg

Figure 2-3.  A simplified view of a typical develoment project

First, somebody comes up with an idea based on an analysis of the business needs: “Hey, wouldn’t it be great if we had a system that could help us do this (whatever the idea is)?” It could also be the other way around: the idea comes first, and the business value is evaluated based on the idea.

So an analysis or feasibility study is performed, costs are estimated, and hopefully a decision is made by IT and business management to start the project as an IT project. A project manager (PM) is selected to be responsible for the project and starts gathering requirements with the help of business analysts, PMO decision makers, and users or others affected. The PM also starts planning the project in as much detail as possible at this moment.

When that is done, the architect starts looking at how to realize the new system, and the initial design is chosen. The initial design is then evaluated and changed based on what happens in the project and what happens with requirements all through the project. After that, the development starts, including work performed by developers, user interface (UI) designers, and DBAs (and any other person not mentioned here but who is important for the project).

Testing is, at least for us, something done all along the way—from requirements specification to delivered code—so this not a separate box in Figure 2-2. After the system has gone through acceptance testing, it is delivered to operations for use in the organization. Of course it doesn’t end here. This cycle is most often repeated over and over again as new versions are rolled out and bug fixes implemented.

What ALM does in this development process is support the coordination of all development lifecycle activities from the preceding process through the following:

  • Make sure we have processes that span these activities.
  • Manage the relationships between development artifacts used or produced by these activities. (In other words, we talk about traceability here.)
  • Reporting on progress of the development effort as a whole.

As you can see from this, ALM does not support a specific activity in itself. Its purpose is to keep all activities in sync. It does this just so we can focus on delivering systems that meet the needs and requirements of the business. By having an ALM process helping us synchronize our development activities, we can more easily see if any activity is underperforming and thus more easily take corrective actions.

The Service Management or Operations View

From a service management or operations view, we can look at ALM as in this quote from ITIL Application Management by the Office of Government Commerce in United Kingdom (TSO, 2002): ALM “focuses on the activities that are involved with the deployment, operation, support, and optimization of the application. The main objective is to ensure that the application, once built and deployed, can meet the service level that has been defined for it.”

When we see ALM from this perspective, it focuses on the life of an application or system in a production environment. If in the SDLC view the development lifecycle started with the decision to go ahead with the project, here it starts with deployment into the production environment. Once deployed, the application is operated by the operations crew. Bug fixes and change requests are handled by them and they also pat it on its back to make it feel good and run smoothly.

This is a quite healthy way of looking at ALM in our opinion, because we think that both development and operations are two pieces of ALM, cooperating in order to manage the whole ALM process. Both pieces are also something that should be thought of when planning a development project from the beginning; we cannot have one without the other.

The Application Portfolio Management View

The third view we will look at is the Application Portfolio Management (APM) view of ALM. In this view, we see the application as a product managed as part of a portfolio of products. We can say that APM is a subset of Project Portfolio Management (PPM), which we talked about in Chapter 1. Figure 2-4 describes this process.

9781430243441_Fig02-04.jpg

Figure 2-4.  The PMI view of ALM

This view comes from the Project Management Institute (PMI). Managing resources and the projects they work on is very important for any organization. In this view, we can see that the product lifecycle starts with a business plan—the product is the application or system that is one part of the business plan. An idea for an application is turned into a project and carried out through the project phases, until it is turned over to operations as a finished product.

When business requirements change or a new release (an upgrade in this figure) is required for some other reason, the project lifecycle starts again, and a new release is handed over to operations. After a while (maybe years) the system or application is discarded (this is called divestment, the opposite of investment). This view does not specifically speak about the operations part or the development part but should be seen in the light of APM instead.

The Unified View

The final view is a unified view of ALM. In this view, we have made an effort to align all these views with the business. Here we do as the CIO would do: we focus on the business needs, not on separate views. This we do to improve the capacity and agility of the project from start to end. Figure 2-5 shows an overview of how these three views are included in the whole unified ALM aspect of a business.

9781430243441_Fig02-05.jpg

Figure 2-5.  The CIO’s view takes into consideration all three views previously mentioned

Three Pillars of Application Lifecycle Management

Let’s now look at some important pillars we find in ALM, independent of the view we take. We can find three important pillars in ALM as shown in Figure 2-6.

9781430243441_Fig02-06.jpg

Figure 2-6.  The three pillars of ALM

Traceability of Relationships Between Artifacts

Some customers we have seen have stopped doing upgrades on his systems that were running in production because the company had poor or even no traceability in its systems. For these customers it was far too expensive to do upgrades because of the unexpected effects even a small change could have. The company had no way of knowing which original requirements were implemented where in the applications. This customer claimed, and we have seen and heard this in discussions with many other customers, that traceability can be a major cost driver in any enterprise if not done correctly.

There must be a way of tracing the requirements all the way to delivered code—through architect models, design models, build scripts, unit tests, test cases, and so on—not only to make it easier to go back into the system when implementing bug fixes, but also to demonstrate that the system has delivered the things the business wanted.

Another reason for traceability is internal as well as external compliance with rules and regulations. If we develop applications for the medical industry, for example, we need to have compliance with FDA regulations. We also need to have traceability when change requests are coming in so that we know where we updated the system and in which version we performed the update.

Automation of High-Level Processes

The next pillar is automation of high-level processes. All organizations have processes, as you saw in Chapter 1. For example, there are approval processes to control hand-offs between the analysis and design or build steps, or between deployment and testing. Much of this is done manually in many projects, and ALM stresses the importance of automating these tasks for a more effective and less time-consuming process. Having an automated process also decreases the error rate compared to handling the process manually.

Visibility into the Progress of Development Efforts

The third and last pillar is providing visibility into the progress of development efforts. Many managers and stakeholders have limited visibility into the progress of our development projects. The visibility they have often comes from steering group meetings, during which the project manager reviews the current situation. Some would argue that this limitation is good, but if we want to have an effective process, we must ensure visibility.

Other interest groups such as project members also have limited visibility of the whole project despite being part of the project. This often comes from the fact that reporting is hard to do and often involves a lot of manual work. Daily status reports would quite simply take too much time and effort to produce, especially when we have information in many repositories.

A Brief History of ALM Tools

We can resolve these three pillars manually if we want, without the use of tools or automation. ALM is not a new process description even though Microsoft, IBM, and the other big software houses right now are pushing ALM to drive sales of TFS or, in IBM’s case, the Collaborative Lifecycle Management suite. We can, for instance, continue to use Excel spreadsheets, or as one of my most dedicated agile colleagues does, use Post-it notes and a pad of paper, to track requirements through use cases/scenarios, test cases, code, build, and so on to delivered code. It works, but this process takes a lot of time and requires much manual effort. With constant pressure to keep costs down, we need to make tracking requirements more effective.

Of course, project members can simplify the process by keeping reporting to the bare minimum. With a good tool, or set of tools, we can cut time (and thus costs) and effort, and still get the required traceability we want in our projects. The same goes for reporting and all those other activities we have. Tools can, in my opinion, help us be more effective, and also help us automate much of the ALM process right into the tool(s).

By having the process built directly into our tools, it is much easier for the people involved to not miss any important step by simplifying anything. For instance, the agile friend we mentioned could definitely gain much from this, and he has now started looking into Team Foundation Server (TFS) to see how that set of tools can help him and his teams be more productive. So process automation and the use of tools to support and simplify our daily jobs are great things because they can keep us from making unnecessary mistakes.

There are eight disciplines in ALM according to Serena Software Inc (Application Lifecycle Management for the enterprise, Kelly A. Shaw, Ph.D,, Serena Software Inc, April 2007, http://www.serena.com/docs/repository/company/serena_alm_2.0_for_t.pdf):

  • Modeling: software modeling
  • Issue management: keeping track of the incoming issues during both development and operations
  • Design: designing the system or application
  • Construction: developing of the system or application
  • Production Monitoring: the work of the operations staff
  • Build: building the executable code
  • Configuration and change management: keeping track of changes and configuration of our applications
  • Test: testing the software
  • Release management: planning the releases of our application

In order to synchronize these we need tools that span all these disciplines and help us automate and simplify the following activities according to Serena Software:

  • Reporting
  • Traceability
  • Policies
  • Procedures
  • Processes
  • Collaboration

Imagine the Herculean task of keeping all those things in order manually. That would be impossible if we wanted to get something right and keep an eye on the status of projects. As we saw from the Standish Group in Chapter 1, projects seem to be going better because the number of failed projects is decreasing. Much of this progress is, according to Michael Azoff at the Butler Group,1 the result of some “major changes in software development: open source software projects; the Agile development movement; and advances in tooling, notably Application Lifecycle Management (ALM) tools.” Some of these results are also confirmed by later research, for instance by Scott W. Ambler at Ambysoft (http://www.ambysoft.com/surveys/success2011.html) and Alan Radding (http://resources.devx.com/ibm/Article/47065). Now we understand finding tools and development processes to help us in the ALM process is important.

This has led to increasing awareness of the ALM process among enterprises. We can see this among the customers we have. ALM is much more important now than it was only five years ago.

Application Lifecycle Management 1.0

As software has become more and more complex, we have seen that role specialization has increased in IT organizations. This has led to functional silos in different areas (roles) such as project management, business analysis, architecture, development, database administration, testing, and so on. As you may recall from the beginning of this chapter, you can see this in the ALM circle. There is no problem with having these silos in a company, but having them without any positive interaction between them is.

There is always a problem when we build great and impenetrable walls around us. Most ALM vendors have driven the wall construction because most of their tools historically have been developed for particular silos. If we look at build management tools, they have supported the build silo (naturally) but have little or no interaction with test and validation tools (which is kind of strange since the first thing that usually happens in a test cycle is the build)—just to mention one area. This occurs despite the fact that interaction between roles can generate obvious synergies that great potential. We need to synchronize the ALM process to make the role-centric processes a part of the overall process. This might sound obvious, but has just not happened until lately.

Instead of having complete integration between the roles or disciplines mentioned in the beginning of the chapter and the tools they use, we have had point-to-point integration—for example, we could have a development tool slightly integrated with the testing tool (or probably the other way around). Each tool uses its own data repository, so traceability and reporting is hard to handle in such an environment as well (see Figure 2-7).

9781430243441_Fig02-07.jpg

Figure 2-7.  ALM 1.0

This point-to-point integration makes the ALM process fragile and quite expensive as well. Just imagine what happens when one tool is updated or replaced. Suddenly, the integration might break and new solutions have to be found to get it working again. This scenario can be reality if, for example, old functions in the updated or replaced tool are obsolete and the new one does not support backward compatibility. This can be hard to solve even with integration between just two tools. Imagine what happens if we have a more complex situation, including several more tools. We have seen projects using six or seven tools during development, creating a fragile solution when new versions have been released.

The tools have also been centered on one discipline. In real life, a project member working as a developer, for instance, quite often also acts as an architect or tester. Because the people in each of these disciplines have their own tool (or set of tools), the project member must use several tools and switch between them. It could also be that the task system is separated from the rest of the tools so to start working on a task, a developer must first retrieve the task from the task system—probably print it out, or copy and paste it, then open the requirements system to check the requirement, then look at the architecture in that system, and finally open the development tool to start working. Hopefully, the testing tools are integrated into the development tool; otherwise, yet another tool must be used. All this switching costs valuable time better put into solving the task.

Having multiple tools for each project member is obviously costly as well because they all need licenses for the tools they use. Even with open source tools that may be free of charge, we have maintenance costs, adaptions of the tools, developer costs, and so on. Maintenance can be very expensive, so we should not forget this even when the tools are free. So, such a scenario can be very costly and very complex. It will also most likely be fragile.

As an example, I have two co-workers working at a large medical company in Gothenburg. They have this mix of tools in their everyday work. I asked them to estimate how much time they needed to switch between tools and get information from one tool to another. They said they probably spend half an hour to an hour each day syncing their work. Most times they are on the lower end of this scale, but still in the long run this is a lot of time and money. My friends also experienced big problems whenever they needed to upgrade any of the systems they used.

One other problem with traditional ALM tools worth mentioning is that vendors often have added features, for example, adapting a test tool to support issue and defect management. And in the issue management system, some features might have been added to support testing. Because neither of the tools have enough features to support both disciplines, the users are confused and will not know which tool to use. In the end, most purchase both just to be safe, and end up with the integration issues described earlier.

Application Lifecycle Management 2.0

So let’s take a look at what the emerging tools and practices (including processes and methodologies) in ALM 2.0 try to do for us. ALM is a platform for the coordination and management of development activities, not a collection of lifecycle tools with locked-in and limited ALM features. Figure 2-8 and Table 2-1 summarize these efforts.

9781430243441_Fig02-08.jpg

Figure 2-8.  ALM 2.0

Table 2-1. Characteristics in ALM 2.0

Characteristics Benefit
Practitioner tools assembled out of plug-ins Customers pay only for the features they need.
Practitioners find the features they need faster.
Common services available across practitioner tools Easier for vendor to deploy enhancements to shared features.
Ensure correspondence of activities across practitioner tools.
Repository neutral No need to migrate old assets.
Better support for cross-platform development.
Use of open integration standards Easier for customers and partners to build deeper integrations with third-party tools.
Microprocesses and macroprocesses governed by externalized workflow Processes are versionable assets.
Processes can share common components.

One of the first things we can see is a focus on plug-ins. This means that from one tool, we can add the features we need to perform the tasks we want. Without using several tools! If you have used Visual Studio, you have seen that it is quite straightforward to add new plug-ins into this development environment. Support for Windows Communication Foundation (WCF) and Windows Presentation Services, for example, was available as plug-ins long before their support was added as a part of Visual Studio 2008.

Having the plug-in option and making it easy for third-party vendors to write plug-ins for the tool greatly eases the integration problems discussed earlier. You can almost compare this to a smorgasbord, where you choose the things you want. So far this has mostly been adopted by development tool vendors such as IBM or Microsoft, but more are coming. Not much has happened outside of development tools so far but TFS offers some nice features that definitely will help us a lot.

image Note  Smorgasbord is originally a Swedish term for a big buffet of food where the guests can pick and choose the dishes they want. In Sweden we have smorgasbord at Easter, Christmas, and other holidays.

Teamprise, a third-party vendor, developed a solution giving access to the Team Foundation Server (TFS) from a wide array of platforms, including Mac OS X (see Figure 2-9). In November 2009, Teamprise was acquired by Microsoft. After the acquisition TFS 2010 changed its name to Team Explorer Everywhere. In writing this book we used Team Explorer Everywhere on our Mac OSX laptops using the Eclipse development platform.

9781430243441_Fig02-09.jpg

Figure 2-9.  Team Explorer Everywhere in Mac OS X

Another thing that eases development efforts is that vendors in ALM 2.0 are focusing more on identifying features common to multiple tools and integrating these into the ALM platform. We find things like the following among these:

  • Collaboration
  • Workflow
  • Security
  • Reporting and analysis

You will see later in Chapter 4 that TFS has these features embedded out of the box. Microsoft uses Microsoft Office SharePoint Server/Windows SharePoint Services as part of the TFS suite for collaboration among team members, for example. Active Directory is used for authentication and security. SQL Server obviously is the data repository giving us access to tools such as SQL Server Analysis Services for analytics and SQL Server Report Builder for reports. Microsoft has done a good job in giving us tools to get the job done.

Another goal in ALM 2.0 is that the tools should be repository neutral. They say that there should not be a single repository but many, so we are not required to use the storage solution that the vendor proposes. IBM, for example, has declared that their coming ALM solution will integrate with a wide variety of repositories, such as Concurrent Versions System (CVS) and Subversion, just to mention two. This approach removes the obstacle of gathering and synchronizing data, giving us easier access to progress reports, and so on. Microsoft uses an extensive set of web services and plug-ins to solve the same thing. They have one storage center (SQL Server), but by exposing functionality through the use of web services, they have made it fairly easy to connect to other tools as well.

An open and extensible ALM solution lets companies integrate their own choice of repository into the ALM tool. Both Microsoft and IBM have solutions—data warehouse adapters—that enable existing repositories to be tied into the ALM system. It is probable that a large organization that has already made investments in tools and repositories in the past doesn’t want to change everything for a new ALM system; hence it is essential to have this option.

Any way we choose to solve the problem will work, giving us possibilities of having a well-connected and synchronized ALM platform.

Furthermore, ALM 2.0 focuses on being built on an open integration standard. As you know, Microsoft exposes TFS functionality through web services. This is not publicly documented however so we need to do some research and trial and error before we can get this working. This way, we can support new tools as long as they also use an open standard; and third-party vendors have the option of writing tons of cool and productive tools for us.

Process support built in to the ALM platform is another important feature. By this I mean having the automated support for the ALM process built right into the tool(s). We can, for instance, have the development process (RUP, SCRUM, XP, and so on) automated in the tool, reminding us of each step in the process so that we don’t miss creating and maintaining any deliverables or checkpoints.

In the case of TFS, you will see that this support includes having the document structure, including templates for all documents, available on the project web site, directly after having created a new TFS project. We can also imagine a tool with built-in capabilities helping us in requirements gathering and specification, for instance—letting us add requirements and specs into the tool and have them transformed into tasks assigned to the correct role without having to do this manually.

An organization is not likely to scrap a way of working just because the new ALM tool says it cannot import that specific process. A lot of money has often been invested in developing a process, and an organization is not likely interested in spending the same amount again learning a new one. With ALM 2.0 it is possible to store the ALM process in a readable format such as XML.

The benefits include that the process can be easily modified, version controlled (you need to do this yourself, TFS doesn’t do it for you), and reported upon. The ALM platform can then import the process and execute the application development process descriptions in it. Microsoft uses XML to store the development process in TFS. In the process XML file the whole ALM process is described, and many different process files can coexist. This means we can choose which process template we want to base our project on when creating a new project (see more in Chapter 6).

As we saw earlier, it is important for an enterprise to have control over its project portfolio to better allocate and control resources. So far, none of the ALM vendors have integrated this support into the ALM platform. There may be good reasons for this though. For instance, while portfolio management may require data from ALM, the reverse is probably not the case.

The good thing is that having a standards-based platform makes integration with PPM tools a lot easier.

Application Lifecycle Management 2.0+

So far not all the ALM 2.0 features have been implemented by tools vendors. There are various reasons for this. One of these is the fact that it is not quite easy for any company to move to a single integrated suite, no matter how promising the benefits might look when you see them. To make such a switch would mean changing the way we work in our development processes and even in our company. Companies have invested in tools and practices and spending time and money on a new platform can require a lot more investment.

For Microsoft focused development organizations the switch might not be so hard however, at least not for the developers. They already use Visual Studio, SharePoint, and many other applications in their daily life and the switch is not that big. But Microsoft is not the only platform out there and competitors like IBM, Serena, and HP still have some work to do to convince the market.

We also can see that repository neutral standards and services have not evolved over time. Microsoft’s for instance still rely on SQL Server as a repository and have not built in much support for other databases or services. The same goes for most competition to TFS.

image Note  Virtually all vendors will use ALM tools to lock in customers to as many of their products as possible—especially expensive major strategic products like RDBMS. After all they live mostly on license sales.

The growth of agile development and project management in recent years has also changed the way ALM must support development teams and organizations. We can see a clear change from requirements specs to backlog-driven work and the tooling we use needs to support this in a good way.

Agile practices such as build and test automation become critical for our ALM tools to support. Test Driven Development (TDD) continues to rise and more and more developers require their tools to support this way of working. If the tools don’t do that they will be of little use for an agile organization. Microsoft has really taken the agile way of working to their hearts in the development of TFS. We will show you all you need to know about the support for agile practices in TFS all through this book.

We can also see a move from traditional project management toward an agile view where the product owner and scrum master require support from the tools as well. Backlog grooming (the art of grooming our requirements in the agile world), agile estimation and planning, reporting,—important to these roles—need to be integrated to the overall ALM solution. We will come back to these concepts in Chapter 6.

The connection between operations and maintenance becomes more and more important. Our ALM tools should integrate with the tools used by these parts of the organization. Fortunately, Microsoft has plans for this. They plan to make the integration between MS Systems Operations Manager and TFS much simpler and built in out of the box, adding support for maintenance and operations.

In the report “The Time is right for ALM 2.0+” Forrester research presented the ALM 2.0+ concept as you can see in Figure 2-10. (Forrester Research, Inc., The Time Is Right For ALM 2.0+, October 19, 2010) In their report Forrester Research, Inc extended traditional ALM with what they called ALM 2.0+. Traditional ALM covers traceability, reporting, and process automation. Forrester Research, Inc envisions the future of ALM to also include collaboration and work planning. We like this idea and we will try to show you that Microsoft also has support for this in TFS.

9781430243441_Fig02-10.jpg

Figure 2-10.  Future ALM according to Forrester Research, Inc (Forrester Research, Inc., The Time Is Right For ALM 2.0+, October 19, 2010)

ALM and PPM

ALM and PPM can support each other quite well. Data from the ALM repository can be an excellent source of data for the PPM tool, and hence decisions can be based on the results of the PPM tool. This requires a (one-way) working connection between the two, of course. Manual efforts by cutting and pasting information are not good enough because they are slow and error prone. A good integration between the two repositories gives project portfolio decision-makers access to accurate and timely data. This eases their decision-making process.

Gartner identifies five key activities in the PPM decision process that benefit from a working integration:2

  • Review current projects and their status.
  • Review the application portfolio impact on resources (which resources are available and when are they available, for instance).
  • Present new capital requests. (Do we need to add more resources to a project?)
  • Reprioritize the portfolio.
  • Examine investments for effectiveness (basically reviewing the outcome of projects within six months of delivery).

A lot of data important for these activities can be found in the ALM repository.

Microsoft’s solution to the ALM and PPM integration still has some room for improvement but works very well.

Microsoft also offers the Microsoft Office Enterprise Project Management (EPM) solution (http://www.microsoft.com/project/en-us/solutions.aspx). This is Microsoft’s end-to-end collaborative project and portfolio environment. This solution aims to help an organization gain visibility, insight, and to control across all work, enhancing decision making, improving alignment with business strategy, maximizing resource utilization, and measuring and helping to increase operations efficiency. We will not delve in to the specifics of this solution here but will tell you a little about its three parts.

First, there is the Microsoft Office Project Professional. If you are a project manager, chances are that you know this product already. If not, many of us have definitely seen the Gantt schema the project manager has produced. We can use Project Professional as a stand-alone product if we need it for only single projects. But the real value comes when we connect it to the second part of the Microsoft EPM solution: the Microsoft Office Project Server. This server offers the possibilities of resource management, scheduling, reporting, and collaboration capabilities in the Microsoft EPM solution. We use the Project Server to store project and resource information in a central repository.

The third part of Microsoft’s EPM suite used to be the Microsoft Office Project Portfolio Server. Since version 2010 this is built in to Microsoft Project Server. This gives us a management solution, enabling organizations to get control of their product portfolios so that they best align with the company business strategies.

All in all this helps us to handle our portfolios, projects, and resources so that we can plan our needs.

Summary

In this chapter, we have described an overview of what ALM aims for and what it takes for the ALM platform to support a healthy ALM process. We have seen that there are four ways of looking at ALM:

  • Software Development Lifecycle (SDLC) view
  • Service management or operations view
  • Application Portfolio Management (APM) view
  • Chief information officer (CIO) view (or the unified view)

We know that traceability, automation of high-level processes, and visibility into development processes are three pillars of ALM. Other important key components are collaboration, workflow, security, reporting, analytics, being open standards based, being plug-in friendly, and much more, and they are focus areas of ALM. You have also seen that ALM is the coordination and synchronization of all development lifecycle activities.

A good ALM tool should help us implement and automate these pillars and components to deliver better business value to our company or organization.

Chapter 3 delves little bit deeper into different project management processes and frameworks. We will cover some history and also some more “modern” processes.

1 Michael Azoff, “Application Lifecycle Management Making a Difference,” February 2007, Enterprise Networks and Services, OpinionWire.

2 “Application Lifecycle Management and PPM,” Serena, 2006.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.133.116.189