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