ABSTRACT

Software engineering is a cognitive reaction to the complexity of software development. It reflects the inevitable need for analysis and planning; reliability and control of risk; and scheduling and coordination when embarking on any complex human endeavor. The planning and organized effort required in developing software products is not unlike that required in many other activities. As a very simple example, one could compare developing a software product to starting on a journey-both begin with preparation. For a journey, the first decision is to decide the destination. Then, before the journey begins, plans are made so as to arrive at the destination within a reasonable time and at an acceptable cost, with an understanding of the length and constraints of the journey. In doing this, one may evaluate alternative routes to the destination, consider environmental conditions, identify and evaluate potential risks or dangers, and so on.