It Is Important For A Software Project Management To Produce An Overall Description of A System Architecture at An Early Stage in The System Specification. This Is To Check All The Questions Arises
It Is Important For A Software Project Management To Produce An Overall Description of A System Architecture at An Early Stage in The System Specification. This Is To Check All The Questions Arises
o Do the stated goals and objectives for software remain consistent with system goals and
objectives?
o Have important interfaces to all system elements been described?
o Have all data objects been described? Have all attributes been identified?
o Do major functions remain within scope and has each been adequately described?
o Are diagrams clear; can each stand alone without supplementary text?
o Is the behavior of the software consistent with the information it must process and the functions it
must perform?
o Have events and states been identified?
o Have validation criteria been stated in detail; are they adequate to describe a successful system?
Architectural Strategies
Describe any design decisions and/or strategies that affect the overall organization
of the system and its higher-level structures. These strategies should provide
insight into the key abstractions and mechanisms used in the system architecture.
Describe the reasoning employed for each decision and/or strategy (possibly
referring to previously stated design goals and principles) and how any design
goals or priorities were balanced or traded-off. Such decisions might concern (but
are not limited to) things like the following:
System Architecture
This section should provide a high-level overview of how the functionality and
responsibilities of the system were partitioned and then assigned to subsystems or
components. Don't go into too much detail about the individual components
themselves (there is a subsequent section for detailed component descriptions). The
main purpose here is to gain a general understanding of how and why the system
was decomposed, and how the individual parts work together to provide the
desired functionality.
At the top-most level, describe the major responsibilities that the software must
undertake and the various roles that the system (or portions of the system) must
play. Describe how the system was broken down into its components/subsystems
(identifying each top-level component/subsystem and the roles/responsibilities
assigned to it). Describe how the higher-level components collaborate with each
other in order to achieve the required results. Don't forget to provide some sort of
rationale for choosing this particular decomposition of the system (perhaps
discussing other proposed decompositions and why they were rejected). Feel free
to make use of design patterns, either in describing parts of the architecture (in
pattern format), or for referring to elements of the architecture that employ them.
This section (and its subsections) really applies only to newly developed (or
yet-to-be developed) portions of the system. If there are parts of the
system that already existed before this development effort began, then you
only need to describe the pre-existing parts that the new parts of the
system depend upon, and only in enough detail sufficient to describe the
relationships and interactions between the old parts and the new parts.
Pre-existing parts that are modified or enhanced need to be described only
to the extent that is necessary for the reader to gain a sufficient
understanding of the nature of the changes that were made.
Subsystem Architecture
If a particular component is one which merits a more detailed discussion than what
was presented in the System Architecture section, provide that more detailed
discussion in a subsection of the System Architecture section (or it may even be
more appropriate to describe the component in its own design document). If
necessary, describe how the component was further divided into subcomponents,
and the relationships and interactions between the subcomponents (similar to what
was done for top-level components in the System Architecture section).
If any subcomponents are also deemed to merit further discussion, then describe
them in a separate subsection of this section (and in a similar fashion). Proceed to
go into as many levels/subsections of discussion as needed in order for the reader
to gain a high-level understanding of the entire system or subsystem (but
remember to leave the gory details for the Detailed System Design section).
If this component is very large and/or complex, you may want to consider
documenting its design in a separate document and simply including a reference to
it in this section. If this is the option you choose, the design document for this
component should have an organizational format that is very similar (if not
identical to) this document.