Research
Paper on
Separation
of Concerns in Aspect Oriented Software Engineering
(First 3 Pages)
Aimed at supporting development of
complex systems, software architecture is shifting from
functionality to structure. Patterns describe pre-defined design
structures, which can serve as building blocks to compose the
architecture of a software system. They capture existing,
well-proven design experience. Not only the functional but also
the non-functional aspects of software design are addressed.
Software architecture, a topic of steadily growing importance
within the field of software engineering, proposes a shift in
emphasis from functionality to structure. Its goal is to support
the development and maintenance of complex, large-scale software
systems. These systems may exist in many variants and evolve
over their lifespan.
Need a custom research paper? we can write custom research papers for you!
To achieve this goal, software architecture goes beyond the
scope of "classical" software design in which the structure of a
software system is mainly defined by a proper functional
decomposition of its primary subject matter. Software
architecture, however, explicitly considers both the functional
and the non-functional aspects of software systems. Examples for
non-functional aspects are reusability, changeability,
testability, efficiency, and reliability. In addition, not only
the components of a software system are of importance for the
quality of its structure, but also the manifold relationships
that exist between them - for example, how the components
interact with each other.
To address these aspects and to take advantage of the benefits
of software architecture, it is necessary to base the
construction of specific architectures for software systems on
well-defined methods and techniques. Such methods and techniques
must:
* Provide a systematic way for finding the appropriate structure
for a software system being under development.
* Support the development of very specific structures with
defined functional and non-functional properties. For instance,
it must be possible to construct a software architecture that
supports a flexible distribution of its components in a computer
network.
* Guide the implementation of a given software architecture to
avoid an architectural drift, which means the difference between
the specified software architecture and its actual
implementation.
Experienced software architects dispose of such methods and
techniques. They do not necessarily have them in written form,
but in their heads. The intention of a software architecture
method described in a paper or book is to help a novice to act
almost like an expert after a short apprenticeship without
gaining years of experience of his own.
Therefore, a method should comprise as much of an expert's
knowledge as possible. However, what is the ability of an expert
in software architecture? He or she designs "good" software for
a specific task in a reasonable amount of time; good is defined
in terms of the desired non-functional properties of the system.
But what kind of knowledge makes someone an expert in software
architecture? Certainly he must have some general principles,
steps, and techniques. But these are not enough to support the
design of architectures for specific tasks. For example, they do
not tell how to create a very specific architecture - for
instance, pipes and filters architecture or how to solve
particular design issues under given constraints, for example,
support for changeability. An expert remembers the problems he
already solved and how he solved them. Confronted with a new
problem, he often recalls a similar one and reuses the old
solution. These problem/solution pairs tend to fall into
families of similar problems and solutions with each family
exhibiting a pattern in both the problems and the solutions.
.......
Need a custom research paper? we can write custom research papers for you! |