Software Product Line Engineering • The lectures (and slides) of this part will mostly be based on the book: Pohl, K., Böckle, G., van der Linden, F. ...
Software Product Line Engineering • The lectures (and slides) of this part will mostly be based on the book: Pohl, K., Böckle, G., van der Linden, F. “Software Product Line Engineering. Foundations, Principles and Techniques”, Springer-Verlag, 2005
Mass customisation • Mass customisation – “is the large-scale production of goods tailored to individual customers’ needs” – “Effectively postponing the task of differentiating a product for a specific customer until the latest possible point in the supply network”
• Assembling different snacks in large numbers from the slices of loaf, cheese and sausage is an example of mass customisation
Why product lines? • Trying to combine two paradigms of software development • Software product = One size fits all – Course book: Standard software – Millions of user use the same product / service – E.g. Microsoft Word, Google Docs
• Tailor-made / Bespoke software – Course book: Individual software – All individual concerns can be taken care of – E.g. Tatu used exclusively at the University of Oulu 2016
7
Why product lines? • More different products – Customer specific needs – Market differentiation e.g. high vs. low-end products – Differences between target devices – Legal or environmental regulations e.g. emission regulations
• Business benefits – Can develop and support more products – Big productivity gains – Improved product quality – Faster time-to-market
Principles of software product line engineering • Software product line engineering is a paradigm to develop software applications (software-intensive systems and software products) using platforms and mass customisation
• A software platform is a set of software subsystems and interfaces that form a common structure from which a set of derivative products can be efficiently developed and produced
Key differences between SPLE and single systems development SPLE • Two development processes: domain and application • Separation of concerns. Build robust platform for all. Then build customer specific application
Single system • One development process – Maintenance of products (new features, error corrections)
– Commonalities between products – Variation in development artefacts
Software product lines are highly configurable. In ideal case application engineering is only configuration no coding
14
Linux kernel can be considered a software product line (or a core asset in SPL) • Android uses Linux kernel • To see your version: Settings (Asetukset) -> About (Tietoja) -> Kernel Version (Ytimen versio)
Want to know more see article • http://gsd.uwaterloo.ca/node/336 • Note: such extra material can be used for Peerwise questions but the question needs to give a link
When to start a software product line? • Start only when you have Product Line Potential – All essential criteria – Some supporting criteria – Few exclusion criteria
Essential criteria • Necessary conditions to benefit from SPLE – More than one product is developed or planned to be developed – Products have common functional requirements – Products have common non-functional (quality) requirements
Supporting criteria • Indicate you probably would benefit from SPLE – Assets (platforms) already reused between products – Market demand for multiple products – Recognition that something needs to change e.g. due to quality or complexity issues
Exclusion criteria • Indicate you probably wouldn’t benefit from SPLE – Software plays a small part in the overall product – Market instability – Unpredictable technological change