SoftwarePractice.org: Home | Courseware | Wiki | Archive

Initial architectural design

From SoftwarePractice.org

The initial architectural design is an artifact that is suitable for setting as a first assignment in an undergraduate or postgraduate class in software architecture.

Overview

The initial phase of architectural design takes place in the Inception and Elaboration phases. It is useful to define a concrete artifact that contains the initial assessment and design of the architecture. This we call the initial architectural design. It is not intended to be complete or final; rather, it captures the architectural context, and includes a reasonably well-developed architecture in one or two views.

Description

The initial software architecture design is presented in a document (or a series of wiki articles). It will typically include the following:

  • A brief overview of the system
  • Stakeholder needs and expectations, captured in narrative form. (Use techniques such as personas and scenarios.)
  • Identification and discussion of key contextual factors
  • Refined functional requirements captured as use cases
  • A discussion of the key non-functional requirements, and how they relate to stakeholder needs
  • A conceptual architecture, derived using the techniques described in A Software Architecture Primer. It should include use of stereotypes, discussion of components and their responsibilities, data models, run-time and lifecycle events, and behavior captured with use-case maps. You should identify the overall architectural style(s) of the system here as well.
  • An execution architecture, again described using the techniques described in A Software Architecture Primer. You should choose and focus on either a process view or concurrent subsystems view, and show as much information about the execution structure of the system as you have available at this time. You should also include a tentative deployment view. Use-case maps from key events should be used to explore initial performance concerns and to demonstrate consistency with the conceptual architecture.
  • An initial implementation architecture. In this initial document, you will mostly be focusing on an examination of the key types of technology that you will need to exploit, with a discussion of the various factors that will affect your eventual choice of implementation technologies. You should relate this discussion to the chosen architectural style(s), where appropriate.
  • Justification of all architectural decisions. In particular, architectural decisions must be related to the system context, stakeholder expectations, functional and non-functional requirements, and so on. (An architecture that is not based on these inputs to the architectural design process will receive poor marks!)
  • Notes and discussion on issues that will need to be addressed as development proceeds.

Delivery

The recommended delivery mode for this assignment is to deliver it incrementally on the Wiki on softwarepractice.org. The Wiki has some advantages:

  • Deliverables can be incrementally constructure
  • It allows collaborative construction of the document by geographically-dispersed members of a team
  • It keeps a time-stamped log of all changes, including the username of the contributor
  • Instructors can provide feedback on student progress prior to delivery

Some possible disadvantages include:

  • Student resistance to using new technology
  • Student fears that other teams might copy their work
  • There may be a limit on the number of teams that can undertake a single system, because of "cross pollination"
Personal tools