CIS710/810 Class Notes

=Overview of Software System Development=

What models describe the application domain?
A modelis a simplified representation of the system under development that ignores details and retains aspects that are relevant to the modeling activity at hand.

An application domain represents all the aspects of the problem that the system will solve from the users' perspective. Thus, these aspects are:
 * users of the system
 * work processes thy system will carry out
 * physical environment in which the system will run

The models that describe the application domain the requirements specification and the analysis model. Both describe the application domain. However, requirements specifications serve the users and are mainly described in natural language. The analysis model serves the developers and therefore is more formalized and uses UML diagrams.

The requirements specifications models are:
 * functional model, represented with the use case diagram and user interface mock-ups
 * non-functional requirements.

The analysis model includes:
 * functional model, represented with a more refined use case diagram
 * analysis object model, represented with the class diagram
 * dynamic model represented with sequence, activity, and state machine diagrams.

What activities produce the models of the application domain?

 * Requirements elicitation
 * Analysis

Requirements elicitation is the activity during which project participants specify requirements. A requirement is a feature that the system must provide and support, whether it describes external behavior that is directly visible to the user or a quality requirements that describes a constraint on the system.

Requirements specification describes the system from the user's perspective and must be understandable to the user. Requirements are of two kinds: functional requirements and quality (or non-functional) requirements. Functional requirements are described with use cases. Non-functional requirements are described with declarative statements.

Analysis is an activity during which developers produce the analysis model from the requirements specification.

What models represent the solution domain?
There is no unique software systems that developers can build. We say that the solution domain represents all possible software systems that meet the requirements that any of these systems must provide and support.

The models that represent the solution domain are:
 * system design model
 * object model
 * source code
 * test suites

What activities produce the models of the solution domain?

 * System design
 * Object design
 * Implementation
 * Testing

System design is the activity during which developers produce the system design model. This model includes:
 * design goals
 * system design object model
 * system decomposition into subsystems that get assigned to individual teams
 * subsystem services
 * selection of hardware and software platforms, including a database management system and access control and security.

Object design is the activity during which developers produce the object design model. The name of the activity reflects the purpose of this activity to create custom objects that supplement the system design object model to bridge the gap between the analysis object model and the hardware and software platforms on which the system will run. The model includes:
 * subsystem interfaces
 * class specifications
 * method signatures

Implementation is the activity during which developers produce:
 * source code
 * code reviews
 * test suites
 * source code documentation

Testing is the activity during which developers produce test suites

What is the most critical activity in managing software development?
Communication is the most critical and time-consuming activity in managing software development. It includes:
 * exchanging of models, documents, code, and other work products
 * reporting on status of work products
 * reviewing and providing feedback on quality of work products
 * making decisions.

Communication is critical because of the participants composition and inherent challenges with software systems. Participants have diverse backgrounds and talents, may assume multiple roles, and work on more than one project at the same time. Software systems are complex and managing them deals with changes at many levels.

To deal with this challenges, participants use:
 * same notations for representing information: UML diagrams, document templates, naming conventions
 * tools for manipulating information: forums, mailing lists, IRC channels, wikis, version control, programming platforms, different infrastructures for implementation, staging, building, and testing.
 * procedures for reporting status and communicating decisions, holding meetings, conducting various reviews.

What are the main activities of project management?

 * Planning
 * Assigning developers to teams
 * Monitoring project status
 * Intervening when deviations occur

=UML Diagrams=

What is an activity diagram?
An activity diagram represents internal behavior of multiple objects in terms of:
 * actions that occur among objects
 * how actions are sequenced
 * data used and produced by these actions.

Activity diagrams can be used to represent:
 * flow of events in a use case description
 * GUI functionality
 * management activities in a software project
 * process of a specific software development methodology
 * work flow in business processes
 * logic of programming procedures (or methods)

An activity diagram has:
 * nodes, which represent actions and control
 * edges between nodes, which represent flow.

The flow describes how control flows between two actions. Flow is diagrammed with a solid line and open arrow (directional edge). When flow connects two action nodes, the actions are executed in sequence, meaning that the sequence follows the arrow. Flow can also connect two control nodes or an action and a control node to describe an execution order that something else than a simple sequence.

An action describes what gets done between the time an incoming flow starts the action and the time an outgoing flow signals the completion of the action. Actions are diagrammed as rounded rectangles and labeled with verbs.

Action nodes include two special action nodes:
 * initial action node, the action where the flow starts
 * final action node, the action where the flow stops

There are three kinds of control nodes:
 * decision control node
 * fork control node
 * join control node

A decision control node has an incoming flow and two outgoing flows. The outgoing flows of a decision are mutually exclusive. In an activity diagram, the outgoing flows have guards, which are labels within square brackets that explain the conditions that triggered the flows. The icon for the decision control node is a diamond. If a decision triggers more than two outgoing flows, then it gets combined with another decision control node.

A fork control node has an incoming flow and multiple outgoing flows that take place in parallel.

A join control node has multiple incoming flows that take place in parallel and one outgoing flow.