Deployment
The system is installed on the clients machines and put into practice
Maintenance
The system can undergo continuous changes and debugging as new needs
come to the fore
Disadvantage of the waterfall model
the client gets to see the system only at the end.
If the system is not answering to its needs, it is very costly to correct
Advantage of agile development
the client is involved throughout the process and can at any time
give feedback or request changes
SOLID Design principles
-Single responsibility principle (SRP)
-Open/Closed principle (OCP)
-Liskov substitution principle (LSP)
-Interface segregation principle (ISP)
Dependency inversion principle (DIP)
-states that high level parts of the system should not depend on low level parts of the system
-both low-level and high level modules should depend on some kind of abstraction
Interface segregation principle (ISP)
-No derived class should be forced to implement methods that its clients will never use.
-Derived classes should always be fatter then their parents
Liskov substitution principle (LSP)
-You should be able to substitute a parent class with any of its child classes.
-a user of a
base class should continue to function properly if a derivative of that base class was assigned
to it.
Open/Closed principle (OCP)
-Software entities (classes, methods, assemblies, etc.) should be open for extension, but closed
for modification
-Meaning that it should be possible to add functionality to a system without
changing existing code
-New features should be implemented using the new code, but not by changing existing code.
Single responsibility principle (SRP)
a module or class should have a very small piece of responsibility in the entire application
The downside of SOLID
Why are the SOLID principles important?
Design pattern
shows an approach to solve a certain type of problem
Algorithm
a specific solution to a specific problem in pseudocode
GoF Patterns
-Creational patterns
-Structural patterns
-Behavioral patterns
Creational patterns
provide object creation mechanisms that increase flexibility and reuse of existing code
Structural patterns
explain how to assemble objects and classes into larger structures,
while keeping the structures flexible and efficient
Behavioural pattern
Takes care of effective communication and the assignment of
responsibilities between objects.