Software Design
Software Design
Software Design
Good Morning
Software Design
• Software design is the process by which an agent creates a specification of a software artifacts intended to accomplish
• It allows the software engineer to create the model of the system or software or product that is to be developed or built.
The software design concept provides a supporting and essential structure or model for developing the right software.
• Types
• Interface Design.
• Architectural Design.
• Detailed Design.
Good design
knowledge.
• Creating modular components that you can call and deploy as needed.
• At each stage, the properties of the design are evaluated and compared with the specified
requirements.
• Software design is a process to transform user requirements into some suitable form,
• Software design is the first step in SDLC (Software Design Life Cycle), which moves the
concentration from problem domain to solution domain.
• software product using well-defined scientific principles, methods and procedures. The outcome
of software engineering is an efficient and reliable software product.
Principles & Concepts of
Conventional Software Engineering
• After many years of experience regarding software development, the software industry has learned and
understood many lessons and formulated or created many principles.
• Create or Make Quality – Quality of software must be measured and mechanisms put into place to motivate
towards achieving the goal.
• High-quality software is possible –increase and quality includes involving customer, prototyping, simplifying
design, conducting inspections, and hiring good and best people.
• Give end-products to Customers early –most important and effective to determine and identify their real and
realistic needs is to give product to users and let them play with it.
• Determine problem or issue before writing and needs or requirements – When engineers usually face with
what they believe is a problem, they rush towards offering a solution. But we should keep in mind that before
we try to solve any problem, be sure to explore all alternatives and just don’t get blinded by obvious solution.
• Evaluate all Design Alternatives - we must examine and understand various architecture and algorithms. We usually don’t want to
use “architecture” generally due to its usage in requirements specification.
• Use an appropriate and correct process model – Each and every project must select an appropriate process that makes most sense
for that project generally on basis of corporate culture, willingness to take risks, application area, volatility of requirements, and
extent to which all requirements and needs are understood in a good manner.
• Use different languages for various phases – Our industry generally gives simple solutions to large complex problems. Due to his,
many declare that best development method is only one that makes use of notation throughout life cycle.
• Minimize intellectual distance – The structure of software must be very close enough to a real-world structure to minimize
intellectual distance.
• Before tools, put Techniques – An undisciplined software engineer with a tool becomes very dangerous and harmful.
• Get it right just before we make it very faster – It is very easy and simple to make a program that’s being working run very faster
than it is to simply make a program work fast.
• Inspect Code – Assessing or inspecting design with its details and code is most and better way of identifying errors other than
testing.
• Rather than Good technology, Good management is more important – Good management simply motivates other people also to
do their work at best, but there are no universal “right” styles for management.
•
Key to success is “PEOPLE” – People with many skills, experience, talent, and training are key to success.
• Follow with Care and in a proper manner - Everyone is doing something doesn’t mean that it is right for
us. So, we must inspect or assess its applicability to our environment very carefully.
• Take Responsibility –Best and important methods can be used to produce or develop an awful design, and
best and largely antiquated methods to develop an elegant design.
• Understanding priorities of customers – It is simply possible that customer would tolerate 90 percent of
performance that is delivered late only if they could have 10 percent of it on time.
• More they see, more they need – More the functionality or performance we provide to user, more
functionality or performance they will want. Their expectation increases by time to time.
• Plan to throw one away – The most essential and critical factor is whether a product is entirely new or not.
Brand-new applications, architectures, interfaces, or algorithms generally work rarely for first time.
• Design for update or change – We should update or accommodate change architecture, components, and
specification techniques that we generally use.
• Without documentation, design is not a design – We have some engineers often saying that “I have
finished and completed design and all things left is documentation”.
• Be realistic while using tools – Tools that software used make their customers and users more efficient.
• Encapsulate – Encapsulate simply means to hide information and it is easy, simply. It is a concept that
simply results in software that is simpler and easier to test and very easy to maintain.
• Avoid tricks – Some of programmers love to create and develop programs with some tricks constructs that
perform a function in correct way but in a non-understandable manner. Rather just prove to world how
smart we are by avoiding trick code.
• Don’t test-own software – Software Developers should not test their own software. They should not be
primary testers of their own software.
• Coupling and Cohesion – Using coupling and cohesion are best way to measure software’s inherent
maintainability and adaptability.
• Except for excellence – Our employees will work in a far better way if we have high expectations for them.
Object Oriented Design
• The state is distributed among the objects, and each object handles its state data.
• Every entity has some attributes associated with it and has some methods to perform on the attributes.
• To design classes and their attributes, methods, associations, structure, and even protocol, design axiom is
applied.
• The static UML class diagram is redefined and completed by adding details. Attributes are refined.
Design Issues
• performance,
• security,
• reliability,
• usability, etc.
• Interface Design
• Architectural Design
• Detailed Design
Interface design
• Interface design is the specification of the interaction between a system and its environment.
• Precise description of events in the environment, or messages from agents to which the system must respond.
• Precise description of the events or messages that the system must produce.
• Specification on the data, and the formats of the data coming into and going out of the system.
• Specification of the ordering and timing relationships between incoming events or messages, and outgoing
events or outputs.
Architectural design
• Architectural design is the specification of the major components of a system, their responsibilities, properties,
interfaces, and the relationships and interactions between them.
• Component Interfaces
• Component scaling and performance properties, resource consumption properties, reliability properties, and so
forth.
relationships, processing, and often their algorithms and the data structures.
• User interfaces
• Data packaging and implementation, including issues of scope and visibility of program elements
modules and components, the different interfaces of those components and the data that goes
through that system.
entities). ...
• Objects have their internal data which represent their state. Similar objects create a class.
In essence, a software design document (SDD) explains how a software product or a feature will be built to
meet a set of technical requirements.
• Coding standard give a uniform appearance to the code written by different programmers
• Use comments
• Proper indentation
• Do not use coding style that too clever or too difficult to under stand
• Code review
• Code walk through – 3 to 7 member in that team check code for errors
Sometimes we see a lot of repeated code written in all cases except one or two statements …… etc
Advantages
• a smaller size,