Advanced Software Development Methods

Subject description

Lectures:

The contents adapts to current trends in software development and software engineering. The focus is on agile methods for software development and selected advanced topics in software engineering:

1. Overview of software engineering and contemporary methods for software development 

2. Agile and iterative software project management

  • Iterative and incremental development (Unified process)
  • Project risk management
  • Agile development (Scrum, XP, Kanban, Lean)
  • Comparison of agile approache to traditional software development process

3. Selected agile practices (Pair programming, Test driven development (TDD), Refactoring)

4. Advanced requirements engineering

  • Reqirements engineering process
  • Management of requirements and requirements change
  • Advanced requirements elicitation techniques)

5. Architectural design (Architectural design decisions, Architectural views, Architectural patterns)

6. Designing dependable systems (reliability, safety, security, resilience)

7. Testing

  • Development testing
  • Release testing
  • User testing
  • Specifics of testing in agile development

8. Configuration management (version management, system building, change management, release management)

9. Agile development and DevOps (continous delivery, continous deployment, deployment pipeline)

10. Metrics in Software Engineering

  • Metrics of software quality
  • Metrics of software development process quality

11. Use of software development processes in development teams (implementation, adoption, tailoring, monitoring and evaluation)

Lab practice:

The purpose of lab practice is twofold:

1. to acquaint students with modern approaches and tools for software development;

2. Case study: to empirically evaluate different approaches to software development through practical work on (almost) real software projects.

Individual work outside of contact hours:

In the context of the case study students develop programs that are part of the project following the selected development process and evaluate the process.

The subject is taught in programs

Objectives and competences

In depth study of advanced topics in program engineering with emphasis on 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.

Teaching and learning 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.

Expected study results

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

Basic sources and literature

1. I. Sommerville: Software Engineering, Addison-Wesley, 10. izdaja, 2016.

2. R. Stephens: Beginning Software Engineering, Wrox, 2015.

3. D. Anderson, Kanban – Successful Evolutionary Change for Your Technology Business, Sequim, WA: Blue Hole Press, 2010.

Dodatna literatura:

1. M. Cohn: User stories applied, Addison-Wesley, 2011, cop. 2004.

2. K. Beck, A. Cynthia: Extreme Programming Explained, Addison-Wesley, cop. 2005.

3. K. Schwaber: Agile Project Management with Scrum, Microsoft Press, 2004.

Stay up to date

University of Ljubljana, Faculty of Electrical Engineering Tržaška cesta 25, 1000 Ljubljana

E:  dekanat@fe.uni-lj.si T:  01 4768 411