Software Engineering Flashcards
(18 cards)
Steps Software Test Life Cycle (4 steps)
Unit Testing (verification) Integration Testing (verification) System Testing (validation) Acceptance Testing (validation)
Unit Testing
Evaluate individual components (e.g. functions or classes)
Integration Testing
- test individual comonents (2 or more) of the system as a collective group.
- To identify problems in the interface between modules and functions.
System Testing
- test if collective group of integrated components performs optimally
- to see if system fullfills quality standards.
- to see if system complies with all major requirements.
Acceptance Testing
- to evaluate if system is ready for release
- test can the application perform all the specified functions
What are the four pillars of Object Oriented Programming ?
Encapsulation/Privatisation
Abstraction
Inheritance
Polymorphism
Encapsulation/Privatisation
- private class variables
- can only be accesed by public functions of this class
- restricting access, security, protection, avoid bugs through overrinding variable somewhere else
- code is easily readable if variables clearly belong to a class
- code is easily usable if we only need to access the functions and not the inner state of a class
Abstraction
- hide away some of the implementation details
- e.g. in a function or class
- easily usable
- easily understandable code
- reusable, maintainable
- can be achieved through encapsulation
(Coffee machine example)
Inheritance
- class can inherit the properties and methods of another class
- reusability, maintainability
(example cars)
Polymorphism
- appearing in different forms
- we have the same function, which can be overriden and customized to an inherriting class
- e.g. every car makes an individual sound - which is then printed
- handle different data types
Manifesto of agile software development
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Big O nested Loop?
O(N^2)
Big O linear search ?
O(N) - look at every item if we search for item N
Big O of two loops after one another ?
O(N) - one loop is O(N)
How to determine Big O of an algorithm ?
Biggest O in the algorithm counts (e.g. O(N^2))
List 8 common Big O’s ?
- O(1): constant time
- O(log n): logarithmic time
- O(n): Linear time
- O(n log n): linearithmic time
- O(n^2): quadratic time
- O(n^3): cubic time
- O(a^n): exponential time
- O(n!): factorial time
What is Big O?
analyzes the running time of an algorithm depending on the input size
Constant-time algorithm
- O(1)
- runs in a constant time no matter how long the input is
- e.g. programms without input
- e.g. checking the first byte of a file (length of file is not important)