63732 Software Engineering
- Study programme and level: Interdisciplinary University Study Programme in Administrative Information Science - 1st Cycle
- 6 ECTS
- Course type: Elective
- Lectures: 45
- Tutorial: 30
- Individual work: 105
- Lecturer: Alenka Kavčič, PhD
1. Objectives and competences
The goal of this course is to present the basics in the area of Software Engineering that defines a set of approaches, methods and tools for efficient software development (especially for larger projects). A selected set of subareas is thus presented that includes most important SE concepts in practice. These concepts are practically presented at tutorials as a step-by-step development of a small application, using agile approach to development.
The competences students gain are:
- use of different approaches to software development, particular development methodologies and their characteristics (relative advantages and disadvantages), with emphasis on agile methodologies,
- familiarity with the phases of software development,
- preparing project plan, with emphasis on risk management (risk identification and approaches to managing risks),
- using different methods for specifying user requirements (including UML diagrams),
- familiarity and use of different architectural styles,
- familiarity with the main design principles (modularity, coupling and cohesion, information hiding, generality etc.), and use of design patterns,
- familiarity with different approaches and techniques for testing (on unit, integration, and system level), and fundamental principles of test-driven development,
- familiarity and use of different tools in support of the software development (e.g. version control systems, IDE, automated unit testing tools).
Lectures cover the following chapters:
- Introduction to Software Engineering
- Software development models
- Agile methodologies, Scrum, XP
- Project planning (project plan, including project schedule, work/budget estimations and risk management)
- Software development life cycle
- Capturing and managing the requirements
- System architecture
- Designing the modules
- Design patterns
- Implementation, documentation
- Testing and Test Driven Development
- Maintaining the software system
- Evaluation of project, processes and products
- Future of Software Engineering
Students will consolidate the discussed topics within a progressive development of a small application that is carried out as an autonomous project work with final presentation of results. Students work in small project teams and follow the agile approach. Significant part of the laboratory sessions is the introduction to appropriate tools and their use.
- S. L. Pfleeger, J. M. Atlee: Software Engineering, Theory and Practice, Pearson, 2010.
- I. Sommerville: Software Engineering, Pearson, 2011.
- K. Beck: Extreme Programming Explained: Embrace the Change, Addison-Wesley, 2004.
4. Intended learning outcomes
Knowledge and understanding:
- Knowledge of Software Engineering area.
- Software development, selecting a suitable approach to development.
- Knowing and understanding the complexity of preparation and realization of software development projects.
- A suitable approach to preparation and realization of a project, complete approach to software development, team work.
5. Learning and teaching methods
Lectures are carried out ex-cathedra with practical demonstrations.
Work at the laboratory sessions is individual or in groups under the supervision of teaching assistants.
Type: written examination, coursework, project, project presentation.
- Continuing: homework, exercises, project work. (50 %)
- Final: midterm exams or written exam. (50 %)
Grading: 6-10 pass, 1-5 fail (according to the Statutes of the University of Ljubljana).