The principles of Software engineering consist of determining the feasible approach toward managing a software application. The normal processes of engineering software involve: the interviewing process, which is the research and studying of the problem domain; and the prototyping process, which refers to the understanding of the type of data needed for each level of the problem.
A good practice is to use Data Flow Diagrams to visually articulate how each process of the problem interacts with each other to solve the big problem. Using Data Dictionaries helps to define each data prototype and conceive the stability of managing each sub-unit of the problem domain. Each sub-routine that solves a specific problem should have its own specification.
If the software application utilized a database, the engineer is responsible for designing the Database, and designing the effective output and input. The final process is the software Documentation, which involves extensive testing to explain in detail the design and documentation technique, flowcharts, pseudo code, and procedures manual.