Principles of software design

Pataasin ang iyong marka sa homework at exams ngayon gamit ang Quizwiz!

Version Control and Collaboration:

Use version control systems (e.g., Git) to track changes and collaborate with team members effectively.

Maintainability and Code Quality:

Write clean, well-structured code that is easy to understand and maintain. Follow coding standards and best practices.

YAGNI (You Aren't Gonna Need It):

Avoid adding features or code that you anticipate needing in the future but don't currently need. Prioritize what's essential for the present.

Don't Repeat Yourself (DRY):

Avoid code duplication. Reuse code through functions, classes, or libraries to minimize redundancy.

Interface Segregation Principle (ISP):

Clients should not be forced to depend on interfaces they don't use. Break large interfaces into smaller, more specific ones.

Ethical Considerations:

Consider ethical implications when designing software, especially if it deals with user data or sensitive information.

Scalability and Performance:

Consider scalability from the start, even if you don't anticipate high loads initially. Optimize critical parts of your code for performance.

Keep It Simple, Stupid (KISS):

Favor simplicity in your designs. Avoid unnecessary complexity. Simple solutions are often easier to maintain and understand.

Dependency Inversion Principle (DIP):

High-level modules should not depend on low-level modules. Both should depend on abstractions. Abstractions should not depend on details; details should depend on abstractions.

Error Handling and Logging:

Implement robust error handling mechanisms and maintain logs to facilitate debugging and troubleshooting.

User Experience (UX):

Keep the user experience in mind during design. Design user interfaces that are intuitive and user-friendly.

Security:

Prioritize security in your design, including authentication, authorization, data encryption, and protection against common vulnerabilities.

Performance Optimization:

Profile your code to identify performance bottlenecks and optimize them. Don't optimize prematurely; focus on critical areas.

Documentation:

Provide clear and comprehensive documentation for your code, including comments, API documentation, and user guides.

Separation of Concerns (SoC):

Separate different aspects of your software into distinct modules or components, with each component having a clear and specific responsibility.

Separation of Configuration from Code:

Store configuration settings separately from the code to make configuration changes easier and less error-prone.

Liskov Substitution Principle (LSP):

Subtypes (derived classes) should be substitutable for their base types (parent classes) without altering the correctness of the program.

Design by Contract (DbC):

Define clear and formal contracts (preconditions and postconditions) for functions and classes, specifying their expected behavior and inputs.

Flexibility and Adaptability:

Design your software to be flexible and adaptable to changing requirements. Avoid rigid designs that are difficult to modify.

Principle of Least Astonishment (POLA):

Design your software to be intuitive and not surprise users or developers with unexpected behavior.

Open/Closed Principle (OCP):

Design your software to be open for extension but closed for modification. Use interfaces, abstract classes, and polymorphism to achieve this.

Testing and Testability:

Design your software with testing in mind. Use unit tests, integration tests, and other testing techniques to validate functionality.

Fail Fast:

Detect errors as early as possible in the software's execution and fail gracefully with informative error messages.

Single Responsibility Principle (SRP):

Each class or module should have a single, well-defined responsibility. Avoid creating classes that do too much.

Single Source of Truth (SSOT):

Ensure that data or information is stored in a single, authoritative location. Avoid duplicating data in multiple places, which can lead to inconsistencies.


Kaugnay na mga set ng pag-aaral

Study Guide Chapter 1.10 (Content and Analysis)

View Set

Chapter 20 section 4 - The Columbian Exchange and Global Trade

View Set

ECON 2105: CHAPTER 10 [MEASURING A NATION'S INCOME]

View Set

Therapeutic Modalities & Non-Systems review for NPTE

View Set

extra help of Accounting study guide of ch 1, 2, & 3

View Set

Chapter 8: Big Data, Data Warehouses, and Business Intelligence Systems

View Set