This book covers whole gamut of software engineering. The first chapter is on software engineering methodologies. Both Waterfall and Agile software engineering methodologies have been discussed in length. I have also provided information as to how each methodology stacks up against each other. Scrum is especially covered extensively as it has become very popular and learning Scrum is essential as it is being used more and more on software projects. The second chapter is on software requirement engineering. After you have gone through this chapter, you will be able to build user stories and other types of software requirement engineering documents. The third chapter is on software project management.
Since we learned as to how to create good software requirements in Chapter 2; now we can do project planning activities for these software requirements. The fourth chapter is on software feasibility studies. For each software requirement; we can find out feasible solutions using prototyping techniques which are discussed in this chapter. The fifth chapter is on software high level design. A software product consists of many pieces and understanding it from a higher level is important. Also using pre defined templates in form of architecture and software patterns helps in building software products more productively. Chapter 6 is devoted to learn user interface design. We can learn how to build user interfaces using mock up screens.
Chapter 7 is concerned about learning as to how to design and program so that business logic can be implemented. We will learn all object oriented design concepts including class diagrams, object diagrams, sequence diagrams, statechart diagrams etc. Programming concepts like variables, methods, classes and objects are also covered extensively. Chapter 8 is about database design. We will learn about Entity Relationship diagrams and other concepts to design databases for software products. Chapter 9 is about software testing. We will learn everything about unit, integration, system, and user acceptance testing in this chapter. Chapter 10 is about software maintenance.
Apart from software maintenance; we will also learn about production instances of software products in this chapter. Chapter 11 is about project execution and conflict management. We will learn about project tracking techniques like Gantt charts for Waterfall projects and burn-down chart for Agile projects. Learning software engineering also involves project management. The main case study involves building a software product which is known as smart city. This software product can be used to provide information about a city (colleges, libraries, hotels, industries, parks, museums, zoos, restaurants, malls etc.). The case studies I have provided are all based on Scrum.
Software engineering is completely aligned with Scrum in the case study. Software requirements are in form of user stories. Project management is provided in terms of Release and Sprint planning. Even daily planning is also discussed. As a software product must be developed incrementally; I have provided enough material to learn as to how to develop a software product incrementally. The Release and Sprint planning for the software products we will be building; are explained lucidly and you will learn these aspects while you build a software product. User interfaces are designed and implemented incrementally using mock up screens. Business logic is designed and implemented incrementally using classes.
Even database is also designed incrementally. Unit, integration, system and user acceptance testing is also discussed in terms of incrementally building the software product. The smart city product is built over 3 Releases using 10 Sprints.