Podcast
Questions and Answers
Which Software Development Lifecycle (SDLC) model is most suitable for projects where requirements are well-understood and changes are expected to be limited?
Which Software Development Lifecycle (SDLC) model is most suitable for projects where requirements are well-understood and changes are expected to be limited?
- Agile
- Spiral
- Incremental
- Waterfall (correct)
What is the primary focus of the Spiral model in software development?
What is the primary focus of the Spiral model in software development?
- Iterative development with short sprints
- Rapid prototyping and user feedback
- Sequential execution of phases
- Risk assessment and minimization (correct)
Which of the following is a key characteristic of Agile methodologies?
Which of the following is a key characteristic of Agile methodologies?
- Extensive upfront design
- Comprehensive documentation
- Customer collaboration and iterative development (correct)
- Strict adherence to the initial plan
In Scrum, who is responsible for managing the product backlog?
In Scrum, who is responsible for managing the product backlog?
What is the main purpose of 'Sprint Retrospective' in Scrum?
What is the main purpose of 'Sprint Retrospective' in Scrum?
Which activity is part of the Requirements Engineering process?
Which activity is part of the Requirements Engineering process?
What is the difference between user requirements and system requirements?
What is the difference between user requirements and system requirements?
Which of the following is an example of a non-functional requirement?
Which of the following is an example of a non-functional requirement?
What does the MoSCoW prioritization technique help with?
What does the MoSCoW prioritization technique help with?
What is the purpose of requirement validation?
What is the purpose of requirement validation?
What is the primary purpose of UML modelling in software development?
What is the primary purpose of UML modelling in software development?
Which UML diagram is most suitable for depicting the interaction between actors and the system?
Which UML diagram is most suitable for depicting the interaction between actors and the system?
Which UML diagram is used to model workflows by identifying the steps involved in a process?
Which UML diagram is used to model workflows by identifying the steps involved in a process?
What does a sequence diagram primarily illustrate?
What does a sequence diagram primarily illustrate?
What is the purpose of a class diagram?
What is the purpose of a class diagram?
In UML class diagrams, what does the '+' symbol denote?
In UML class diagrams, what does the '+' symbol denote?
Which type of relationship in UML represents a strong 'part-of' relationship?
Which type of relationship in UML represents a strong 'part-of' relationship?
What does multiplicity in UML relationships express?
What does multiplicity in UML relationships express?
What was a primary factor contributing to the failure of the London Ambulance Service (LAS) system in 1992?
What was a primary factor contributing to the failure of the London Ambulance Service (LAS) system in 1992?
Which of the following best describes the 'Given-When-Then' structure used in Agile acceptance criteria?
Which of the following best describes the 'Given-When-Then' structure used in Agile acceptance criteria?
What is the correct order of phases in the classic Waterfall model?
What is the correct order of phases in the classic Waterfall model?
Which of the following is a primary advantage of using the Incremental Development model?
Which of the following is a primary advantage of using the Incremental Development model?
In the context of software requirements, which word is typically used to denote a mandatory requirement?
In the context of software requirements, which word is typically used to denote a mandatory requirement?
What is the main goal of requirements elicitation?
What is the main goal of requirements elicitation?
Which UML diagram would be most helpful in visualizing the different states an object can transition through during its lifecycle?
Which UML diagram would be most helpful in visualizing the different states an object can transition through during its lifecycle?
In UML, what does aggregation represent?
In UML, what does aggregation represent?
Considering the activities in the Spiral Model, what follows after 'Risk Assessment and Reduction'?
Considering the activities in the Spiral Model, what follows after 'Risk Assessment and Reduction'?
What is a 'Product Increment' in the context of Scrum?
What is a 'Product Increment' in the context of Scrum?
Which of the following is a primary benefit of using UML modeling?
Which of the following is a primary benefit of using UML modeling?
Which UML diagram would be most appropriate for illustrating the sequence of actions a user takes when interacting with a website, such as logging in and making a purchase?
Which UML diagram would be most appropriate for illustrating the sequence of actions a user takes when interacting with a website, such as logging in and making a purchase?
Flashcards
Software Engineering
Software Engineering
An engineering discipline focused on the cost-effective development of large, complex software-intensive systems through systematic design, build, and testing.
Software Engineering Process
Software Engineering Process
The core activities in software engineering: Specification, Design & Implementation, Validation, and Evolution.
Waterfall Model
Waterfall Model
A sequential approach where each activity is a separate phase, best suited when requirements are well-understood and changes are limited.
Incremental Development
Incremental Development
Signup and view all the flashcards
Spiral Model
Spiral Model
Signup and view all the flashcards
Agile Methodologies
Agile Methodologies
Signup and view all the flashcards
Scrum Roles
Scrum Roles
Signup and view all the flashcards
Scrum Artifacts
Scrum Artifacts
Signup and view all the flashcards
Scrum Events
Scrum Events
Signup and view all the flashcards
Requirements Engineering
Requirements Engineering
Signup and view all the flashcards
Requirements Elicitation
Requirements Elicitation
Signup and view all the flashcards
Requirements Specification
Requirements Specification
Signup and view all the flashcards
Functional Requirements (FR)
Functional Requirements (FR)
Signup and view all the flashcards
Non-Functional Requirements (NFR)
Non-Functional Requirements (NFR)
Signup and view all the flashcards
MoSCoW Prioritization
MoSCoW Prioritization
Signup and view all the flashcards
Requirement Validation
Requirement Validation
Signup and view all the flashcards
Software Modelling with UML
Software Modelling with UML
Signup and view all the flashcards
Views of the Model
Views of the Model
Signup and view all the flashcards
Use Case Diagrams
Use Case Diagrams
Signup and view all the flashcards
Activity Diagrams
Activity Diagrams
Signup and view all the flashcards
Sequence Diagrams
Sequence Diagrams
Signup and view all the flashcards
Class Diagrams
Class Diagrams
Signup and view all the flashcards
Relationships in Class Diagrams
Relationships in Class Diagrams
Signup and view all the flashcards
Multiplicity
Multiplicity
Signup and view all the flashcards
LAS Failure Causes
LAS Failure Causes
Signup and view all the flashcards
Agile Story Format
Agile Story Format
Signup and view all the flashcards
Acceptance Criteria (BDD)
Acceptance Criteria (BDD)
Signup and view all the flashcards
Study Notes
Software Engineering Fundamentals
- Software engineering is an engineering discipline focused on the cost-effective development of large and complex software systems.
- Software engineering involves a systematic approach: Design, Build, and Test.
- Software engineering focuses on real-world goals, services, constraints, precise specification of system structure and behavior, and implementation of these specifications.
- The core activities in the software engineering process are specification, design and implementation, validation, and evolution.
Software Development Lifecycle (SDLC) Models
- SDLC models each have different characteristics and are suitable for different project types.
Waterfall Model
- The waterfall model is a sequential approach where each activity is a separate phase receiving feedback from another phase.
- The waterfall model is best suited when requirements are well-understood and changes will be fairly limited during the design process for example in embedded, critical, and large software systems.
- The distinct phases of the waterfall model are requirements definition, system and software design, implementation and unit testing, integration and system testing, user acceptance testing, operation, and maintenance.
- A characteristic of the waterfall model is downtime.
Incremental Development
- Incremental development involves developing an initial implementation, gathering user feedback, and evolving the software through several versions.
- The incremental model is suitable when requirements are likely to change during development, such as in business systems and software products.
- The incremental model offers advantages of flexibility, easier testing and debugging, rapid delivery, and easier feedback integration.
- Disadvantages of incremental development are the need for good planning, potentially higher total cost, and well-defined module interfaces.
Spiral Model
- The spiral model focuses on risk assessment and minimizing project risk by breaking a project into smaller segments.
- Each cycle in the spiral model involves identifying objectives, risk assessments and reduction, development and validation, and planning.
Agile Methodologies
- Agile methodologies emphasize iterative development, flexibility, and customer collaboration.
- Examples of Agile Methodologies are Scrum, Kanban, Hybrid, Lean, Bimodal and XP
- Scrum uses short development cycles ("sprints") to produce shippable product increments, and emphasizes transparency, inspection, and adaptation.
- Scrum roles, artifacts, and events include:
- Roles: Product Owner (manages product backlog), Scrum Master (facilitates the process), Development Team (develops the product).
- Artifacts: Product Backlog (list of features), Sprint Backlog (tasks for a sprint), Product Increment (shippable product).
- Events: Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective.
Requirements Engineering
- Requirements engineering is the process of establishing required services and constraints on the system’s operation and development.
- Requirements engineering activities include requirements elicitation, requirements specification, and requirements validation.
- Requirements elicitation involves discovering and capturing requirements through techniques like interviews, workshops, surveys, prototyping, and use cases.
- Requirements specification involves documenting user and system requirements; user requirements are high-level and user-centric, while system requirements are detailed specifications from a system point of view.
Types of Requirements
- Functional Requirements (FR) describe functionalities or services the system should provide; for example, a user should be able to search appointment lists for all clinics.
- Non-Functional Requirements (NFR) define qualities or attributes of the system, like reliability, performance, security, and usability; for example, the system should load the homepage in under 3 seconds under normal network conditions.
MoSCoW Prioritization
- MoSCoW prioritization is a technique for prioritizing requirements.
- M: Must have - mandatory requirements that are fundamental to the system (Have).
- S: Should have – important requirements (Desired).
- C: Could have – optional requirements​ (Nice to have)
- W: Won’t have – these requirements really can wait, not priority
- Requirement validation involves checking requirements for validity, consistency, completeness, realism, and verifiability, ensuring that the system meets the user’s needs.
Software Modelling with UML
- The purpose of Software modelling with UML is to develop abstract models of a system from different views or perspectives.
- Software modelling with UML helps analysts understand system functionality and communicate it to customers.
- Benefits of software modelling with UML include overcoming complexity, addressing lack of abstraction, and shifting focus from implementation to design.
- Software modelling with UML hides system complexity by looking at a problem from a certain perspective, focusing on relevant parts and ignoring irrelevant details.
- Views of the model that UML show are external (system context), interaction (how the system interacts), structural (system organisation), and behavioural (dynamic behaviour).
UML Diagrams
- Use Case Diagrams help users understand the system functionality from a user’s perspective, depicting interactions between actors and the system, and include actors (roles), use cases (system functions), and relationships (extend, include, generalization); use cases are named by verb + Noun.
- Activity Diagrams model workflows by identifying steps involved in a process and the conditions that govern the flow of work, and show dependencies and coordination between activities.
- Sequence Diagrams show interactions between objects over time, illustrating the sequence of messages exchanged between objects, and can include interaction frames for conditional behavior (alt, opt, loop): horizontal defines which objects/participants are acting and Vertical represents forward in time.
- Class Diagrams describe the structure of a system by showing classes, attributes, operations (methods), and relationships between classes, and are used to model the static structure of a system; class attributes and operations include public (+), private (-), protected (#), package (~); relationships include association, aggregation (weak "part-of" relationship), composition (strong "part-of" relationship), generalisation (inheritance), and dependency (one class uses another); multiplicity expresses how many objects of each class take part in the relationships (Exactly one - 1, Zero or one - 0..1, Many - 0..* or , One or more - 1.., Exact Number - e.g. 3..4 or 6).
The London Ambulance Service (LAS) Case Study
- The London Ambulance Service case study involved the development of a computer-aided dispatching system with AVLS and MDTs to replace a manual system.
- The London Ambulance Service system failed in October 1992, leading to severe consequences, such as delayed ambulances and patient deaths.
- Causes of the failure included incomplete and untested software, a high-risk implementation approach, inappropriate assumptions during specification, lack of user consultation, and poor fit with the organizational structure.
- The software was incomplete and effectively untested.
Agile Story Example
- Agile story example contains the definition of "ready", acceptance criteria, definition of "done", and outline subtasks.
- An example of an Agile story is: "As a store owner, I want to add items back to inventory when they are returned or exchanged, so that I can sell them again."
- Acceptance Criteria (BDD) will follow a Given (initial context), When (event), Then (expected outcome) methodology.
Key Takeaways
- Understanding and managing risks is crucial for software project success.
- The SDLC model you choose depends on project characteristics.
- Requirements engineering is a critical process that should involve stakeholders.
- UML modelling aids in communication and design.
- Ignoring user needs and proper testing can lead to disastrous outcomes (LAS case).
- Clear and unambiguous requirements are essential for successful software development; use "shall" for requirements and "should" for recommendations.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.