Preface - Software Engineering: A Methodical Approach (2014)

Software Engineering: A Methodical Approach (2014)

Preface

This book has been compiled with three target groups in mind: The book is best suited for undergraduate students who are pursuing a course in software engineering. Graduate students who are pursuing an introductory course in the subject will also find it useful. Finally, practicing software engineers who need a quick reference on various software engineering methodologies, may also find it useful.

The motivation that drove this work was a desire to provide a concise but comprehensive guide to the discipline of software engineering. Having worked in the information technology (IT) industry for several years, before making a career switch to academia, and having myself witnessed the struggles of many new entrants to the discipline of software engineering, I have upheld the view for some time that a concise but comprehensive reference in software engineering would be useful to students as well as practitioners in the industry.

These notes have been compiled and tested over several years with outstanding results. They draw on personal experiences gained in industry over the years, as well as the suggestions of various professionals and students. The chapters are organized in a manner that reflects my own approach in lecturing the course, but each chapter may be read on its own merit.

The text has been prepared specifically to meet three objectives: comprehensive coverage, brevity, and relevance.

Comprehensive coverage and brevity often operate as competing goals. In order to achieve both, I have adopted a methodical and pragmatic approach that gets straight to the critical issues for each topic, and avoids unnecessary fluff, while using the question of relevance as the balancing force. Additionally, readers should find the following features quite convenient and reader friendly:

· Short paragraphs that express the salient aspects of the subject matter being discussed

· Bullet points or numbers to itemize important things to be remembered

· Diagrams and illustrations to enhance the reader’s understanding

· Overview and summary of each chapter

· Introduction of a number of original software engineering methodologies

· Discussion of solutions to generic software engineering problems in a step-by-step manner

· A chapter with sample examination questions (for the student) and case studies (for the student as well as the inexperienced software engineer)

· Also, my introduction of original methodologies for treating certain software engineering problems should make a useful contribution to already existing literature on the subject. These new methodologies include (but are not confined to) the following: information topology chart (ITC) and user interface topology chart (UITC) in chapters 6 and 11, object/entity specification grid (O/ESG) in chapter 10, extended operation specification (EOS) in chapter 12, and a generic object-naming convention for any software engineering project in chapter 9 and appendix 10.

Organization of the Text

The text is organized in nineteen chapters plus a twentieth chapter consisting of sample examination questions and case studies. The chapters are placed into six divisions. There is also a seventh division that includes appendices in several topics of interest. The chapters and related divisions follow:

Part A: Introductory Topics

Chapter 1, Introduction to Software Engineering: This chapter introduces you to the discipline of software engineering. It defines software engineering, and discusses its importance in the context of a business organization, and as a dominant field of computer science.

Chapter 2, The Role of the Software Engineer: This chapter discusses the role, responsibilities, and tools used by the software engineer.

Part B: Software Investigation and Analysis

Chapter 3, Project Selection and Initial System Requirement: Here, the preliminary activities and the first deliverable of a software engineering project are discussed.

Chapter 4, The Requirements Specification: This chapter discusses the second deliverable of a software engineering project.

Chapter 5, Information Gathering: Various techniques for obtaining useful information about the requirements of a software system are discussed in this chapter.

Chapter 6, Communication via Diagrams: This chapter discusses various diagramming techniques that are available to the software engineer.

Chapter 7, Decision Models for System Logic: This continues the discussion of diagramming techniques by focusing on methodologies for representing system logic.

Chapter 8, Project Management Aids: Here, the focus is on PERT, CPM, Gant Chart, and project management software systems.

Part C: Software Design

Chapter 9, Overview of Software Design: This chapter briefly clarifies the various aspects of software design, and shows how they converge into a significant deliverable of a software engineering project —the design specification.

Chapter 10, Database Design: This chapter discusses database design as an important component of software design. It summarizes the salient aspects of database design, but emphasizes that further study of this topic is absolutely necessary.

Chapter 11, User Interface Design: Here, the user interface is presented as an essential window through which end-users access and interact with the software system. The fundamentals of user interface design are discussed.

Chapter 12, Operations Design: Various methodologies for operations design are discussed in this chapter. The focus is primarily on informal methods.

Chapter 13, Other Design Considerations: This chapter addresses other design issues not covered in the previous four.

Part D: Software Development

Chapter 14, Software Development Issues: This chapter introduces software development as an exciting experience, if and when it follows careful software planning and design. It identifies various issues to be addressed during software development.

Chapter 15, Human Resource Management: Here, effective human resource management (HRM) is discussed as an essential aspect of good software engineering.

Chapter 16: Software Economics: In this chapter, focus is placed on techniques employed in the determination of the cost, price, and value of software systems.

Part E: Software Implementation and Management

Chapter 17, Software Implementation Issues: This chapter discusses various approaches to software implementation.

Chapter 18, Software Management: In this chapter, various aspects related to the management of software systems are discussed.

Chapter 19, Organizing for Effective Management: This chapter provides various options for organizing a software engineering enterprise.

Part F: Final Preparations

Chapter 20, Sample Exercises and Examination Questions

Part G: Appendices

The appendices provide additional discussions and illustrations for your usage. Appendices 1 – 7 provide discussions and additional insights on the object-oriented approach to software engineering. Appendices 8 – 10 provide excerpts from the specification and design of a generic inventory management system. These documents illustrate how some of the principles covered in the course are applied in a real project.

The topics of the appendices are as follows:

· Appendix 1: Introduction to Object-Oriented Methodologies

· Appendix 2: Basic Concepts of Object-Oriented Methodologies

· Appendix 3: Object-Oriented Information Engineering

· Appendix 4: Basic Guidelines of Object-Oriented Methodologies

· Appendix 5: Categorizing Objects

· Appendix 6: Specifying Object Behavior

· Appendix 7: Tools for Object-Oriented Methodologies

· Appendix 8: Excerpts from the ISR of the Inventory Management System

· Appendix 9: Excerpts from the RS of the Inventory Management System

· Appendix 10: Excerpts from the DS of the Inventory Management System

Text Usage

The text could be used as a one-semester or two-semester course in software engineering, augmented with an appropriate CASE or RAD tool. Below are two suggested schedules for using the text. One assumes a one-semester course; the other assumes a two-semester course. The schedule for a one-semester course is a very aggressive one that assumes adequate preparation on the part of the participants. The schedule for a two-semester course gives the participants more time to absorb the material, and gain mastery in the various methodologies discussed by engaging in a meaningful project. This obviously, is the preferred scenario.

image

Approach

Throughout the text, I have adopted a practical, methodical approach to software engineering, avoiding an overkill of theoretical calculations where possible (these can be obtained elsewhere). The primary objective is to help the reader to gain a good grasp of the activities in the software development life cycle (SDLC). At the end of the course, the participant should feel confident about taking on a new software engineering project.