This book is for Computer Science and Engineering undergraduate students which is simple to comprehend and is especially written in the format these students would enjoy reading and benefit from learning the foundation concepts of Software Engineering. It has been integrated from various resources including but not limited to the following titles:
[1] Roger S Pressman, Software Engineering- A Practitioner’s Approach, McGraw Hill, 7th Edition, 2010
[2] Ian Sommerville, Software Engineering, Addison-Wesley, 9th Edition, 2011
[3] Douglas Bell, Software Engineering for Students – A Programming Approach, Addison-Wesley, 4th Edition, 2005
Organization of the Book
The book is organized into nine chapters and two Appendices.
In the first introductory chapter, we become familiar with professional software development that would consist of people developing software products including code, programs and documentation. [2,3]
In chapter 2, we are concerned with Requirements Engineering introducing user and system requirements. The former tells the system users what service the system will provide while the latter defines system’s functions, services and constraints in greater detail. In this phase, a requirements specification is also developed for users describing their view of the system, and expressed in natural language. [2,3]
The third chapter on Design is lengthy taking into account all possible types of system designs such as User Interface Design, Modularity, Architectural-Based Design, Pattern- Based Design, WebApp Design, Navigation Design, Component-Level Design, Object-
Oriented Hypermedia Design Method (OOHDM), Object-Oriented Design using UML (Unified Modeling Language) as well as Data Flow Design. [1,2,3]
Chapter 4 deals with software processes such as Waterfall Model, The Spiral Model, Prototyping, Incremental Development, Open Source Software Development, Agile Methods and Extreme Programming and the Unified Process. [1,2,3]
Chapter 5 describes the Project Teams in respect of the principles behind the teams working, how functional and project teams operate and finally how the chief programmer team operates. [3]
Chapter 6 is about Software Metrics and Quality Assurance. Metrics or measures applied on software will help us determine the quality of software, monitor and improve the software as well as they are helpful for assessing different software development approaches. Quality assurance is similar in that monitoring and controlling the process of a software development system helps meet its quality goals. [3].
Chapter 7 portrays about Project Management on the overall. It is an activity trying to verify that the software development is successful. [3]
Chapter 8 summarizes software testing. Testing is done to ensure that the software does what it is intended to do and to discover any defects the program has before putting it to use. [2]
Chapter 9 goes on to explain software evolution. As a matter of fact, software development does not stop after it has been developed but continues to evolve throughout the lifetime of the system. [2]
Last comes the Appendix section. There are two short appendices A and B. Appendix A considers several short sample case studies on software engineering. Appendix B illustrates a UML summary showing the basic concepts and notations. [3]