Further Reading


This list of recommended reading includes new material which is not included in the 6th edition either because it was published after January 2000 when I decided that no further updating of the text was realistic or because I only became aware of it after that date. I have only included papers that I have found interesting rather than all papers on the topics that I have read. This a not a comprehensive or complete list - life is too short to read everything on software engineering.

Generally, I have found that the most readable papers are published in IEEE Computer, IEEE Software and the Communications of the ACM. As an active researcher, I am sorry to say that the style of writing in most research-orientedconferences and journals where new work is published is generally dull and uninteresting (my own papers are no exception - I'd like to write more informally but this is deemed unscientific).

My intention is to update this list on an occasional basis when I have time and potentially interesting material to add to it.

Part 1 - Introduction          Part 2 - Requirements      Part 3 - Design      Part 4 - Critical Systems
Part 5 - Verification and Validation  Part 6 - Management      Part 7 - Evolution

Part 1 - Introduction

The Push to Make Software Engineering Respectable. Describes the essentials of professionalism for software engineers. (G. Pour, M. L. Griss and M. Lutz, IEEE Computer, 33 (5), May 2000)

Special Issue on Software Process Diversity. This special issue includes a number of interesting and useful articles on different types of process for developing software. It also includes articles covering process maturity and the CMM model (Chapter 25). (IEEE Software, 17 (4), July 2000)

Extreme programming - Development through Dialog. A short introduction that addresses common concerns about extreme programming. (R. C. Martin, IEEE Software, July 2000)

A Software Development Process for Small Projects. Suggests a software process that has been adapted for small companies. (M. L. Russ and J. D. McGregor,  IEEE Software, 17 (4), September 2000)

Wisdom: A Software Engineering Method for Small Software Development Companies. A discussion of a 'lightweight' method that brings some elements of systematic software engineering to small organisations who cannot afford complex methods. (N. J. Nunes and J. F. Cunha,  IEEE Software, 17 (4), September 2000)

Weaving Together Requirements and Architectures.  A short discussion of how requirements engineering and architectural design can be integrated in an evolutionary development process. (B. Nuseibeh, IEEE Computer, March 2001)

Get Ready for Agile Methods, with Care. A good discussion of the pros and cons of agile methods such as extreme programming by a leading software engineering practitioner and researcher. (B. Boehm, IEEE Computer, 35 (4), January 2002)

Software System Engineering: A Tutorial. There are few articles published on this important topic. This is a good overview and introduction. (R. H. Thayer, IEEE Computer, 35 (4), April 2002)

The Agile Methods Fray. A follow-up to Boehm's January article presented as a discussion between Boehm and DeMarco. (T. DeMarco and B. Boehm, IEEE Computer, 35 (6), June 2002)

Part 1 - Introduction          Part 2 - Requirements      Part 3 - Design      Part 4 - Critical Systems
Part 5 - Verification and Validation  Part 6 - Management      Part 7 - Evolution

Part 2 - Requirements

A Reference Model for Requirements and Specifications (C. A. Gunter, E. L. Gunter, M. Jackson and P. Zave, IEEE Software, 17 (2), March 2000)

Requirements Management: The search for Nirvana (D. J. Reifer, IEEE Software, 17 (3), May 2000)

Requirements that Handle IKIWISI, COTS and Rapid Change. An interesting short article on how requirements engineering has to evolve to cope with different types of software development. (B. Boehm, IEEE Computer, 33 (7), July 2000)

Developing Groupware for Requirements Negotiation: Lessons Learned. A description of a support systems based around Boehm's win-win approach for teams who are negotating system requirements (B. Boehm, P. Grunbacher, R. O. Briggs, IEEE Software, 18 (3), May/June 2001)

Where do Requirements Come From. A short description of a new approach to requirements discovery using stimuli to creative thinking. (N. Maiden and A. Gizikis, IEEE Software, 18 (5), September/October 2001)

Correctness by Construction: Developing a Commercial Secure System. Discusses the use of formal specification in developing a secure system (A. Hall and R. Chapman, IEEE Software, 19 (1), January/February 2002)

Part 1 - Introduction          Part 2 - Requirements      Part 3 - Design      Part 4 - Critical Systems
Part 5 - Verification and Validation  Part 6 - Management      Part 7 - Evolution

Part 3 - Design

What do you mean by COTS. The use of COTS systems, discussed in Chapter 14, is likely to be increasingly important. This is an interesting clarification of the sometimes-confusing terminology in this area. (D. Carney and F. Long, IEEE Software, 17 (2), March 2000)

Redesigning Air Traffic Control: An exercise in software design (D. Jackson and J. Chapin, IEEE Software, 17 (3), May 2000)

Real-time Distributed Object Computing: An Emerging Field. A special section discussing the use of distributed objects in real-time systems (E. Shokri and P. Sheu, IEEE Computer, 33 (6), June 2000)

Diversity in Reuse Processes. Describes four different successful approaches to achieve software reuse. (M. Morisio, C. Tully and M. Ezran, IEEE Software, 17 (4), July 2000)

Component-based Enterprise Frameworks. A special issue of the CACM with a range of papers on frameworks. (Comm ACM, 43 (10), October 2000)

Tracking Usability Issues: To Bug or Not to Bug. A discussion of how usability problems that arise in a system can be tracked and integrated with other problem reporting systems. There are conflicting viewpoints on whether these issues should be classed as system bugs (C. Wilson and K. Coyne, ACM Interactions, May/June 2001, 8 (3))

Accelerating Development with Agent Components. One of a number of articles on very rapid software development (software engineering on internet time) which proposes the use of agents for more rpaid delivery.  The problems of verification and validation of agent-based systems are not covered (and these are big problems). (M. Griss and G. Pour, IEEE Computer, May 2001, 34 (5))

COTS-based Systems Top 10 List. A list of hypotheses about COTS-based systems which highlights why this approach may not be as cheap nor as effective as enthusiasts suggest (V. R. Basili and B. Boehm. IEEE Computer, 34 (5), May 2001)

Middleware Challenges Ahead.  A good summary of the features that next-generation middleware will have to provide to support new types of distributed application such as ubiquitous computer systems. (K. Geihs, IEEE Computer, June 2001, 34 (6))

Comm. ACM. Special Issue on Aspect-oriented Programming. This special issue includes an introduction to aspect-oriented programming - an approach to program design that may have a major impact on future software development (Comm. ACM, 44 (10), October 2001)

Will UML 2.0 be agile or awkward. A plea for the revision of UML expected in 2002 to be lean rather than flabby. (COmm. ACM, 45 (1), January 2002)

The Case for Reflective Middleware. Discusses a new approaches to the construction of middleware for distributed systems. (F. Kon, F. Costa, G. Blair and R. H. Campbell. Comm. ACM, 45 (6), June 2002)

Part 1 - Introduction          Part 2 - Requirements      Part 3 - Design      Part 4 - Critical Systems
Part 5 - Verification and Validation  Part 6 - Management      Part 7 - Evolution

Part 4 - Critical Systems

Dependable Computing: Concepts, Limits, Challenges.  A paper that attempts to define dependability and which focuses on fault-tolerance as a means of achieving dependable systems. (J-C Laprie, Proc. 25th IEEE Symp. on Fault-Tolerant Computing, Pasadena, USA, IEEE Press, 1995)

Reliability and Survivability of Wireless and Mobile Networks. Nothing really to do with software engineering but an interesting article on system dependability (A. Snow, U. Varshney and A. D. Malloy, IEEE Computer, July 2000)

The Challenge of Building Survivable Information-Intensive Systems.  The introduction to a special issue on survivability. Several other articles in the issue are also relevant (A. Jones, IEEE Computer, 33 (8), August 2000)

IEEE Software, Special Issue on Fault Tolerance.  This special issue contains a number of articles on the development of fault-tolerant systems. (IEEE Software, 18 (4), July/August 2001)

IEEE Software, Special Issue on Building Software Securely. This special issue includes several articles which discuss how to build secure software. I particularly liked the article by Hall and Chapman where formal methods were used for part of the system development (IEEE Software, 19 (1), January/February 2002)

Part 1 - Introduction          Part 2 - Requirements      Part 3 - Design      Part 4 - Critical Systems
Part 5 - Verification and Validation  Part 6 - Management      Part 7 - Evolution

Part 5 - Verification and Validation

What is software testing and why is it so hard. An interesting practical article on the difficulties of program testing which offers useful advice on how to test programs. (J. A. Whittaker, IEEE Software, 17 (1), January 2000)

Will the Real Operational Profile Please Stand Up. Discusses practical issues in generating operational profiles. (J. Voas, IEEE Software, 17 (2), March 2000)

Statistical Process Control: Analyzing a Space Shuttle Onboard Software Process. Discusses the use of inspection in software processes and the use of inspection results for process improvement. (W. A. Florac, A. D. Carleton, J. R. Barnard, IEEE Software, 17 (4), July 2000)
 

Part 1 - Introduction          Part 2 - Requirements      Part 3 - Design      Part 4 - Critical Systems
Part 5 - Verification and Validation  Part 6 - Management      Part 7 - Evolution

Part 6 - Management

Can you Trust Software Capability Evaluations. Discusses practical problems with using the CMM model to assess contractor capability. (E. O' Connell and H. Saiedian, IEEE Computer, 33 (2), February 2000)

Applying CMM Project Planning practices to Diverse Environments. Discusses how the Capability Maturity Model can be adapted to cope with development environments that are different from the large, long-lifetime project developments for which the model was designed. (D. L. Johnson and J. G. Brodman, IEEE Software, 17 (4), July 2000)

How Internet Companies Negotiate Software Quality. An article discussing the difficulties of applying conventional approaches to software quality management when there are very severe schedule pressures and a need for rapid delivery. (R. Baskerville et al., IEEE Computer, May 2001, 34 (5))

There have been major revisions of capability maturity models discussed in Chapter 25 with a new integrated model suite published by the Software Engineeirng Institute. Full information can be accessed at http://www.sei.cmu.edu/cmmi/ but I hope to find something more accessible soon.

Extreme Collaboration. Discusses an approach used at NASA's Jet Propulsion Laboratory for rapid aerospace design. This involves a design team working together in a large room with lots of public displays. (G. Mark. Comm. ACM, 45 (6), June 2002)

Part 1 - Introduction          Part 2 - Requirements      Part 3 - Design      Part 4 - Critical Systems
Part 5 - Verification and Validation  Part 6 - Management      Part 7 - Evolution

Part 7 -Evolution

Legacy Integration - Changing Perspectives. Discusses techniques for web-enabling legacy systems. (F. P. Coyle, IEEE Software, 17 (2), March 2000)

Software Processes - Live or Let Die. An article about the reengineering of a softwrae product and the processes that were used. A variant of the Cleanroom process (discussed in Chapter 20 was proposed but was not entirely successful. (A. B. Jakonsen, IEEE Software, 17 (3), May 2000)

Part 1 - Introduction          Part 2 - Requirements      Part 3 - Design      Part 4 - Critical Systems
Part 5 - Verification and Validation  Part 6 - Management      Part 7 - Evolution