Essence of system design
• The essence of system design is to find the abstract behind the application • The requirements and use cases do not express or mention these abstractions. They are too detailed to express the general nature of the underlying Abstraction
How to abstract
• Abstraction needs to be carried out globally based on requirements • not simply by individual use cases • abstraction refers to generalization, summarization, and refinement of the common logic of requirements
About Databases
• Database is the Implementation Details! The database should be postponed as much as possible. Too many applications are bound with databases and cannot be separated because the database is taken into account at the beginning of the design. Remember the abstract definition: "the enlargement of the essential part is irrelevant to the removal of the important part ." In the project analysis and design stage, the database is irrelevant. It is just a technology used to store and access data!
Object-Oriented Analysis and Design
• Object-oriented analysis and design should begin with the user or system behavior model, rather than the database. • User stories describe behaviors.
User stories-> Use Cases-> Design
• User stories-> Use Cases-> design. Use cases do not need to fall into too many details, as long as they are helpful to code design. The design is not too detailed and thorough. You should start with a simple process and move forward in small increments. • Source code is the final design document