Modularity Flashcards
3rd Exam
is a software design principle that involves breaking a program into smaller, self-contained units or modules. Each module is designed to perform a specific function and can be developed, tested, and maintained independently from other modules.
Modularity
is a term used in software architecture to describe a system that lacks a clear and organized structure, resulting in a tangled, messy codebase.
Big Ball of Mud
often refers to an individual item or member of a collection or structure, such as an array, list, or set. It represents a discrete, identifiable unit within a collection.
- Element
refer to the hierarchical organization of modules in a system, where each layer represents a distinct level of abstraction or functionality.
Layers
is a software design approach that focuses on separating cross-cutting concerns from the main business logic of a program. Cross-cutting concerns are functionalities that affect multiple parts of a system but don’t fit neatly into the primary modules or classes.
Aspect Oriented Programming
is a software design approach that focuses on dividing a system into modules or components based on the real-world domains or business areas the system represents.
Domain Based Decomposition
is a key consideration in the context of software quality attributes, especially when balancing speed of delivery with other qualities like performance, maintainability, and reliability.
Time-to-start
refers to an approach in software development where a system or product is built and delivered in small, manageable parts (or increments) over time, rather than as a single, large, complete package. Each increment is a small piece of the overall system, typically fully functional or delivering a subset of features, and can be tested, evaluated, and improved upon as the project progresses
Incremental Piecemeal
When the system becomes a Big Ball of Mud it is very difficult to convert it to another thing
A few prestigious developers know where to touch Clean developers run away from these systems
Inertia
You need an immediate fix for a small problem, a quick prototype or proof of concept When it is good enough, you ship it
Throwaway Code
Growth in each deliver
Piecemeal growth
Bad code reproduces in lots of places
Cut/Paste reuse
Not following clean code/architecture, Bad smell
- Anti-pattern and technical debts
refers to a self-contained, independent unit of code that performs a specific function or set of functions within a larger system.
- Module
in software development is a contract or a blueprint that defines a set of methods that a class must implement, without providing the actual implementation of those methods.
Interface
refers to the implementation details or the internal workings of a module.
Body
is a software engineering approach that involves breaking down a complex system into smaller, manageable, and self-contained modules.
Modular decomposition
Modular systems allow teams to work on different modules simultaneously, increasing productivity.
Communication
A module only exposes an interface- less complexity
Simplicity
Modules can be reused in different programs or projects without modification
Reusability
Modules can be developed by different teams
Independence
refers to a poor division of a system’s components, modules, or functionalities, leading to problems in design, maintainability, performance, or flexibility.
Bad Decomposition
Managing dependencies between modules can become complex, particularly as the number of modules increases.
Dependency Management
Modules decomposition affects team organization
Team Organization