SE Lecture 1 Flashcards
What are the learning objectives of the first lecture?
Appreciate software complexity
Why is software development complex?
Large systems require planning
Give an example of a large codebase to illustrate software complexity.
Boeing 787 → 14M lines of code; Windows 10 → 15M lines of code.
Why can’t large systems be implemented bottom-up?
Too complex to implement line-by-line; requires significant upfront planning.
How does the application domain add to software complexity?
Problems can be inherently complicated
What is an example of software complexity due to the application domain?
Building a hospital management system requires learning the hospital domain.
How does communication contribute to software complexity?
Different vocabularies
What is an example of communication challenges in software development?
Clarifying whether to store integers or floating-point numbers when clients request “storing numbers.”
Why is project management challenging in large software development?
Requires dividing projects
How does coding contribute to software complexity?
Writing reliable
What are some software quality problems caused by complexity?
Unreliable
What happened in the Ariane 5 rocket failure?
A tiny bug caused the rocket to explode.
What happened to the London Ambulance System in 1992?
System failure caused fatalities due to delayed ambulance service.
What happened to the London Stock Exchange System?
Abandoned after 5 years of development due to reliability issues.
How can software complexity affect software development projects?
Projects may be over-schedule
What percentage of large software systems face company-threatening issues?
0.17
What percentage of large software systems go over budget?
0.45
What percentage of large software systems are overtime?
0.07
What percentage of large software systems deliver less value than expected?
0.56
What is the first step to reduce complexity in software engineering?
Choose appropriate design goals at the start of the project.
Why can’t all design goals be achieved simultaneously?
Conflicting goals due to time and budget constraints.
What does modularity mean in software development?
Dividing large systems into smaller
Define a module in software systems.
A part of the system that can be considered independently.
What is the purpose of interfaces in modular systems?
Facilitate communication and interaction between modules.