The question of whether to reengineer or reuse components of a software system
most often arises in the context of large business or government organizations. Over time
the processes and procedures of a business or organization will inevitably be reflected in
the software systems that enable efficient, day-to-day operations . Therefore, it is not
possible to change processes and procedures without adjusting or enhancing the software
systems that implement them. If good development practices were followed, a legacy
software application is typically composed of three layers :
➢ Presentation Layer: components of a software system that accept input and
generate output using various types of hardware devices. Input and output can be
entered or analyzed by a human or another by another program.
➢ Business Logic Layer: implementation of some subset of the processes and
procedures of the business or organization that is relevant to the application. It is
unusual for the business logic of one application to implement all of the processes
and procedures. For example, the order processing and payroll applications are
not likely to have much business logic in common.
➢ Data Access Layer: this layer is responsible for servicing requests to store or
retrieve data on behalf of the presentation and business logic layers. The nature of
the code in this layer varies depending on the database technology being used.
Technology choices range from simple sequential files to industrial-strength
relational or hierarchical databases.