INF43 FINAL
For this code block: void function(int x, int y, int z) { 1: int q = 0; 2: if (x > y) { 3: if (x > z) { 4: q++; } else { 5: q--; } } else { 6: if (y > z) { 7: q = q + 10; } } 8: print q;} And for the input (1, 2, 3), which statements are executed/covered? Select all that apply. - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8
1, 2, 6, 8
In user-centered design, a scenario is: - A story-like textual description of a system's usage - A series of pictures shown in sequence to visualize the user experience and interaction - Using principles based on research to assess the usability of a system - A set of common UI components, patterns, and styles to promote reuse and provide a consistent user experience - A profile of a fictional potential user that helps you make user-centered decisions during development
A story-like textual description of a system's usage
Equivalence Class Partition Testing includes all of the following steps, EXCEPT: - Identify the set of all possible inputs (to what is being tested), aka "domain" - Identify a basis for subdividing the set of inputs - From each subdomain, select [a] representative(s) to be [a] test case input(s) - Use this basis to divide the set of all possible inputs into classes/subdomains - Gather user feedback for validation - Test for each subdomain, including representative values or possibly boundary values
Gather user feedback for validation
In the requirements document, if you were to describe the list of desired features of the software and how they should work, into which section would they most likely go? - Application Context - Software Qualities - Functional requirements - Future changes - Assumptions / Risks
Functional requirements
Of the three essential ingredients of software engineering, which is the most important? - People - Tools - Modularity - Processes - These are all equally important
People
Which of the following software process models requires a "process expert?" - Rational Unified Process (RUP) - Waterfall - Rapid prototyping - Build and fix
Rational Unified Process (RUP)
Which of the following is an example of unit testing? - Testing the interaction between two classes - Testing the usability of an interface based on a heuristic checklist - Analysis of program properties using a static analyzer - Testing a feature of the system from the perspective of a user - Testing the functions of a single class
Testing the functions of a single class
The waterfall process model is: (Note: for this question, "idealized" means that it largely assumes that each step is performed ideally, whereas "realistic" means that it works well for non-ideal and imperfect/flawed steps.) - nonlinear and idealized - linear and realistic - linear and idealized - nonlinear and realistic - a process that responds well to requirements changes
linear and idealized
What is relational database design? - Designing tables where data is stored and relationships between them - Decomposing the user interface into the detailed layout - Decomposing UML objects and classes into functions - Designing a sequence of user interactions in their environmental context - Decomposing a task, function, module, or system into smaller sub-tasks, sub-functions, or sub-modules
Designing tables where data is stored and relationships between them
In which section of a requirements document are you most likely to find the following statements: "The software shall run on iPads in the lobby of the library. The software shall also take input from scanners attached to the iPads, with which a patron can use to scan their cards and items. The software shall also interact with the county-wide library database to report checkouts and checkins." - Application Context - Priorities / Implementation Phases - Future Changes - Software Qualities - Assumptions / Risks
Application Context
User acceptance testing is an example of: - Verification - Validation
Validation
Which one of the following is true of white-box testing? - An oracle is used to choose which test cases to run. - Testing is considered complete when the error find rate stabilizes to near 0. - A graph model of the source code is used to inform what test cases should be written. - Test cases are chosen based on the specifications of the software.
A graph model of the source code is used to inform what test cases should be written.
In the Layered architectural style: - Any component can communicate with any other component in the architecture. - Components are organized around one centralized server. - The upper layers are the most reusable. - None of these
None of these
In user-centered design, a persona is: - A story-like textual description of a system's usage - A series of pictures shown in sequence to visualize the user experience and interaction - A profile of a fictional potential user that helps you make user-centered decisions during development - A set of common UI components, patterns, and styles to promote reuse and provide a consistent user experience - Using principles based on research to assess the usability of a system
A profile of a fictional potential user that helps you make user-centered decisions during development
The "requirements" phase of the software lifecycle can be broken down into two sub-phases: "analysis" and "specification". What is requirements analysis? - The process of drawing use case diagrams - The process of coming to know and understand what the software product should be - The process of documenting what the software product should be - The requirements document
The process of coming to know and understand what the software product should be
For this UML class diagram, which of the following would you expect to see its corresponding code? Mark all that apply. [ A ]* ------------------------------------- 1 [ B ] - Class "B" has a field "aList", which is a collection of objects of type "A" - Class "B" has a field "a" of type "A" - Class "A" has a field "b" of type "B" - Class "A" has a field "bList", which is a collection of objects of type "B"
Class "B" has a field "aList", which is a collection of objects of type "A" AND Class "A" has a field "b" of type "B"
Pair programming includes which of the following steps - Coding with another person - Writing a test case before writing the functionality to allow it to pass - Writing a test case to verify correctness immediately after each feature is implemented - Using rigor and formality when developing software
Coding with another person
What is functional decomposition? - Decomposing the user interface into the detailed layout - Decomposing UML objects and classes into functions - Decomposing a task, function, module, or system into smaller sub-tasks, sub-functions, or sub-modules - Decomposing tables where data is stored into their associated attributes - Decomposing a software architecture into components and connectors
Decomposing a task, function, module, or system into smaller sub-tasks, sub-functions, or sub-modules
The term requirements specification is used to refer to the process of coming to know and understand what the software product should be. True or False?
False
Architectural erosion happens when: - A system evolves and its descriptive architecture is not updated - The "as-designed" architecture and the "as-implemented" architecture do not match - The prescriptive architecture is modified before the descriptive architecture is modified - A client-server style is used when a peer-to-peer style would have been more effective - Faulty components are used in the architecture
The "as-designed" architecture and the "as-implemented" architecture do not match
Which of the following is NOT an example of a test oracle: - Human intuition, knowledge, judgment, or experience - An older, legacy program that computed the same function - The actual output of the software implementation that you are testing - A calculator, or separate computing device
The actual output of the software implementation that you are testing
The term requirements specification is used to refer to the requirements document. True or False?
True
What is the main activity done in the third iteration in a spiral process? - Implementation - Whatever activity addresses the biggest current risk - Testing - Design - Requirements
Whatever activity addresses the biggest current risk
Which of the following is NOT a way to know when to stop testing? - When the rate of finding new faults stabilizes to near zero - When all bugs have been found and fixed - Reveal as many faults as possible in a fixed period of time with a fixed budget - Meet the quality requirements established for the project; perform all planned quality assurance activities
When all bugs have been found and fixed
Imagine you are creating a UML class diagram of an e-commerce system, such as Amazon.com. Which of the following is most likely to be an attribute of a Customer class? - name - logOut - price - writeReview - fileSize
name
Consider if we have a function that takes an integer input. For example: int f(int x) This input can be partitioned into the following partitions/equivalence classes: Partition A: x ≤ 0 Partition B: 0 < x ≤ 100 Partition C: x > 100 for the integer input parameter x. For each of the following values, answer for which partition it is a boundary value. - 1 - 100 - 0 - 101 - (-100) - 500 - (-1) - 99 OPTIONS: - Boundary value for Partition A - Boundary value for Partition B - Boundary value for Partition C - Not a boundary value for any of these partitions
1 = Partition B 100 = Partition B 0 = Partition A 101 = Partition C -100 = Not a boundary 500 = Not a boundary -1 = Not a boundary 99 = Not a bounday
Which one of the following is true about software architectural styles? - A software architectural style provides us with a named set of components, connectors, and configurations. - A software architectural style rarely offers benefits to the resulting system. - Using a software architectural style usually makes it harder to evolve the resulting system - The client-server style is applicable to any given problem/context. - Using a software architectural style broadens the architectural design decisions we can make.
A software architectural style provides us with a named set of components, connectors, and configurations.
A function call presents a simple interface and hides the logic that will be performed. This is an example of... - Rigor and formality - Prototyping - Divide and conquer - Incrementality - Abstraction
Abstraction
The build-and-fix process model is: - Very rigorous - Also often referred to as simple "hacking" - A good choice for large software - A good choice for software involving many developers and other stakeholders
Also often referred to as simple "hacking"
Which of the following requirements-analysis techniques is Netflix know for using the most to inform their software development? - Physically observing the customer - Creating use cases - Netflix uses all of these techniques equally - Interviewing the customer - Data analysis and business metrics
Data analysis and business metrics
Consider the three perspectives on software engineering discussed in lecture. Match each perspective with what matters most from that perspective. - Engineering - Business - User OPTIONS: - "Everything that the user sees" - Internal quality of the software - Money
Engineering = Internal quality of the software Business = Money User = "Everything that the user sees"
Which of the following statement is NOT correct? - It is outside the scope of a requirements engineer to document possible risks to the project. - The majority of software developers are employed to produce software for their own company's use. - A glossary should be used when some terminology is non-standard or cannot be used to be known by possible readers. - In a requirement document, executive summary shouldn't be too long and should be concise and to-the-point.
It is outside the scope of a requirements engineer to document possible risks to the project.
Which of the following statement is NOT CORRECT? - Software Architecture consists of components and connectors, which can be arranged into configuration - Mixing different styles in software architecture is inappropriate. Architects should always stick to one single architectural style. - Not all design decisions should be considered as part of software architecture. - Architectural erosion happens when the software is not grown as it was prescribed.
Mixing different styles in software architecture is inappropriate. Architects should always stick to one single architectural style.
Which one of the following statements is not true about testing? - One goal of testing is to find bugs. - One goal of testing is to prove that the system has no bugs. - Test cases should be chosen systematically, to cover a wide range of possible inputs - One goal of testing is to improve confidence that the system works correctly.
One goal of testing is to prove that the system has no bugs.
According to the IEEE Spectrum software failure reading, what is another name for "Hubble Psychology?" - Over rigorous disease - Over optimism disease - Under optimism disease - Under rigorous disease - Extreme bias disease
Over optimism disease
In a specification, which section would you describe that the software should be built to be secure and beautiful? - Functional requirements - Application Context - Software Qualities - Future Changes - Assumptions / Risks
Software Qualities
Which one of the following statements is true about software architecture? - Software architecture is a valuable tool in understanding, reasoning, and communicating about a software system. - Software architecture has no value in facilitating the evolution of a software system. - Software architecture consists of all the design decisions about a software system. - Software architecture dictates the process a team uses to develop use cases for a system. - Software architecture defines the detailed, low-level structure of an implementation.
Software architecture is a valuable tool in understanding, reasoning, and communicating about a software system.
Mr. Brown wants to create a web application that can assist people buying tickets for a cruise ship. Which of the following is the POOREST example of the requirement? - The web should support people with reading disability so that they could purchase the tickets smoothly - The web pages should provide some space for online advertising so that the advertising place could be sold to other commercial companies - Customers can not only purchase tickets but also join the waiting list if the tickets are temporarily sold out - The web's backend should use the most popular programming language, Python, so that it could be easily maintained since more people know how to use it
The web's backend should use the most popular programming language, Python, so that it could be easily maintained since more people know how to use it
Requirements should define: - The how, not the what - Neither what nor how - The what, not the how - The what and how
The what, not the how
In user-centered design, heuristic evaluation is: - Using principles based on research to assess the usability of a system - A set of common UI components, patterns, and styles to promote reuse and provide a consistent user experience - A story-like textual description of a system's usage - A profile of a fictional potential user that helps you make user-centered decisions during development - A series of pictures shown in sequence to visualize the user experience and interaction
Using principles based on research to assess the usability of a system
Test-driven development includes which of the following steps - Using rigor and formality when developing software - Writing a test case before writing the functionality to allow it to pass - Coding with another person - Writing a test case to verify correctness immediately after each feature is implemented
Writing a test case before writing the functionality to allow it to pass
Based on his "No Silver Bullet" essay, which one of the following pieces of advice would Fred Brooks be least likely to give? - It is vital to invest in growing great software designers - We should not expect to get orders of magnitude improvement in software engineering just by building new languages and tools - It is impossible to accurately capture a customer's needs without prototyping - You should always build functionality yourself from scratch rather than reuse existing software that provides the functionality you need - It is best to build software in small, iterative chunks
You should always build functionality yourself from scratch rather than reuse existing software that provides the functionality you need
In software architecture, map the definitions on the left to the terminology on the right. - elements that handle interaction between the different parts of the architecture - elements that comprise functionality and/or computation - all elements of the architecture laid out in a specific way that describes the overall architecture (or architectural style) CHOICES: - clients - styles - component - connector - configuration
elements that handle interaction between the different parts of the architecture = connector elements that comprise functionality and/or computation = component all elements of the architecture laid out in a specific way that describes the overall architecture (or architectural style) = configuration
In white-box testing, branch coverage ensures that: - every possible path is taken - every loop boundary is tested - every True/False edge is taken - all possible inputs are tested - all possible exceptions are thrown
every True/False edge is taken
In white-box testing, statement coverage ensures that: - every possible path is taken - every source-code instruction is executed - all possible exceptions are thrown - every branch is taken - all possible inputs are tested
every source-code instruction is executed
In user-centered design, a storyboard is: - A profile of a fictional potential user that helps you make user-centered decisions during development - A series of pictures shown in sequence to visualize the user experience and interaction - Using principles based on research to assess the usability of a system - A story-like textual description of a system's usage - A set of common UI components, patterns, and styles to promote reuse and provide a consistent user experience
A series of pictures shown in sequence to visualize the user experience and interaction
In user-centered design, what are design guidelines? - A story-like textual description of a system's usage - A set of common UI components, patterns, and styles to promote reuse and provide a consistent user experience - A profile of a fictional potential user that helps you make user-centered decisions during development - Using principles based on research to assess the usability of a system - A series of pictures shown in sequence to visualize the user experience and interaction
A set of common UI components, patterns, and styles to promote reuse and provide a consistent user experience
Which of the following statements most naturally follows from Ziv's Law? - Modern requirements analysis techniques help us create requirements documents that are high quality and rarely need to change after they are written. - Functional requirements should be written at a level of abstraction that is relevant to the user, and that shows what kind of data is being passed between user and system. - Despite our best efforts, we must always assume that requirements will change and understanding will grow, resulting in changes to the requirements document. - A requirements document is the best way to represent requirements because its format makes it easy to understand for non-technical audiences. - Requirements documents are not amenable for specifying user interfaces, data formats, business rules, and non-functional requirements.
Despite our best efforts, we must always assume that requirements will change and understanding will grow, resulting in changes to the requirements document.
Which one of the following software process models involves the customer the most throughout the process? - Waterfall - Extreme Programming - Spiral - Incremental - Rational Unified Process (RUP)
Extreme Programming
In software engineering, to what does the term "refactoring" refer? - Adapting existing code to a new environment - Fixing bugs in existing code - Improving the design of existing code without changing its functionality - Testing and fixing bugs in existing code - Adding new features to existing code
Improving the design of existing code without changing its functionality
High coupling is - Many tight dependencies or associations across multiple components, and high levels of this is undesirable for a good design - Many tight dependencies or associations across multiple components, and high levels of this is desirable for a good design - Many tight dependencies or associations within a component, and high levels of this is desirable for a good design - Many tight dependencies or associations within a component, and high levels of this is undesirable for a good design
Many tight dependencies or associations across multiple components, and high levels of this is undesirable for a good design
High cohesion is - Many tight dependencies or associations across multiple components, and high levels of this is desirable for a good design - Many tight dependencies or associations within a component, and high levels of this is undesirable for a good design - Many tight dependencies or associations within a component, and high levels of this is desirable for a good design - Many tight dependencies or associations across multiple components, and high levels of this is undesirable for a good design
Many tight dependencies or associations within a component, and high levels of this is desirable for a good design
According to the IEEE definitions, match the terms on the left with the examples on the right. - Mistake - Fault / Bug - Error - Failure OPTIONS: - A line of code that should have contained ">=" actually contains ">" - During execution of the program, a variable's value is incorrect - A developer forgot that negative numbers need to be handled from the input - The output of the program reveals an incorrect value
Mistake = A developer forgot that negative numbers need to be handled from the input Fault / Bug = A line of code that should have contained ">=" actually contains ">" Error = During execution of the program, a variable's value is incorrect Failure = The output of the program reveals an incorrect value
When testing, when do we achieve 100% confidence that the program contains no bugs? - When the "sweet spot" has been reached for amount of testing and confidence in correctness - Never - When we exhaust our testing budget - When we achieve white-box coverage - When all planned test activities have been performed - When all specifications have been tested
Never
According to the Nielsen heuristics for assessing usability, match the heuristic on the left to their best examples on the right. - Recognition rather than recall - User control and freedom - Error prevention - Consistency and standards - Accelerators - Visibility of system status OPTIONS: - Progress bar during a file download - Disabling a button that, when clicked, would lead to an error condition - "Undo button" - Auto-complete - Keyboard shortcuts - A magnifying glass icon on a search button
Recognition rather than recall = Auto-complete User control and freedom = "Undo button" Error prevention = Disabling a button that, when clicked, would lead to an error condition Consistency and standards = A magnifying glass icon on a search button Accelerators = Keyboard shortcuts Visibility of system status = Progress bar during a file download
Which of the following statements about requirements is true? - Requirements describe how the software should work, without saying what it should do - Requirement issues are at the root of many software failures - The requirements phase is the most costly phase in the software life cycle, in terms of dollars spent - Requirements errors generally cause only minor problems in the resulting system. These problems are simple and cheap to fix - Requirements analysis/engineering should only be done once the architecture of the system has been designed
Requirement issues are at the root of many software failures
Requirements analysis could be performed in a number of ways. Which of the following is NOT a requirements analysis technique? - Gathering and utilizing data analytics - Interviewing the customer - Prototyping solutions and getting feedback from the customer - Researching other past solutions - Observing the customer - Software quality assurance techniques, such as testing
Software quality assurance techniques, such as testing
A descriptive architecture is necessarily... - The result of architectural erosion - The architecture that can be can always be inferred from the implementation - The architecture that the architect decides for the project to guide how the software will be designed and implemented - A disciplined set of dependencies among components that adheres to the envisioned architecture
The architecture that can be can always be inferred from the implementation
Which software development situation is the most common in the US? - All of these are equally common in the US - Software is developed mostly by geographically distributed volunteers, and the code is made available for free (open source) - Viruses, ransomware, and other malware are developed by bad guys in dark rooms wearing black hoodies and ski masks - The software development group in a company writes software for another department in the same company - A software development/consulting company is paid to develop software for a different company
The software development group in a company writes software for another department in the same company
What is the purpose of a UML class diagram? - To depict sequences of user interaction for soliciting feedback in early design - To show the goals that an actor has with a system - To create a detailed, object-oriented design of the code - To show what the user interface will look like - To create a data model to be implemented in a database schema
To create a detailed, object-oriented design of the code
The term requirements specification is used to refer to the process of documenting the requirements of the software product to be built. True or False?
True
Of which kinds of tests should there be the fewest in the collection of tests for a system? - There should be an equal amount of each kind of test - UI/system tests - Integration/service tests - Unit tests
UI/system tests
A detailed, object-oriented design is usually depicted as a(n): - Architecture diagram - UML use case diagram - Storyboard - UML class diagram - Entity relationship diagram
UML class diagram
Which of the following is not true about an architect? - Usually is a key decision maker on the direction of how to make difficult implementation choices - Usually is an entry-level position - Often leads the technical development team - Often serves as an interface between key business stakeholder and the technical team - Usually has broad training (in the domain and in software development)
Usually is an entry-level position
Test cases, informed by the specifications with an input and an expected output, is an example of: - Validation - Verification
Verification
Imagine you are creating a UML class diagram of an e-commerce system (such as Amazon.com) that sells items. Which of the following is most likely to be an operation of an Item class? - addToCart - description - logIn - fileSize - price
addToCart
Which of the following is a true statement: "Black box testing is..." - capable of proving there are no bugs - is also known as "structural testing" - based on the specifications of a system - based on the source code
based on the specifications of a system