Software Engineering is a broad subject that includes 1. Finding ideas for software applications (i.e. notepad on your computer takes digital notes), 2. Developing the Software &, 3. Testing it. You can develop software in many different programming languages; the most popular seems to be Java. Even websites are software applications.
Software Engineering can also be defined as the field devoted tot he specification, design, production, and maintenance of computer programs that are developed to meet specifications on time and within cost estimates, using tools that help to manage the size and complexity of the resulting software
Specifications refer to what the program is to be; the purpose of the program defined by its requirements.
Design refers to the plan that is to be followed for building the program. The design can be thought of like a blueprint, skeleton, or structure of the program. For example, the design can be though of like the blueprint for a building.
Production refers to following the design and developing the code that will implement the design and make the program actually usable, instead of an outline. Following the previous example, the production of a program can be thought of like following the blueprints for a building, to build that building.
And Maintenance is simply referring to the process of updating the program with patches to fix bugs that may have slipped past the Quality Assurance Testing team, and ended up in the actual program. Usually these bugs, which are found after the release of the program, are reported through user Feedback.