This book covers the core concepts and principles of software engineering through the design and implementation of a software engineering semester project from a primarily object-oriented approach. The book provides the reader with an in-depth discussion of software engineering principles and its foundation accompanied with a review of fundamental object-oriented skills. The reader then learns the software engineering life cycle and principles, including how to model with UML before introducing them to the second part of the book: The Software Engineering Project. The reader learns specific technical activities such as scheduling, communication, documentation, and the ability to embrace change. Following the initial elicitation oSf requirements, including important functional vs non-functional requirements, the reader is introduced to object-oriented analysis and its role during the development process. The reader will learn how to identify and use cases, develop scenarios, model, and much more. Once the specifications and models are implemented, the book focuses on system and object-oriented design. This is accompanied with a discussion of how to integrate and define various components functionally, structurally, and from an object-oriented approach.
During implementation, the reader will learn the process of planning and executing system design plans, which are divided among different developers. Once the software product has been developed, the book covers testing, including documentation on how to plan, create, and utilize tests to ensure the readiness of the software. When complete, the reader will learn the guiding principles to finish, release, and maintain the software going forward. The latter half of the text introduces emerging topics in software engineering, including: Web engineering, cloud computing, agile development, and big data. Web engineering provides an overview of how it differs from traditional software engineering, and the various methods and techniques it encompasses. Cloud computing, a rapidly evolving area in many industries, explores the various service and deployment models, highlighting the benefits and limitations of each. Many users are still realizing the benefits to developing in the cloud and how it can support an agile development environment. Agile development, the ability to adapt to change during development, is rapidly emerging, facilitated with the emergence of cloud computing and big data advancements.
Arguably the biggest challenge being worked on by software engineers is the challenge of big data. Emerging technologies such as Apache Storm are being used to process big data. The ability to rapidly and efficiently store and process big data is a large area of research, with new advancements happening daily.