TJTS5705 Product Line Engineering (5 cr)
Tweet text
Description
Product line engineering enables coordinated production of related products using the same underlaying base assets. A product line can target different customer needs, price points and feature combinations better and more efficiently than a single product or project outcome. It may also enable entry into market segments that would otherwise be inaccessible due to prohibitive development costs or resource constraints.
This course focuses on developing software systems within a product line: a group of product variants developed based on some commonalities. We describe frameworks and patterns to moving towards product line and implementing it – along with examples from practice and different industries, such as consumer products and industry automation. We also identify typical technical challenges and common pitfalls that can easily happen, like ‘clone-&-own’ as well as describe typical organizational structures in product line development.
Course contents:
Digital system’s development is a creative activity. It requires a combination of knowledge, insights, and skills to deliver the required outcomes for each unique project. The topics in this course are grouped into typical ‘phases’ of developing a digital system.
Module 1: Basics of system development:
The main goal of this phase is to understand the concept of a process model to describe the system development process and understand the difference between traditional heavy weight process (e.g., waterfall model) Vs light weight process (e.g., Agile), and when to adopt a certain model. This phase will also focus on requirements analysis and risk management techniques.
1. Software process models: Traditional, Agile and Hybrid, their differences and comparison.
2. Requirements analysis and user centered design: Describe the differences between elicitation, specification, validation and documentation of requirements, understand the differences between system and user requirements and between functional and non-functional requirements, use natural language and graphical representations of requirements within a requirements document and produce a system model based on requirements after prototyping, modelling and simulation.
3. CMMI and maturity models
4. Risk and threat analysis and mitigation: Understand and mitigate the impact of risk in software projects by performing risk identification, analysis, planning and monitoring, and mitigate threats by conducting threat modelling and mitigation strategies.
5. Planning the cost, time, and effort: Estimating, planning, and tracking agile (iterative and incremental) software projects, managing stakeholder expectations and requirements change management, make trade- offs between competing priorities of cost, schedule and quality, understanding business concerns and overall business goal.
Module 2: Digital Transformation:
Digital transformation is crucial in IT because it enables organizations to adapt and thrive in today's rapidly evolving digital landscape. By embracing digital transformation, organizations can better align with business goals, drive competitive advantage, and meet the ever-changing demands of customers and stakeholders. Overall, this module focuses on digital transformation as not only a strategic imperative but as a fundamental necessity for organizational success in the digital age.
1. Introduction to digital transformation (DT): Definition and scope of DT, critical drivers of DT, historical context and evolution of DT in IT.
2. Key concepts and principles of DT: Core principles, digital disruption and its impact on traditional industries, digital ecosystems, platforms, APIs, no-code/low-code, language models etc., business models and value creation in the digital age.
3. Digital technologies and enablers: enablers of DT – cloud computing, IoT, AI/ML and Blockchain, integration strategies for leveraging DT, security and privacy concerns in DT and mitigation strategies.
4. DT in systems development: Continuous Integration (CI) and Continuous Deployment (CD) pipelines, DevOps culture and practices, containerization and microservices architecture.
Module 3: Configuration management in systems development:
In this phase, the students would learn about system configuration and change management frameworks to deploy and maintain digital systems.
1. Introduction to configuration management (CM): Definition and importance of CM, techniques and principles of configuration identification, tools and best practices for configuration management, configuration items and change management.
2. Configuration control: Principles of configuration control, change management processes and procedures, change request lifecycle and workflow, impact assessment and risk management in configuration changes.
3. Configuration management in Agile environments: Integration of CM practices with Agile principles, Infrastructure as Code (IaC) and Configuration as Code (CaC) principles, challenges, and best practices for CM in fast-paced environments.
4. Future trends in CM: Technologies and trends shaping CM, Impact of cloud computing, containerization, and microservices on CM and AI-driven approaches to CM.
5. DevOps: This topic will introduce the basic concepts of DevOps to students, particularly in understanding the dynamics of continuous SE principles and practices, quality management in DevOps environment, multi- cloud operations, introduction to MLOps (the continuous pipeline from data to machine learning model in production) and adoption challenges in DevOps and ways to address these challenges. Students will also be exposed to a set of basic DevOps tools.
Module 4: Introduction to cloud infrastructure:
1. Introduction to cloud computing: Definition and core characteristics of CC, service models (IaaS, PaaS, SaaS), deployment models (public, private, hybrid and community) and evolution of cloud computing.
2. Cloud services and platforms: Introduction to major cloud service providers (AWS, Azure, etc.), serverless computing, managing services offered by cloud platforms and application development and deployment.
3. Cloud migration and management: Strategies for cloud migration (lift and shift, refactoring and reprogramming) challenges and considerations in cloud migration projects, cost management and optimization, case studies on cloud migration projects.
4. Advanced topics and future trends in CC: Emerging trends and innovations, impact of AI/ML and quantum computing on cloud infrastructure, edge computing and internet of things, use of microservices architecture, IaC and orchestration tools (e.g. Kubernetes etc.).
This unit will cover all the fundamental principles of digital system project analysis, design, development, and maintenance across all the stages/ or phases of system’s development. The students will learn to understand, analyse, and apply the processes, methodologies and
standards used in managing the full software development cycle, and understand how management and development practices affect overall software quality from the developer’s perspective. This course will also help students to develop a critical understanding and applications of the tools, techniques and processes used to manage software-intensive digital projects.
At the end of the unit the student will be able to assess a software development situation and choose an appropriate development strategy, know basic methods to estimate work efforts and production costs in software development projects and be aware of ethics in software development.
After completing the unit, the student can apply for the position of team lead or participate in a project as project manager.
Learning outcomes
After completion of the course, the student understands when it is better to consider developing a product line instead of developing a single product or a project. The students learn methods to consider and formulate product lines, their variation and commonalities, apply different mechanisms to manage variability, and basics for developing variants within a product line. The students can differentiate domain engineering part (defining the common within a product line) and what kind of methods can be applied to develop individual applications/products within a product line. The student understands the transition process from single product or project to product line engineering.
Additional information
Completion methods:
Lectures, assignments and exam
Description of prerequisites
Tietojärjestelmätieteen kanditason (tai vastaavat) opinnot.
Participants are predominantly students pursuing master's degree studies. Students have an understanding of systems and software specification and design work and processes through their previous studies (e.g., information systems development, product development, software production and its management). Priority is given to information systems science students who have progressed furthest in their studies.
----------------------------------
Osallistujat ovat valtaosin maisteriopintoja suorittavia opiskelijoita. Opiskelijalla on edeltävien opintojen kautta ymmärrystä järjestelmien ja ohjelmistojen määrittely- ja suunnittelutyöstä ja prosessista (esim. tietojärjestelmien kehitys, tuotekehitys, ohjelmistotuotanto ja sen johtaminen). Etusijalla ovat opinnoissa pisimmälle edenneet tietojärjestelmätieteen opiskelijat.
Study materials
Kirjallisuus:
Isabel John, Jens Knodel, Theresa Lehner, and Dirk Muthig. 2006. A Practical Guide to Product Line Scoping. In Proceedings of the 10th International on Software Product Line Conference (SPLC '06). IEEE Computer Society, USA, 3–12.
Kang, K.C. and Cohen, S.G. and Hess, J.A. and Novak, W.E. and Peterson, A.S., "Feature-oriented domain analysis (FODA) feasibility study", Technical Report CMU/SEI-90-TR-021, SEI, Carnegie Mellon University, November 1990, https://www.sei.cmu.edu/documents/1011/1990_005_001_15872.pdf
Weiss, David M., and Chi Tau Robert Lai. Software product-line engineering: a family-based software development process. Addison-Wesley Longman Publishing Co., Inc., 1999.
Bosch, J., Design and use of software architectures: Adopting and evolving a product-line approach. Addison-Wesley, 2000.
Pohl et al., Software Product Line Engineering : Foundations, Principles, and Techniques, Springer 2005
Pohl, K., Metzger, A., Software Product Lines. In: Gruhn, V., Striemer, R. (eds) The Essence of Software Engineering. Springer, Cham, 2018. https://doi.org/10.1007/978-3-319-73897-0_11
K. Czarnecki and U. Eisenecker. Generative Programming: Methods, Tools, and Applications. Addison-Wesley, 2000