advertisement
What is Aspect-Oriented Software Development (AOSD)
New software development methodologies have been created to solve problems that have become larger and more complex over the years. Even though object-oriented methods have allowed for better designing of systems, there are some shortcomings in these methods which led to more research.
Aspect-Oriented Software Development (AOSD) is the result of the research efforts of the Xerox Palo Alto Research Center.
AOSD is a new method of developing software applications that involves breaking down software systems into components known as modules, to separate secondary functions from the main program's business logic. The focus of AOSD is on the identification, specification, and representation of cross-cutting concerns and their modularization into separate functional units and combining them back automatically into a working system. Cross-cutting concerns are those changes that cannot be isolated in any particular class and have to be incorporated at many places across the system.
1. AOSD Concepts and Terminology
- Concern: A concern is any demand, requirement, or expectation on a software system by any stakeholder of that system. A stakeholder may be the developer, the end-users, or even the system itself.
- Cross-cutting Concern: A cross-cutting concern is a concern that deals with different areas of the software system.
- Aspect: An aspect is a module that contains a concern. Aspect-oriented programming provides good support for localizing concerns into aspects.
- Join point: A join point is a well-defined point in the program's execution where an aspect is invoked.
- Pointcut: A pointcut is a specifically defined subset of join points.
- Advice body: An advice body is a code that is executed when a join point is reached.
- Weavers: Weavers are specific types of compilers that compose the aspect's implementation with the other modules.
2. Advantages and Disadvantages of AOSD
The advantages and disadvantages of AOSD are summarized.
Advantages:-
- Increased modularity.
- Increased maintainability.
- Increased reusability.
- Reduction in the size of the code.
Disadvantages:-
- Reduced efficiency due to increased overhead aspects.
- Security risks involving aspects.
- Lack of a formalized process.
- Lack of UML support.
Lack of systematic methods of testing.
Choosing a Process Model
Software development organizations are increasingly realizing that a core set of tasks needs to be done irrespective of the process model they follow. Depending on the time frame available or execution of the project, the type of product/project being developed, the detail in which specifications are available, the organizations having previous experience with similar projects, and so on, these tasks are organized in differing sequences.
Organizations choose the process paradigm they want to follow in developing the software. In case different processes are followed, outputs in terms of productivity and quality also vary. Processes tend to become less predictable and past data cannot be used for estimation, or new projects learn from the failures of old projects. Standardized processes are essential for predictability, good estimation capability, and good learning.
Organizations may find it difficult to follow a single standard process for all their projects. One approach is to define a standard process that describes a sequence of activities or a task but allows for tailoring to suit a particular project. Guidelines for tailoring are provided, and the types of processes that can be followed are restricted to the allowable variations.
1. Process Tailoring
Tailoring is defined as the process of adjusting the standard process of an organization to obtain a process that is suitable for the particular business or technical needs of a project. Documented guidelines are many cases provided on the reason for the deviation and to what extent deviations are possible from the standard processes to achieve the project goals.
Process modification requires that the unique aspects of the project are identified first, and then these Features are used to make adjustments to the standard process. Tailoring guidelines try to capture the experience and judgment of people regarding how tailoring can be done effectively. The Experience Of people who have used the process becomes available so that even a newer person, who may not have the necessary experience, can select the optimum process for a project.
The process may be tailored concerning its scope, formality, frequency, and granularity. For each processing element that can be tailored, one needs to define the available options and the circumstances in which each of these options can be exercised.
Tailoring can happen at a macro (Summary- How certain general activities are performed) level or at a micro level (Detailed - all activities in a process for the various phases and how they can be tailored). Some of the factors that may need to be considered for tailoring the process include the skill level of the team, the peak team size, and the criticality of the application.
Web Engineering
Web Engineering is an adaptable and incremental (evolutionary) process. It is populated by a set of framework activities that occur for all business-critical WebApp projects, regardless of the size or complexity.
The following framework activities may be considered for Web engineering:
- Formulation - Identifies the goals and objectives of the WebApp and establishes the scope for the first increment.
- Planning - Estimates overall project cost, evaluates risks, and defines a development schedule for the initial WebApp increment.
- Analysis - Establishes requirements for the WebApp and identifies the content that will be incorporated.
- Modeling - Incorporates two parallel task sequences: content and user interface design. Content design involves the creation or acquisition of content for the WebApp. User interface design involves defining the architecture, navigation, and graphic design, which establish the structure of the WebApp and the flow of the user's interaction with it.
- Page generation and testing - Constitute requisite construction activities.
- Customer evaluation - Reviews each increment produced as part of the Web engineer's process. At this point, changes are requested (scope extensions occur), These changes are integrated into the next path through the incremental process flow.
advertisement
Conversation
Your input fuels progress! Share your tips or experiences on prioritizing mental wellness at work. Let's inspire change together!
Join the discussion and share your insights now!
Comments 0