Short answer

When designing software systems, especially those requiring high maintainability and reusability, consider adopting aspect-oriented programming techniques, while being aware of potential impacts on other quality attributes like cohesion.

Field
Innovation & Design
Source
BIBSYS Brage (BIBSYS (Norway)) (2004)
Method
Quantitative analysis using custom software metrics.
Evidence
Moderate effect

Introducing aspects into middleware systems can positively impact software quality factors like coupling, fan-in/fan-out, and size, thereby improving maintainability and reusability. This innovation & design research insight is drawn from a 2004 study published in BIBSYS Brage (BIBSYS (Norway)). Using Quantitative analysis using custom software metrics., researchers explored how this design variable affects real-world outcomes. The key design takeaway: When designing software systems, especially those requiring high maintainability and reusability, consider adopting aspect-oriented programming techniques, while being aware of potential impacts on other quality attributes like cohesion.

Study
Innovation & DesignHigh ImpactModerate effect

Aspect-Oriented Programming Enhances Software Maintainability and Reusability

Introducing aspects into middleware systems can positively impact software quality factors like coupling, fan-in/fan-out, and size, thereby improving maintainability and reusability.

BIBSYS Brage (BIBSYS (Norway)) · 2004

01

Key Findings

  • 01Aspect-oriented programming positively affected coupling, fan-in/fan-out, and size measures in the analyzed system.
  • 02Cohesion was negatively affected by the introduction of aspects.
  • 03New metrics 'advice-in' and 'advice-out' were developed to measure aspect-specific influences.
02

Application

Design takeaway

When designing software systems, especially those requiring high maintainability and reusability, consider adopting aspect-oriented programming techniques, while being aware of potential impacts on other quality attributes like cohesion.

How to apply

When evaluating software development approaches, quantify the potential benefits of aspect-oriented programming on maintainability and reusability using metrics like coupling, fan-in/fan-out, and size.

Project actions

  • 01When researching software development methodologies, look for studies that quantify the benefits and drawbacks.
  • 02Consider how different programming paradigms affect software quality attributes like maintainability and reusability.
03

Method & Evidence

AimTo identify and implement metrics that measure the impact of aspect-oriented programming on the reusability and maintainability of middleware systems.
MethodQuantitative analysis using custom software metrics.
ProcedureA GQM (Goal-Question-Metric) process was used to define sub-characteristics of reusability and maintainability. Metrics were chosen to answer questions about these sub-factors. A tool named AspectMetrics was developed to calculate metrics on Java and AspectJ code, including new metrics like 'advice-in' and 'advice-out'. This tool was used to analyze two versions of the DIAS system: one with aspects and one without, comparing the results.
ContextSoftware engineering, specifically middleware systems and aspect-oriented programming.

Variables

IVIntroduction of aspects (aspect-oriented programming).
DVSoftware quality factors: reusability and maintainability (measured by modularity, testability, analyzability, changeability, stability, coupling, cohesion, size, fan-in/fan-out, advice-in/advice-out).
CVFunctionality of the DIAS system (kept functionally equal between versions).
04

Strengths & Limitations

Strengths

  • +Introduced novel metrics ('advice-in', 'advice-out') specific to aspect-oriented programming.
  • +Empirically analyzed the impact of aspects on a real-world system.

Limitations

The findings are specific to the analyzed system and programming language (AspectJ). The impact on cohesion needs further exploration.

Reliability & validity

The study's validity is supported by the use of quantitative metrics and the comparison of two system versions. Reliability could be enhanced by testing across a wider range of systems and programming languages.

Think critically

While aspects improved some metrics, they negatively impacted cohesion. How might a designer balance these competing factors to achieve optimal software design?

05

Design Principles

"Software architecture choices should be evaluated based on their impact on key quality attributes such as maintainability, reusability, and cohesion."

This research highlights a specific programming paradigm that can lead to more robust and adaptable software. Designers and engineers can leverage these findings to make informed decisions about software architecture, potentially reducing long-term development costs and improving product longevity.

06

What This Means for Your Design

Using a special coding technique called 'aspect-oriented programming' can make software easier to fix and reuse, although it might make some parts of the code less connected.

How to use in your project

  • 1.Reference this study when discussing the impact of programming paradigms on software maintainability and reusability in your design project.
07

Add to My Project

08

Quick Cite

Paragraph starter

Research indicates that aspect-oriented programming can positively influence software maintainability and reusability by improving metrics such as coupling and fan-in/fan-out, as demonstrated in studies analyzing middleware systems (Rønningen & Steinmoen, 2004). However, potential negative impacts on cohesion should also be considered.

09

Source

BIBSYS Brage (BIBSYS (Norway))

Metrics for Aspect-Oriented Programming of middleware systems

journal · 2004

View source

Questions About This Research

What does the research say about aspect-oriented programming enhances software maintainability and reusability?
When designing software systems, especially those requiring high maintainability and reusability, consider adopting aspect-oriented programming techniques, while being aware of potential impacts on other quality attributes like cohesion. Evidence: BIBSYS Brage (BIBSYS (Norway)) (2004).
Why does "Aspect-Oriented Programming Enhances Software Maintainability and Reusability" matter for design?
This research highlights a specific programming paradigm that can lead to more robust and adaptable software. Designers and engineers can leverage these findings to make informed decisions about software architecture, potentially reducing long-term development costs and improving product longevity.
How can designers apply this research?
When designing software systems, especially those requiring high maintainability and reusability, consider adopting aspect-oriented programming techniques, while being aware of potential impacts on other quality attributes like cohesion.
What were the main findings?
Aspect-oriented programming positively affected coupling, fan-in/fan-out, and size measures in the analyzed system.. Cohesion was negatively affected by the introduction of aspects.. New metrics 'advice-in' and 'advice-out' were developed to measure aspect-specific influences.
What research method was used?
Quantitative analysis using custom software metrics..
How strong is the evidence?
Evidence strength is rated Moderate effect, based on a 2004 journal from BIBSYS Brage (BIBSYS (Norway)).
What should I do differently in my next project?
When evaluating software development approaches, quantify the potential benefits of aspect-oriented programming on maintainability and reusability using metrics like coupling, fan-in/fan-out, and size.
What are the limitations?
The study focused on a specific middleware system (DIAS) and may not generalize to all system types. The negative impact on cohesion requires further investigation.