Intro Software Engin
Summarize the quote by Edsger W. Dijkstra on testing and bugs.
"Testing can only prove the presence of bugs, not their absence."
When HCI/UCD is done well, Sales increase by ____% Traffic increases by ____% User performance increases by ____%
100 150 160
What is Uneven Distribution of Faults?
A program has an uneven fault distribution where certain code is more likely to crash/fail than other parts. Use of partitions can reveal these heavy fault locations and further testing.
What are 'elements' of Processes?
Activities/Phases Artifacts (ex: Process specification) Resources (People + Tools)
When are Testing and QA carried out?
Always
The following are what type of model: * Layered * Client Server * Model View Controller
Architecture Model
What is Exploratory Testing?
Basic properties: Unscripted, unautomated, unrepeatable. Revealing the interesting characteristics about a program's behavior. Less robust that scripted/automated testing and requires skill. Can be used to guide more Scripted testing procedures and is a good example of cost-benefit trade-off.
How many Essential Qualities for Software and what are they?
Four; Complexity Conformity Changeability Intangibility
What does HCI stand for?
Human Computer Interface
Software must be _____.
Software must VERIFIED.
What are the strengths and weaknesses of Waterfall Model?
Strengths: Disciplined Approach Document Driven Good when large number of individuals Has Feedback Loop during product development Weaknesses: 'Restricted' Delivered product may not meet client's needs.
Name the elements of User Testing:
Subjects The System Tasks The session Measures taken
What is TDD?
Test Driven Development Write tests first and then the code later. An AGILE technique that was derived from XP. Method: Write (initially failing) tests. Implement Functionality for Tests. (write the code) Test Functionality against tests. Iterate. BDD adopts this method, NOT THE OTHER WAY AROUND.
What is Incremental lifecycle? What is similar to and how is it different? Strength's and weaknesses?
The Incremental process is an iterative process that has a single requirements, specification, and architectural design phase. Afterwards, the incremental iteration begins. For each iteration/build, perform detailed design, implementation, and integration, test, and deliver to client. Strengths: Maximizes and early return on investment since first build will be quicker and promotes maintainability. Weaknesses: The architecture needs to be open for constant changes and may degenerate into a build & fix model.
What is the nature of Cost of Change in Software engineering?
The further you go in the phases, the more expensive it is to change. Analysis, Specification, Design, and Implementation have relatively low Cost of Change (< 2 units). Integration is ~3 units. Maintenance requires nearly 200 units.
What is Structural Testing also known as? Why do it?
Whitebox testing. Used to test the individual components that make up the structure of the program and improves confidence in code.
When going from programming to software engineering, the three most important factors discussed in class are, except for one: a) Architectures b) Processes c) People d) Tools
a
The following is one of the 6 basic engineering principles of QA: a) Invisibility b) Redundancy c) Reliability d) Accessibility e) Insensitivity f) All of the above
b
According to Brooks, the following are essential difficulties of software engineering, except: a) Conformity b) Changeability c) Complexity d) Complacency
d
The following are three important perspectives on software engineering except for one: a) Engineering Perspective b) Business Perspective c) Design Perspective d) Architecture Perspective
d
What is Agile? What did it evolve from?
Agile evolved from XP, SCRUM, Crystal, and others. XP was 'too extreme', reduces the programming-focus of XP and includes more traditional SE concepts such as processes and tools. Satisfies customers through early and continuous delivery of software and welcomes change into requirements when needed. Business individuals/clients and developers work together throughout the software's lifecycle.
What is BDD?
Behavior Driven Development. A special form of ACCEPTANCE TESTING that aids in testing and implementation. Method: Define behavior. Implement Functionality against behavior. Test Functionality against behavior. Iterate. Popular BDD Frameworks: Cucumber, JFrame, Jasmine.
What is another word for Specification-based testing? Why do it?
Blackbox testing. Tests the functional specifications of the program and ensures the program does what it does correctly. It is effective, widely applicable, and economical. (cheaper than whitebox testing)
Provide some examples of 'Processes'
Bug tracking, change approval, quality assurance.
Name the Software lifecycle models we discussed in class.
Build-and-Fix Waterfall Rapid Prototyping Incremental Sychronize-and-Stablize Spiral Rational Unified Process (RUP) Open Source Software (OSS) Extreme Programming (XP) Agile
How can the development process itself be improved?
Feedback from your current process and evolve the process based on changing requirements if required.
Differentiate Mistake, Fault, Error, and Failure
Mistake: A human action that produces an incorrect result. Fault: An anomaly in the source code of a program that MAY lead to an Error. Error: The RUNTIME EFFECT of executing a fault, which may cause a deviation from correct result or expected result. MAY lead to a Failure. Failure: The EXTERNAL visible manifestation of an Error. Mistake -> Fault(bug) -> Error -> Failure
What is the purpose of processes in Software Engineering?
Processes are used to cover all steps from initial idea & requirements to delivery, maintenance, and final retirement. Processes make sure we do the right things and we do the things right. Make sure we don't forget anything during development. Different Processes are used for different software.
What is the equation of a software product?
Product = People + Processes + Tools
The following are what type of model: * Waterfall * Prototype * Spirate
Software Process Model
How can we control the quality of successive releases?
Software constantly evolves and changes over time; as a result, the process itself must also be constantly change (Adapt and Evolve).
Software is ____ _______ no matter which developing technique is used.
Software is NEVER CORRECT no matter which developing technique is used.
What is 'Blackbox Testing'?
Testing that ignores the implementation of the internal mechanism and solely relies on input and output to determine testing result.
What is 'Whitebox Testing'?
Testing that takes into account the internal mechanism of a system or component.
What is User Acceptance Testing?
Tests meant to be done by PEOPLE - the users of the product. Not automated or scripted. Carried out against Requirements.
Explain the Synchronize and Stabilize model. What are its strengths and weaknesses.
The Synchronize and Stabilize model works with multiple teams that work in parallel on individual modules. The modules are then frequently synced between the teams and are frequently tested, debugged, and stabilized throughout development. Think of it as a 'parallel waterfall' model. Strengths: Ensures that future user's needs are met and ensures that components can be successfully integrated. Weaknesses: Has not been widely used by anyone else other than Microsoft. Requires a large number of people to work.
Name three reasons why Testing can be difficult?
There are many different quality requirements. Systems are constantly evolving and deteriorating. Uneven distribution of faults.
What particular techniques should be applies during development?
There is no panacea - there is a need for mixture of techniques. Different faults need different approaches and different testing approaches are needed at different times. Cost-benefit trade-off.
What is a 'Test Charter' and 'Result'. What are they part of?
They are part of Exploratory Testing. Test Charter is the MISSION of the testing and perhaps some techniques to be employed. Typically vague and Tester is assumed to have sufficient skill and knowledge of the system. ex: "I want to test ... against the ..." Result is the result of the questions stated above.
What are 'tools' in Software Engineering?
Things used to support people and the processes. Ranges from simple to advanced.
What are the constraints of Processes?
Time Cost Qualities (repeatable process?)
What is a 'spiral' model? Explain the quadrants. Strengths and weaknesses
Top right quadrant: Risk analysis and prototyping Top left quadrant: Determine objectives, alternatives, and constraints Bottom right quadrant: Phases in order of inner to outer Bottom left quadrant: Verification Strengths: Incorporates features of Waterfall, Rapid prototyping, incremental, and synchronize-and-stabilize. Weakness: Can be only used for large-scale projects and developers must be competent at risk analysis.
What does UCD stand for?
User Centered Design
Differentiate Validation and Verification?
Validation: "are we building the right machine?" Verification: "are we building the machine right?" Validation is based on requirements and verification is based on functional requirements and specifications.
How can we assess the readiness of a product?
We can never truly determine if a product is ready, but only 'enough' to be made commercial. This is due to the nature of bugs and limited resources on finding and fixing bugs. The produce is released generally based on QUALITY REQUIREMENTS established for the product.
As explained in Lecture, the best choice of a Persona, given the following options, would be: a. The famous author James Michener b. The famous athlete LeBron James c. The famous software engineer Fred Brooks d. The famous performer Garth Brooks e. The not-so-famous Joe Dailey
e
Behavior-driven development(BDD): a) part of and promoted by Agile software development process b) is part of Rational Unified Process c) Tests functionality against behavior defined in user stories or test cases d) Cucumber is a popular test framework e) All of the above
e
Exploratory testing: a) can reveal interesting characteristics of the program's behavior. b) Done primarily by people, usually cannot be done by automated or scripted programs. c) Relies on skilled people/testers. d) Is less robust than scripted/automated testing, but offers more control. e) All of the above
e
In addition to the name, a good Persona description should also include: a) A picture b) Persona's needs and wishes c) Personal description such as hobbies, dislikes, etc. d) Age, gender, etc. e) All of the above
e
Suppose you are designing a new software for a bank, with online banking, ATM services, and more features. Which one of the following is not considered a quality attribute(nonfunctional requirement) of the bank system: a) Security (Secure access) b) Usability (User friendliness) c) Performance Management d) Response time e) Withdraw and Deposit Money
e
The following people may read your use-case document: a) Project Managers b) Developers c) Testers d) Customer Representatives e) All of the above
e
When using a UNIX or Linux OS, you can start with a file, then filter some records, sort the remaining ones, then remove duplicate records. This architectural style is called: a) Publish-Subscribe b) Publish-or-Perish c) Object Oriented d) Filter-and-Pipe e) Pipe-and-Filter
e
_______ is a software architecture style: a) Visibility b) Invisibility c) Incremental d) Spiral e) Pipe and Filter
e
According to our charts, the cost of maintenance as a portion of the entire lifecycle, is: a) 1-10% of total cost b) 10-25% of total cost c) 25-50% of total cost d) 50-75% of total cost e) 75-100% of total cost
d
Agile software development is considered: a) Linear/Sequential/Rigid b) Risk-driven c) Heavy with detailed sub-flows for each sub-process d) Light and ideal for one or small team of developers
d
In the spiral lifecycle model: a) Testing is done as one big box towards the end of the lifecycle. b) Testing follows the V-model where each workflow has a corresponding test activity. c) Testing is an important and visible workflow, possibly included in every iteration. d) Testing takes place primarily on the bottom right quadrant of the cycle. e) Testing takes place primarily on the top left quadrant of the cycle.
d
Rational Unified Process is considered: a) Linear/Sequential/Rigid b) Risk-driven c) Heavy with detailed sub-flows for each sub-process d) Light and ideal for one or small team of developers
c
Suppose you are designing a new software for a bank, with online banking, ATM services, and more features. Which one of the following is not considered a functional requirement for the bank system: a) Customer Information Management b) Transaction Management c) Performance Management d) Account Management e) Withdraw and Deposit money
c
The following are among the six basic engineering principles of QA except: a) Visibility b) Redundancy c) Robustness d) Restriction e) Sensitivity
c
User Acceptance Testing: a) Is an example of verification, not validation. b)Tests primarily the functionality of your source code. c) Done primarily by people, usually cannot be scripted or automated. d) People primarily means skilled testers. e) All of the Above
c
______ is a software process model: a) Visibility b) Invisibility c) Incremental d) Spiral e) Pipe and Filter
c & d
Differentiate the following: Test Case Test Suite Test Oracle Test Plan What are their connection?
A Test Case is a group of input values that causes a program to take some action and return an expected output. A Test Suite is a COLLECTION of test cases. A Test Oracle is a MECHANISM for determining whether the actual behavior of a test case execution matches the expected/correct result. Test Plan: A DOCUMENT describing the scope, approach, resources, and schedule of intended testing activity.
Software testing and QA are important to: _____ the quality of the _____. _____ the quality of the _____. _____ the quality of the _____. _____ the quality of the _____.
ASSESS the quality of the PRODUCT. IMPROVE the quality of the PRODUCT. ASSESS the quality of the PROCESS. IMPROVE the quality of the PROCESS.
What are the four essential difficulties described by Brooks and explain each:
Complexity: Computers are inherently complex and have many states and does not scale up like other engineering disciplines. Conformity: Software exists in many arbitrary environments and must be able to conform to these external factors. Changeability: Software is continuously subject to change due to hardware/environment changes or new demands. Invisibility: Software is invisible and unvisualizable since it is a product of the ideas. As a result, it is difficult to represent as a diagram.
Name the 6 basic engineering principles of QA:
General Principles: 1) Partition: divide, conquer, and merge 2) Visibility: make information visible 3) Feedback: tuning the development process Software specific principles: 4) Redundancy: make intentions explicit 5) Sensitivity: fail early and every time, not sometimes 6) Restriction: make the problem easier
What are 'processes' in Software Engineering?
Guidelines used to organize and manage the efforts of many individuals. Processes can range from formal to informal.
What is Open Source Software?
Has only two informal phases: Initial Version and Evolve/Maintain. Continuously developed and maintained by users as well as developers.
Name as many HCI: User Centered Design Models (10 possible)
Interviews and Observations of End Users Personas Scenarios Swimming Lane Diagrams Storyboards Design Guidelines Site Map/Generalized Transition Network Wireframes and Mockups Heuristic Evaluation User Testing
What is 'Build-and-Fix'? Name strengths and weaknesses.
It is a software lifecycle model where the software is continuously developed and modified until client is satisfied. Strengths: Simple and straightforward Weaknesses: Not useful in the large scope of software engineering
When does quality engineering start? When is it complete.
It starts at the beginning and done only if the software is retired.
Fill in the blank for definition of software engineering: "Multi-____ ________ of multi-_____ _______"
Multi-person construction of multi-version software.
What is Extreme Programming?
Opposite to the rigid structured process of Waterfall; relies on simple practices to keep a team together and focuses more directly on programming principles to guide software development. (ex: pair programming and test-driven development) Only works with skilled programmers and small teams.
What are the three primary components of Software Engineering?
People, Processes, and Tools
What does 'QA' stand for?
Quality Assurance
What is a Rational Unified Process?
RUP is an iterative software process where all previously discussed 6 phases occur at the same time in different degrees based on progressive construction of software.
Consider Rapid Prototyping. What is it similar to and how so? How is it different from it? What does this model benefit from that the other doesn't? What is its weakness?
Rapid Prototyping is similar to Waterfall model, except the very first step is to Build and Discard a simple prototype of the software. This lifecycle process benefits from having a prototype that can be shown to client to ensure meeting client's needs. Unfortunately, this model requires the software to be built twice and cannot be always used based on the size of the project.
We discussed six phases in class, what are they?
Requirements Specification Design Implementation Integration Operations Retirement
"Companies do this successfully" and "Our students do this successfully" are part of which HCI design model?
Scenario
BDD vs TDD
TDD revived and encouraged testing again. TDD is still focused on tester and code. BDD pulls focus away from tester and code and puts focus on client and product behavior. Behaviors are part of SPECIFICATIONS and Code is part of IMPLEMENTATION
What are 'people' in Software Engineering?
The people who do the work. They can range from novice to experienced.
According to Brooks, the following are accidental "hopes for the silver", except: a) Invisibility b) Graphical Programming c) Automatic Programming d) Object-oriented Programming
a
According to our charts, if an error is made during requirements phase,and is still caught and fixed during requirements analysis, the cost is: a. Very minimal; one unit of cost b. More than 1, but less than 10 units of cost c. More than 10, but less than 100 units of cost d. More than 100 units of cost
a
According to our charts, the cost of specification as a portion of the entire lifecycle, is: a) 1-10% of total cost b) 10-25% of total cost c) 25-50% of total cost d) 50-75% of total cost e) 75-100% of total cost
a
Several stock trading platforms are receiving and reacting to the stock market data. This architectural style is called: a) Publish-Subscribe b) Publish-or-Perish c) Object Oriented d) Filter-and-Pipe e) Pipe-and-Filter
a
Test-driven development(TDD): a) part of and promoted by Agile software development process b) is part of Rational Unified Process c) Tests functionality against behavior defined in user stories or test cases d) Cucumber is a popular test framework e) All of the above
a
The Waterfall model is considered: a) Linear/Sequential/Rigid b) Risk-driven c) Heavy with detailed sub-flows for each sub-process d) Light and ideal for one or small team of developers
a
Software Engineering: a) is difficult b) Involves one developer working on an iPhone app c) Involves multiple people on multiple development teams d) Involves People, Processes, and Tools e) Follows the build-and-fix model
a, c, d
Of the following methods, the best one suited for visual representations of your user-centered designs is: a) Personas b) Scenarios c) Storyboards d) Interviews e) Observations
c
A failure is defined as: a) A human action that produces an incorrect result b) An anomaly in the source code of the program. c) The runtime effect of executing a fault, causing a deviation from correct or expected behavior. d) The external visible manifestation of an error.
b
According to our charts, if an error is made during requirements phase,and is later caught and fixed during software design, the cost is: a. Very minimal; one unit of cost b. More than 1, but less than 10 units of cost c. More than 10, but less than 100 units of cost d. More than 100 units of cost
b
The Spiral Model of Software development is considered: a) Linear/Sequential/Rigid b) Risk-driven c) Heavy with detailed sub-flows for each sub-process d) Light and ideal for one or small team of developers
b
_______ is the essential property of software. a) Visibility b) Invisibility c) Incremental d) Spiral e) Pipe and Filter
b
As covered in our User Orientation slides, an investment in HCI, if done well, offers returns in: a) Sales, traffic count, and user performance of 1% or more. b) Sales, traffic count, and user performance of 10% or more. c) Sales, traffic count, and user performance of 100% or more. d) Sales, traffic count, and user performance of 1000% or more.
c
As discussed in lecture, the following are well-known HCI methods except: a) Personas b) Scenarios c) UML diagrams d) Swimming lane diagrams e) Generalized transition networks
c
In a banking application, the Teller interface is separated from the Bank Rules, which are separated from Data Entities. This architectural style is called: a) Publish-Subscribe b) Publish-or-Perish c) Object Oriented d) Filter-and-Pipe e) Pipe-and-Filter
c