Podcast
Questions and Answers
Which type of requirement focuses on defining the specific tasks and functionalities a software system must perform?
Which type of requirement focuses on defining the specific tasks and functionalities a software system must perform?
- Functional requirements (correct)
- Non-functional requirements
- Scalability requirements
- Usability requirements
A software system needs to process a large number of transactions quickly. Which non-functional requirement does this primarily address?
A software system needs to process a large number of transactions quickly. Which non-functional requirement does this primarily address?
- Performance (correct)
- Maintainability
- Usability
- Security
What type of requirement ensures that a system can handle an increasing number of users without a significant drop in performance?
What type of requirement ensures that a system can handle an increasing number of users without a significant drop in performance?
- Portability
- Security
- Scalability (correct)
- Reliability
Which non-functional requirement is most concerned with making a system easy to learn and use for its intended users?
Which non-functional requirement is most concerned with making a system easy to learn and use for its intended users?
If a company requires that all user data be encrypted using AES-256, which non-functional requirement are they addressing?
If a company requires that all user data be encrypted using AES-256, which non-functional requirement are they addressing?
A system that is expected to operate continuously with minimal downtime is primarily focusing on which non-functional requirement?
A system that is expected to operate continuously with minimal downtime is primarily focusing on which non-functional requirement?
Which non-functional requirement is directly related to ensuring a system can be easily transferred to and function correctly on different operating systems?
Which non-functional requirement is directly related to ensuring a system can be easily transferred to and function correctly on different operating systems?
A web application that needs to comply with GDPR is addressing which type of non-functional requirement?
A web application that needs to comply with GDPR is addressing which type of non-functional requirement?
Which of the following scenarios best exemplifies a 'complete' requirement in the context of software development?
Which of the following scenarios best exemplifies a 'complete' requirement in the context of software development?
In the MoSCoW prioritization technique, what does the 'Should have' category typically represent?
In the MoSCoW prioritization technique, what does the 'Should have' category typically represent?
Which of the following is the best example of a non-functional requirement for a mobile application?
Which of the following is the best example of a non-functional requirement for a mobile application?
Consider the requirement: 'The system should prevent unauthorized access.' Which characteristic of good requirements does this MOST need to be improved to adhere to?
Consider the requirement: 'The system should prevent unauthorized access.' Which characteristic of good requirements does this MOST need to be improved to adhere to?
Which of the following is least likely to be considered a functional requirement?
Which of the following is least likely to be considered a functional requirement?
During the software crisis era, what was the primary challenge faced by the software industry?
During the software crisis era, what was the primary challenge faced by the software industry?
Which of the following best describes the purpose of software development?
Which of the following best describes the purpose of software development?
In a typical software development lifecycle, which of the following sequences represents the core tasks?
In a typical software development lifecycle, which of the following sequences represents the core tasks?
How does software architecture primarily influence a software system?
How does software architecture primarily influence a software system?
What is the primary motivation for establishing a well-defined software architecture?
What is the primary motivation for establishing a well-defined software architecture?
What is a 'reference architecture' in the context of modern system development?
What is a 'reference architecture' in the context of modern system development?
In the context of software architecture, what is the key question addressed during the 'design' phase, following the 'analysis' phase?
In the context of software architecture, what is the key question addressed during the 'design' phase, following the 'analysis' phase?
Which aspect of software development focuses on both the 'planning' and 'design' aspects?
Which aspect of software development focuses on both the 'planning' and 'design' aspects?
Which category of design decisions involves choices that are subject to change over time and affect the system's behavior during different periods?
Which category of design decisions involves choices that are subject to change over time and affect the system's behavior during different periods?
In the context of software architecture for a banking application, which of the following is most likely considered a principal design decision rather than a temporal one?
In the context of software architecture for a banking application, which of the following is most likely considered a principal design decision rather than a temporal one?
Which of the following best describes the primary role of requirements engineering in software development?
Which of the following best describes the primary role of requirements engineering in software development?
In the context of software development, why is understanding 'who' relates to requirements important?
In the context of software development, why is understanding 'who' relates to requirements important?
What is the MOST significant reason for prioritizing requirements in software development?
What is the MOST significant reason for prioritizing requirements in software development?
Which of the following is NOT a typical concern addressed during requirements gathering?
Which of the following is NOT a typical concern addressed during requirements gathering?
What impact did Margaret Hamilton have on the field of software development during the Apollo missions?
What impact did Margaret Hamilton have on the field of software development during the Apollo missions?
Why did Margaret Hamilton introduce the term 'software engineering'?
Why did Margaret Hamilton introduce the term 'software engineering'?
Which of the following best describes the relationship between user stories and use cases in system requirements specification?
Which of the following best describes the relationship between user stories and use cases in system requirements specification?
In the context of non-functional requirements, which of the following examples primarily addresses an ethical concern?
In the context of non-functional requirements, which of the following examples primarily addresses an ethical concern?
Consider a system requirement: 'As a VIP user I want to back up all of my messages so that I restore them whenever I need.' Which of the following categories does this best fall into?
Consider a system requirement: 'As a VIP user I want to back up all of my messages so that I restore them whenever I need.' Which of the following categories does this best fall into?
Which of the following is the most likely 'Actor' within a 'Use Case' for sending a message?
Which of the following is the most likely 'Actor' within a 'Use Case' for sending a message?
What is the primary purpose of listing a 'precondition' in a use case description?
What is the primary purpose of listing a 'precondition' in a use case description?
In the context of system requirements, which of the following examples is most clearly a functional requirement?
In the context of system requirements, which of the following examples is most clearly a functional requirement?
What is the maximum character limit for a user to send a message?
What is the maximum character limit for a user to send a message?
Which of the following is most associated with use cases?
Which of the following is most associated with use cases?
Flashcards
Software Crisis
Software Crisis
Challenges faced in software creation and maintenance, 1960s-1980s.
Software Development
Software Development
A systematic, phased process from project start to completion, structured for success.
Core Tasks
Core Tasks
Analyze the software, design it, build it up, test every component, and deliver the software to user.
Software Architecture
Software Architecture
Signup and view all the flashcards
Analysis (Software)
Analysis (Software)
Signup and view all the flashcards
Design (Software)
Design (Software)
Signup and view all the flashcards
Role of Software Architecture
Role of Software Architecture
Signup and view all the flashcards
Reference Architecture
Reference Architecture
Signup and view all the flashcards
Architecture Patterns
Architecture Patterns
Signup and view all the flashcards
Design Decisions
Design Decisions
Signup and view all the flashcards
Principal Design Decisions
Principal Design Decisions
Signup and view all the flashcards
Temporal Design Decisions
Temporal Design Decisions
Signup and view all the flashcards
Stakeholders
Stakeholders
Signup and view all the flashcards
Requirements Engineering
Requirements Engineering
Signup and view all the flashcards
Motivation of Requirements Engineering
Motivation of Requirements Engineering
Signup and view all the flashcards
Why Requirements Matter?
Why Requirements Matter?
Signup and view all the flashcards
Software Requirements
Software Requirements
Signup and view all the flashcards
Functional Requirements
Functional Requirements
Signup and view all the flashcards
Non-Functional Requirements
Non-Functional Requirements
Signup and view all the flashcards
Performance (NFR)
Performance (NFR)
Signup and view all the flashcards
Scalability (NFR)
Scalability (NFR)
Signup and view all the flashcards
Usability (NFR)
Usability (NFR)
Signup and view all the flashcards
Security (NFR)
Security (NFR)
Signup and view all the flashcards
Reliability (NFR)
Reliability (NFR)
Signup and view all the flashcards
Unambiguous Requirements
Unambiguous Requirements
Signup and view all the flashcards
Complete Requirements
Complete Requirements
Signup and view all the flashcards
Coherent Requirements
Coherent Requirements
Signup and view all the flashcards
Verifiable Requirements
Verifiable Requirements
Signup and view all the flashcards
MoSCoW Method
MoSCoW Method
Signup and view all the flashcards
Ethics (in Systems)
Ethics (in Systems)
Signup and view all the flashcards
Requirements
Requirements
Signup and view all the flashcards
User Story
User Story
Signup and view all the flashcards
Use Case
Use Case
Signup and view all the flashcards
User Story (Details)
User Story (Details)
Signup and view all the flashcards
Use Case (Definition)
Use Case (Definition)
Signup and view all the flashcards
Actor (in Use Case)
Actor (in Use Case)
Signup and view all the flashcards
Main Scenario
Main Scenario
Signup and view all the flashcards
Study Notes
- This lecture provides an introduction to Software Architecture for SENG 401. It is presented by Dr Ronnie de Souza Santos.
Software Crisis
- This was a period when the software industry faced significant challenges in creating and maintaining software systems.
- This crisis occurred in history of Software Development.
- During this period, software development was difficult, inefficient, often resulted in overtime, and frequently exceeded budgets
- The Software Engineering discipline came out of this period (1960-1970)
Software Development
- This is a systematic process that outlines the phases that a software project goes through from initiation to completion and maintenance.
- This process should be structured and based on quality communication
- Software development includes management of the project, resources and tasks
- The motivation of the development methodology is to produce software that meets or exceeds customer's expectations
Software Development Core Tasks
- Include Analysis, Design, Construction, Testing and Delivery.
- Also includes Management of costs, people, resources and time
Software Architecture
- This defines the high-level structure of a software system
- It defines components and their interactions
- It sets the foundation for the design and implementation phases of software development
- Analysis focuses on "what" is the problem
- Design focuses on "how" to fix the problem
The Role of Software Architecture
- Architecture decisions have a large effect on the long-term cost and quality of a system
- Software architecture can influence the ease of future modifications
- It aids in managing complexity, especially in large systems
- The planning and design ensures different parts of the program work together and function well
Reference Architecture
- This is the set of principal decisions that are simultaneously applicable to multiple related systems
- Reference architecture is typically within an application domain
- It provides explicit definitions of points of variation
- In addition, it provides standardized guidelines and proven solutions for efficient, consistent and reliable system architectures
Design Decisions
- Design decisions are choices that are made during the creation or planning phase of a system
- Kinds of decisions to be made include what approaches, methods, technologies and configurations to use
- Also includes structure, behavior and interaction
Principal and Temporal Design Decisions
- Principal decisions are critical or fundamental choices that influences the overall architecture, functionality, or behavior of a system
- Technologies and Data are Principal
- Temporal decisions include the choices made or unmade and involve aspects related to periods within the system
- Interface is Temporal
Banking App Design Decisions
- The Operating System, Biometrics and Cloud are Principal
- Push notifications, engaging users, and optimization are Temporal
Stakeholders
- These are individuals or groups interested in, or impacted by, the development, deployment or utilization of a software system architecture and design
- Includes architects, developers, testers, managers, clients and users
Software Engineering
- Margaret Hamilton coined the term "Software Engineering" in the 1960s.
- She led NASA's team that developed the Apollo Mission's flight software.
- She introduced the term to emphasize the rigorous, systematic approach that was needed for software development which was then viewed as less formal than hardware engineering
Requirements Engineering
- This is the process of gathering, documenting, analyzing, prioritizing, validating, and managing requirements throughout the project lifecycle
- The stakeholders needs are central
- There is motivation to ensure project delivers desired outcomes while reducing risks
- Includes Change Management
Care About Requirements
- Defining Requirements involves considering the What, the How, the Who, and the Costs Vs Time
Types of Requirements
- Software requirements define what a software system should accomplish and how it should behave
- It provides the basis for designing, building, and testing software solutions
- It can then be categorized as Functional, Non-Functional and Domain specific
Basic Requirements
- Functional requirements focus on the specific Tasks and Functionalities that the software system must perform
- Non-Functional requirements describe the behaviors and characteristics that the software must possess
Non-Functional Requirements Examples
- Performance specifies how quickly the system should respond or process tasks (e.g. system should process 1,000 transactions per second)
- Scalability defines the system's ability to handle increasing loads without performance degradation (e.g. system should handle 10,000 concurrent users without degradation)
- Usability focuses on the system's ease of use and learning curve for end users (e.g. user interface should be intuitive and require minimal training)
- Security ensures system is protected from unauthorized access or attacks (e.g. all data encrypted using AES-256 encryption)
- Reliability specifies the system's ability to perform consistently under expected conditions (e.g. system should have 99.9% uptime)
- Availability indicates how often system should be available for use without downtime (e.g. system should be available 24/7 no more than 1 hour of downtime per year)
- Maintainability describes the ease which system can be modified or updated (e.g. system should be able to update features without downtime)
- Portability ensures system can be easily moved or adapted to different environments (e.g. system should run on both Windows and Linux platforms)
- Accessibility focuses on system usability for people with disabilities (e.g. websites should support screen readers for visually impaired users)
- Compliance ensures system complies with laws and regulations (e.g. GDPR) (e.g. system must comply with the GDPR for data protection)
- Interoperability describes how system interacts with other systems or components (e.g. system should integrate with third-party payment gateways)
- Ethics ensures the system adhere to ethical standards (e.g. system ensures fairness in route suggestions without bias)
Requirements Examples in a Message App
- Functional: Create a profile, Login into the system, add a photo to the profile, send message to contact, delete profile
- Non-Functional: New Profile is confirmed via SMS, Login required Email/Password for Validations, Photo is up to 2GB, message is 250 characters long, deleting profile is confirmed via a call
Requirements Specification
- User Stories: Short, simple descriptions of a feature, told from the perspective of the person who will use it
- Use Cases: A methodology, clarify and organize system requirements, used in system analysis to identify
User Stories
- These are informal, natural language descriptions of features of the software
- They are written by or for users or customers
- They influence the functionality of the system being developed
- Follows a format : As a (type of user), I want (some goal) so that (some reason)
Use Cases
- This documents the user interface with the system in actions / events
- Use cases use UML (Unified Modeling Language)
Good Requirements
- Unambiguous
- Complete
- Coherent
- Verifiable
- Feasible
- Prioritizable
- Validatable
Requirements prioritization
- Mo: These are non-negotiable, the minimum viable product, unable to deliver the end product without this, not legal without it, unsafe without it, and without this project is not viable
- S: These are importunate, but not vital May be painful to leave out But solution is still viable. May need to implement a workaround
- Co: Desirable but not essential, to have extra time and budget, important after should have.
- W: Will not be able to implement at all, Out of budget, if no real impact.
Examples of Functional Vs Non-Functional Requirements
- Functional: The app should allow users to search for products by name, category or keywords
- Non-Functional: The app should load product pages in under 3 seconds, even during peak traffic times
- Functional: Users should be able to register and log in using their email or social media accounts
- Functional: The app must support multiple languages for global users
- Functional: Users should have the ability to add terms to a shopping cart and update quantities
- Non-Functional: The app must be available on both iOS and Android Platforms
- Non-Functional: The user interface should be intuitive, requiring no more than 3 clicks to complete a purchase
- Functional: The app must provide real-time order tracking after purchase
- Non-Functional: All user data, including payment information, should be encrypted using industry-standard methods
- Non-Functional: The system should have automatic daily backups, recover data within 30 minutes
- Functional: Users should be able to create wish lists for future purchases
- Non-Functional: The App to be optimised for mobile devices responsive to display on all screen sizes
- Functional: The app should support users submitting requests for eligible items through a return or refund
- Non-Functional: App Comply with Data Privacy Regulations
- Functional: Admins can manage product inventory an receive alerts for low stock products an be able
- Non-Functional: Supp screen readers and have high contrast mode for visually impaired users
- Non-Functional: Push notifications alerting users to new product or sale announcements discount / updates
- Non-Functional: Support App load up to 100,000 concurrent users during major sales events
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.