Skip to main content
Skip header

Introduction to Software Engineering

Type of study Bachelor
Language of instruction English
Code 460-2009/05
Abbreviation SWI
Course title Introduction to Software Engineering
Credits 4
Coordinating department Department of Computer Science
Course coordinator Ing. Svatopluk Štolfa, Ph.D.

Subject syllabus

Lectures:
The course is taught as a block of lectures and exercises with a time allocation of 1.5 hours for the lecture and 1.5 hours for the exercise.
The course focuses on the practical application of acquired knowledge, practicing the software development cycle using visual modeling with UML.

Software Processes – Software lifecycle, Waterfall, V-Model, UP, agile methods, software quality
Specification and Requirements Analysis – Use cases and user stories, functional and non-functional requirements
Software Analysis and Design – Static and dynamic views, use of UML, software architecture, design patterns
Implementation – Implementation according to models, configuration management, version control systems, tool selection and use
Software Verification and Validation – Testing methods, verification and validation of non-coded artifacts, regression tests

Exercises Content:
The exercises focus on getting acquainted with the software development cycle and the specification of individual parts. The exercises progressively go through the phases of software development and gradually introduce various UML diagrams. The exercises also focus on consultations related to the independent processing of the software project and its final implementation. Completing the project and passing the tests in the exercises are required to obtain the course credit.

Content of individual exercises:

- Problem analysis, verbal specification of requirements, structured specification of requirements. Practice on examples.
- Creating use cases, scenarios, user stories, introduction to use case diagrams, include and extend relationships. Practice on examples.
- Use case diagram, inheritance relationships between actors, inheritance between use cases. Practice on examples.
- Identification of entities in the system – analysis of significant nouns in use cases. - Basics of class diagrams. Class, association links, multiplicity. Method of converting the diagram into a programming language. Practice on examples.
- Assembling a structural view of the system. Class diagram – inheritance links, interface implementation, roles, interfaces, aggregation and composition, association class. Method of converting the diagram into a programming language. Practice on examples.
- Realization of use cases – sequence diagrams. Introduction to the basics – object, object call, return message. Practice on examples.
- Sequence diagrams – alternatives, loops, synchronous and asynchronous calls, operation runtime. Method of converting the diagram into a programming language. Practice on examples.
- Communication diagrams. Refinement of class diagrams based on sequence and communication diagrams. Practice on examples.
- State diagrams – state changes, implementation in programming languages. Practice on examples.
- Activity diagrams and their use for problem definition – business model. Practice on examples.
- Use of activity diagrams for describing use cases and algorithms in the system. Practice on examples.
- Implementation of the software project based on the created analysis – package and deployment diagrams. Practice on examples.
- Recapitulation of exercises – progress through individual project phases, use of UML diagrams.

E-learning

Literature

Pfleeger, Shari Lawrence, and Joanne M. Atlee. 2009. Software Engineering: Theory and Practice: Prentice Hall, ISBN 0136061699.
Pressman, Roger S. 2010. Software Engineering : A Practitioner's Approach. 7th ed. New York: McGraw-Hill Higher Education, ISBN 9780073375977.
Sommerville, Ian. 2010. Software Engineering. 9th ed, International Computer Science Series. Harlow: Addison-Wesley, ISBN 978-0137035151.

Advised literature

Watts Humphrey’s Introduction to the Team Software Process
Armando Fox and David Patterson ,Engineering Software as a Service: An Agile Approach Using Cloud Computing, Strawberry Canyon Publisher, 2013
Gary McGraw, Real Time UML, Third Edition.
Bruce Powel Douglass, Advances in the UML for Real-Time Systems, Addison-Wesley, 2004.