Skip to the content.

Home

Welcome to Software Design

Design is defined as both “the process of defining the architecture, components, interfaces, and other characteristics of a system or component” and “the result of [that] process”. Viewed as a process, software design is the software engineering life cycle activity in which software requirements are analyzed in order to produce a description of the software’s internal structure that will serve as the basis for its construction. A software design (the result) describes the software architecture— that is, how software is decomposed and organized into components—and the interfaces between those components. It should also describe the components at a level of detail that enables their construction.

Software design plays an important role in developing software: during software design, software engineers produce various models that form a kind of blueprint of the solution to be implemented. We can analyze and evaluate these models to determine whether or not they will allow us to fulfill the various requirements. We can also examine and evaluate alternative solutions and tradeoffs. Finally, we can use the resulting models to plan subsequent development activities, such as system verification and validation, in addition to using them as inputs and as the starting point of construction and testing.

In a standard list of software life cycle processes, such as that in ISO/IEC/IEEE Std. 12207, Software Life Cycle Processes, software design consists of two activities that fit between software requirements analysis and software construction:

Source: Software Engineering Body of Knowledge (SWEBOK)

Possible Roles

How To

Professional Certifications

Online Communities

Blogs

Resources Collections

Learning Resources

Important Note: all learning resources available here are free. If you found any learning resource that requires a fee or the URL is broken/wrong, please inform us. Regarding the MOOCs that are bundled as a specialization track with a fee (e.g. coursera’s specializations and edx’s xseries programs), you can look for each individual course and take it for free (Audit option).

Foundation

MOOCs

Websites

Beginner

MOOCs

Software Architecture
UI & UX

Websites

Software Architecture
UI & UX

Intermediate

MOOCs

UI & UX
Software Development Management

Websites

Advanced

MOOCs

Websites