Software engineering is a set of processes carried out by people undertaking various practices and informed by an overarching paradigm.
Processes are a series of activities that move from an idea, problem, or opportunity to completed software delivered to users. Most processes include four phases-specification, development, validation, and evolution. Agile and lifecycle are two different process approaches to software development.
People involved in software engineering include developers who do the work to enable users to interact with the software in some way. The customer, sometimes the user, makes decisions about the design. Maintenance staff (operations) launch the software and look after it once completed. Testers check that the software meets the original requirements set by the customer, and technical authors write user guides/manuals.
Practices are the specific activities a developer carries out to develop the system. Examples include analysing and modelling people’s problems, collecting user requirements writing code, and testing the system works. The order of the various practices is dictated by the process chosen.
A Paradigm is a set of practices linked together around a set of beliefs about developing software. The two most common paradigms are Object-oriented programming where software is built as a set of real-world objects with properties and behaviours, and Structured systems analysis where software is a set of functions operating on data.