Modern software development methods

2022/2023
Programme:
Computer Science and Mathematics, Second Cycle
Year:
1 in 2 year
Semester:
second
Kind:
optional
ECTS:
6
Language:
slovenian, english
Lecturers:

Damjan Vavpotič

Hours per week – 2. semester:
Lectures
3
Seminar
0.67
Tutorial
1.33
Lab
0
Content (Syllabus outline)

Lectures:
The contents adapts to current trends in software development. At the moment the focus is on agile methods for software development and empirical evaluation of these methods:
1. Overview of agile methods for software development and their characteristics
2. Agile software project management
Iterative and incremental development
Scrum
3. Typical Extreme Programming practices
Pair programming
Test driven development (TDD)
Refactoring
Software tools that support TDD and refactoring
4. Weaknesses of Extreme Programming
5. Kanban and lean software development
6. Metrics in Software Engineering and measuring the effectiveness of the software development process
7. Case study: Empirical evaluation of the aforementioned practices
8. Comparison of agile approach to traditional disciplined software development processes (Personal Software Process, Team Software Process, Capability Maturity Model)
Lab practice:
The purpose of lab practice is twofold:
1. to acquaint students with modern software development tools,
2. to empirically evaluate different approaches to software development through practical work on (almost) real software projects.
Individual work outside of contact hours:
Students develop programs that are part of the project that serves as a case study.

Readings
  1. K. Schwaber: Agile Project Management with Scrum, Microsoft Press, 2004.
  2. K. Beck: Extreme Programming Explained, Addison-Wesley, več izdaj.
  3. D. Anderson, Kanban – Successful Evolutionary Change for Your Technology Business, Sequim, WA: Blue Hole Press, 2010.
  4. K. Beck: Test-Driven Development: By Example, Addison-Wesley, 2003.
  5. M. Cohn: User stories applied, Addison-Wesley, 2004.
    Dodatna literatura:
    B. Boehm, R. Turner: Balancing Agility and Discipline – A Guide for the Perplexed, Pearson Education, 2004.
  6. CMMI for Development (CMMI-DEV), Version 1.2. CMU/SEI-2006-TR-008, Software Engineering Institute, Carnegie Mellon University, 2006.
Objectives and competences

In depth treatment and empirical evaluation of modern software development methods in comparison to traditional approach. Students work on a project that serves as a case study for evaluation of modern approaches in order to find their strengths and weaknesses.
The competences students gain are:
the ability to define, understand and solve creative professional challenges in computer and information science,
the ability to apply acquired knowledge in independent work for solving technical and scientific problems in computer and information science, the ability to upgrade acquired knowledge.
the ability of teamwork within the professional environment, management of a small professional team,
the ability for administrative management of processes related to research, industry, education and other fields,
the ability to understand and apply computer and information science knowledge to other technical and relevant fields (economics, organisational science, etc),
practical knowledge and skills of computer hardware, software and information technology necessary for successful professional work in computer and information science,
independently tackle demanding developmental, engineering, and organisational tasks as well as moderately demanding research tasks in their fields of study.

Intended learning outcomes

After the completion of the course a student will be able to:
know and understand modern approaches to software development
understand key benefits of modern software development methods (in comparison to traditional software development)
use tools that support modern software development methods
apply modern software development methods in the context of a real software development project
empirically evaluate the outcomes of new methods
increase understanding of different factors and circumstances that affect the success of a software development project
increase professional skills like team-work, management, planning and organization, written and oral communication

Learning and teaching methods

Lectures with active participation on the part of students (discussion, examples, problem solving). Lab practice requires practical work on an almost real project that serves as a case study for evaluation of different approaches to software development.

Assessment

Continuing (homework, midterm exams, project work)
Final (written and oral exam)
grading: 5 (fail), 6-10 (pass) (according to the Statute of UL)

Lecturer's references

Pet najpomembnejših del:
1. MAHNIČ, Viljan. A capstone course on agile software development using Scrum. IEEE trans. ed., Feb. 2012, vol. 55, no. 1, str. 99-106.
2. MAHNIČ, Viljan, HOVELJA, Tomaž. On using planning poker for estimating user stories. J. syst. softw.. Sep. 2012, vol. 85, no. 9, str. 2086-2095.
3. MAHNIČ, Viljan, ŽABKAR, Nataša. Measuring progress of Scrum-based software projects. Electronics and Electrical Engineering. 2012, vol. 18, no. 8, str. 73-76.
4. MAHNIČ Viljan. Teaching Scrum through team-project work : students' perceptions and teacher's observations. International journal of engineering education, 2010, vol. 26, no. 1, str. 96-110.
5. MAHNIČ, , Viljan, HOVELJA, Tomaž. Teaching user stories within the scope of a software engineering capstone course: analysis of students’ opinions. International journal of
engineering education, 2014, vol. 30, no. 4, str. 901–915.

Celotna bibliografija je dostopna na SICRISu:
http://sicris.izum.si/search/rsr.aspx?lang=slv&id=4767.