Software design (also software design) is the design process for planning a software solution and part of the entire software development process . Software design is usually necessary to make the complexity , which most computer programs have, manageable for the programmer and to reduce the risk of undesirable developments.
In general, in the course of the requirements elicitation before the software design, the client and the contractor first determine the requirements that arise from the stakeholder or client point of view for the software to be created. In the course of this, one of the parties involved - typically the client - creates the so-called specification sheet .
Then the contractor worked together with the client through various procedures, a concept with which program structures , programming techniques and algorithms meets these requirements and are to be programmed. The contractor records the results of this concept in the so-called specification sheet.
These procedures are described below:
- Data modeling , entity relationship model
- Software architecture
- Object-oriented analysis and design
- Design pattern
The tasks arising in the context of software design can be carried out by one or more people who can take on different roles. These roles are named differently depending on the company. Common names for the roles of employees involved with specialist knowledge in software modeling are software architect , IT consultant or software developer (also called "programmer" or "software engineer").
Languages and resources
Different modeling languages are used for this. Examples are the Unified Modeling Language (UML) - a graphic modeling language for the specification, construction and documentation of software parts and other systems, the Fundamental Modeling Concepts (FMC) - a semi-formal method for communication about complex software systems, as well as the IDEF - a group of modeling languages from the American government environment.
The focus in design is different. While UML enables the representation of object-oriented structures (see also object-oriented analysis and design ), for example with class diagrams , from which code can also be generated under certain circumstances , FMC concentrates more on the creation of plans for communication via complex software systems.
During the design of software architectures, developers are often faced with recurring problems for which there are already known solutions. By reusing such design patterns, the software development process can often be accelerated because the patterns have already been tested and tried.
- Interaction design
- Software Design Description (IEEE 1016)
- Software engineering
- Interface design
- Data modeling
- Software architecture
- www.uml.org - Official “Unified Modeling Language” website
- www.fmc-modeling.org - Official “Fundamental Modeling Concepts” website
- IEEE Software Engineering Collection
- Judith Bishop: C # 3.0 Design Patterns: Use the Power of C # 3.0 to Solve Real-World Problems . C # Books from O'Reilly Media. Retrieved May 15, 2012: "If you want to speed up the development of your .NET applications, you're ready for C # design patterns - elegant, accepted and proven ways to tackle common programming problems."