Software is a comprehensive logical element composed of three key parts. First, it is a set of instructions (computer programs) that, when executed, provide the desired features, functions, and performance. Second, it includes the data structures that enable these programs to adequately store and manipulate information. Finally, software also includes descriptive information (documentation), in both physical and virtual forms, that describes the operation and use of the programs for users and developers.
The following are the primary characteristics of software:
Software Engineering (SE) is the method of applying scientific and technological knowledge, procedures, and rules to design, develop, and maintain the software product.
Alternatively, it can be defined as applying a technological, scientific, and administrative approach to designing, developing, testing, and maintaining the software product to meet customers' requirements with the best quality of the product.
The layered approach represents the foundation for an effective software engineering practice. It is structured into four interconnected layers, where each layer rests on the one below it, ensuring high-quality software development.
| Layer | Role and Function | Keywords |
|---|---|---|
| A Quality Focus | The foundation and most important aspect; every engineering effort must strive for high quality. | Foundation, Commitment, Quality |
| Process | Acts as the glue that binds all other layers; it provides the management control and framework for the timely development of the software. | Glue, Management Control, Framework |
| Methods | Provides the technical know-how for building the software, covering all tasks from requirements analysis and design to construction and testing. | Technical Tasks, How-to, Analysis, Design |
| Tools | Offers automated or semi-automated support for the Process and Methods layers, integrating all activities to enhance efficiency. | Automation, Support, Integration, CASE |
