Abstract :
Since critical and specific software systems last longer and they are ought to work for an organization for many years, maintenance and supporting costs of them will grow to high amounts in the upcoming years. In order to develop and produce special aimed software, we should piece, classify, combine, and prioritize different requirements, pre-requisites, co-requisites, functional and nonfunctional requirements (by using requirements engineering process, we can classify the requirements). Development and production of special software requires different requirements to be categorized (different requirements can be categorized using software requirements engineering). In other words, we have to see all requirements during the software´s life cycle, whether they are important and necessary for our software at present time or they are not important currently but will become important in future. Requirements engineering aim is to recognize the stockholder´ requirements and their verifications then gaining agreement on system requirements, is not just a phase completed at the beginning of system development not required any more, but includes parts of next phases of software engineering as well. To achieve this purpose, we acquired a comprehensive knowledge about requirements engineering. First, we defined requirements engineering and explained its aim in the software production life cycle. The main activities and purpose of each requirements engineering activity is described. Moreover, the techniques used in each activity are described for a better comprehension of the subject.
Keywords :
formal specification; software cost estimation; software development management; software maintenance; functional requirement; nonfunctional requirement; requirements engineering; software development; software engineering; software maintenance; software production life cycle; system development; Analytical models; Documentation; Production; Programming; Software engineering; Software systems;