Engineering Meets Management, Part 1: A Recipe for Excellence
Despite the well-defined process models the software development industry has formed over the years, there still is a challenge in fulfilling the customer's expectations and delivering quality software. This series looks at the software engineering and product lifecycle management processes and suggests an amalgamation of the practices of these two disciplines for project excellence in this age of the Internet and cloud computing.
01/29/11 5:00 AM PT
IT service companies rely heavily on software engineering processes and methods to deliver services that enable business to achieve their goals. As a discipline, product lifecycle management (PLM) has matured and has delivered major benefits, such as reuse, increased market share, reduced time-to-market and global brand image.
IT services focused on delivering IT applications in frequent short releases, progressive inclusion of features, etc., are likely to benefit from leveraging product line management practices with regards to client delight, planned incremental inclusion of features, reduced support costs, etc.
Today, the customer's expectation of the software deliverables is as itemized:
- Adaptability rather than predictability.
- Frequent short releases to ensure faster delivery of expected results to the clients and a clearer and sharper crystallization of client's needs.
- Working software/product is the primary measure of progress.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
- Collaborative values and principles. Business people and IT developers work together daily throughout the project.
This series attempts to look at the software engineering and PLM processes and suggests an amalgamation of the practices of these two disciplines for project excellence in this age of the Internet and cloud computing .
Software Engineering - A Standard Approach for Software Projects
There are quite a few standard models available today for software development, such as waterfall model, prototype model, spiral model, RAD model, etc. The Software Development Life Cycle (SDLC) involves critical phases of requirements, design, development, testing and implementation.
The industry has evolved standard formats of artifacts to be produced at the completion of each of these phases. Quality management frameworks such as CMM has influenced standardization of process steps, documentation and steps to capture process data and analyze for developing insights into software development or maintenance operations.
Despite these well-defined process models for software development, there still is a challenge in fulfilling the customer's expectations and delivering quality software. The failure rates are high, which in turn has had a huge economic impact. The end results obtained have been inadequate, thereby accounting for a low-trust relationship between IT and business functions.
The software engineering processes involves certain risks (listed below) despite its structured approach:
- Unrealistic schedules and budgets
- Developing the wrong software functions
- Developing the wrong user interface
- Continuing stream of requirements changes
- Real-time performance shortfalls
- Straining computer science capabilities
- Personnel shortfalls
Popularity of Agile Model in Multirelease IT Applications
This set the stage for a new discipline called "Agile." Agile was an IT firm's response to combat increasing competition and complex business processes. It works by squeezing timelines and reducing gaps between customers' requirements and the software product being developed.
The proponents of Agile believe that:
- Current software development processes are too heavyweight or cumbersome.
- Current software development is too rigid. It is often not accommodating towards very volatile (emergent) requirements.
- Team co-location with empowered customers is a distant reality.
- It is plan-based rather than people-based.
The pressing need was a methodology that preferred:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The "Agile" methodology has both Agility and a Chaordic view. It has the ability to both create and respond to change to maximize returns in a turbulent business environment. It is chaordic because it balances between chaos and order.
Some of the salient features of agile methodology are:
- Customer satisfaction through early and frequent delivery of valuable software.
- Relying on face-to-face conversation to convey information to and within a development team.
- The "lightweight" agile processes do not demand extensive documentation. The emphasis is on documenting only what is necessary.
- Being agreeable towards emergent requirements.
"Every release should be as small as possible, containing the most valuable business requirements." [Kent Beck and Cynthia Andres, Extreme Programming Explained: Embrace Change]
Agility is not a function of the size of an enterprise, i.e. it is as relevant to a small-sized enterprise as to a medium-sized or large enterprise. However, agile methodologies should not be used without tailoring
- For life-critical or high-reliability systems
- By large and/or virtual teams
Product Lifecycle Management - It's Relevance to Business
We are the consumers of a variety of products in our daily lives. There have been products that have awarded us a delightful experience. Be it lifestyle electronics like Bose, mobile phones like the Apple iPhone, cars like the Volkswagen Beetle, fashion products from Gucci or software applications like Microsoft Outlook, they all have a behind-the-screen approach that is centered on the product.
It's all about systematically managing the lifecycle comprising of requirements, design, development, support and improvement phases.
R.N. Prasad is an associate vice president with the education and research unit at Infosys Technologies Limited. Seema Acharya is a principal with the education and research unit at Infosys.