Software Design
Software Design
Contents
[hide]
• 1 Overview
• 2 Software design topics
o 2.1 Design concepts
o 2.2 Design considerations
o 2.3 Modeling language
o 2.4 Design patterns
o 2.5 Usage
• 3 See also
• 4 References
[editOverview
Thesoftware requirements analysis(SRA) step of asoftware development processyields
specificationsthat are used insoftware engineeringIf the software is 'semiautomated' or
user centeredsoftware design may involveuser experience designyielding astory board
to help determine those specifications. If the software is completelyautomated(meaning
nouseroruser interface), a software design may be as simple as aflow chartor text
describing a planned sequence of events. There are also semi-standard methods like
Unified Modeling LanguageandFundamental modeling conceptsIn either case some
documentationof the plan is usually the product of the design.
Software design can be considered as putting solution to the problem(s) in hand using the
available capabilities. Hence the main difference between Software analysis and design is
that the output of the analysis of a software problem will be smaller problems to solve
and it should not deviate so much even if it is conducted by different team members or
even by entirely different groups. But since design depends on the capabilities, we can
have different designs for the same problem depending on the capabilities of the
environment that will host the solution (whether it is some OS, web, mobile or even the
new cloud computing paradigm). The solution will depend also on the used development
environment (Whether you build a solution from scratch or using reliableframeworksor
at least implement some suitabledesign patterns)
The design concepts provide the software designer with a foundation from which more
sophisticated methods can be applied. A set of fundamental design concepts has evolved.
They are:
[editDesign considerations
There are many aspects to consider in the design of a piece of software. The importance
of each should reflect the goals the software is trying to achieve. Some of these aspects
are:
• Compatibility- The software is able to operate with other products that are
designed for interoperability with another product. For example, a piece of
Software may be backward-compatible with an older version of itself.
• ExtensibilityNew capabilities can be added to the software without major changes.
changes to the underlying architecture.
• Fault-toleranceThe software is resistant to and able to recover from component
failure.
• MaintainabilityThe software can be restored to a specified condition within a
specified period of time. For example, antivirus software may include the ability
to periodically receive virus definition updates in order to maintain the software's
effectiveness.
• Modularitythe resulting software comprises well defined, independent
components. That leads to better maintainability. The components could be then
implemented and tested in isolation before being integrated to form a desired
software system. This allows division of work in a software development project.
• PackagingPrinted material such as the box and manuals should match the style.
designated for the target market and should enhance usability. All compatibility
Information should be visible on the outside of the package. All components
required for use should be included in the package or specified as a requirement
on the outside of the package.
• Reliability - The software is able to perform a required function under stated
conditions for a specified period of time.
• Reusabilitythe software is able to add further features and modification with
slight or no modification.
• RobustnessThe software is able to operate under stress or tolerate unpredictable
or invalid input. For example, it can be designed with a resilience to low memory
conditions.
• SecurityThe software is able to withstand hostile acts and influences.
• UsabilityThe softwareuser interfacemust be usable for its target user/audience.
Default values for the parameters must be chosen so that they are a good choice.
for the majority of the users.
[editModeling language
Amodeling languageIs there any artificial language that can be used to express information or
knowledge or systems in a structure that is defined by a consistent set of rules. The rules
are used for interpretation of the meaning of components in the structure. A modeling
language can be graphical or textual. Examples of graphical modeling languages for
software design are:
[editDesign patterns
A software designer or architect may identify a design problem that has been solved by
others before. A template or pattern describing a solution to a common problem is known
as adesign patternThe reuse of such patterns can speed up the software development.
process, having been tested and proven in the past.
[editUsage