Software development is one of the main topics that I discuss on this blog. When I decided to focus on the formal aspects of software development, my first inclination was to learn about the deep things of software architecture. This was so much easier said than done. What I discovered, much to my dismay, was that there was no single widely-accepted definition of software architecture. Eventually, after many teeth gnashing episodes, I decided to go with the definition provided by the Software Engineering Institute and the Bass book. This solved only a small part of the problem.
As I read more books and websites, conflicting terms and overlapping concepts remained a problem. For example, there was significant variance regarding what was meant by design as compared to architecture. Some sources used the terms almost as synonyms, whereas others made clear distinctions between the two. Fortunately, The Guide to the Software Engineering Body of Knowledge (SWEBOK) came to the rescue.
SWEBOK harmonizes terminology and concepts from a variety of textbooks and other publications and, in doing so, provides not only a coherent idea of architecture vs. design, but also a practical guide to the field of software engineering, which is a much broader topic. I had two software engineering books on my shelf, and had reviewed others, but they all were far too conceptual to be of much practical use. SWEBOK, on the other hand, struck just the right balance between conceptual and practical information.
Chapter writers have done a great job of cross-referencing/harmonizing these resources, making it possible for those of us without any academic exposure to the field to gain an understanding of the key topics, terms, and concepts. Version 2, published in 2004, was the edition I stumbled across. And, while it was a bit dated in 2011, it was still immensely helpful.
This great resource is now becoming even better. Version 3 is undergoing public review, which assures that all viewpoints, terms, and concepts are considered and vetted for inclusion. Each chapter covers a specific knowledge area. For Version 3, five new knowledge areas have been added. Below is a list of the chapters for Version 3.
Software Engineering Models and Methods
Software Engineering Professional Practice
Software Engineering Economics
Software Configuration Management
Software Engineering Management
Software Engineering Process
Software Engineering Tools and Methods
Chapters (at least in their preview versions) are typically no more than 15 or so pages in length. However, even though brief in length, they pack in a lot of useful information, especially in the form of references to external sources—which is what I find so helpful. Since SWEBOK is used as a curriculum guide for certificate and degree programs, it provides those who want to learn on their own information about the most authoritative sources for the field. At last, no more wandering through Amazon trying to figure out what to buy!
I believe that SWEBOK is a great resource for anyone who desires a better understanding of how software is created. It certainly conveys a more realistic view of what actually goes into building sophisticated software systems, such as EHRs, than does a typical textbook on information technology with a chapter or two on the software development lifecycle.
Reading SWEBOK makes it obvious (or at least it should) that developing more usable systems, decreasing response times, or improving data quality entails more than hiring more programmers or a creating a longer list of requirements. The chapters on software construction, software design, computing foundations, and software engineering models and methods are not too technical, yet provide good overviews of important aspects of software development. They are worth a look, and the public review versions are free.
SWEBOK provides just the roadmap I need to the world of software engineering. It and the growing pool of MOOCs are making professional-level software development knowldege both more accessible and less expensive. Life is wonderful—just wonderful…