Please enable JavaScript.
Coggle requires JavaScript to display documents.
NHOM 3_1 - Coggle Diagram
NHOM 3_1
Chapter 3
Software architecture
-
-
-
a software architecture design must conform to the project's functional and nonfunctional requirements
-
-
Architecture View Models
-
-
-
The Process View
focuses on the dynamic aspects of the system, i.e., its execution time behavior
-
-
maps functions, activities, and interactions onto runtime implementation with a focus on nonfunctional requirements as well as the implementation of the functional requirements.
-
address nonfunctional requirements such as multithreading and synchronous/asynchronous communications for performance and availability
The Physical View
describes installation, configuration, and deployment of the software application
-
shows the mapping of software onto hardware. It is particularly of interest in distributed or parallel systems
A physical view also takes into account the system's nonfunctional requirements such as system availability, reliability (fault-tolerance), throughput performance, scalability performance, and security.
The User Interface View
is an extended view that provides a clear user-computer interface view and hides implementation details.
chap 4
SOLID Principles
Open for Extension, Closed for Modification
It's now time for the O in SOLID, known as the open-closed principle. Simply put, classes should be open for extension but closed for modification.
In doing so, we stop ourselves from modifying existing code and causing potential new bugs in an otherwise happy application.
Software entities (e.g., classes, modules, functions) should be open for an extension, but closed for modification.
-
Liskov Substitution
The Liskov Substitution Principle (LSP) applies to inheritance hierarchies such that derived classes must be completely substitutable for their base classes.
Simply put, if class A is a subtype of class B, we should be able to replace B with A without disrupting the behavior of our program.
-
Interface Segregation
The I in SOLID stands for interface segregation, and it simply means that larger interfaces should be split into smaller ones. By doing so, we can ensure that implementing classes only need to be concerned about the methods that are of interest to them.
Dependency Inversion
The principle of dependency inversion refers to the decoupling of software modules. This way, instead of high-level modules depending on low-level modules, both will depend on abstractions.
OOP Characteristics
encapsulation
It is defined as the wrapping up of data under a single unit. It is the mechanism that binds together code and the data it manipulates.
Another way to think about encapsulation is, it is a protective shield that prevents the data from being accessed by the code outside this shield
Technically in encapsulation, the variables or data of a class is hidden from any other class and can be accessed only through any member function of own class in which they are declared.
As in encapsulation, the data in a class is hidden from other classes, so it is also known as data-hiding.
Encapsulation can be achieved by Declaring all the variables in the class as private and writing public methods in the class to set and get the values of variables.
inheritance
Inheritance is an important pillar of OOP(Object Oriented Programming). It is the mechanism in java by which one class is allow to inherit the features(fields and methods) of another class.
-
abstraction
Data Abstraction is the property by virtue of which only the essential details are displayed to the user.The trivial or the non-essentials units are not displayed to the user.
-
In java, abstraction is achieved by interfaces and abstract classes. We can achieve 100% abstraction using interfaces.
Data Abstraction may also be defined as the process of identifying only the required characteristics of an object ignoring the irrelevant details. The properties and behaviours of an object differentiate it from other objects of similar type and also help in classifying/grouping the objects.
polymorphism
It refers to the ability of OOPs programming languages to differentiate between entities with the same name efficiently. This is done by Java with the help of the signature and declaration of these entities.
-
-
-
-