The principles of software engineering involve refactoring the code, correcting errors that have been uncovered, performing unit tests, and performing a code walkthrough. At the other end (when coding initiates), the construction practice involves creating a visual layout that helps code understanding, writing self-documenting code, following other local coding standards, and selecting meaningful variable names.
It also involves creating nested loops to be tested easily, keeping conditional logic as simple as possible, creating continuous interfaces, and understanding the architecture of the software. It also includes the selection of data structures that will effectively meet the needs of the design and constrain the algorithms by following structured programming practices.
The principles of modeling practice (design) involve iterative development of the design so that the designer can acquire greater simplicity. Design representations (models) must be easily understandable, and components must be coupled loosely to the external environment and one another.
It also involves functional design independent of the component-level design, tuning the user interface design according to the needs of the end-user, and carefully designing both external and internal interfaces. Lastly, it also involves the importance of designing data similar to the design of processing functions, considering the software architecture of the system always to be constructed, and the design must be traceable to the analysis model.
Principles of Software Engineering
At the other end, the principles of modeling practice (analysis) involve moving the analysis from important information to implementation detail. It also includes the behavior, function, and information depicted by the models in such a manner that details are uncovered in a hierarchical or layered fashion, and as a consequence of external events, the behavior of the software must be represented.
Lastly, it also involves the functions that must be well described by the software and the information domain of a problem (that is, the data that flows out and in of the system) that must be well understood and represented.


