Final Flashcards
What are the 3 Object-Oriented Methods?
Object-Oriented Development (Booch), Object Modeling Technique (Rumbaugh), Object-Oriented SE (Jacobson)
What does UML stand for?
Unified Modeling Language, standard in system development, merges the 3 OO languages
What are 6 things UML is used for specifying/visualizing/documenting?
functions, entities with whom the software interacts, sequence of events during run-time for a function, classes & relationships, states of objects at run-time, physical architecture of the software
How are UML diagrams useful for stakeholders?
Stakeholders view the system from different perspectives using the set of UML diagrams that make up the system model
What are the 10 Common UML Diagrams?
Use case, Activity, Collaboration, Sequence, Class, Object, State Transition, Component, Deployment, Package
What are the 3 views for software systems?
Use case (interactions), static (structure), dynamic (behaviour)
What does the use case view describe?
Describes the functionality of the system from the user’s POV [use case diagram]
What does the static view describe?
Describes the entities of the system and their relationships [class, object, component, deployment, and package diagrams]
What does the dynamic view describe?
Describes the behaviour of the system (shows changes and progress) [state transition, activity, interaction (sequence and collaboration) diagrams]
What are UML tools used for?
Drawing UML diagrams, fixing errors, some code generation (in Java and C++)
What does OMG stand for?
Object Management Group
What are the Object-Oriented Concepts with UML?
Abstraction, Information Hiding, Inheritance, Polymorphism, Composition, Strong Cohesion, Loose Coupling
What is Abstraction?
Details are ignored
What is Information Hiding?
Details are hidden
What is Inheritance?
Reusability through specialization
What is Polymorphism?
Many forms
What is Composition?
Larger classes
What is Strong Cohesion?
One responsibility
What is Loose Coupling?
Low dependency
What is the object-oriented approach?
Focus on both data and actions, system state is decentralized, system viewed as a collection of interacting objects, objects communicate via message passing (method invocation)
What does a use case diagram include?
Functions of the system (set of use cases) and who will interact with them (actors [initiating and benefiting]), and relationships (extension, inclusion, inheritance)
What needs to be included in a use case diagram?
Pre-conditions, primary scenario, alternate scenarios, post-conditions
What is a scenario?
A sequence of related actions performed by the actor and system
What are the 3 Types of use case relationships?
Inclusion, Extension, Inheritance
What is Inclusion in use case relationships?
Reuse one use case’s actions inside another use case (behaviour factored out)
What is Extension in use case relationships?
Additional behaviour performed under certain conditions
What is Inheritance in use case relationships?
Inherit the behaviour of a parent use case and replace some actions
What is Generalization?
Inheritance among actors
What does a Sequence diagram describe?
Describe the dynamic behaviour between objects: runtime communication
What is the syntax of a Sequence diagram?
Actor, objects, boxes (time needed by an object to complete a task), messages, lifeline
What is a Sequence fragment?
Grouping of actions with an operator (alt, opt, loop)
What is a Petri Net used for?
Specifying and verifying concurrent systems. Used to model and test the behaviour of complex processes.
What is improved with concurrent processing?
Time-efficiency
What are two problems of concurrency?
Starvation and deadlock
What is Starvation?
A process is denied a resource for a long time. Enabled transitions that do not fire
What is Deadlock?
No progress is possible in the system. No enabled transitions.
What is Liveness?
A deadlock can never occur - opposite of deadlock
What are the characteristics of a Petri Net?
Directed, weighted graph defined with: places (input/output), transitions, input and output arcs, and tokens
What is a PN state?
The marking of its places
What is marking in a PN?
The distribution of tokens in a net (number of tokens in a place)
What is the initial marking of a PN?
Indication of where the tokens are initially. Format: <P1(2), P2(1)>
When is a transition enabled in a PN?
When there is at least one token in each of its input places
What is a ‘firing sequence’ for a PN?
The order of transitions to be executed <t1, t2, …, tn>
What happens when a transition fires?
One token is removed from each input place and one token is inserted in each output place.
Describe the execution of a PN.
- Establish initial marking, 2. Select an eligible (enabled) transition. The choice is non-deterministic., 3. Executing the selected transition, 4. Repeating steps 2 and 3.
What is the difference between a Deterministic and Non-deterministic choice?
Deterministic: Single possible outcome, Non-deterministic: Multiple possible outcomes
What happens when an input/output arc has a weight?
The arc’s weight determines how many tokens are required for the input or output.
What is a Parallel transition?
Firing of one transition does not prevent the other from executing
What is a Conflicting transition (mutual exclusion)?
Firing of one transition prevents the other from executing (a resource is available for only one transition)
What are the characteristics of advanced PNs?
Prioritized, coloured, timed
What is a Prioritized PN?
Transitions are assigned priority
What is a Coloured PN?
Different colours represent different data values or entities
What is a Timed PN?
Transitions are assigned time constraints that limit when the transition can fire
What does a Class diagram show?
Shows the structure of the software, identifies classes and relationships
What is a register in a class diagram?
Classes connected via an association
What are the 3 parts of a class?
Data, control (set of operations), responsibility
What are the 3 Levels of access/visibility?
Public (+): directly accessed by other classes, Protected (#): directly accessed by derived classes, Private (-): only accessed by the class
What do class diagram responsibilities describe?
Describes what a class has to do
What does OCL stand for?
Object Constraint Language
What are Constraints in OCL?
A text or formula attached to a class, operation, attribute, or association
What are the 5 types of relationships between classes?
Generalizations (inheritance), dependencies, associations, aggregations & compositions, realizations
What is Class generalization/inheritance?
Parent class (superclass) is more general than child class (subclass). We can have both single or multiple inheritance
What is a Root/base class?
Class without a parent
What are Leaf classes?
Class without children
What are the two types of classes?
Abstract and concrete
What is an Abstract class?
Used specifically for inheritance and do not provide any objects (cannot be directly instantiated)
What is the Association of classes?
Name, direction of relationship, role of each class, multiplicity
What is Multiplicity?
One object of a class is related to some objects of the associated class
What is Aggregation?
The relationship between the whole (aggregate) and the parts (components). ‘Has-a’ relationship.
What is Composition?
A strong aggregation where the component belongs to exactly one rule and has no purpose without the rule.
What does an Object diagram show?
How instances of classes are linked to each other at runtime. Assists stakeholders in understanding important/complex classes & relationships
What is a link in an object diagram?
An instance of an association; connects objects
What is a State Transition Diagram?
(a.k.a. State Chart Diagrams) Used to understand the behaviour of important and complex classes
What does a Component diagram show?
The structure of the source code. Shows the components (code, data file, and executable) and their dependencies
What does a Deployment diagram describe?
Describes the physical architecture of the application.
What does the physical architecture of an application consist of?
Various hardware devices (nodes) and their connections, represented by the association relationship.
What is a package?
Group of diagram elements that can be used to decompose a complex system into subsystems. Used to increase readability and decrease complexity.
What is used to reduce ambiguities in a diagram?
Attaching notes to attributes, operations, constraints, classes, relationships, etc.
What is a stereotype in diagrams?
Organizes operations and attributes to make the class more readable. Format: string enclosed in double-angle brackets.
What does FSM stand for?
Finite State Machine
What is an FSM?
A graphical model showing the dynamic behaviour of a system. A directed graph with a set of states and a set of transitions that model synchronous systems.
What are possible applications of FSMs?
Compilers, automata theory, communication protocols, hardware digital circuits, games
What are the components of an FSM?
A finite set of states (Q), finite set of transitions (I), the transition function 𝛌: Q*I → Q, initial state (Q0 ∈ Q), and set of final/accept states (F ⊆ Q)
What are the two modes for FSM?
Acceptive mode and Generative mode
What is an Acceptive mode FSM?
To check if sequence transitions are valid or not
What is a Generative mode FSM?
The machine will generate a goal word as part of the language, or generally speaking, it will generate valid sequence transitions.
What is a Deterministic FSM?
No state has more than one transition with the same label
What are the differences between a Petri Net and an FSM?
Petri Nets can fire transitions in parallel, check correctness, check concurrency properties like deadlock or starvation, and are smaller graphs. FSMs can fire one transition at a time, check correctness, have no concurrency properties and are usually larger in scale (more states)
Why is software management critical for the success of software projects?
It ensures the project is completed on time, within budget, and meets all requirements. Poor management practices often lead to project failure.
What are the main activities involved in software management?
- Planning and scheduling development tasks
- Estimating costs
- Assigning tasks to developers
- Monitoring project progress
When does software management occur during a project?
Software management is a continuous activity from the first development task to the delivery of the software.
What are the main constraints software management must address?
- Budget
- Deadlines
- Changing requirements
What are the 5 main components of a software project plan?
- Project Objectives
- Software Functionalities
- Software Size
- Deliverables
- Stakeholder assignments
What are the three main parts of the software process?
Feasibility study, software management, and project execution.
What graphical tools are commonly used for planning and scheduling in software management?
Charts for planning and Gantt charts for scheduling.
How does a manager organize and communicate within a development team?
By assigning tasks based on expertise, overseeing collaboration, and facilitating communication between stakeholders.
What is the role of a manager in handling risks in software management?
Identify risks, assess their probabilities and severity, and prioritize addressing the most damaging risks first.
What are common types of risks in software projects?
- Requirement-related risks
- Technology-related risks
- Cost estimation risks
What is the goal of quality assurance in software management?
To ensure that documents meet stated requirements and company standards, preventing issues and guaranteeing high-quality outputs.
What is the most challenging management activity, and what model is used for it?
Budget estimation is the most challenging. The COCOMO model is commonly used for cost estimation.
What is the goal of monitoring and reporting in software management?
To track project progress, ensure tasks align with the plan, and inform stakeholders through progress reports.
What balance does a software manager aim to achieve in a project?
A compromise between cost, time and quality.
Why must a manager account for changing requirements in software projects?
Changes can significantly impact the project plan, budget and timeline.
How does organizing tasks in parallel benefit software projects?
It increases developer productivity by reducing idle time and maximizing resource utilization.
What is the manager’s role in stakeholder communication?
To oversee collaboration, ensure clear communication, and address concerns to maintain project alignment.
Examples of risks in software development
- unclear requirements
- adopting new or untested technology
- inaccurate budget or time estimations
What does understanding task dependencies achieve in software management?
It helps in scheduling tasks efficiently, ensuring prerequisite tasks are completed first.
How is quality assurance defined in software management?
A set of procedures to verify that documents and deliverables meet requirements and standards.
Name a tool often used for task scheduling in software management.
Gantt charts.
Why is software management considered continuous?
Because it spans from the initial development tasks to the final software delivery.
What compromises must a software manager make?
Between the project cost, delivery time and product quality.
Why is estimating software size crucial in project management?
To determine the effort and time required for development.
What does the COCOMO model estimate?
The total cost of developing software based on resource identification.
What should a manager do when problems arise in scheduling?
Update the schedule to reflect new priorities and address delays.
Why are stakeholder assignments included in the project overview?
To ensure everyone knows their roles and responsibilities in the project.
Why is technical documentation important during planning?
It outlines techniques, tools, and standards for development tasks, ensuring consistency.
How does quality assurance prevent issues in software projects?
By establishing standards and checking compliance throughout development.
How does monitoring contribute to successful software management?
It ensures tasks are completed according to the plan and identifies potential delays early.