software design principles in software engineering
Software design shares many design characteristics with other design disciplines because of universal design goal of creating high quality, long-lived products. For example, all design should meet client needs for functionality, reliability, efficiency and so forth. These are called Basic design principles aiming at meeting fundamental client needs.
Other design principles specify characteristics of software that needs are known from experience and are essential for achieving high quality products. These principles are mostly unique to software design because they concern the peculiar characteristics of well constructed software. Because such principles are crucial for building high quality software products these are called Constructive Design Principles.
Software Design Principles classified into two classes.
The primary goal of software design is the specification of a software system meeting client needs and satisfying design constraints. Such a system must have certain characteristics at delivery, and must be maintainable over time.
Specifically, at delivery the system must satisfy its requirements and conform to its design constraints. To be deliverable, a system must be designed so that it can be built for an acceptable of time and money. A system maintainable over time must be changeable.
Three basic design principles that follow Basic Design Principles.
The bottom line for any design is that it must specify a system that works i.e., one that satisfy all requirements subject to design constraints.
If no design can do this, then the requirements must be changed in consultation with the client. The client must be the arbiter of the design problem., not the designer.
Adequacy is the most basic demand that any design must satisfy. Thus the first principle in evaluating any design is the principle of Adequacy.
Note: Design must be satisfy systems that satisfy product requirements in accord with design constraints.
If a design doesn’t meet it’s requirements and conform to it’s design constraints, then any other virtues it may posses are without value.
Software Development is expensive and time consuming and it is usually done on a budget and according to a schedule. Designs may be more or less easy to realize. To be acceptable, a design must specify a system that can be built, tested, and deployed on time and within the budget.
The Principle of Economy is:\
Note: Design must specify systems that can be constructed on the time and within budget.
The principle of adequacy and economy may be conflict; it may turn out that the designer is unable to specify a system satisfying requirements and conforming to design constraints that can be built on time and within budget.
The designer must then work with the client to study-offs between requirements, design constraints, time and money.
Design that make a product easy to change will have a tremendous influence on cumulative life cycle costs. About 70% of the cost of the software product over its lifetime is accrued in maintenance.
The Principle of Changeability states that.
Note: Designs that specify systems that are easy to change are better.
There is not absolute standard for changeability as there is for adequacy and economy the goal is simple to make systems as easy to change as possible.
Originally published at https://www.csmates.com.