ABSTRACT

At an abstract level, all product development requires at least two steps. The first step is the analysis to define what work needs to be done, and the second step is the actual execution of the work defined by the analysis step.1 In practice, this process becomes much more complicated, especially in common situations when the work requirements are not clearly understood and well defined before the execution begins or when the individuals performing the work are neither funding, nor acting as the end users, of the product. The interplay between the work definition and work execution stages and how the various parties involved in these stages interact can have major impact on project cost, with the cost of changing the work definition

historically increasing as the execution stage progresses. A variety of methodologies exist that formalize the processes for defining what work is desired by the customer and how this work is to be carried out and verified. The previous chapters discussed classical methods in which the customer requirements are clearly laid out at the beginning of the effort. These methods address the cost of change by making a large initial investment in requirements analysis so that the desired work is well enough understood so that it should not change. This chapter will briefly review these classical methods and then discuss in detail more recent agile methods that manage requirements that will change and continuously evolve. These agile methods attempt to directly reduce the cost of change by implementing more testing and continuous feedback. This chapter will also discuss how these agile methodologies are applicable to the development of systems based on micro-and nanoscale technologies (MNTs).