- A comprehensive, integrated compilation on the engineering of software products, addressing the majority of the standard knowledge areas and topics
- Offers best practices focused on those key skills common to many industries and domains that develop software
- Learn how software engineering relates to systems engineering, to facilitate better communication and understanding with other engineering professionals within a project environment
According to reports based on IT case studies, more than half of all software projects either fail outright or run woefully over budget and behind schedule. Software engineering education is not "standardized." Many institutions focus on implementation rather than design as it impacts product architecture. Many graduates join the workforce with incomplete skills and may not be prepared to perform the duties required during their initial careers. In 2004, the IEEE proposed the Software Engineering Body of Knowledge (SWEBOK) standard, which offers a reference for key skills, but not the training path to ensure mastery. Software Engineering: Architecture-driven Software Development is the first comprehensive guide to the underlying skills embodied in the SWEBOK, covering the majority of the standard. Standards expert Richard Schmidt explains the traditional software engineering practices recognized for developing projects for government or corporate systems.
Additionally, many software engineers lack an understanding of system engineering and architecture--the hardware and peripherals their programs will run on--leading to inefficient coding or changes in project requirements. This issue will only grow in importance as more programs leverage parallel computing, requiring an understanding of the parallel capabilities of processors and hardware. Therefore, this book will give both software developers and system engineers key insights into how their two skillsets can support and complement each other. The book maintains focus on these key knowledge areas and offers a set of "best practices" that can be applied to any industry or domain involved in developing software products.