Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    Software Engineering

    A tantárgy neve magyarul / Name of the subject in Hungarian: Szoftvertechnológia

    Last updated: 2026. július 10.

    Budapest University of Technology and Economics
    Faculty of Electrical Engineering and Informatics
    BSc
    Course ID Semester Assessment Credit Tantárgyfélév
    VIMIAB04 3 3/0/1/v 5  
    3. Course coordinator and department Dr. Micskei Zoltán Imre,
    4. Instructors

    Dr. Zoltán Micskei, associate professor, MIT

    Dr. László Gönczy, associate professor, MIT
    5. Required knowledge

    Before taking the course, the students should be able to

    - (K2) explain the basic mechanism of imperative programming languages,

    - (K3) develop a non-trivial program based on a high-level specification,

    - (K3) solve modeling problems using simple modeling languages (e.g. final state machines). 

    6. Pre-requisites
    Kötelező:
    ([ HA
    EgyenCsoportTagja("INFO - 2022 - MINTATANTERV HALLGATÓI")

    AKKOR

    ( TárgyTeljesítve("BMEVIIIAA03") ÉS
    (TárgyTeljesítve_Képzésen("BMEVIIIAB00") VAGY
    TargyFelvetelekSzama("BMEVIIIAB00") >= 1 ))

    EGYÉBKÉNT

    TárgyTeljesítve("BMEVIIIAA03") ]


    ÉS

    NEM ( TárgyTeljesítve("BMEVIIIAB01") ) ÉS

    (Training.Code=("5N-A8") VAGY Training.Code=("5NAA8")) )


    VAGY EgyenCsoportTagja("Kreditpótlás_2023/24/2")

    A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

    A kötelező előtanulmányi rend az adott szak honlapján és képzési programjában található.

    7. Objectives, learning outcomes and obtained knowledge

    The objective of the course is to introduce the students to the design, development, and maintenance of large-scale software systems. The course presents the techniques and methods to produce the software as a product. In addition to the presentation of the technical aspects, people and project management techniques and methods are also introduced.

    Students satisfying the course requirements will be able to understand and manage the problems related to the development of large-scale software systems and they will be able to participate in such development processes. The knowledge acquired in this course will be the background for the Software Laboratory course.

    After successful completion, students will be able to:

    - (K2) explain the typical steps and methodologies of software development,

    - (K3) use version control and software development tools on a basic level,

    - (K3) design simpler tests based on requirements or code structure,

    - (K3) create simpler structural and behavioral UML models. 

    8. Synopsis

    1. Introduction: About software and software development. Does software engineering differ from other engineering fields? What is in software engineering other than programming? Case studies of complex software systems and software projects. What is needed for successful software development?

    Software development practices

    2. Fundamentals of version control. Centralized and decentralized version control. Typical workflows and patterns (GitHub Flow, Mainline...).
    3. Requirement management: Importance of requirements. Eliciting, analyzing, prioritizing requirements. Types of requirements. Traceability. Handling changes in requirements.
    4. Design and architecture: Fundamental concepts (abstraction, modularization). Elements of software architecture. Documenting designs.
    5. Managing source code: properties of good source code. Coding guidelines and standards. Code review. Using static analysis tools.
    6. Testing I.: concepts and goals of testing. Testing process. Testing levels. Risk-based testing.
    7. Testing II.: test design techniques (specification and structure-based techniques). 

    Software modeling and UML
    8. Modeling software: Why model? What can we model? The Unified Modeling Language (UML) modeling language family. Modeling structure: class diagram, modeling instances, package diagram, component diagram.
    9. UML behavioral modeling I.: use case, activity diagram, sequence diagram.
    10. UML behavioral modeling II.: state machine diagram, connecting different viewpoints.

    Software development processes
    5. Steps and artefacts of the software lifecycle. Popular lifecycle models (waterfall, V-model)
    6. Classic and agile software development. Agile and Lean practices. Examples: Scrum, XP.

    Project and people management
    13. Managing software projects. Estimation, project planning and tracking. Agile project management practices and tools.
    14. Measurement and analysis in software development. Process definitions and metrics.

     

    Laboratory exercises:

    1. Software development workflows, handling complex software.
    2. Version control systems (git): basics, branches, conflict; build systems.
    3. GitHub Flow, Continuous Integration (CI); code review; using static analysis tools.
    4. Test design and implementation. Measuring code coverage.
    5. UML modelling: modelling structure.
    6. UML modelling: modelling behaviour (I.)
    7. UML modelling: modelling behaviour (II.)

    9. Method of instruction

    Lecture: The purpose of the lectures is to introduce the concepts, engineering problems, and methods related to the course material (knowledge competence element). Deeper understanding is supported by practical exercises presented and solved jointly during the lectures, for example in the areas of code review, testing, or UML modelling. Continuous learning of the course material is facilitated by written transcripts of the lectures. Practice in problem solving is supported by an exercise guide that include worked-out, detailed solutions (skills competence element). Self-assessment is supported by review questions made available in electronic form.

    Laboratory practice: Computer laboratory sessions support students in becoming familiar with the methods and technologies presented in the course. Preparatory materials are provided in advance for each laboratory session, and the software to be used can be tried out beforehand. During the laboratory sessions, following a demonstration by the lab instructor, students practise individually the basic software development and modelling skills required to complete the course (skills competence element).

    Homework Assignment: The application of fundamental software development practices at a practical skill level is supported by a complex homework assignment that follows realistic development processes. The assignment guides students through the typical steps of requirements analysis, coding, testing, and review, using modern software development environments that are also relevant in industry (skills competence element). The homework assignment consists of several phases, in which both meeting deadlines and producing high-quality deliverables are of particular importance (attitude competence element). The assignment requires independent work planning and execution, and places strong emphasis on the evaluation of the completed results (autonomy and responsibility competence elements).

    10. Assessment
    In defining the requirements, important considerations included supporting continuous learning, maintaining student engagement, and enabling rapid feedback.
     
    Study period: 
    • Laboratory:
      • Successful completion of a diagnostic assessment is required before starting the laboratory sessions.
      • Active participation in the laboratory sessions is expected. Active participation is assessed by the laboratory instructor by checking the completion of the laboratory tasks.
      • Based on the work carried out during the completion of the laboratory tasks, the laboratory instructor evaluates each laboratory session at one of the following levels: "failed to meet requirements", "met requirements", or "met requirements with excellence".
      • A necessary condition for obtaining the signature is the completion of all laboratory sessions, including successful completion of the laboratory diagnostic assessment and completion of the laboratory tasks at least at the "met requirements" level.
    • Homework assignment:
      • The homework assignment consists of completing a software development task composed of several interdependent phases.
      • Successful completion of the assignment requires completing all phases at an appropriate standard (skills).
      • Steady progress is expected during the preparation of the assignment (attitude, autonomy and responsibility).
    Exam period: 
    • The exam has three parts. 
    • For students who achieve at least 50% separately in each of the first two parts, a proposed passing grade (2) may be offered. However, by starting the third part of the examination, the student automatically declares that they do not accept this offered grade; in this case, the final exam grade will be determined on the basis of the combined result of all three parts.
    • If the student does not accept the proposed passing grade, successful completion of the exam requires achieving at least 50% separately in each of the three parts.
    Final exam grade: 
    • The exam grade is calculated on the basis of the points obtained from the mid-semester assessments and the exam.
    • Based on the results of the compulsory mid-semester assessments (laboratory sessions and homework assignment), points corresponding to 30% of the final result may be obtained, according to the distribution announced at the beginning of the semester.
    • Based on the result achieved in the exam, points corresponding to 70% of the final result may be obtained.
    • Optional assessments may also be announced during the semester; their results will be taken into account in the examination grade in addition to the above.
    11. Recaps
    Laboratory
    • A student has at most two opportunities for retake or delayed completion of laboratory sessions in total.
    • For each laboratory session, retake opportunities are provided within a specified time window — no later than within two weeks — at previously announced times.
    Homework Assignment
    • Each phase of the homework assignment may be submitted late within no more than one week after the original deadline.
    • Due to the nature of the homework assignment, a successfully completed homework assignment may not be repeated for improvement.
    12. Consultations Pre-arranged with the instructor.
    13. References, textbooks and resources
    • Slides and materials on the course website
    • Ian Sommerville: Software Engineering, 10th edition, Pearson, 2015
    • Martin Fowler: UML Distilled, Addison-Wesley, 2003
    • Robert C. Martin: Clean Code: A Handbook of Agile Software Craftsmanship, Pearson, 2008
    • Dorothy Graham et al.: Foundations of Software Testing, Cengage, 2019
    • Titus Winters et al.: Software Engineering at Google, O'Reilly, 2020
    • Gergely Orosz. The Software Engineer’s Guidebook, Pragmatic Engineer BV, 2023
    14. Required learning hours and assignment
    Contact hours56
    Study during the semester10+12
    Preparation for midterm exams 0
    Preparation of homework32
    Study of written material0
    Preparation for exam40
    Total150
    15. Syllabus prepared by

    Dr. Balla Katalin, associate professor, IIT

    Dr. Goldschmidt Balázs, associate professor, IIT

    Dr. Micskei Zoltán, associate professor, MIT

    Dr. Simon Balázs, associate professor, IIT