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.