1. Introduction
Engineering of software involves resolving many concerns. As engineering process consists of number of phases and the concerns at each phase can be distinct as well as overlapping. These concerns depend on many things such as –
Goals to be achieved by the particular phase.
Domain for which the software is to be engineered.
Functional and non-functional (the quality attributes) requirements of the system under development.
At the highest level of abstraction we can say that each and every phase of software engineering has the main concern of producing softwareas per user's functional and non-functional requirements and
which is usable by different users of software for a long time.