UNDER CONSTRUCTION
In some instances, the architecture may be determined by entities outside of the project. Writing software for an existing piece of hardware or system may leave little room for changing the architecture. It is also possible that changes in available technology may drive changes in both architecture and design to yield a superior product. Software Requirements are transformed into a Software Architecture. Thus, the software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the properties of those components, and the relationships between them. Documenting software architecture facilitates communication between stakeholders, documents early decisions about high-level design, and allows the reuse of design components and patterns between projects. In general, the software architecture relates the structure and behaviors of the software to the structure and behaviors of the system. This includes defining the relationships between software components and the operating environment. It also describes how the software will achieve necessary quality attributes (testability, reliability, reusability, safety, security, etc.). The software architecture also establishes architecture patterns for capabilities that cut across components (e.g., command processing, telemetry, FDIR, startup, cross-channel exchange). An architecture pattern is an abstract composition of elements and relationships whose instantiation generates a specified technical solution. Architecture patterns are sometimes expressed as design rules that ensure uniform implementation of those common capabilities. SWE-057 - Software Architecture calls for software architecture to be documented. The required content for the 5.13 - SwDD - Software Design Description document includes the software architectural design. The actual format for recording and describing the architectural concept is left to the software project team (All projects are different!). Changes to the Architecture may be necessary if there are changes in: a. Category 1 Projects as defined in NPR 7120.5. NPR 7150.2 describes the software detail design activity, which is preliminary at project Preliminary Design Review (PDR) and baselined at Critical Design Review (CDR) (topic 7.08 - Maturity of Life Cycle Products at Milestone Reviews), as occurring after the completion of the software architectural design process. This, in turn, is the "process of defining the architecture, components, modules, interfaces, and data" of a system or component. The software work product detailed design, which flows out of the software architectural definition (see SWE-057 - Software Architecture), and the preliminary design phase, is focused on defining the lower-level components, modules, and interfaces, and bringing them to a level of maturity sufficient to begin coding activities. Changes to the Design may be necessary if there are changes in:
See edit history of this section
Post feedback on this section
04.00. Software Design Activity Overview
The Software Design Activity includes both Architecture and Design aspects of the software. While they actually focus on different areas of the software development, they are very closely coupled. A change in one often requires a change in the other. 04.00.1 Sub-Activities in the Software Design Activity
04.01. Software Architecture
Frequency Of This Activity
04.01.1 Related SWEs
b. Category 2 Projects as defined in NPR 7120.5, that have Class A or Class B payload risk classification per NPR 8705.4.04.01.2 Related Work Products
04.01.2.1 Related Process Asset Templates
04.01.3 Related Topics
04.01.4 Related SPAN Links
04.02. Software Design
Frequency Of This Activity
04.02.1 Related SWEs
04.02.2 Related Work Products
04.02.2.1 Related Process Asset Templates
04.02.3 Related Topics
04.02.4 Related SPAN Links