app dev mid

0.0(0)
Studied by 0 people
call kaiCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/32

encourage image

There's no tags or description

Looks like no tags are added yet.

33 Terms

1
New cards

Rigidity

The software is hard to change because every applied change will affect many parts of the software.

2
New cards

Fragility

When applying changes, unexpected parts of the software breaks.

3
New cards

Immobility

The modules of the software are hard to reuse in another software because these cannot be extracted from the current software.

4
New cards

Design Principles

A set of guidelines to be followed that helps developers arrange methods and data structures into classes, and how those classes should be interconnected, which can adapt to the changes in requirements without major code rewrites.

5
New cards

Single Responsibility Principle (SRP)

This suggests that each software module, class, or interface should have only one (1) reason to change.

6
New cards

Open-Closed Principle (OCP)

This states that for a software to be easy to change, the software classes must be designed to allow the behavior of those classes to be changed by adding new code rather than changing existing code.

7
New cards

Liskov Substitution Principle (LSP)

This states that the derived classes should be substitutable for their base classes to build a software from interchangeable modules or classes.

8
New cards

Interface Segregation Principle (ISP)

This principle advises software designers to avoid depending on things that they don't use.

9
New cards

Dependency Inversion Principle (DIP)

This principle suggests that flexible software are those with classes that depend on abstract classes or interfaces.

10
New cards

Design Patterns

Reusable solutions to commonly occurring problems in software design.

11
New cards

Pattern Name

This is the name of a pattern that can be used to describe a design problem, its solution, and consequences.

12
New cards

Problem

This describes when to use the pattern. It explains the problem and its context.

13
New cards

Solution

This describes the elements that make up the design, their relationships, responsibilities, and collaborations.

14
New cards

Consequences

These are the results and interchanges of applying the pattern to the problem, including time and space tradeoffs, flexibility, extensibility, and portability.

15
New cards

Creational Patterns

These patterns deal with when and how objects are created, providing object creation mechanisms that increase flexibility and reuse of existing codes.

16
New cards

Structural Patterns

These describe how objects are composed into larger groups and explain how to assemble objects and classes into larger structures while keeping their structures flexible and efficient.

17
New cards

Behavioral Patterns

These describe how responsibilities are distributed between objects in the design and how communication happens between objects.

18
New cards

Singleton Pattern

This design pattern lets developers ensure that a class has only one (1) instance while providing a global access point to the instance.

19
New cards

Factory Method Pattern

This provides an interface for creating objects in a superclass but allows subclasses to alter the type of object that will be created.

20
New cards

Prototype Pattern

This creational design pattern lets a developer copy existing objects without making his code dependent on their classes.

21
New cards

Abstract Factory Pattern

This allows developers to produce families of related objects without specifying their concrete classes.

22
New cards

Builder Pattern

This creational design pattern allows developers to construct complex objects step by step and produce different types and representations of an object using the same construction code.

23
New cards

Director

A separate class that defines the order of executing the building steps in the Builder pattern, completely hiding the details of product construction from the client code.

24
New cards

Adapter Pattern

This structural design pattern allows objects with incompatible interfaces to collaborate by converting the interface of a class into another interface as expected by the client application.

25
New cards

Bridge Pattern

This allows developers to split a large class or a set of closely related classes into two (2) separate hierarchies (abstraction and implementation) that can be developed independently of each other.

26
New cards

Composite Pattern

This design pattern allows developers to compose objects into tree structures and then work with these structures treating them as individual objects.

27
New cards

Decorator Pattern

This allows developers to attach new behaviors to objects by placing these objects inside special wrapper objects that contain the behaviors.

28
New cards

Facade Pattern

This provides a simplified interface to a library, a framework, or any other complex set of classes.

29
New cards

Flyweight Pattern

This allows developers to fit more objects into the available amount of RAM by sharing common parts of state between multiple objects instead of keeping all of the data in each object.

30
New cards

Proxy Pattern

This design pattern allows developers to provide a substitute or placeholder for another object to control access to the original object.

31
New cards

Iterator Pattern

This design pattern allows developers to traverse elements of a collection without exposing its underlying representation (such as list, stack, and tree).

32
New cards

Observer Pattern

This design pattern allows developers to define a subscription mechanism to notify multiple objects about any events that happen to the object they are observing.

33
New cards

Strategy Pattern

This allows developers to define a family of algorithms, put each of them into a separate class, and make their objects interchangeable.