Definition of Software Engineering
It is a systematic approach to building (maintaining / operating) high quality software using a disciplined process.
Software Engineering Building Blocks

Tools: Programming Language, IDE (Eclipse), word processor, rational rose etc.
Methods: Skill set, OOP, OOAD, SDLC tasks like requirement, analysis, design and code.
Process Model: Defines a framework on how to go about doing things, such as Waterfall model and prototyping model.
Quality Focus: Activities that ensures there is quality in every step of software engineering process.
Definition of Software Process
It is a series of steps to produce a piece of quality software.
Software Process Framework

Software Process Models
Waterfall Model
A Systematic sequential approach to development
Disadvantage:
unrealistic as changes are inevitable
Working version available only at the end
RAD Model
High speed version of waterfall model and it is a component based approach. COTS and automatic code generator are heavily used during the development.
Disadvantage:
Require more human resource
Good modularization required Technical Risk
Prototyping Model
This approach is used when requirements are “fuzzy”. Where users are unclear of detailed business processes and developers require more understanding.
Disadvantage:
different perspective between user and developer
User – working version
Developer – quick and dirty prototype
Developer tends to cut corners and talking shortcuts to make something work.