Venue: MA2, LTH
10.30-12.00 Lecture 1.1 Scaling up software [slides]
Prof. Per Runeson, LTH and Prof. Martin Höst, LTH
- From punch cards to systems of system families – the product view
- From maintenance to continuous evolution – the process view
- From the solo genius to teams of engineers – the people view
- Studying software engineering practice – case study methodology
13.15-15.00 Lecture 1.2 Building the right system [slides]
Dr. Elizabeth Bjarnason, LTH
- How to know what to build? Elicitation
- How to communicate what to build? Specification
- How to check that it is right? Validation, continuous experimentation
- How to choose the most important? Prioritization
15.30-17.15 Lecture 1.3 Building the system right [slides]
Prof. Per Runeson, LTH
- Test levels – unit, integration, system, user, regression, – the product view
- Test activities – continuous vs phased, test automation – the process view
- Methods – test selection, exploratory testing
19.00-21.00 Group work – define case study
Venue: MA2, LTH
08.15-10.00 Lecture 1.4 Software engineering tools [slides]
Prof. Görel Hedin, LTH
- Growing a product
- Version control tools (git/GitHub and other tools)
- Testing tools (xUnit and other tools)
- Integrated code review (pull and merge requests)
- Continuous integration servers (Hudson, Jenkins, Travis, …)
10.15-12.00 Lecture 1.5 Software engineering in practice
- Emma Söderberg, Google Cph
- “The Motivation for a Monolithic Codebase”, Rachel Potvin, Josh Levenberg, CACM, July 2016.
- “Site Reliability Engineering”, Betsy Beyer, Chris Jones, Jennifer Petoff, Niall Richard Murphy, O’Reilly Media, April 2016, ISBN 978-1-4919-2909-4. google-engtools.blogspot.com
- “Software Engineering at Google”, https://arxiv.org/abs/1702.01715
- Diarmuid Corcoran, Ericsson [slides]
13.15-15.00 Lecture 1.6 The business of software [slides]
Prof. Jan Bosch, Chalmers
- Speed, data and ecosystems
- Software management
- Assignment 1. In cross functional teams of industrial, computer science and control PhD students:
- Perform a lightweight case study in a company
- Characterize the company, the project, and the product with respect to
- Product (e.g., is it a small component or is it a “system of systems”?)
- Process (e.g., is it a simple process for a few persons or a synchronization of different processes?)
- Organization (e.g., is it a small team in a single building or a world-wide collaboration of different companies?)
- Assignment 2:
- Set up a software development tool chain with version control, automated tests, code review, and continuous integration.
- Develop a small product using the tool chain.
- * P. Runeson and M. Höst. Guidelines for conducting and reporting case study research in software engineering. Empirical Software Engineering, 14(2):131–164, 2009 (pages 131-138)
- * K. Beck: Embracing Change with Extreme Programming. IEEE Computer, p 70-77, Issue 10, Oct 1999. DOI: 10.1109/2.796139
- * T. Dybå and T. Dingsoyr. What Do We Know about Agile Software Development? IEEE Software, 26(5): 6-9. Sep/Oct 2009, DOI: 10.1109/MS.2009.145
- Boehm and R. Turner, Using risk to balance agile and plan-driven methods IEEE Computer, 36(6), pp 64-69, 2003
- Dingsøyr, T. E. Fægri, T. Dybå, B. Haugset and Y. Lindsjørn. Team Performance in Software Development: Research Results versus Agile Principles. IEEE Software, 33(4): 106-110, 2016, DOI: 10.1109/MS.2016.100
- Hatton and M. van Genuchten. When software crosses a line. IEEE Softw., 33(1):29–31, 2016.
- Khomh, B. Adams, T. Dhaliwal, and Y. Zou. Understanding the impact of rapid releases on software quality. The case of firefox. Empirical Software Eng., 20(2):336–373, 2015.
Building the right system
- * E. Bjarnason, M. Borg, Bjarnason, Aligning Requirements and Testing: Working Together toward the Same Goal, IEEE Software, 34(1): 20-23, Jan 2017, DOI: 10.1109/MS.2017.14
- Maalej, Walid, et al. Toward data-driven requirements engineering. IEEE Software 33.1 (2016): 48-54.
- Cleland-Huang, Jane. “Stakeholders on the Prowl.” IEEE Software 33.2 (2016): 29-31.
- Kohavi, Ron, et al. Online controlled experiments at large scale. Proceedings of the 19th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2013.
Building the system right
- * J. A. Whittaker, What is software testing? And why is it so hard? IEEE Software, 17(1): 70-79, Jan/Feb 2000, DOI: 10.1109/52.819971
- Runeson. A survey of unit testing practices. IEEE Software, 23(4):22–+, 2006.
- Itkonen, M. V. Mäntylä, and C. Lassenius. Test better by exploring: Harnessing human skills and knowledge. IEEE Software, 33(4):90–96, July 2016.
- Kuhn, R. Kacker, Y. Lei, and J. Hunter. Combinatorial software testing. IEEE Computer, 42(8):94–96, 2009.
- Tosun, et al. An industry experiment on the effects of test-driven development on external quality and productivity. Empirical Software Engineering, pages 1–43, 2016.
- da Mota Silveira Neto, P. Runeson, I. do Carmo Machado, E. de Almeida, S. de Lemos Meira, and E. Engström. Testing software product lines. IEEE Software, pages 16–20, September 2011.
Software engineering tools
- * Wikipedia on Continuous Integration: https://en.wikipedia.org/wiki/Continuous_integration
- * Wikipedia on Test-Driven Development: https://en.wikipedia.org/wiki/Test-driven_development
The business of software
- * J. Bosch. Speed, data, and ecosystems: The future of software engineering. IEEE Software, 33:82–88, 2016, DOI: 10.1109/MS.2016.14
- J. Bosch. Using Data to Build Better Products. A Hands-On Guide to Working with Data in R&D – The Basics, ISBN 1541210808, 2017
- J. Bosch. Chapter 14 of Speed, Data, and Ecosystems: Excelling in a Software-Driven World, CRC Press, Taylor and Francis, ISBN 9781138198180, 2016