Skip to content

Objectives is to understand:

  • What software engineering is
  • Why software engineering is important
  • The main activities in software engineeering

6 professors.

Brief Overview

90% of innovations in car industry are electronics and software.

Concern:

  • Responsible use of technology
  • Technology for humanity and society
  • Sustainability

Why Software Engineering

Software systems can be complex systems, which need a disciplined approach for designing, developing, and managing.

The errors of software can lead to VERY TERRIBLE CONSEQUENCES!

Software QUALITY counts.

What is Software Engineering

Software engineering contains a wide range of topics.

  • Requirements engineering
  • Project management
  • Development process
  • Development
  • System architecture
  • Analysis and evaluation
  • Design
  • Testing and verification
  • Maintenance and updates
  • ...

V-Model VS Agile

They are different kinds of development processes.

V-Model

  • Predictability
  • Controllability
  • Disciplined development

Agile methods

  • Flexibility
  • Fast feedback
  • User involved

Continuous Integration (CI)

  • Revision Control System
  • Concurrent Versions System
  • Subversion
  • Git...

Requirements Engineering

Identify what functions are to be performed on what data to produce what result at what location for whom and when.

Focus on the services to be performed and avoid providing a solution.

Requirements extraction

  • Stakeholder interviews
  • Stakeholder workshops
  • Documentation analysis

Requirements specification

  • In Agile: theme: epic, user stories...

Requirements validation and management

  • Safety
  • Importance
  • Consistency
  • Completeness
  • Verifiability
  • Maintainable
  • Traceability
  • ...

Software Architectures

It is characterized by the principle design decisions made during its development

Usually can be depicted by flowchart.

It is not a phase of development

Testing

Unit testing

Integration Testing

Validation Testing

Test-first and test-driven development (TDD)

  • Write tests before writing the corresponding program elements
  • Extremely incremental
  • Refactoring is important
  • Don't move until all tests succeed.

It's a kind of Agile development process

Software Engineering and AI

AI/ML need to coexist with other pieces of software

Quality includes transparency, explanability, accountability, non-discrimination, fairness...

Regulations: EU AI ACT...

Software Products with GenAI

GenAI is used as a tool.

GenAI can be used to realize software functionality.

GenAI acts as agent that proactively participates in the software development process

GenAI acts as a semi-autonomous, goal-driven agent to deliver parts of the functionality of software system.

Together with GenAI,

  • Requirements Engineering becomes Prompt Engineering.
  • High-level design remains in hands of human.
  • Low-level design and code generation was automated by GenAI.