Software Engineering involves developing software systems on time, on budget, with acceptable performance and correct operation. It is concerned with theories, methods and tools for professional software development. Software costs often dominate system costs and software is more expensive to maintain than develop. There are different types of software products and processes used for development.