All Topics  
Software design

 

   Email Print
   Bookmark   Link






 

Software design



 
 
Software design is a process of problem-solving and planning for a software solution. After the purpose and specifications of software are determined, software developer
Software developer

A software developer is a person or organization concerned with facets of the software development process wider than design and coding, a somewhat broader scope of computer programming or a specialty of project manager including some aspects of Software product management....
s will design
Design

Design is used both as a noun and a verb. The term is often tied to the various applied arts and engineering . As a verb, "to design" refers to the process of originating and planning for a product, structure, system, or component with intention....
 or employ designer
Designer

A designer is a person who designs something. Perhaps the broadest definition is that provided by psychologist Herbert Simon: 'Everyone designs who devises courses of action aimed at changing existing situations into preferred ones.' ...
s to develop a plan for a solution. It includes low-level component and algorithm implementation issues as well as the architectural view.

software requirements analysis (SRA) step of a software development process
Software development process

A software development process is a structure imposed on the development of a software product. Synonyms include Software_Lifecycle_Processes and software process....
 yields specifications that are used in software engineering
Software engineering

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches....
.






Discussion
Ask a question about 'Software design'
Start a new discussion about 'Software design'
Answer questions from other users
Full Discussion Forum



Encyclopedia


Software design is a process of problem-solving and planning for a software solution. After the purpose and specifications of software are determined, software developer
Software developer

A software developer is a person or organization concerned with facets of the software development process wider than design and coding, a somewhat broader scope of computer programming or a specialty of project manager including some aspects of Software product management....
s will design
Design

Design is used both as a noun and a verb. The term is often tied to the various applied arts and engineering . As a verb, "to design" refers to the process of originating and planning for a product, structure, system, or component with intention....
 or employ designer
Designer

A designer is a person who designs something. Perhaps the broadest definition is that provided by psychologist Herbert Simon: 'Everyone designs who devises courses of action aimed at changing existing situations into preferred ones.' ...
s to develop a plan for a solution. It includes low-level component and algorithm implementation issues as well as the architectural view.

Overview

The software requirements analysis (SRA) step of a software development process
Software development process

A software development process is a structure imposed on the development of a software product. Synonyms include Software_Lifecycle_Processes and software process....
 yields specifications that are used in software engineering
Software engineering

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches....
. If the software is "semiautomated" or user centered, software design may involve user experience design
User experience design

User experience design is a subset of the field of experience design which pertains to the creation of the architecture and interaction models which impact a user's perception of a device or system....
 yielding a story board to help determine those specifications. If the software is completely automated
Automation

Automation or industrial automation or numerical control is the use of control systems such as computers to control industry machinery and industrial processes, reducing the need for human intervention....
 (meaning no user
User

:For information on Wikipedia user accounts, see...
 or user interface
User interface

The user interface is the aggregate of means by which people—the User s—Interaction with the system—a particular machine, device, computer program or other complex tools....
), a software design may be as simple as a flow chart or text describing a planned sequence of events. There are also semi-standard methods like Unified Modeling Language
Unified Modeling Language

Unified Modeling Language is a standardized general-purpose modeling language in the field of software engineering.UML includes a set of graphical notation techniques to create abstract models of specific systems....
 and Fundamental modeling concepts
Fundamental modeling concepts

Fundamental Modeling Concepts provide a framework to describe software-intensive systems. It strongly emphasizes the communication about software-intensive systems by using a semi-formal graphical notation that can easily be understood....
. In either case some documentation
Documentation

Documentation may refer to the process of providing evidence or to the communicable material used to provide such documentation . Documentation may also refer to tools aiming at identifying documents or to the field of study devoted to the study of documents and bibliographies ....
 of the plan is usually the product of the design.

A software design may be platform-independent
Platform-independent model

A Platform-Independent Model in software engineering is a model of a software system or business system, that is independent of the specific technological platform used to implement it....
 or platform-specific
Platform-specific model

A platform-specific model is a model of a software or business system that is linked to a specific technological platform . Platform-specific models are indispensable for the actual implementation of a system....
, depending on the availability of the technology called for by the design.

Software design topics


Design 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.
  • Extensibility - New capabilities can be added to the software without major changes to the underlying architecture.
  • Fault-tolerance - The software is resistant to and able to recover from component failure.
  • Maintainability - The 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.
  • Modularity - the 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.
  • Packaging - Printed 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.
  • Reusability - the modular components designed should capture the essence of the functionality expected out of them and no more or less. This single-minded purpose renders the components reusable wherever there are similar needs in other designs.
  • Robustness - The 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.
  • Security - The software is able to withstand hostile acts and influences.
  • Usability - The software user interface
    User interface

    The user interface is the aggregate of means by which people—the User s—Interaction with the system—a particular machine, device, computer program or other complex tools....
     must be intuitive (and often aesthetically pleasing) to its target user/audience. In many cases, online help
    Online help

    Online help is topic-oriented, procedural or reference information delivered through computer software. It is a form of User Assistance. Most online help is designed to give assistance in the use of a software application or operating system, but can also be used to present information on a broad range of subjects....
     should be included and also carefully designed.


Modeling language

A modeling language
Modeling language

A modeling language is 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....
 is 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 modelling languages for software design are:
  • Business Process Modeling Notation
    Business Process Modeling Notation

    Business Process Modeling Notation is a Information visualisation for specifying business processes in a workflow.BPMN was developed by Business Process Management Initiative , and is currently maintained by the Object Management Group since the two organizations merged in 2005....
     (BPMN, and the XML form BPML) is an example of a Process Modeling
    Process modeling

    The term process model is used in various contexts. For example, in business process modeling the enterprise process model is often referred to as the business process model....
     language.
  • EXPRESS and EXPRESS-G (ISO 10303-11) is an international standard general-purpose data modeling
    Data modeling

    Data modeling in software engineering is the process of creating a data model by applying formal data model descriptions using data modeling techniques....
     language.
  • Extended Enterprise Modeling Language
    Extended Enterprise Modeling Language

    Extended Enterprise Modeling Language in software engineering is a modelling language used for Enterprise modelling across a number of layers....
     (EEML) is commonly used for business process modeling across a number of layers.
  • Flowchart
    Flowchart

    A flowchart is common type of chart, that represents an algorithm or Process , showing the steps as boxes of various kinds, and their order by connecting these with arrows....
     is a schematic representation of an algorithm or a stepwise process,
  • Fundamental Modeling Concepts
    Fundamental modeling concepts

    Fundamental Modeling Concepts provide a framework to describe software-intensive systems. It strongly emphasizes the communication about software-intensive systems by using a semi-formal graphical notation that can easily be understood....
     (FMC) modeling language for software-intensive systems.
  • IDEF
    IDEF

    IDEF is a family of modeling languages in the field of systems engineering and software engineering. They cover a range of uses from function modeling to information, simulation, object-oriented analysis and design and knowledge acquisition....
     is a family of modeling languages, the most notable of which include IDEF0
    IDEF0

    IDEF0 is a function modeling methodology for describing manufacturing functions, which offers a functional modeling language for the analysis, development, reengineering, and integration of information systems; business processes; or software engineering analysis....
     for functional modeling, IDEF1X
    IDEF1X

    IDEFIX is a data modeling modeling language for the developing of semantic data models. IDEF1X is used to produce a graphical information model which represents the structure and semantics of information within an environment or system....
     for information modeling, and IDEF5
    IDEF5

    IDEF5 is a software engineering method to develop and maintain usable, accurate, domain ontology . This standard is part of the IDEF family of modeling languages in the field of software engineering....
     for modeling ontologies.
  • Jackson Structured Programming
    Jackson Structured Programming

    Jackson Structured Programming or JSP is a method for structured programming based on correspondences between data stream structure and program structure....
     (JSP) is a method for structured programming based on correspondences between data stream structure and program structure
  • LePUS3
    Lepus3

    File:Composite pattern in LePUS3.pngLePUS3 is an object-oriented, visual Design Description Language, namely a software modelling language and a formal specification language that is suitable primarily for modelling large object-oriented programs and design motifs such as design patterns ....
     is an object-oriented visual Design Description Language and a formal specification
    Formal specification

    In computer science, a formal specification is a mathematics description of software or hardware that may be used to develop an implementation. It describes what the system should do, not how the system should do it....
     language that is suitable primarily for modelling large object-oriented (Java
    Java (programming language)

    Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
    , C++
    C++

    C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features....
    , C#) programs and design patterns
    Design Patterns

    Design Patterns: Elements of Reusable Object-Oriented Software is a software engineering book describing recurring solutions to common problems in software design....
    .
  • Unified Modeling Language
    Unified Modeling Language

    Unified Modeling Language is a standardized general-purpose modeling language in the field of software engineering.UML includes a set of graphical notation techniques to create abstract models of specific systems....
     (UML) is a general modeling language to describe software both structurally and behaviorally. It has a graphical notation and allow for extension with a Profile (UML)
    Profile (UML)

    A profile in the Unified Modeling Language provides a generic extension mechanism for customizing Unified Modeling Language models for particular domains and platforms....
    .


Design patterns

A software designer or architect may identify a design problem which has been solved by others before. A template or pattern describing a solution to a common problem is known as a design pattern
Design pattern (computer science)

In software engineering, a design pattern is a general reusable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code ....
. The reuse of such patterns can speed up the software development process, having been tested and proved in the past.

Usage

Software design document
Design document

A design document is a written outline of the development of a course or a description of a software product that a software designer writes in order to give a software development team an overall guidance of the architecture of the software project....
ation may be reviewed or presented to allow constraints, specifications and even requirements to be adjusted prior to programming. Redesign may occur after review of a programmed simulation
Simulation

Simulation is the imitation of some real thing, state of affairs, or process. The act of simulating something generally entails representing certain key characteristics or behaviors of a selected physical or abstract system....
 or prototype
Prototype

A prototype is an original type, form, or instance of something serving as a typical example, basis, or standard for other things of the same category....
. It is possible to design software in the process of programming, without a plan or requirement analysis, but for more complex projects this would not be considered a professional approach. A separate design prior to programming allows for multidisciplinary designers and Subject Matter Expert
Subject Matter Expert

A Subject Matter Expert is a person who is an expert in a particular area. In software engineering environments, the term is used to describe professionals with expertise in the field of application but without technical project knowledge....
s (SMEs) to collaborate with highly-skilled programmers for software that is both useful and technically sound.

See also

  • Aspect-oriented software development
    Aspect-oriented software development

    Aspect-oriented software development is an emerging software development methodology that seeks new modularizations of software systems. AOSD allows multiple concerns to be expressed separately and automatically unified into working systems....
  • Common layers in an information system logical architecture
    Common layers in an information system logical architecture

    The following four layers are the most common Layer in a logical Multilayered architecture for an information system with an Object-oriented design:...
  • Design rationale
    Design Rationale

    File:Decision Based Design Structure.jpgA Design Rationale is a framework of the reasons behind decisions made when designing a system or artifact....
  • Experience design
    Experience design

    Experience design is the practice of designing products, processes, services, events, and environments with a focus placed on the quality of the User experience design and culturally relevant solutions, with less emphasis placed on increasing and improving Function of the design....
  • Search Based Software Engineering
  • Software development
    Software development

    Software development is the set of activities that results in software products. Software development may include research, new development, modification, reuse, re-engineering, maintenance, or any other activities that result in software products....
  • Software blueprint
    Software blueprint

    A software blueprint is the final product of a software blueprinting process. Its name derives from the analogy drawn with the popular use of the term blueprint ....
  • Software architecture
    Software architecture

    The software architecture of a program or computing system is the structure or structures of the software system, which comprise software components, the externally visible properties of those components, and the relationships between them....
  • Software Design Description
    Software Design Description

    IEEE 1016-1998, also known as the 1016 Standard for Software Design Description is an IEEE standard that specifies the form of the document used to specify system architecture and application design in a software related project....
     (IEEE 1016)
  • User experience