Design Concepts and System Modelling Flashcards
What is software architecture?
Software architecture is the fundamentalorganizationof a system, embodied in its components, their relationshipsto each other and the environment, and the principlesgoverning its design and evolution
What should good software design exhibit?
Firmness: A program should not have any bugs that inhibit its function.
–Commodity: A program should be suitable for the purposes for which it was intended.
–Delight: The experience of using the program should be a pleasurable one.
What is software design?
Encompasses the set of principles, concepts, and practices that lead to the development of a high quality system or product
–Design principles establish and overriding philosophy that guides the designer as the work is performed
–Design concepts must be understood before the mechanics of design practice are applied
–Software design practices change continuously as new methods, better analysis, and broader understanding evolve
What are some components of software design?
Data/Class design
–transforms analysis classes into implementation classes and data structures
Architectural design
–defines relationships among the major software structural elements
Interface design
– defines how software elements, hardware
elements, and end-users communicate
Component-level design
– transforms structural elements into procedural
descriptions of software components
What are some common elements of all software architecture?
- Architecture defines major components
- Architecture defines component relationships (structures) and interactions
- Architecture omits content information about components that do not pertain to their interactions
- Behavior of components is a part of architecture insofar as it can be discerned from the point of view of another component
- Every system has an architecture (even a system composed of one component)
- Architecture defines the rationale behind the components and the structure
- Architecture definitions do not define what a component is
- Architecture is not a single structure –no single structure is the architecture
Why is design so difficult?
Analysis: Focuses on the application domain
•Design : Focuses on the solution domain
–Design knowledge is a moving target
–The reasons for design decisions are changing very rapidly
•Halftime knowledge in software engineering: About 3-5 years
•Cost of hardware rapidly sinking
•“Design window”:
–Time in which design decisions have to be made
•Technique
–Time-boxed prototyping
What is the purpose of the system design?
Bridging the gap between desired and existing system in a manageable way
•Use Divide and Conquer
–We model the new system to be developed as a set of subsystems
What is the objective of the design phase?
•The design phase takes the results of the requirements analysis phase and evolves these results further
•The results of the design phase feeds directly into the implementation phase
Transforms analysis model (from requirements analysis) into a system design model
–Identify, model system architecture
–Develop an efficient system decomposition
–Identify boundary use cases describing configuration, startup, shutdown, exceptional conditions.
What is the basis of system design?
•The design phase uses the analysis model –Non-functional requirements / constraints –Use case model: (from users point of view) •Use cases and use case diagrams •state diagrams –Object model: •Context diagram, class diagrams
What does the design phase produce?
•The design phase produces a system model
–That is based on specific design goals for the designers
–That defines architecture and Subsystem design
•Identifying subsystems/modules (manageable parts)
•Identifying architecture (hardware/software)
•Data management / mapping
•Access control, flow control (sequencing operations)
–That describes boundary use cases:
•Initialization, termination, configuration, exception handling
What are the steps in the design process?
Identify design goals (choose aspects of the system to be optimized) Design goals are often derived from non-functional requirements.
–Guide designers in assessing trade offs
•Develop and refine a subsystem decomposition that satisfies the maximum number of design goals and or the most critical design goals
•Refine the decomposition to better satisfy the design goals
What to consider when assessing the design goals?
–Selection of existing components (off the shelf modules or components )
–Hardware / software mapping,
•Are there multiple nodes or systems
•What is each node responsible for
–selecting solutions for managing persistent data
–Access control policies
–Control flow on a solution wide basis
–Boundary conditions (startup, error, shutdown)
What is a systems modelling?
- System modelling is the process of developing abstract models of a system, with each model presenting a different view or perspective of that system.
- System modelling has now come to mean representing a system using some kind of graphical notation, which is now almost always based on notations in the Unified Modeling Language (UML).
- System modelling helps the analyst to understand the functionality of the system and models are used to communicate with customers.
What are models of existing and new systems made for?
- Models of the existing systemare used during requirements engineering. They help clarify what the existing system does and can be used as a basis for discussing its strengths and weaknesses. These then lead to requirements for the new system.
- Models of the new systemare used during requirements engineering to help explain the proposed requirements to other system stakeholders. Engineers use these models to discuss design proposals and to document the system for implementation.
What are some different system perspectives?
- An external perspective, where you model the context or environment of the system.
- An interaction perspective, where you model the interactions between a system and its environment, or between the components of a system.
- A structural perspective, where you model the organization of a system or the structure of the data that is processed by the system.
- A behavioural perspective, where you model the dynamic behaviour of the system and how it responds to events.
What are the types of UML diagrams?
- Activity diagrams, which show the activities involved in a process or in data processing .
- Use case diagrams, which show the interactions between a system and its environment.
- Sequence diagrams, which show interactions between actors and the system and between system components.
- Class diagrams, which show the object classes in the system and the associations between these classes.
- State diagrams, which show how the system reacts to internal and external events.
What are some uses of graphical models?
As a means of facilitating discussion about an existing or proposed system
Incomplete and incorrect models are OK as their role is to support discussion.
As a way of documenting an existing system
Models should be an accurate representation of the system but need not be complete.
As a detailed system description that can be used to generate a system implementation
Models have to be both correct and complete.