Software Engineering

Software Engineering

Course title
Software Engineering
Course tag
10039
Semester
5
Course status
Mandatory
ECTS
6
Lectures
30
Practice
30
Independent work
120
Total
180
Teachers and associates
PhD Miroslav Popović
Nikolina Frid, Instructor
The course aims
Students will learn about models and methods of software product development, including traditional and agile methods, in order to round up the acquired practical knowledge in software development. The goal is to familiarize students with realistic and practical challenges of software engineering, from the perspective of the engineer.
Content
Basic concepts related to software engineering. Software product. Models for software process. Software engineering as profession. Trade associations and ethics of profession. Introduction to software development lifecycle (SDLC) and different approaches to software development. Software project management. CASE tools. UML: Specification, Types of requirements and methods for their documentation, Detection and analysis of requirements, System modeling, Use of prototypes. Formal specification. Design and implementation. System architecture design. Distributed systems architectures. Object approach to design. User interface design. Program reuse. Verification and validation. Static verification. Program testing. Evolution. Program re-engineering. Agile development: demonstration of basic values of Agile development, agile estimation, Scrum, Extreme Programming (XP): Test Driven Development (TDD) and Pair Programming, Kanban, Lean software development.
Literature:
Sommerville, Software Engineering, 9th edition, Addison-Wesley, 2010.
Supplementary literature
Robert C. Martin; Clean Code: A Handbook of Agile Software Craftsmanship; Prentice Hall; 1 edition (August 11, 2008)

Henrik Kniberg; Scrum and Xp from the Trenches; lulu.com; 2 edition (November 24, 2015)

Minimum learning outcomes

  1. Student will be able to argument reasons for application of the engineering principles in software development.
  2. Student will be able to categorize the software requirements in predefined categories.
  3. Student will be able to recommend the use of appropriate UML diagram in a specific phase of the software development process.
  4. Agile development: Students will be able to identify areas of possible application of agile methods and practices.
  5. Scrum: Students will be able to categorize offered characteristics with regard to roles, ceremonies or artifacts in Scrum process.
  6. Students will be able to develop Product Backlog items in User Story form and relatively evaluate them.
  7. Kanban and Lean: Students will be able to judge the cause of organizational dysfunction based on given characteristics.
  8. Software craftsmanship, agile architecture and agile testing: Students will be able to identify the scope of a particular good practice in writing.

Preferred learning outcomes

  1. Student will be able to argument reasons for application of the engineering principles in software development.
  2. Student will be able to organize the requirements for a software system and make the specification of a software system.
  3. Student will be able to recommend and draw the appropriate UML diagram in a specific phase of the software development process.
  4. Agile development: Students will be able to identify areas of application and recommend application of appropriate agile methods and practices.
  5. Scrum: Students will be able to categorize offered characteristics with regard to roles, ceremonies or artifacts in Scrum process and independently design additional characteristics of individual role, ceremony or artifact in Scrum.
  6. Agile planning and evaluation: Students will be able to develop Product Backlog items in User Story form and relatively evaluate them as well as calculate estimated scope of software edition.
  7. Kanban and Lean: Students will be able to judge the cause of organizational dysfunction based on given characteristics and design an appropriate kanban board based on characteristics of organization or workgroup.
  8. Software craftsmanship, agile architecture, and agile testing: Students will be able to recommend the use of a particular XP method with regard to given problem description, analyze example of a bad code and recommend appropriate good practice.