* risk -
* an exposure to the chance of injury or loss
* something NEGATIVE might happen!
* for a software project: an ADVERSE effect on
cost, quality, or schedule
* risk management -
* dealing with POSSIBLE events, not expected ones...
* revolves around risk assessment and risk control
* risk assessment -
* risk identification
* risk analysis
* prioritization
* talking through Boehm's top 10 software risks;
* ...
* gold plating - adding features to the software
that are only marginally useful
* when going from risk assessment to risk control,
note the distinction between risk avoidance and risk
mitigation
* starting up on some discussion of
Jalote Chapter 5... SOFTWARE architecture
* NOT the same as CS 243's architecture!
* NOT the same as Brooks' MMM architecture (in the context
of software design)
* ...here, software architecture of a complex system
is meant to be the *software* subsystems that
need to interact for the system to provide the
expected behavior
* identifying the subsystems,
* determine the interfaces of those subsystems,
* and determine the rules for interaction between
the subsystems
* NOTE: for a SINGLE project,
(particularly for a large project)
...there can be MULTIPLE architectural views of the SAME
software
* an architectural view consists of elements
and relationships between them
and describes a stucture
* different views expose different properties
* MANY view types have been proposed!
* most belong to one of these 3 types:
* module views
* component and connector views (C & C views)
* allocation views
* the C & C view is very often done, and is sometimes
considered the primary view
amongst the several you may make of a system
* module views -
* viewing the software as a collection of code
units (not runtime entities)
* here, the relationships are code-based --
part-of, depends-on, calls, generalization/specification
* C & C views -
* elements are run-time entities called components
...a component is a unit that has identity in
executing systems -- server, objects, processes, .exe, dll
* connectors - means of interaction between components
(pipes, shared memory, sockets)
* allocation views -
* focusing on how software units are allocated to
resources such as hardware, file systems, people
...the relationships between software elements
and execution units in the environment
* Component and Connector view, in more details
* components, in a C & C diagram often represented as shapes,
connectors, in a C & C diagram often represented as lines
(but there are a few exceptions to that)
* components - computational elements or data stores
connectors - means of interaction between components