Software Engineering is the establishment and use of sound Engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.
Software Engineering is around the three layers (elements):
– Quality Focus
The foundation for software engineering is a process layer. Software engineering process is the glue that holds the technology layers together and enables rational, timely development of computer software.
Process defines a framework for a set of key process areas that must be established for effective delivery of software engineering technology.
The key process area forms the basis for management control of software projects and establish the context in which technical methods are applied, work products (models, documents, data, reports, forms, etc. ) are produced, milestones are established, quality is ensured, and change is properly managed.
Process is a step by step plan to complete a task.
SE methods provide the technical “how to’s” for building software. Methods encompass a broad array of tasks that include requirements analysis, design, program construction, testing and maintenance.
SE methods relay on a set of basic principles that govern each area of the technology and include modeling activities and other descriptive techniques.
SE tools provide automated or semi-automated support for the process and the methods.
When tools are integrated so that information created by one tool can be used by another, a system for the support of software development, called Computer Aided Software Engineering (CASE) is established.
CASE combines software, hardware and software engineering database ( a repository containing important information about analysis, design, program construction and testing) to create a software engineering environment that is analogous to CAD/CAE (Computer Aided Design / Engineering ) for hardware.