Guest Editor's Introduction: Software Engineering in the Small-Practical Software Engineering and Management
Issue No.10 - October (1999 vol.32)
Published by the IEEE Computer Society
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/2.796107
<p>Innovations in software development techniques—including improvements to process, method, and management—will distinguish success from failure in the years ahead.</p>
Over the past five to eight years, software has become a vital component of almost every business as well as of national economies. Almost every product or service has become software-enabled. As a result, organizations' competitiveness is largely becoming dependent on their abilities to use software as a competitive weapon. What is making the competitive landscape more complex is the kind of pressures organizations are facing in terms of time to market, new features, cost, and, of course, quality and reliability.
Furthermore, organizations are finding it increasingly challenging to operate as convergence, discontinuity, and economic boundarylessness are leading to the birth of a new breed of global customers. And any organization's survival—let alone success—is therefore clearly becoming dependent on an ability to understand the characteristics of such global customers and serve them accordingly. It is clear that in their quest for software excellence, 1 organizations have to rely increasingly on software engineering techniques and methodologies in addition to relying on and refining their traditional business strategies.
A COMPETITIVE ADVANTAGE
In response to evolving industry needs, in the past two decades there have been considerable advances in software engineering and management. Tremendous efforts have been made to make software development an engineering discipline, and many new development paradigms, process models, and process improvement techniques have evolved. These advances have been equally well supported by developments in technology and tools.
Unfortunately, however, the gap between the state of the art and the state of the practice is still large. The technology transfer from the labs and universities to the industrial software development organizations has generally been rather poor. Only a handful of defense and large software organizations have really been able to benefit from advances in software engineering. Most organizations have not been successful in adopting software engineering practices and processes. The primary reason for this, in my opinion, has been their inability to apply software engineering and management principles in the right context. This is particularly true of small and midsize software organizations that perhaps don't find that software engineering practices integrate well into their business environment because they operate under a variety of constraints that make such integration difficult. 2
Yet there are organizations that, despite being small and not so budget-rich, have maintained a competitive advantage by using software engineering techniques and process infrastructure, by strategically and tactically managing constraints, and by being innovative. Their success can safely be traced to their ability to understand the context in which they operate and then tailor the software engineering techniques accordingly.
The objective of this special issue is to try to bridge this gap and share with you how some small and mid-size software organizations, through innovative software engineering and management practices, have been successful in today's demanding and highly competitive business environment. The four articles in this special issue are representative of innovative development and management practices.
In This Issue
In "Process Improvement for Small Organizations," Declan Kelly and Bill Culleton share their experience with software process improvement (SPI) in a small software development organization and describe how they have been successful. In recent years, process improvement has received significant attention across the globe, and it is well established that the benefits of software process improvement apply to all organizations—both large and small. 3 However, as the authors also confirm, initiating and sustaining process improvement in small organizations requires performing SPI under various constraints (cost, resources, pressures to deliver, and so on). In this article, the authors describe how they minimized the limitations of their smaller size and maximized the benefits inherent in the culture of a smaller organization for successfully implementing SPI.
As the pressure to excel continues to mount and customer expectation continues to skyrocket, effective and efficient project management is becoming the key to success. In his article "Evolutionary Project Management," Stuart Woodward shares his experiences using the Evolutionary Project Management (EPM) approach. 4 The author highlights the advantages of EPM over conventional approaches, describes the context in which he applied EPM, and shares the encouraging results he obtained. In addition to offering how he used EPM to manage the real-world dynamics of software projects, the author provides tips for success and a postmortem analysis of what could have been done better.
In "Software Development on Internet Time," Michael Cusumano and David Yoffie discuss the process of software development management at Netscape and Microsoft. Faced with time-to-market pressure combined with the requirement of higher quality and low cost, software product development and management is becoming a challenging activity. This is particularly true of Internet software product development, which—because of the volatile marketplace—has of necessity led to the adoption of flexible development techniques. Based on the authors' study at Microsoft and Netscape, 5 the article explains the synchronize-and-stabilize approach and offers a detailed description of such areas as functional roles, product planning, project management, component integration, daily builds, and quality assurance.
As the cumulative experience with the application of software engineering and management techniques is increasing, software practitioners are finding it is easy to validate the effectiveness and usefulness of such techniques, evolve newer techniques and methods that suit their context better, and do what makes business sense for them and their organizations. In his article "Embracing Change with Extreme Programming," Kent Beck introduces a new software development paradigm that challenges the conventional engineering approaches and offers an alternative to them. He describes the motivation behind Extreme Programming and talks about what it is and what it does and does not do. He also presents feedback from some of the method's users at various companies. Perhaps best suited for small and midsize projects, this approach seems to hold some promise. Whether it will work for you—I will leave that to you to decide.
Beyond doubt, innovation is going to be the key to success in the years ahead. This is true of software organizations as well. Innovations in development techniques—including improvements to process, methods, and management—will distinguish success from failure. Success will also depend on understanding the business context well enough to apply the software engineering techniques appropriately.
I hope this special issue brings to you glimpses of innovative practices at software organizations and encourages you to think and practice software engineering innovatively. Enjoy the issue and happy software engineering!
I thank all the reviewers for their time and effort in making this project happen.
Deependra Moitra is general manager and head of quality at the India Product Realization Center (PRC) of Lucent Technologies—Bell Labs Innovation in Bangalore. His interests are in the areas of software engineering management, strategies for software excellence, competitive strategies for the information economy, management of technology and innovation, and e-commerce. He holds a B.Tech. in instrumentation and control engineering from the University of Calicut. He is a senior member of the American Society for Quality and its Software Division, a member of the IEEE Computer Society and the ACM, and a member of the IEEE Computer Society Technical Committee on Software Engineering. Moitra serves on the editorial boards of Knowledge and Process Management: The Journal of Corporate Transformation and Software Quality Professional Journal. He also serves on the Industrial Advisory Board for IEEE Software. Contact Moitra at firstname.lastname@example.org.