Software is a set of instructions, data structures, and associated documentation that directs a computer to perform specific tasks or operations.
Key components include:
Computer programs containing instructions that provide desired functionality when executed
Data structures enabling programs to adequately store and manipulate information
Documentation describing how to use the software
Software is developed or engineered rather than manufactured. It doesn't wear out but can deteriorate over time due to changing requirements and environments. Most software is custom-built, although there is a trend toward component-based development.
What is Software Engineering?
IEEE Definition
"The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software."
"The study of approaches as in (1)."
Software engineering is a systematic, disciplined approach to developing software. It applies engineering principles and methods to create high-quality, reliable, and maintainable software solutions in a cost-effective manner.
Software Development Life Cycle (SDLC)
The SDLC includes the following phases:
Requirements gathering and analysis
Design
Implementation
Testing
Deployment
Maintenance
Software Process Models
A software process model is an abstraction of the actual process used to develop software. It defines activities, actions, tasks, milestones, and work products required to engineer high-quality software.
Processes, Tasks and Frameworks
Process: Collection of activities, actions, and tasks