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ó    

    Automated Software Engineering

    A tantárgy neve magyarul / Name of the subject in Hungarian: Automatizált szoftverfejlesztés

    Last updated: 2024. január 11.

    Budapest University of Technology and Economics
    Faculty of Electrical Engineering and Informatics
    Software Engineering, BSc
    Course ID Semester Assessment Credit Tantárgyfélév
    VIMIAC20 5 2/2/0/v 5  
    3. Course coordinator and department Dr. Semeráth Oszkár,
    4. Instructors Dr. Semeráth Oszkár assistant professor, BME MIT
    5. Required knowledge

    Before taking the course, the students should be able to

    • (K2) understand and explain source code writtend in imperative programming language
    • (K3) develop non-trivial programs based on high level specification
    • (K3) using structure models
    6. Pre-requisites
    Kötelező:
    Szakirany("AMIN22-SZOFTFEJL/AUT", _) VAGY

    Szakirany("AMIN22-SZOFTFEJL/IIT", _) VAGY

    Szakirany("AMIN22-SZOFTFEJL/MIT", _) VAGY
    Szakirany("VIABI2022-SOFTWE", _)

    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

    This course introduces to the language engineering process and the automation features of intelligent development environments. This includes the design of context-free grammars, the process of parsing, the implementation of automated continuous integration processes, and the implementation and statistic analysis, testing and performance measurement techniques. The aim of the course is to familiarise students with state-of-the-art technologies available in the field and to give them experience in automating language design and development.

    8. Synopsis

    1. Introduction. Automation in software development. What software artifacts are involved in the different phases of software development, what are the development steps in each phase, how can they be automated?

    2. Continuous integration and automation options. Automated compilation, transformation and testing.

    Exercise: build automation (Gradle) and continuous integration (GitHub Actions).

    3. Language engineering, Domain-Specific Languages. Modelling, metamodeling, graph-based models in theory and practice.

    Exercise: Ecore, example EMF languages.

    4. Context-free grammars. Concepts of grammars, language design, grammar analysis.

    Exercise: language design with Xtext technology.

    5. Editor functions, modern development tools. What are the features of a modern development tool? How can they be extended and customised?

    Exercise: Eclipse plugin, Language Server Protocol and CodeMirror.

    6. Code generation and model transformations. Code generators and compilers. Code generation technologies. Graph and model transformations.

    Exercise: Code generation.

    7. Simulation and debugging. Model interpretation, model semantics. Observability and controllability.

    Exercise: Running models in simulators.

    8. Representing program code with models. Concepts of control flow and data flow.

    Exercise: Abstract syntax tree and code analysis.

    9. Checking source code with static analysis techniques. Application and extension of pattern-based static verification techniques.

    Exercise: Creating a new rule for a static analysis tool (SonarLint).

    10. Testing techniques, coverage metrics. Test design and generation methods, automated testing.

    Exercise: measuring different coverage metrics (JaCoCo).

    11. Maintainable and efficient unit testing. Test patterns and what to avoid (test smell). Implementation of isolation using test doubles (stub, mock).

    Exercise: refactoring unit tests, isolation (Mockito).

    12. Performance measurement and metrics. Design and execution of performance tests, evaluation of measurement data.

    Exercise: measuring performance metrics using Java Microbenchmark Harness (JMH) and VisualVM.

    13. Statistical analysis of test and measurement results. Visualisation of measurement data, data analysis. Analysis of quality indicators.

    Exercise: analysis of software testing and performance measurement data using Jupyter Notebook.

    14. Industry case study, invited speaker.

    9. Method of instruction

    Lecture and laboratory exercises.

    10. Assessment To obtain the signature the students must successfully complete a home assignment.
    Written exam in the exam period.
    11. Recaps

    The home assignment can be handed in late in the week after the deadline.

    12. Consultations Pre-arranged with the instructor.
    13. References, textbooks and resources
    • Slides and materials on the course website
    • Martin Fowler, Rebecca Parsons, „Domain Specific Languages", Addison-Wesley, 2010.
    • Anneke G. Kleppe, „Software Language Engineering", Addison-Wesley, 2008.
    • Gerard Meszaros, „xUnit Test Patterns", Addison-Wesley, 2007.
    • Jez Humble, David Farley, „Continuous Delivery", Addison-Wesley, 2010.
    14. Required learning hours and assignment
    Contact hours 56
    Study during the semester  7+14
    Preparation for midterm exams  0
    Preparation of homework 33
    Study of written material 0
    Preparation for exam 40
    Total: 150
    15. Syllabus prepared by

    Dr. Semeráth Oszkár assistant professor, BME MIT

    Dr. Micskei Zoltán associate professor, BME MIT