The essence of practice
How to solve it, engineers outlined the essence of problem solving, and consequently, the essence of software engineering practice.
1. Understand the problem (communication and analysis).
2. Plan a solution (modeling and software design).
3. Carry out the plan (code generation).
4. Examine the result for accuracy (testing and quality assurance).
Core principles
The dictionary defines the word principle as “an important underlying law or assumption required in a system of thought” throughout this book we discuss principles at many different levels of abstraction. Some focus on software engineering as a whole, others consider a specific generic framework activity (e.g., customer communication), and still others focus on software engineering actions (e.g., architectural design) or technical tasks (e.g., write a usage scenario). Regardless of their level of focus, principles help us establish a mind set for solid software engineering practice. They are important for that reason.
First principle: The reason it all exists
A software system exists for one reason: to provide value to its users. All decisions should be made with this in mind. Before specifying a system requirement, before nothing a piece of system functionality, before determining the hardware platforms or development processes, ask yourself questions such as: does this add real value to the system? If the answer is no, don’t do it. All other principles support this one.
The second principle: Kiss (Keep it simple, stupid)
A clear vision is essential to the success of a software project. Without one, a project almost unfailingly ends up being “of two minds” about itself. Without conceptual integrity, a system threatens to become a patchwork of incompatible design, held together by the wrong kind of screws.