|
Engineering relies on codifying scientific knowledge about a technological problem domain in a form that is directly useful to the practitioner, thereby providing answers for questions that commonly occur in practice. Engineers can then apply this knowledge to solve problems far faster than they otherwise could. In this way, engineering shares prior solutions rather than relying always on virtuoso problem solving.
Software engineering is a label applied to a set of current practices for software development. It refers to the disciplined application of scientific knowledge to resolve conflicting constraints and requirements for problems of immediate, practical significance. Software engineering can be defined as Creating cost-effective solutions to practical problems by applying scientific knowledge building things in the service of mankind, i.e. a discipline whose aim is the production of fault-free software that satisfies the user's needs and that is delivered on time and within budget.
The series of steps that software undergoes, is termed as software life cycle. During this period the product goes through a series of phases:
1. Requirements Phase: The concept is explored and refined, and the client's requirements are elicited.
2. Specification Phase: The client's requirements are analyzed and presented in the form of the specification document, "what the product is supposed to do." This phase is sometimes called the analysis phase.
3. Planning Phase: A plan is drawn up, the software project management plan, describing the proposed software development in detail.
4. Design Phase: The specification undergo two consecutive design processes. First, architectural design in which the product as a whole is broken down into components, called modules. then each module in turn is designed; this process is termed detailed design.
5. Implementation Phase: The various components are coded and tested.
6. Integration Phase: The components of the product are combined and tested as a whole. This phase ends when the product is accepted by the client and goes into operation mode.
7. Maintenance phase: Maintenance includes all changes to the product once the client has agreed that it satisfies the specification document. Maintenance includes corrective maintenance (or software repair), which consists of the removal of residual faults while leaving the specifications unchanged, as well as enhancement (or software update), which consists of changes to the specifications and the implementation of those changes. There are two types of enhancement: The first is perfect maintenance, changes that the client thinks will improve the effectiveness of the product, such as additional functionality. The second is adaptive maintenance, changes made in response to changes in the environment in which the product operates, such as new government regulations.
8. Retirement: The product is removed from service.
In order to achieve the goal of software engineering, appropriate techniques have to be used in all phases of software production. Software engineering addresses all phases of the software life cycle and incorporates aspects of many different areas of human knowledge, including economics and social sciences.
|