Fundamental Design concepts applied in modern software design

Now we will list a few fundamental design concepts that have been evolved over the years of experience in software designing -


Abstraction

The first stage of Designing is focused on generalizing our concept of system We design a basic system by picking up the most relevant information and hiding the complexities of the system

Refinement

This is another design aspect which comes into picture in later stage of design process Here we can concentrate on collaboration. refinement starts once our high level design is ready. Then we keep on applying refinement on our design and finally reach the low-level program trucks light packages, interfaces, classes, objects, methods, variables, etc.

Modularity

Complex design can be divided into two models. While designing, it is made sure that module can be treated in isolation if needed. It means that the inputs outputs or interaction should be well defined for the module a and if needed, hatim T1 can be assigned to work on that module in isolation. The assign development team 31 may not actually have the access to the larger perspective of the system or it may not have access to working module X with which module interacts.

Software architecture

One of the most important design concepts is the overall architecture for the software architecture of the system which should be very carefully designed. This architecture plays important role in system implementation and kept on getting referred throughout the lifetime of software system. All the stakeholders will always wish to have comprehensive, appealing, are available, and unfegined software architecture at first place. A good software architecture always signals a good return of investment for the stakeholders.

Control hierarchy

Another important aspect of system is flow of control and data. Design at some level should also be able to project this aspect of the system. Stages of user interaction and then subsystem interactions can be used to show the control hierarchy at high level. At more detail level control structures of programs and their following sequences represents the control hierarchy. The above mentioned terms of design are general design concepts software Architects and expert engineers can add more terms and parameters that they have learnt and experienced. Design engineering and process can never be frozen. It has witnessed few major changes in software systems in past few years. Mobile applications and internet for stars to rethink on traditional design strategies. With modern Trends and need in software development, we should not hesitate to find verify and adopt the innovative strategies in software design.

Classification of software design based on abstraction level

the outcome of software design is often classified in three levels architectural design high level design detailed design

Architectural design - the highest level of abstraction of the software system can be represented by architectural design. We can have a very high level view of the entire system And can have observe it as many components interacting with each other A simplified architectural design of general web application can include user interface or view component processing component or controller and the base component that interacts with business logic component model.

High level design - breaking the architectural design at component level yields the high level design. Hear the concentration is on sub system design and models instead of entire system as one. Interaction of the components and interfaces are designed at this level. This level still represents the Abstract wave of the system but at module level. For example we can have an abstract design of the system that process the business data and where the business logic is written. In most modern web application this component is so large and complex that high level design of this component takes us back to the architectural level.

Detailed design - detailed designing is the boundary where we actually switch from designing to implementation each and every module structure is implemented here. The interface to the module is identified. For example in object oriented designing and programming main components of the system can be identified as packages classes objects and interfaces. Their behaviour and properties are encapsulated as methods and variables.