As any reader of computer books soon realizes, many titles are of the moment, designed to give us the latest in technology quickly. Busy software developers and managers certainly need this kind of eBook in order to keep up with an ever-changing discipline. Some titles are generated from theory and academic research; others from actual practice and experience in the field. It is rare that a eBook draws so well from both types of expertise. James Cusick’s Durable Ideas in Software Engineering: Concepts, Methods, and Approaches from my Virtual Toolbox is one such eBook. It’s a compendium and review of major ideas of software engineering informed by the author’s outstanding academic and practical knowledge of the field. Garnered from his experience at leading-edge corporations like AT&T and Bell Labs, with over twenty years of software development and successful project management, the author leads us through a tour of both theory and practice. Not only does it give us a perspective of designing, testing, managing and supporting software drawn from real experience, it also provides an overview of some of the major trends in software design, from the earliest software engineering methodologies to today’s Agile methods and globally based development teams. Moreover, as an early adopter and researcher into the use of metrics to improve software reliability, the author has a lot to say about improving software from the ground up.
Much has changed in software engineering over the past few decades, but as this eBook argues, there are some tools and ideas that have endured. In many years as a colleague and friend, I have always valued the author’s perspective on what’s next in our field. With his experiences in leading-edge companies, where software methodology and process were clearly not an afterthought, and his extensive publications, James Cusick can offer us a unique perspective – a successful developer and manager of complex software projects who has drawn the best ideas from software process and development to inform our own work. Durable Ideas in Software Engineering is an invaluable resource for software developers and managers for both large and small projects. Throughout this eBook, you will learn what has worked in real projects, and you will see area of software process seldom covered, such as support and metrics for software defect management. Strong coverage of topics like models of software development, system architecture, risk analysis, and managing software change will also prove invaluable to working software professionals. Ideal for any software developer or manager, Durable Ideas in Software Engineering is a readable, thorough, and engaging tour of some of the very best ideas from software engineering as applied to real-world projects.
Richard V. Dragan, Ph.D.
This eBook has its roots in the many technical publications, lectures, and prior attempts at putting it all together over the last 15 years. In working with Prof. Al Aho at Columbia University I was challenged to convert my lectures on Software Engineering into a text which could be better than those available at the time. After repeated failed attempts at doing so I collected sufficient material to build this refocused document. When the opportunity presented itself to write and publish electronically on the tools that have worked for me over the duration of my career I decided to give it one more try. With the help of Bentham Science Publishers this is the result.
Software Engineering now occupies a central place in the development of technology and in the advancement of the economy. From telecommunications to aerospace and from cash registers to medical imaging, software plays a vital and often decisive role in the successful accomplishment of a variety of pursuits. The creation of software requires a variety of techniques, tools, and especially, properly skilled engineers. The enduring, lasting, and meaningful concepts, ideas, and methods in software engineering from the perspective of what has worked on the job for me will be presented and discussed. This exploration will not be exhaustive as the subject is immense in breadth. Instead the focus will be on those core concepts and approaches that have proven useful to the author time and time again on many industry projects and over a quarter century of research, development, and teaching.
The eBook covers the essential topics of the field of software engineering with a focus on practical and commonly used techniques along with advanced topics meant to extend the reader’s knowledge regarding leading edge approaches. Some sections derive from lectures or presentations which received limited circulation thus are new in this format. The eBook was developed as a multiple chapter manuscript with figures, charts, tables, designs or source code examples where needed, and other supporting information. The voice of the eBook is certainly technical in nature but does not assume significant prior knowledge in the field.
Building on both the industrial, research, and teaching experiences of the author a dynamic treatment of the subject is provided incorporating a wide body of published findings and techniques, novel organization of material, original concepts, contributions from specialists, and clear, concise writing. Using over 20 years of lecture notes, transcripts, course notes, view graphs, published articles, and other materials, an overall framework was established for the book. New research was conducted to support the content development as well.
The core technical topics of the eBook include project organization, planning, and execution. Both CMMI and Agile methods are discussed so that the essence of each is understood for their key benefits. A generic process engineering approach is also provided that allows for the creation and adaptation of any future required process model. Architecture and design are highlighted by providing previously unpublished summaries of fundamental web software architectures and design approaches. A special section on the use of the Operational Profile and achieving reliable software designs as well as practical test methods balance the planning and architecture focus. Additionally, a discussion of useful software metrics in the areas of estimation, quality, test planning, and performance engineering and performance analysis is be provided throughout the book. Unlike many books on this subject, a detailed view of support engineering using a simplified, proven, and custom application of ITIL is provided. Finally, the latest trends in the software profession, offshore management, and global software development models are reviewed with an emphasis on cross boarder development oversight and governance taking into account culture, communications, and dispersion.
In summary, this eBook focuses on the core aspects of software development, planning, architecture, measurement, testing, deployment, support, and global cooperation that is vital to realizing complex software projects today. Each of the ideas presented here are practical and proven from my own experience and do not represent simply a catalog of proposed concepts or methods.
However, the author confirm that this eBook has no conflict of interest.
James J. Cusick
New York City
List of Contributors
James J. Cusick