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:
- Software architectural design (sometimes called high-level design): develops top-level structure and organization of the software and identifies the various components.
- Software detailed design: specifies each component in sufficient detail to facilitate its construction.
Source: Software Engineering Body of Knowledge (SWEBOK)
Possible Roles
How To
- The Path to Becoming a Software Architect
- What Degree Do I Need to Become a UX Designer?
- What Is a User Interface (UI) Designer?
Professional Certifications
- International Software Architecture Qualification Board (iSAQB) Certifications
- The Software Engineering Institute (SEI) Software Architecture Certificates
- Google UX Design Professional Certificate
- Microsoft UX Design Professional Certificate
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).