Software design

designdesignedsoftware designerdesigningSoftware^application designdesign modeldesignermodularity
Software design is the process by which an agent creates a specification of a software artifact, intended to accomplish goals, using a set of primitive components and subject to constraints.wikipedia
215 Related Articles

Software development process

software development methodologydevelopment cyclesoftware development life cycle
SRA is a part of the software development process that lists specifications used in software engineering.
In software engineering, a software development process is the process of dividing software development work into distinct phases to improve design, product management, and project management.

Software architecture

architecturearchitecturessoftware
This includes both a low-level component and algorithm design and a high-level, architecture design.
Quality-driven: classic software design approaches (e.g. Jackson Structured Programming) were driven by required functionality and the flow of data through the system, but the current insight is that the architecture of a software system is more closely related to its quality attributes such as fault-tolerance, backward compatibility, extensibility, reliability, maintainability, availability, security, usability, and other such –ilities.

Software engineering

software engineersoftware engineerssoftware
SRA is a part of the software development process that lists specifications used in software engineering.
Software design is about the process of defining the architecture, components, interfaces, and other characteristics of a system or component.

Software design pattern

design patterndesign patternspattern
A template or pattern describing a solution to a common problem is known as a design pattern.
In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design.

Reusability

reusableSoftware Reusabilityoften re-used
If these issues are not considered, software may appear to be reusable from design point of view, but will not be reused in practice.

Zero one infinity rule

Zero One Infinityno arbitrary limitarbitrary limit
The Zero one or infinity (ZOI) rule is a rule of thumb in software design proposed by early computing pioneer Willem van der Poel.

User interface design

interface designUI designUser interface engineering
As a result, designers tend to specialize in certain types of projects and have skills centered on their expertise, whether it is a software design, user research, web design, or industrial design.

Edsger W. Dijkstra

Edsger DijkstraDijkstraE. W. Dijkstra
Edsger W. Dijkstra referred to this layering of semantic levels as the "radical novelty" of computer programming, and Donald Knuth used his experience writing TeX to describe the futility of attempting to design a program prior to implementing it:
The rise of the structured programming movement led to many other structured approaches applied to software design.

Search-based software engineering

Search Based Software Engineering
Search techniques have been applied to other software engineering activities, for instance, requirements analysis, design, development, and maintenance.

Agency (philosophy)

agencyhuman agencyagent
Software design is the process by which an agent creates a specification of a software artifact, intended to accomplish goals, using a set of primitive components and subject to constraints.

Artifact (software development)

artifactartifactssoftware artifact
Software design is the process by which an agent creates a specification of a software artifact, intended to accomplish goals, using a set of primitive components and subject to constraints.

Goal

objectiveobjectivesvision
Software design is the process by which an agent creates a specification of a software artifact, intended to accomplish goals, using a set of primitive components and subject to constraints.

Constraint (mathematics)

constraintconstraintsconstrained
Software design is the process by which an agent creates a specification of a software artifact, intended to accomplish goals, using a set of primitive components and subject to constraints.

Software requirements

requirements
Software design may refer to either "all the activity involved in conceptualizing, framing, implementing, commissioning, and ultimately modifying complex systems" or "the activity following requirements specification and before programming, as ... [in] a stylized software engineering process."

Computer programming

programmingcodingprogrammable
Software design may refer to either "all the activity involved in conceptualizing, framing, implementing, commissioning, and ultimately modifying complex systems" or "the activity following requirements specification and before programming, as ... [in] a stylized software engineering process."

Software

Computer softwareSoftware & Programmingsoftware technology
Software design usually involves problem solving and planning a software solution.

Algorithm

algorithmsalgorithm designcomputer algorithm
This includes both a low-level component and algorithm design and a high-level, architecture design.

Requirements analysis

requirementsanalysisrequirement analysis
One of the main components of software design is the software requirements analysis (SRA).

Specification (technical standard)

specificationspecificationstechnical specifications
SRA is a part of the software development process that lists specifications used in software engineering.

User-centered design

user-centereduser centred designuser-centred design
If the software is "semi-automated" or user centered, software design may involve user experience design yielding a storyboard to help determine those specifications.

User experience design

experience designuser experienceUX
If the software is "semi-automated" or user centered, software design may involve user experience design yielding a storyboard to help determine those specifications.

Storyboard

animaticstoryboardsanimatics
If the software is "semi-automated" or user centered, software design may involve user experience design yielding a storyboard to help determine those specifications.