Software reuse has been a goal of the software community since the early
days of software engineering. Various technologies have been proposed to
solve the software reuse problem, including subroutines, object-oriented
software development, software design patterns and component-oriented
software development.
Unfortunately,
software reuse has been applied in an
opportunistic, ad hoc manner,
and as such
did not scale up for large-scale software development.
Systematic software reuse
is a promising approach to reduce cost and development cycle time,
improve software quality and productivity. In this context the notion of
software
product line has gained importance for large scale systematic
software reuse. Software product line is a set of software-intensive
systems sharing a common, managed set of features that specify the
specific needs of a market segment and that are developed from a common
set of core assets. Software
product line engineering is a paradigm to develop software product
lines and as such supports reuse, productivity and quality of the
systems. Unlike conventional software development paradigms
that aim to develop single systems, SPLE considers the
development of a family of software systems.
As such
SPLE adopts a fundamentally different software life cycle approach than
single system development.
The course will teach the
following topics:
- Motivation for software reuse
- Software reuse levels
- Software Product Lines
- Software Product Line Engineering Methods
- Software Product Line Engineering Tools
- Domain Engineering
- Application Engineering
- Commonality and Variability Analysis and Modeling
- Reference Architecture vs. Application
Architecture
- Portfolio Management
- Software Product Line Scoping
- Product Definition Approaches
- Testing in Software Product Line Engineering
- Organization Structures for SPLE
Prerequisites
All students should have followed
the course 'Object-Oriented Software Engineering'. There should
not be any conflict with other courses.
|