Principles and Practices of Software Engineering

Some of the core principles of software engineering are: better results can be produced if complete and clear thought is placed before action, the value of the reusable components and the program can be increased, and the long-term cost can be reduced by software reuse.

Some other principles involved building software that can be adapted and changed easily, implementing, designing, and specifying it always knowing that it has to be used later by someone.

The last principle is that the success of the project depends upon a clear vision, all implementation and design must be as simple as possible, requirements must be satisfied, and value must be provided to the users by the software.

On the other hand, some of the practices of software engineering are deployment practice, testing practice, construction practice, modeling practice, planning practice, and communication practice.

Software Engineering

Software engineering practice also involves providing necessary management and technology related to how the job can be performed. It also involves equipping management to manage software engineers and software projects to build computer programs.

It also includes a collection of tools, methods, principles, and concepts that software engineering can regularly consider.

The principles of deployment practice involve fixing buggy software before delivery, providing proper instructional materials to end-users, creating a support regime before delivering software, testing and assembling a complete delivery package, and managing the customer expectations related to the software.

The principles of testing practice involve no possibility of exhaustive testing, initiating testing in the small and then proceeding to the large (for example, starting with unit testing, then integration testing, then validation testing and then ending at system testing.

It also involves the application of the Pareto principle to software testing, planning of tests long before initiating the testing, and tracing all tests as per the requirements of the software.