Software Productivity
Total Page:16
File Type:pdf, Size:1020Kb
University of Tennessee, Knoxville TRACE: Tennessee Research and Creative Exchange The Harlan D. Mills Collection Science Alliance 1988 Software Productivity Harlan D. Mills Follow this and additional works at: https://trace.tennessee.edu/utk_harlan Part of the Software Engineering Commons Recommended Citation Mills, Harlan D., "Software Productivity" (1988). The Harlan D. Mills Collection. https://trace.tennessee.edu/utk_harlan/11 This Book is brought to you for free and open access by the Science Alliance at TRACE: Tennessee Research and Creative Exchange. It has been accepted for inclusion in The Harlan D. Mills Collection by an authorized administrator of TRACE: Tennessee Research and Creative Exchange. For more information, please contact [email protected]. Other Titles Available from Dorset House Publishing Co. Becoming a Technical Leader: An Organic Problem-Solving Approach by Gerald M. Weinberg Data Structured Software Maintenance: The Warnier/Orr Approach by David A. Higgins Fundamental Concepts of Computer Science: Mathematical Founda tions of Programming by Leon S. Levy General Principles of Systems Design by Gerald M. Weinberg & Daniela Weinberg Peopleware: Productive Projects and Teams by Tom DeMarco & Timothy Lister Practical Project Management: Restoring Quality to DP Projects and Systems by Meilir Page-Jones Understanding the Professional Programmer by Gerald M. Weinberg Rethinking Systems Analysis & Design by Gerald M. Weinberg The Secrets of Consulting: A Guide to Giving & Getting Advice Successfully by Gerald M. Weinberg Strategies for Real-Time System Specification by Derek J. Hatley & Imtiaz A. Pirbhai SOFTWARE PRODUCTIVITY SOFTWARE PRODUCTIVITY HARLAN D MILLS FOREWORD BY ----illl----GERALD M. WEINBERG Dorset House Publishing 353 West 12th Street New York, N.Y. 10014 Library of Congress Cataloging-in-Publication Data Mills, Harlan D., 1919- Software productivity I by Harlan D. Mills ; foreword by Gerald M. Weinberg. p. em. Reprint. Originally published: Boston : Little, Brown, c 1983 . Includes bibliographies and jndex. ISBN 0-932633-10-2: $25 .00 (est.) 1. Electronic digital computers- Programming. I. Title. QA76.6.M523 1988 005--dc19 88-5099 CIP Cover Design: Jeff Faville, Faville Graphics Copyright © 1988 by Harlan D. Mills . Published by Dorset House Publishing Co ., Inc., 353 West 12th Street, New York, NY 10014. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without prior written permission of the publisher. Printed in the United States of America Libra;y of Congress Caralog Nunzber 88-5099 ISBN: 0-932633-10-2 Dedication This book is dedicated to Mr. John B. Jackson, who was President of the Federal Systems Division (FSD) of IBM during the time in which most of the articles in this book were written. Mr. Jackson provided intellectual and executive leadership for introducing an extensive Software Engineering Program into the Federal Systems Division without it losing a stride as a going business in complex systems development. It has been my happy experience to report to a succession of legendary IBM executives during the time in question, namely Messrs. Henry J. White, Joseph M. Fox, James B. Bitonti, Albert E. Babbitt, all vice presidents of FSD, and John B. Jackson and Vincent N. Cook, presidents of FSD. (Mr. Bitonti is now IBM Vice President Manufacturing; Mr. Jackson is now IBM Vice President-Quality.) Each has given me encouragement and freedom to look for better ways of dealing with software problems, and each of these IBM executives has made significant contributions to my own understand ing of the problems of managing software development. Foreword In writing this foreword, I am performing an act of atonement. Years ago, when I first started to hear of Harlan Mills and his ideas, I gave them short shrift. Or, rather, I gave them no shrift at all. To shrive, the priest has to hear the confession from the sinner, not simply hear gossip about the sin. Until I met Harlan, I simply didn't bother to read any of his writings. It was an act of pure prejudice, not against Iowa farm boys or baseball fans, but against mathematicians. Or, really, against the writings of mathe maticians. My prejudice dates from my first geometry class, in high school. Up until that time, I had been something of a whiz kid in math, a fact which I never allowed to escape my schoolmates' attention. But geometry absolutely baffled me. For three weeks I sat open-mouthed in class while our teacher delineated proof after proof on the blackboard. How she could reason in such a straightforward, logically consistent manner was simply beyond my comprehension. During the fourth week, as the theorems grew more complex, I began to notice her stumbling. When she did, she referred to her notes. Eventually, I caught her reasoning backwards, under her breath, from theorem to axioms. Eureka! It was all a hoax! These proofs were not methods of reasoning, but methods of confirming reasoning. They were not methods of discovery, though they were presented as if one worked from axiom through rules of inference to-oh, surprise!-a theorem. I felt as if I had been duped, and that didn't fit well with my status as the gang's whiz kid . I resolved never again to be taken in by mathe maticians and their shabby tricks. This prejudice served me in good stead through many years of college and graduate school mathematics. I never confused the proof of a theorem with the method that might have been used for discovering that theorem-a method which I knew would be anything but clean and neat. And so, when I heard that Harlan Mills was a mathematician by origin, writing about software productivity, I scoffed. It was my loss, as I discovered when I was finally shamed into reading some of his actual work instead of some bastardized rehash. What I discovered was a thinker with a remarkable gift for exposing the origin and development of his ideas, and for taking the reader on the same intellectual voyage he himself had taken. Of course, if the ideas had not been absolutely first-rate, the voy age would not have been worth the fare, regardless of Harlan's talents as ix X Foreword a writer. But, as you well know, they were first-rate ideas-ideas that have had a profound influence on software productivity all over the world. During the past decade or so, we have had many lesser ideas in fecting the body of software productivity. Many of these ideas have spread because they are well packaged into "complete" systems of software development. Harlan's ideas, however, have always had an air of fertile incompleteness about them. To him, no problem ever seems closed, any more than his mind is closed to extensions or even contradictions of his ideas. We have all heard how software productivity is an immense prob lem of our time. I suppose it is the immensity of the problem that makes developers easy prey for these "complete systems of development." For myself, I like the Mills approach better. Instead of packaging some trivial idea that is supposed to solve all problems in an unthinking way, attack the roots of the problem. Let people see your thinking process and decide for themselves how to adapt the ideas to their own environment. True, the Mills approach assumes some intelligence and attention on the part of the reader, but I can't believe that any improvement in software productivity is going to result from mindless mouthing of slogans. When Harlan spoke to me about collecting his previously unpub lished or inaccessible papers, I jumped at the idea. In Software Produc tivity, we have not merely the development of one significant idea, but the development of a whole set of interrelated ideas. It is no more of a "systems development package" than before-Heaven forbid. But to the intelligent, attentive reader, it is much, much more than a package could ever be. It is a chance to see into the mind of one of the profound thinkers of our industry-or of any industry. By following this chronological de velopment of ideas, the reader's problem-solving style will be subtly changed. Mine was. I may not have learned much from those other mathe maticians, but Harlan Mills has been my real teacher. You are lucky that he can now be yours. Gerald M. Weinberg contents Foreword by Gerald M. Weinberg ix 1. In Retrospect 1 2. Search for an Easier, Simpler Way (1968) 7 3. The Iterative IF as a Primitive Instruction (1967) 11 4. Programmer Productivity Through Individual Responsibility (1968) 13 5. The Case Against GO TO Statements in PL/ 1 (1969) 27 6. A. The New York Times Thesaurus of Descriptors (1969) 31 B. A Structural Description of The New York Times Thesaurus of Descriptors (1969) 44 7. Measurements of Program Complexity (1969) 57 8. Chief Programmer Teams: Techniques and Procedures (1970) 65 9. On the Statistical Validation of Computer Programs (1970) 71 10. OS/ 360 Programming (1970) 83 11. Top Down Programming in Large Systems (1970) 91 12. Programming Techniques: From Private Art to Public Practice (1970) 103 13. Mathematical Foundations for Structured Programming (1972) 115 14. Reading Programs as a Managerial Activity (1972) 179 15. How to Buy Quality Software (197 4) 185 xi xii Contents 16. How to Write Correct Programs and Know It (1975) 193 17. The New Math of Computer Programming (1975) 215 18. Software Development (1976) 231 19. Software Engineering Education (1980) 251 20.· Software Productivity in the Enterprise (1981) 265 Index 271 SOFTWARE PRODUCTIVITY ARTICLE 1 In Retrospect I joined IBM in 1964.