Object Oriented Modelling of the problem : Describing the problem, data and user requirements in the paradigm of Objects. Asking the client right questions to get out right requirements which may be hidden and describing them in designs.
In designing, we are concerned with the first two phases of the SDLC.
First two stages of SDLC :
Talking to all the stakeholders, getting all technical, non-technical requirements, deciding and negotiating trade-offs with the client.
Conceptual design can capture the system as a set of interacting components. These components then, can translate into functions, classes, databases, elements, etc in the technical design.
Identifying the major components and relationships between them. This is where system software architecture comes into the picture. The design documents are expressed in diagrams which capture different views of the software system.
Check out different ways of gathering requirements from the customers. How to categorize and finally specify them in the SRS document.
Categories of Objects:
When we think of modelling the problem in OOP, we generally look for entity objects. Theobjects which are present in the physical world : The shopping cart, the account, the person, etc. However, the software consists of other types of objects as well which coordinate, provide utilities, perform control operations, provide interfaces, etc. It is important to recognize that a software does not consist just of entity objects.
Tradeoffs
Thereare always competing attributes in a software. We have to weigh their importance and include them accordingly. For example : too much security| user convenience, Nice UI with great animations, graphics | system performance and hardware utilization, Code quality | time to release the code, etc. Backward compatibility | maintainability.
Consider all consequences of any design decision.
Class Responsibility Collaborator
Conceptual Design : Components, responsibilities and connections. There should be a way to document it or arrange it. The solution is CRC. They help us organize our components into classes. Card has three sections : Class name, responsibilities and collaborators. We decompose the components such that they can be represented in terms of a class on a CRC card.