Software Engineering
Introduction
Software engineering is a discipline that involves the application of engineering principles to the creation, development, maintenance, and testing of software. It is a systematic, disciplined, and quantifiable approach to the development, operation, and maintenance of software.
History
The term "software engineering" was first used in the late 1960s at a NATO conference in response to the perceived "software crisis" of the time. The crisis was a result of the rapid increases in computer power and the complexity of the problems that could now be tackled. This led to increased demands on software, which was becoming increasingly complex and difficult to manage.
Software Development Life Cycle (SDLC)
The Software Development Life Cycle (SDLC) is a framework that describes the stages involved in the development of software from initial concept, through to maintenance and eventual retirement of the software. The SDLC is a model that describes the phases of an information system's life cycle, from the feasibility study through the maintenance phase.
Software Requirements
Software requirements are the functionalities and constraints that the end-user (usually a client or customer of the business) expects from the software. The software requirements are detailed in the Software Requirements Specification (SRS) document, which serves as a contract between the developer and the customer.
Software Design
Software design is the process of defining the architecture, components, interfaces, and other characteristics of a system or component. It is also described as the process of applying various techniques and principles in order to define a device, a system, or a process to meet specified requirements.
Software Construction
Software construction is the detailed creation of working, meaningful software through a combination of coding, verification, unit testing, integration testing, and debugging. It is also the stage of software development in which the source code is created, debugged, and maintained.
Software Testing
Software testing is an integral part of software engineering. It involves the execution of a software component or system component to evaluate one or more properties of interest. Software testing also helps to identify errors, gaps or missing requirements in contrary to the actual requirements.
Software Maintenance
Software maintenance in software engineering involves the modification of a software product after delivery to correct faults, to improve performance or other attributes, or to adapt the product to a modified environment.
Software Configuration Management
Software Configuration Management (SCM) is a set of processes, policies, and tools that organize the development process. The goal of SCM is to control the changes that occur in the system.
Software Engineering Ethics
Software engineering ethics is a field of applied ethics that deals with the moral and ethical issues arising in the software engineering profession. It involves the responsibility of the software engineer to the society, client, and the profession.