Enabling Reuse-Based Software Development of Large-Scale Systems

33
Enabling Reuse-Based Software Development of Large-Scale Systems IEEE Transactions on Software Engineering, Volume 31, Issue 6, June 2005 Richard W. Selby, Member, IEEE

description

Enabling Reuse-Based Software Development of Large-Scale Systems. IEEE Transactions on Software Engineering, Volume 31, Issue 6, June 2005 Richard W. Selby, Member, IEEE. Fact Enabling Reuse-Based Software Development of Large-Scale Systems. Software reuse leverages past accomplishments - PowerPoint PPT Presentation

Transcript of Enabling Reuse-Based Software Development of Large-Scale Systems

Page 1: Enabling Reuse-Based Software Development of Large-Scale Systems

Enabling Reuse-Based SoftwareDevelopment of Large-Scale

Systems

IEEE Transactions on Software Engineering, Volume 31, Issue 6, June 2005

Richard W. Selby, Member, IEEE

Page 2: Enabling Reuse-Based Software Development of Large-Scale Systems

FactEnabling Reuse-Based Software Development of Large-Scale Systems

Software reuse leverages past accomplishments

and facilitates significant improvements in:

Productivity – avoids re-development.

Quality – utilizes proven architectures and incorporates components whose reliability has already been established.

Page 3: Enabling Reuse-Based Software Development of Large-Scale Systems

Key PointsEnabling Reuse-Based Software Development of Large-Scale Systems

Contribution – what factors characterize successful software reuse in large-scale systems.

Definition - modules refer to subroutines, utility functions, main programs, macros and block data.

Page 4: Enabling Reuse-Based Software Development of Large-Scale Systems

Abstract/ IntroductionEnabling Reuse-Based Software Development of Large-Scale Systems

In this article, Richard W. Selby analyzes fourclasses of software modules based on the

degreeof modification required for reuse:

Modules w/o revision. Modules w/slight revision (<25% revision). Modules w/major revision (>25% revision). Newly developed modules. 

Page 5: Enabling Reuse-Based Software Development of Large-Scale Systems

Abstract/ IntroductionEnabling Reuse-Based Software Development of Large-Scale Systems

The author also identifies two categories of factors

that characterize successful reuse in large-scale

systems: 

Module design factors. Module implementation factors.

Page 6: Enabling Reuse-Based Software Development of Large-Scale Systems

Abstract/ IntroductionEnabling Reuse-Based Software Development of Large-Scale Systems

Lastly, Selby evaluates the fault rates of the various

types of modules, as well as, discusses the future

research direction for software reuse.

Page 7: Enabling Reuse-Based Software Development of Large-Scale Systems

The Software EnvironmentEnabling Reuse-Based Software Development of Large-Scale Systems

NASA - Ground supports software for unmanned spacecraft

control. Actively reuses software (32% reused/modified)

Mature architectures couples with broad populations of content dependent component implementation.

The environments reuse process selects reference architectures and populates them with components that have simple, clearly defined interfaces.

Can do this successfully because of the maturity of the problem domain & multi-project horizons.

Page 8: Enabling Reuse-Based Software Development of Large-Scale Systems

The Software EnvironmentEnabling Reuse-Based Software Development of Large-Scale Systems

Research Approach - Data mined NASA’s software

repositories:

25 software systems. 2954 modules. 22 – 853 modules per project. 3000 – 112,000 lines of code per project. 5 – 25 months project duration. 4 – 23 persons per project.

Page 9: Enabling Reuse-Based Software Development of Large-Scale Systems

The Software EnvironmentEnabling Reuse-Based Software Development of Large-Scale Systems

Page 10: Enabling Reuse-Based Software Development of Large-Scale Systems

Four Objectives/ GoalsEnabling Reuse-Based Software Development of Large-Scale Systems

To characterize software reuse (i.e. reused, modified & newly developed) at the:

Project level. Module design level. Module implementation level. Module faults and changes.

Page 11: Enabling Reuse-Based Software Development of Large-Scale Systems

Goals/ MetricsEnabling Reuse-Based Software Development of Large-Scale Systems

Goal 1 – Characterize software reuse at the project level:

Distribution across projects and between large (>20K source lines) vs. small projects compare.

Amount of reuse across projects compared to development effort and fault rate.

Metric – % no revision, slight, major or new.

Page 12: Enabling Reuse-Based Software Development of Large-Scale Systems

Goals/ MetricsEnabling Reuse-Based Software Development of Large-Scale Systems

Goal 2 – Characterize software reuse at the module design level:

Amount of reuse compared in terms of interfaces that the module has with:

Other system modules (& vise versa); Metric – module calls per source line and input/output parms per source line.

Utility functions; Metric – utility calls per source line. Users; Metric – read/write statements per source line.

Documentation describing the functionality of the module; Metric – comments per source line.

Page 13: Enabling Reuse-Based Software Development of Large-Scale Systems

Goals/ MetricsEnabling Reuse-Based Software Development of Large-Scale Systems

Goal 3 – Characterize software reuse at the module

implementationlevel:

Size of module, large vs. small (large >140 source lines); Metric – source lines per code.

Development effort; Metric – effort per source line. Control flow structure; Metric – cyclomatic

complexity per source line. Non-control flow structures; Metric – assignment

statements per source line.

Page 14: Enabling Reuse-Based Software Development of Large-Scale Systems

Goals/ MetricsEnabling Reuse-Based Software Development of Large-Scale Systems

Goal 4 – Characterize software reuse and module faults andchanges:

Module faults; Metric – per source line. Fault correct effort; Metric – same. Module changes; Metric – per source line. Module change effort; Metric – same.

Page 15: Enabling Reuse-Based Software Development of Large-Scale Systems

HypothesisEnabling Reuse-Based Software Development of Large-Scale Systems

There is no difference in the characteristics ofsoftware modules reused w/o revision, slightrevision, major revision and newly developed.

Page 16: Enabling Reuse-Based Software Development of Large-Scale Systems

Data Collection & Analysis MethodEnabling Reuse-Based Software Development of Large-Scale Systems

The results presented in this paper focus onstatistically significant differences in the

dependantvariables due to the effects of modules origin

(i.e.reuse w/o revision, slight or major revision andnewly developed).

Page 17: Enabling Reuse-Based Software Development of Large-Scale Systems

Data Collection & Analysis MethodEnabling Reuse-Based Software Development of Large-Scale Systems

Outlined metrics needed based on the goals. Collected metric data via the NASA

repositories. Validated findings through interviews,

crosschecks, reviews by objective internal and external personnel.

Data was organized into a relational database to be evaluated by NASA and outside researchers.

Developed queries to extract data.

Page 18: Enabling Reuse-Based Software Development of Large-Scale Systems

Characterizing Software Reuse at the Project LevelEnabling Reuse-Based Software Development of Large-Scale Systems

Page 19: Enabling Reuse-Based Software Development of Large-Scale Systems

Characterizing Software Reuse at the Project LevelEnabling Reuse-Based Software Development of Large-Scale Systems

Page 20: Enabling Reuse-Based Software Development of Large-Scale Systems

Characterizing Software Reuse at the Project LevelEnabling Reuse-Based Software Development of Large-Scale Systems

Page 21: Enabling Reuse-Based Software Development of Large-Scale Systems

Characterizing Software Reuse at the Module Design LevelEnabling Reuse-Based Software Development of Large-Scale Systems

Page 22: Enabling Reuse-Based Software Development of Large-Scale Systems

Characterizing Software Reuse at the Module Design LevelEnabling Reuse-Based Software Development of Large-Scale Systems

Page 23: Enabling Reuse-Based Software Development of Large-Scale Systems

Characterizing Software Reuse at the Module Implementation LevelEnabling Reuse-Based Software Development of Large-Scale Systems

Page 24: Enabling Reuse-Based Software Development of Large-Scale Systems

Characterizing Software Reuse at the Module Implementation LevelEnabling Reuse-Based Software Development of Large-Scale Systems

Page 25: Enabling Reuse-Based Software Development of Large-Scale Systems

Characterizing Software Reuse and Module Faults and ChangesEnabling Reuse-Based Software Development of Large-Scale Systems

Page 26: Enabling Reuse-Based Software Development of Large-Scale Systems

Characterizing Software Reuse and Module Faults and ChangesEnabling Reuse-Based Software Development of Large-Scale Systems

Page 27: Enabling Reuse-Based Software Development of Large-Scale Systems

Characterizing Software Reuse and Module Faults and ChangesEnabling Reuse-Based Software Development of Large-Scale Systems

Page 28: Enabling Reuse-Based Software Development of Large-Scale Systems

Interpretations & ConclusionsEnabling Reuse-Based Software Development of Large-Scale Systems

Summary of Findings

Conclusion – Hypothesis was INCORRECT!

Project level – larger projects had high percent modules reused with major revisions.

Module design level – modules reused w/o revision had less interfaces with other modules, simpler interfaces, less interaction with users, and a high ratio of commentary to implementation size.

Page 29: Enabling Reuse-Based Software Development of Large-Scale Systems

Interpretations & ConclusionsEnabling Reuse-Based Software Development of Large-Scale Systems

Module design level –modules reused w/o revision (compared to those newly developed) had more interaction with utility functions in terms of utility calls, but a lower percent of development effort spent in design activities.

Module implementation level – modules reused w/o revision were smaller in size and had less total development effort.

Page 30: Enabling Reuse-Based Software Development of Large-Scale Systems

Interpretations & ConclusionsEnabling Reuse-Based Software Development of Large-Scale Systems

Module implementation level – modules reused w/o revision (compared to those newly developed) had more assignment statements.

Module faults and changes – modules reused w/o revision had fewer faults and thus less fault correction effort.

Module faults and changes – modules reused w/o revision (compared to those w/major revision) had less fault isolation effort, fewer changes and thus less change correction effort.

Page 31: Enabling Reuse-Based Software Development of Large-Scale Systems

Interpretations & ConclusionsEnabling Reuse-Based Software Development of Large-Scale Systems

Interpretations and Future Direction

Successful software reuse is achievable & sustainable in large scale systems via right combination of architectures and components.

Economic benefits (in productivity & quality) can be realized through systemic application of reuse by applying module design and implementation factors.

Page 32: Enabling Reuse-Based Software Development of Large-Scale Systems

Interpretations & ConclusionsEnabling Reuse-Based Software Development of Large-Scale Systems

Interpretations and Future Direction

Data collection with mining software repositories can be very fruitful in quantifying relationships, trends and trade-offs.

Next steps – analyze more than just reuse of source code.

Page 33: Enabling Reuse-Based Software Development of Large-Scale Systems

QuestionsEnabling Reuse-Based Software Development of Large-Scale Systems