Bigger quiz
How does system/acceptance look like? Describe it
Testing how the process works from the user perspective When the user logs in, can they see the information they need to see? Can they do what they need to do?
How does system/acceptance look like? Describe the process
Testing how the process works from the user perspective When the user logs in, can they see the information they need to see? Can they do what they need to do?
How does unit testing look like? Describe the process
Testing one class only You test if the strings, integers, etc. all the data of the class are initialized correctly You test if the methods of the class work as intended
What is an example of low cohesion and high coupling? What is an example of high cohesion and low coupling?
The first one has more connections than the second one.
What are examples of systemwide decisions? What are examples of lower level decisions?
Systemwide: - Architecture - languages - libraries - platforms Lower level: - Identify problem - Identify solutions - Create abstractions - Evaluation
What are some benefits of designing a program
Simple• Inexpensive• Higher sales• Higher satisfaction• Higher efficiency• Benefit will shift from conversion (first-time customers) to loyalty (repeat customers)
Why do we have a box for the use cases?
This determines where the boundaries of what you're responsible for and what you're not responsible for when you design use cases. This is because sometimes you're not responsible for everything that goes on.
What is aggregation?
This is a relationship between two objects, where object B contains many of object A. This relationship is transitive and asymmetrical: 1. Transitive: If A is a subset of B and B is a subset of C, then A is a subset of C. 2. Asymmetric: If B is bigger than A, then A must be smaller than B. Example: a crate has a bunch of bottles
What is aggregation?
This is a relationship between two objects, where object B contains many of object A. This relationship is transitive and asymmetrical: 1. Transitive: If A is a subset of B and B is a subset of C, then A is a subset of C. 2. Asymmetric: There are many of A but only one of B Example: a crate has a bunch of bottles
What is composition?
This is aggregation with existence dependency. For example: - A house has two rooms. If you take away one room, you no longer have a house. - A beehive has many honeycombs. If you take away the honeycombs, you don't have a beehive anymore. How is this different from regular aggregation? If you take out bottles from a crate, you still have a crate. If there is composition, the crate must disappear.
Why is userbility engineering hard?
Usability design is based on• Psychology• Cognitive science• Aesthetics• Art• Software engineers are generally not the audience of the software they develop!
What is UCD?
User Centered Design
What is user regret? Give an example
User regret is when the user did something they didn't wanted to and wants to go back to the state before Example: Double error prevention: When you delete a file, it goes to the trash. User regret happens if they deleted this file unintentionally. It's double error prevention because you can still recover items in the trash if you'd like.
Definition of requirements
What software should do (instead of "how)
What is architecture erosion? (architectural erosion)
When a system evolves and its prescriptive architecture is not updated
What is condition coverage?
When all possibilities of a condition are tested For example: When testing "if a > b" we also want to take note of the other two possibilities: a = b a < b or a != b (maybe they're not the same type)
What is fault injection?
When all the exceptions that we want to be thrown at the right time, are indeed thrown at the right time
How do you show many to many relationships in UML diagrams?
You create an intermediary class which allows for the organization of the two. Example: It's difficult to express a direct relationship between a student and a professor, and this is even more difficult if you add more students and professor. You need to be specific about what you're trying to express in this relationship. Perhaps a class like enrollment or course information will help.
What is whitebox testing?
You have access to the code. (Structural based testing) Input -> system -> output -> see if output is correct And also Input -> system-> some coverage criteria -> stop Coverage criteria: Has this part of the method been hit?
What is the output?
a single number which is the average of the numbers on the input list, not counting the lowest number on the list
How do we know we're done testing?
You are done testing when: - You've revealed as many faults as possible in a fixed period of time with a fixed budget - You've targeted specific areas of the system - You've met the quality requirements established for the project
Q: What is the required period of failure-free operation for conventional takeoffs and landings of the F35 Joint Strike Fighter? a) 6,000 years b) 600 years c) 60 years d) 6 hours
d) 6 hours
Q: What is the required period of failure-free operation for conventional takeoffs and landings of the F35 Joint Strike Fighter?a) 6,000 yearsb) 600 yearsc) 60 yearsd) 6 hours
d) 6 hours
What are the benefits of inheritance?
avoiding redundancy, code reuse, testing, maintainability "at the right level of inheritance, you can abstract everything effectively"
How is Boundary Value Analysis similar to Equivalence Partitioning?
Boundary value analysis uses the same classes as equivalence partitioning, but tests at the boundaries of the classes, rather than just any element from the class
Different perspective of software engineering
Business Engineering User
Potential Silver Bullets
Buy vs. build Requirements refinement Rapid prototyping Incremental development Great designers
delete this
delete this
Why must we only have a small sample of test cases?
Because there are infinitely many ways to test something. We obviously cannot do everything. Therefore, the small sample of test cases that we need to make must matter.
Why must we only have a small sample of test cases?
Because there are infinitely many ways to test something. We obviously cannot do everything. Therefore, the small sample of test cases that we need to make must matter. Also, sometimes it can get repetitive so it wouldn't be meaningful to test everything.
Why is testing hard?
Because there's a infinite number of possibilities to choose from So we have to choose test cases that are reasonable
Why is it called blackbox testing?
Because you don't know what's in the blackbox (kind of like the blackbox of planes)
What is Moore's Law
the prediction that computing power roughly doubles every two years (and observation too)
Which fields is AI most commonly used in right now?
Cloud computing, data centers, and massive amounts of data. Deep machine learning using neural networks.
What are some benefits of "inspect and review"?
Code related: - Improve code quality - Improve code understandability - Find defects Team related: - Transfer knowledge - Explore alternative solutions - Improve the development process - Avoid breaking builds - Increase team awareness - Share code ownership - Team assessment: the team now has better judgement regarding what the developers are doing with the code
What is high cohesion?
Grouping should be related by functionality. Each grouping should be related with itself.
What is HCI?
Human Computer Interaction
What is an error?
Human mistake in the programmer's mind
What is the purpose of testing?
Detect and correct errors in a software product - Find and fix failures/faults/errors - Improve confidence that the system performs as specified (verification) and as desired (validation) - All in a manner that is: - Accurate - Thorough - Repeatable - Systematic
What are mockups and wireframes?
Drafts for how the screens of the application should look like
What are the sample skills of a UI/UX designer
Drawing• Color theory• Design basics• Typography• Logic• Art• History• Anthropology• Math• Programming• Information architecture• Research• Human behavior• User testing• Ideation• Prototyping• Communication• Collaboration
What's the difference between alternative and exception flows?
Example: Most e-commerce sites allow for a default shipping address, but if your billing address doesn't match your shipping address then that's an alternative flow. This is not an exception because there is no error.
What is an example of a flow step that is not allowed?
Example: Press the green button in the dropdown menu "What" not "how" Do not say anything that is too close to implementation/design decisions. What if tomorrow it's not green? What if tomorrow it's not a dropdown menu?
Why do we need Equivalence Class Partitioning?
If it fails/passes for one member of the class, it is likely to fail/pass for all members
What is the difference between Interviews and Observations?
Interviews: you actually talk to the people and you ask questions eg. what are your needs? what's weak right now? what tools or software that you're using that can potentially cause trouble? Observations: (complement information to interviews) What do you observe from what you've seen in this particular person?
How do we get to 100% confidence?
It's not possible Increasing the number of test cases with correct outputs -> Increases the confidence in the module being tested, but never 100%, just stays close to 100%
Software life cycle costs the most in the phase of
Maintenace
What is version control/source control?
Manages changes that people create over time
Is Moore's law coming to an end?
Maybe (atomic level!) However, Intel claims they will continue to follow Moore's Law (recently extending the interval to 2.5 years)
What is a test oracle?
Mechanism which decides whether a test has succeeded or failed (very difficult to automate) It compares the output and the expected output and tells the programmer "hey this passes the test" or "hey it doesn't pass the test"
What is coverage?
Literally: When a particular line of code has been reached Ideally: When a particular line of code has been reached for all the sensible possibilities of that piece of code
What are personas?
Personas are different types of people who may possibly be interested in using the program itself. This person must be relatable and real. Description: Brief description of the person. What is their name? Age? What do they do for fun? Goals: What do they want from the program? Tasks: How is he going to do that?
Describe some of the most common risks of software development management processes, and how to overcome them
Personnel shortfalls -> Staff with top talent, job matching, morale building Unrealistic schedules and budgets -> Detailed cost/schedule estimation, reuse, incremental development Developing the wrong software functions -> User surveys, prototyping Continuing stream of software changes -> Information hiding, incremental development Shortfalls in externally furnished components -> Compatibility analysis Shortfalls in externally performed tasks -> Reference checking, competitive design or prototyping
Who does the testing?
Programmers Testers Users - Acceptance testing - Alpha testing - Beta testing - Crowdsourcing/bug bounties
What is "help and documentation"?
(outdated but is still here) A section of the program where you're able to seek more help if necessary Example: chat bots/help bots Example: IKEA furniture. There is documentation of how IKEA furniture should be assembled, and it's considered a separate part of the website because of the way its purpose is quite different
How does the web work? WWW
- A collection of resources - Each resource has a unique name/URL - A URL can be used to determine the identity of a machine on the internet (origin server) then the resource can be obtained - Clients make requests for servers to get resources - Clients manipulate representations of resources - All communication between user agents and origin servers must be performed by a simple, generic protocol (HTTP) - All communication between user agents and origin servers must be fully self-contained (protected)
How can we move forward with testing?
- Aim to reveal as many faults as possible in a fixed period of time with a fixed budget - Target specific areas of the system - Aim to meet the quality requirements established for the project
What are some different approaches to software design?
- Architecture - Functional decomposition - Object-oriented design and UML - Relational database design - UI design
What is prescriptive architecture?
- Before implementation software design - as designed/as intended software architecture
Give examples of project estimation methods
- COCOMO - Function Point Estimation - Object-oriented Effort Estimation - Work Breakdown Structure (Dropbox article)
How are software architects and regular architects similar?
- Deals with a higher level of abstraction than those performing construction - Often serves as the interface to key business stakeholders/customers, so they have to be great leaders (good communication, decision making, leader) - Is T shaped (broad training but extensive experience in their specific role)
What is the purpose of testing?
- Detect and correct errors in a software product - Find and fix failures/faults/errors - Improve confidence that the system performs as specified (verification) and as desired (validation) All in a manner that is: - Accurate - Thorough - Repeatable - Systematic
What are the different relationships between sets?
- Inheritance - Association - Multiplicity - Whole-Part (Aggregation and Composition)
How do we choose test cases so that they are meaningful?
- Intuition - Specification (black-box testing) - Equivalence class partitioning - Boundary-value analysis - Code (white-box testing) - Path analysis - Existing test cases (regression testing) - Faults
How do we choose test cases so that they are meaningful?
- Intuition - Specification testing (black-box testing): does it return what we want it to return? - Equivalence class partitioning - Boundary-value analysis - Code (white-box testing): does it do the alternative thing we want it to do if we give it something different (like a mistake)? - Path analysis - Existing test cases (regression testing) ie. you've changed something and now you have to rerun your previous tests to see if everything still works or not - Choose tests that deal with expected faults
What are the effects that Moore's Law has created in the software engineering work?
- It's held up for almost 50 years - It's so "true" that it guides the semiconductor industry in long-term planning - May have reached its last stages with chips shrinking to the atomic level (But Intel claims they will continue to follow Moore's Law (recently extending the interval to 2.5 years))
What are some properties of the testing process?
- Largely automated - Exercises (tests) a module, a collection of module, or a system - Most modern languages have modules to help with testing (python unittest)
How does the testing process look like?
- Largely automated - Tests a module, a collection of module, or a system - Most modern languages have modules to help with testing (python unittest)
How do we determine the classes for the method of Equivalence Class Partitioning in testing?
- Looking at the requirements specification - Tester's intuition
Why do we need architecture in software engineering?
- Maintain control over the software (intellectually) - Conceptual integrity: the way a software product is expected to work should guide how its architecture is formed conceptually - Effective project communication (it's much easier to talk about it if we have abstracted structures which allow us to see what it's supposed to look like) - Reusability - Maintainability (management of a set of variant systems)
What are NASA's cardinal rules for safety (shortened version)?
- No single event or action shall be allowed to initiate a potentially hazardous event. - When an unsafe condition or command is detected, the system shall 1. Inhibit the potentially hazardous event sequence. 2. Initiate procedures or functions to bring the system to a predetermined "safe" state.
Who does the testing?
- Programmers - Testers - Users - Acceptance testing - Alpha testing - Beta testing - Crowdsourcing/bug bounties
What are examples of formal methods of "inspect and review"?
- Proof of correctness - Static analysis
What are some downsides of effort estimation?
- Requires a lot of experience and intelligence - Often requires data that doesn't exist - Often requires some design to already be done - Must always be updated to be correct
How are software architects and regular architects different?
- Software is different from buildings - Software is malleable. It's a machine. It's invisible. It's ellusive. - Sometimes the title is just given to the most senior developer - Software serves a much broader range of purposes - We know much more about buildings than software
How should scenarios be written?
- The scenario should start with one of the names of the personas - Personas can interact with each other if relevant - Looks more like a narrative than use cases (this is intentional)
What is an example of open source software?
- The web, email, version control, repositories, bug trackers - Ubuntu, Linux - Firefox - gcc compiler - Apache web servers - MySQL - WordPress
Why is the web special? (WWW)
- There is no single piece of code that implements the architecture - Stylistic constraints of the Web's architectural style are not apparent in the code - One of the world's most successful applications is only understood adequately from an architectural vantage point (architectural point of view) - All diagrams and text depicting the WWW's architecture is also known as the REST reference architecture
What are some examples of blackbox testing?
- Typical values - Boundary values - Special cases - Invalid input values: why did you push this button when you're not supposed to? this is something unexpected
Why NOT use use cases?
- UI/User Interfaces - Data format - Business rules - Non-functional requirements
What are the different levels of testing?
- Unit testing: Testing of a single code unit - Functional/integration testing: Testing of interfaces among integrated units - System/acceptance testing: Testing of complete system for satisfaction of requirements
What is descriptive architecture?
- after implementation - as implemented/as-realized architecture
What are the principles of minimalist design according to Nielson?
- contrast - repetition - alignment - proximity: The human brain connects proximity with relationship: if something is closer to something else, then they must be related to each other. You need to put things that are closely related close to each other.
What do use cases do that other requirements engineering methods don't?
1. Other engineering requirements method may not map well into code. The implementation of use cases is easier. 2. Use cases make it much easier to translate to acceptance tests, so it's easy to validate/verify whether or not the goal was reached 3. Use cases are framed in terms of user goals, and flows of event, whereas other tools can stray away from this purpose
What is an example of an architectural style?
1. PTP (peer to peer) 2. Client server 3. Pub-sub (publish subscribe) 4. Pipe and filter 5. MVC (model view controller) 6. Layered 6. Object-oriented
What is the process of error injection?
1. Pepper the code with defects and observe how many of the seeded defects are discovered 2. From this, infer how many bugs are left to find 3. This technique assumes that non-seeded defects are similar to the seeded ones
What is the general process for software design?
1. Requirements 2. Architecture and design 3. Implementation/code
Waterfall
1. Requirements (analysis/discovering and specification/describing) 2. Design 3. Implementation 4. Verification 5. Maintenance
What parts are modified from the waterfall model in software design?
1. Requirements (what) 2. Design (how) 3. Implementation 4. Verification 5. Maintenance
Ziv's law
1. UNPREDICTABLE: SD is unpredictable. The documented artifacts will never be fully understood (ex: requirements) 2. UNCERTAINTY: Uncertainty is inherent and inevitable in SE processes and products
How are corporations using open source software to their advantage?
1. Use open source software • Save money, avoid lock-in, provide business agility 2. Sponsor open source projects • Provide resources • Company benefits from the resulting product and the "brownie points" 3. Make corporate software open source
Traits of a requirements specification
1. WHAT: "what" the system should do (not how) 2. BASIS: basis for future developments 3. PREVENT: doing it right prevents costly changes later in the future 4. STRUCTURE: specific structure
When are use cases most effective?
1. You have a clear end user (Is there a user? or does this software just connect to other software? Or maybe it's manipulating data? etc.) 2. Functional requirements are clear
What are actors?
Representations of external entities that interact with the system
What are some factors that can affect the project estimation?
Requirements Application domain experience Process quality Project size Technology support Working environment
Top Software Failure Causes
Requirements issues: 1. Little input/involvement 2. Incomplete requirements/specifications 3. Changing requirements and specifications Rigor/formality issues 1. No discipline (in development processes) 2. No methodical metrics Resources: Lack of resources
What's a better word for actor and why?
Role: because actors aren't necessarily humans
What are some pros and cons of open source software?
Pros: - Accessibility -> huge user base -> novel features, higher quality code - Some of the greatest minds, motivated and working together to solve hard problems can result in huge advances Cons: • Not appropriate for proprietary software • Not appropriate for software with strict requirements and/or tight deadlines • Technical support/maintenance can be iffy • Developers are often not compensated financially • Loss of control/knowledge when reusing an OS component
Describe pros and cons of the spiral software development process
Pros: - Good for new projects with uncertain, complex requirements - Riskiest parts get developed first Cons: - Developers have to be competent at risk analysis - "End of project" may not be known
What is Boundary Value Analysis?
A blackbox test design technique that is based on testing on (instead of within) the boundary values of valid and invalid partitions Example: confusion between < and <=
What does the architecture of emails look like?
A client sends a request to a mail server, and mail servers communicate with each other
What does a static analysis entail?
A computer program analyzes source code and finds errors or defects in the code (without running the code) Results are reviewed by a person because many "errors" are not errors at all
What is extreme programming?
A development process that was created in reaction to Agile. The focus was more focused on coding and incremental testing
What is an activity diagram? How is it different from a sequence diagram?
A diagram to model the workflow of a system. Difference: - Sequence diagrams show the message flow from one object to another object - Activity diagrams shows the message flow from one activity to another.
What is a failure?
A difference from the expected result. This is the problem you observe while testing. (An external behavior/execution/output is incorrect, example: you expect the program to give you 6 but it only gave you 3)
What is a fault or defect?
A discrepancy in code example: you gave the user 6 tries but you should only have given them 3
What are failures usually caused by?
A lack of good quality assurance practices
What is a test oracle?
A mechanism for deciding whether a test case execution succeeds or fails (very difficult to automate
What is another way to present how to devise a test case?
A testing matrix with columns: 1. Test case/input 2. Subdomains (empty, one, small, large, etc, whatever divisions/partitions) 3. Expected output 4. Actual output
Which category employs the most computer programmers in the U. S.? A. In-house staff writing systems for internal use B. Games, apps, productivity software C. Consulting companies/contract programming D. Open source projects E. Creators of viruses and other malware
A. In house staff writing systems for internal use
What are use cases
A use case describes a set of flows that together accomplish a specific user "goal" A use case is a dialogue between actors and the system
How does Moore's law look like?
They are linear
What are flows?
A sequence of steps describing a single interaction between a "user" and a "system"
Why is program testing difficult? (this will be on the quiz)
"Program testing can be used to show the presence of bugs, but never to know their absence" - Dijkstra
What are some other definitions of software architecture?
"The set of STRUCTURES needed to REASON ABOUT THE SYSTEM, which comprise software ELEMENTS, RELATIONS among them, and PROPERTIES of both." [Clements, Bass, Kazman] "How your whole SYSTEM (in the widest possible sense) will be decomposed into processes or services; how DATA are STORED, COMMUNICATED, PROCESSED; and HOW ALL PARTS FIT TOGETHER to deliver the required FUNCTIONALITY, RELIABILITY, CAPACITY, SCALABILITY, MAINTAINABILITY, PORTABILITY. " [Spinellis] "The HIGHEST LEVEL breakdown of a system into its PARTS; the DECISIONS that are hard to change." [Fowler]
What does multi-version refer to?
- Each version has some shared files, and some files specific to that version - Versions may replace each other over time - A prior version may need to be examined or modified
Describe the process of developing open source software
- First, develop the initial version - Usually one or a small number of developers - Second, maintain (evolve) - Corrective maintenance - Perfective maintenance - Adaptive maintenance
What are the techniques of quality assurance?
- Formal methods - Static analysis of program properties - Reviews and inspections - Testing
Do actors have to be humans?
- Human - Hardware - Another software system - Databases
What is an architectural style?
1. A collection of architectural design decisions 2. that result in beneficial qualities 3. in each resulting system
What is software architecture?
1. A set of principal design decisions for the system 2. Blueprint for the system's construction as well as evolution
What are examples of design diagrams?
1. UML diagrams 2. UI mockups 3. Pseudocode (next section) 4. ER diagrams 5. Architecture diagrams 6. Storyboards 7. Sketches
What are the different types of flows?
1. Basic 2. Alternative 3. Exception
What is the purpose of design notation?
1. By relieving the brain of all unnecessary work 2. a good notation sets it free to concentrate on more advanced problems 3. and in effect increases the mental power of the race.
What are some pros and cons with whitebox testing?
1. Can be useful for identifying under-tested parts of a program 2. Can cover all nodes or edges without revealing obvious faults 3. Some nodes, edges, or loop combinations may be infeasible
What does high cohesion and low coupling help you achieve?
1. Changes don't propagate: if you change one thing then another thing won't be changed 2. Reuse is quite easily to happen, and therefore you can do less work
What are the different types of satisfaction?
1. Customer satisfaction (external) 2. Employee satisfaction (internal)
What are the different purposes of design?
1. Designs to think 2. Designs to talk 3. Designs to prescribe
Describe the Work Breakdown Structure project estimation method
1. Determine required external deliverables of the project 2. Identify tasks required to produce each deliverable 3. Estimate effort required for each task 4. Estimate productivity of personnel assigned to each task 5. Calculate the time required for each task 6. Create a project timeline of all tasks/resources
What are the steps to extreme programming?
1. Determine the desired features (stories) 2. Estimate the task, prioritize if need, refine 3. Implement/deliver each task (with test-driven development, pair programming, etc)
What is the basic process of testing?
1. Devise a test case (input) 2. Create an expected output 3. Run the test case 4. Capture the actual output 5. Compare the actual to expected If the actual output is equal to the expected output, the test case succeeds If the actual output
List the parts of a class
1. Name <- noun 2. Attributes <- noun 3. Operations (methods) <-verb
What should the UI show if there is an error? What shouldn't we do?
1. Notify them that there is an error 2. Show a way to possibly resolve it Bad example: "Hey dumb@$$ why did you do that?"
How do we devise a testing method for this example?
1. Identify the set of all possible inputs (to what is being tested) -> The set of all lists of integers 2. Identify a basis for subdividing the set of inputs -> length of the list, position of minimum score, number of minima, magnitude of numbers 3. Use this basis to divide the set of all possible inputs into subdomains 0 elements, 1, 2-10, 11+, first, middle, last, 1, a few, all, 0-33, 34-66, 67-100, mixed 4. From each subdomain, select [a] representative(s) to be [a] test case input(s) [], [87], [90,95,85], [80,81,82,83,84,85,86,87,88,89,90,91], [80,87,88,89], [87,88,80,89], [87,88,89,80], [80,87,88,89], [87,86,86,88], [88,88,88,88], [0,4,15,5,33], [47, 43, 58, 60, 34], [100, 67], [0, 35, 99]
What is the systematic approach to equivalence class partitioning/boundary value analysis?
1. Identify the set of all possible inputs (to what is being tested), aka "domain" 2. Identify a basis for subdividing the set of inputs ie. out of all the sample inputs, divide them into groups 3. Use this basis to divide the set of all possible inputs into classes/subdomains 4. From each subdomain, select [a] representative(s) to be [a] test case input(s) - One test case may suffice 5. Test for each subdomain - "Normal" values - Boundary or edge input values (Boundary Value Analysis)
What is software architecture?
1. Set of principal design 2. decisions about the system aka. the Blueprint for software construction and evolution
Describe inheritance, association, and aggregation
1. The derived class is everything from the base class with exceptions (but not the other way around) 2. Two classes affect each other (can be directional or not) 3. A class contains a collection of classes
What defines different software architecture styles?
A collection of design decisions that are 1. applicable in a given development context 2. constraints of design decision 3. result in beneficial qualities in each resulting system A named, commonly used set of components/connectors/configurations. Each component/connector has its own job
What is the input?
A list of numbers (integers) Scores must be between 0 and 100 (inclusive)
What are storyboards?
A rough visualization of how to use the application, similar to a scenario, but is manifested visually
Why is edge coverage more thorough than node coverage? (Edge coverage is also called branch coverage)
Because the process to reaching edge coverage is more thorough than node coverage
What is abstraction?
Abstractions are formed by removing irrelevant information and retaining/highlighting relevant information Every design notation supports a certain kind of abstraction Software engineering is all about constructing and elaborating abstractions/models
Why were there development processes that were created as a reaction to Agile?
Agile was bad: • Lengthy development times • Inability to cope with changing requirements • Assumption that requirements are completely understood before the project begins • Too much reliance on heroic development effort • Complex methodology • Waste/duplication of effort
What is quality assurance?
All activities designed to measure and improve quality in a product
What is a failure?
An external behavior/execution/output is incorrect example: you gave the user 6 tries but they only did 3
What's the difference between basic and alternative flows?
As soon as you're deviating from the most effective and efficient way, it's an alternative flow.
Describe the sweet spot for the number of test cases
As the number of test case with correct outputs increase, the confidence in the module being tested increases This confidence 100% and but never really reaches 100% (because we cannot test for everything) The sweet spot is likely to be somewhere before the confidence starts to become flat against the 100%, so maybe 80% is ok
Why is edge coverage more thorough than node coverage? (Edge coverage is also called branch coverage)
Because the process to reaching edge coverage is more thorough than node coverage Because it reveals more logical errors
Why do observations exist?
Because interviews are not enough: you're talking to other human beings and therefore there could be faults in the communication. If you simply observe somebody do what their doing, you get more out of your interaction with them than just asking them what you want to ask
Why is measuring by lines of code bad?
Because it says nothing about other performance measures: memory, time, efficiency, etc.
What are the requirements of the classes for the method of Equivalence Class Partitioning in testing?
Classes - should cover the complete input domain - should never overlap
Give an example (and explain the example) of a pipe and filter software architecture
Compilers/Unix program (output of one program is input of another) Goals - Translate a high-level programming language into a low-level one that computer can execut - Separate different steps of translation so I can add/edit/remove/replace steps easily
Essential properties of software
Complexity Conformity Changeability Invisibility
What is pipe-and filter?
Components = filters: transforms/filters the data it receives via the pipes with which it is connected, a filter can have any number of inputs and any number of output pipes Connectors = pipes: the connector that passes data from one filter to the next, a directional stream of data usually implemented by a data buffer to store all data until the next filter can process it Pump: producer/source of data. It can be a static file, or keyboard input continuously creating new data Sink/consumer: data target, ie. another file/database, or computer screen
UML class diagrams are an example of what?
Design notations
Verification
Does it conform to specifications?
Validation
Does it serve its purpose?
What are some examples of project estimates?
Effort (person months) Duration (calendar months) Cost (dollars) KLOC (thousands of lines of code)
What is a basic flow?
Events are intended to occur in the best possible/most expedient/efficient way and then you have a "happy day"
How are project estimations created?
Factors -> Estimation method -> Project estimates
What are post-conditions?
Explicit conditions that are stated after the use case exited
Inf 43 principles of software engineering
Generality Rigor/formality Anticipation of change Separation of concerns (modularity, divide and conquer, abstraction) Incrementality
Is quality assurance high level or low level? Why?
High level, because it's supposed to apply to a broad range of things that are related to the product Also: it comes from other fields of science and engineering and not from software
"False" Silver Bullets
High-level languages Time-sharing Unified programming environments Object-oriented programming Artificial intelligence Expert systems Automatic/graphical programming Program verification Environments/tools Workstations
What is an example of a failure? How does this look in code?
If you make an error, but that error never goes forward in a meaningful way, then we have a failure ie. The user makes a mistake -> the program doesn't expect this mistake to be made -> The chunk of code that deals with the mistake is never executed (because the expectation is never implemented)
What is code that is uncovered?
If you make an error, but that error never goes forward in a meaningful way, then we never have a failure The part that has the fault will never be executed
Describe the spiral software development process
Imagine if the waterfall was a spiral instead
What is "inspection and review"? What does inspection entail? what does review entail?
Inspection and review is a human process where test users will inspect the program for faults, and review it for its quality Inspect: humans look for defects in program Review: humans document defects of program This process is surprisingly effective at getting defects
What's an example of Moore's law?
Intel P4004 from 1969 2,300 transistors, 108 kHz clock speed Intel Core i7 from 2010 731,000,000 transistors, 3.06 GHz clock speed
What does whitebox testing do that blackbox testing cannot?
It can test for: Performance Response time Memory
What is special of a sequence diagram?
It contains the instances of a class
What is special about a sequence diagram?
It contains the instances of a class ie an element of time
How long does it take to do testing?
It depends on the type of tests The more isolated = the faster it will be (unit tests are the fastest) The more integration = the slower it will be (system tests are the slowest)
What is the purpose of design notation?
It helps supports a specific particular abstraction
How does functional/integration testing look like? Describe the process
Module A and module B both pass their unit tests Module A is supposed to interact with module B in a particular way and produce a particular result We will test whether or not the result of module A's interaction with module B goes as expected Example: Your program works as a web app on this laptop, but does it work with other devices and platforms?
Are entity relationship diagrams included in UML diagrams?
No
Can you describe scenarios without describing personas? Does the other way around work?
No, and yes
If a program passes all the tests necessary, is it necessarily correct?
No, because the tests can be wrong
List the different types of coverage
Node/statement coverage Edge/branch coverage Loop coverage Condition coverage Path coverage
What's important to keep in mind (as a programmer) about the failure in your program? Give an example
Not every error that the user makes is because of a fault in the code "they are related but they are different things" ie. pressing cancel on something that's not supposed to be cancelled
Why is it bad if you don't find bugs?
Not getting a bug doesn't mean that there is no bug
What is heuristic evaluation?
Not in the technical sense An expert critique that tests a product against a set of design guidelines. Identifying problems and opportunities. Example: the top 10 principles for good UI/UX design by jacob nielsen
What are pre-conditions?
Note: you can still write this in words even though you can write in Boolean algebra What is the condition that the system is in before the use case even enters? Example: The user is already logged into whatever online banking system before this use case can even happen
How does functional/integration testing look like? Describe the process
On a bigger level, does the unit testing work? If we wanted to use the classes from the unit testing, can we do that with other devices? With other platforms? And reuse them?
Examples of multiplicity?
One to one, one to many, zero to many, many to many
How can we split the UCD methods?
Part 1: - Interviews and observations of end users - Personas - Scenarios - Storyboards Part 2: - Wireframes and Mockups - Design guidelines - Heuristic Evaluation - User testing This is because the appearance of screens only come up during wireframes and mockups and after
Give an example of why we need quality assurance.
Poor software results in poor results. In a medical setting, if a piece of software is supposed to accurately show the level of say, iron, in a person's blood, and it inaccurately does so, then the person might be misdiagnosed.
What are examples of basis (basises?) to subdivide the set of inputs?
Possible bases - Size/magnitude - Structure - Correctness - Your creative thinking
What is blackbox testing?
Pretend you don't have access to the code. (Specification based testing) Input -> system -> output -> see if output is correct
What is error prevention?
Preventing the user from doing something that they don't want to do Example: Do you want to save the changes made to the document? The user can click on don't save, cancel, and save. Don't save and cancel are the same, but we want this redundancy so that the user can be sure what is happened.
What is pub-sub?
Publish-subscribe: publishers send a message to a connector, and the connector sends it out to the subscribers (components)
What is "recognition rather than recall"? Give an example. Tell me why do we need this term.
Recognition rather than recall is a phrase that describes the priority of being able to recognize it rather than recalling it. For example: when you search for the font in Microsoft Word, the name of the font itself is written in the font itself. Why do we need this? Because recognition is faster than recall.
Give an example (and explain the example) of a layered software architecture
Restaurants: Goals: - Prepare and serve food to customers - Enforce a specific protocol of interaction - abstract away irrelevant details - minimize the effects of changes - Separate concerns: keep each part focused on a specific task The customer doesn't know how the food is doing The waiter doesn't know how the chef cooks The chef doesn't know how to grow ingredients etc. Android: 1. Applications 2. Application frameworks (Notification manager, resource manager, view system, content providers, windows manager, etc) 3. Libraries/Android runtime (SQL/Core libraries) 4. Linux kernel (USB/audio/wifi drivers etc)
Where are Ai related fields being done?
Right now this is all done in massive data centers, but as chips become smaller this could move to personal machines/devices
Desired Software "ilities" (Qualities)
SIR CRUMPERMS Scalability Interoperability Robustness Correctness Reliability Usability Portability Efficiency Reusability Maintainability Security
Give an example (and explain the example) of a peer-to-peer software architecture
Skype one person -> next person -> next person like a graph
What is software engineering?
Software engineering is 1. the process of building a set of related models 2. that represent the system-to-be
Why is functionality inadequate of a word to describe requirements?
Software engineers recognize a "function" in a programming sense rather than a "feature" sense. The basic definition of requirements is "what" the system should do and not "how", therefore this particular word might seem confusing.
What is Open Source Software?
Source code is freely available and (usually) re-distributable - Many contributors working in a distributed manner - Often volunteers - Heavy reliance on software tools - Scales up amazingly well Where do they find the time?
Give an example (and explain the example) of a pub-sub software architecture
Stock market -> Subscription manager -> Trader 1, 2, 3 etc Mixing styles is often necessary: Server -> database ->purchasing rules (loop) But also server sends to subscribers too: Server -> subscription manager -> Trader 1, 2, 3
What's important to keep in mind (as a programmer) about the mistakes in your program? (hint: error, failure, fault)
That error failure and fault can happen independently and can happen dependently as well. But more importantly: mot every error that the user makes is because of a fault in the code "they are related but they are different things" ie. it's not your fault that the user pressed cancelled when the user didn't mean to press cancel
What is a fault or defect?
The cause of the failure, best understood as a discrepancy in code (example: the user gives the program 6 and expects 6 to be returned, but only 3 was returned. the fault is whatever the specific piece of code in the program that is responsible for this)
What is a graph's edge?
The connection between two nodes
Why were entity relationship diagrams made?
The diagram is for data representation purposes.
What is an alternative flow?
The goal is achieved, but in an alternative way.
What is an exception flow?
The goal is not achieved, what do we do now?
What's a benefit of UML class diagrams?
The mapping to implementation is very straightfoward
What is an error?
The mistake which caused the fault to occur. e.g, typos. (Human mistake in the programmer's mind)
How does the type of testing affect the time needed to test the program?
The more isolated = the faster it will be (unit tests are the fastest) The more integration = the slower it will be (system tests are the slowest)
How do we know when we are done with testing in a numerical way?
The number of problems found per day will probably follow a normal distribution, and you can stop when this number goes down to 0 "According to Dijkstra, you can never reach 0"
What are availability goals?
The percentage of the time a program should be available example: 99.99% of the time, Google will be available to use 1 failure for every 10,000 runs = One cumulative hour of downtime per year = One minute of downtime per week
What are availability goals?
The percentage of the time a program should be available example: 99.99% of the time, Google will be available to use ie. 1 failure for every 10,000 runs One cumulative hour of downtime per year or One minute of downtime per week
What is Equivalence Class Partitioning?
The process of dividing the input into several classes that are considered "equivalent" for the purposes of finding errors
What are design guidelines?
The standards or guidelines for your application to be launched. For example, the icon in your iPhone app must be of that specific size, and they must be accessible for colorblind people. Or: the magnifying glass button must be used for "search" and nothing else.
What is user control and freedom?
The user should be able to go back Example: The user sees that the books cause $300 and therefore they don't want to buy it anymore. They should be able to do that.
What is inheritance?
There is a base class and a derived class. If the base class has some relationship with a third class, the derived class also inherits this relationship. Example: A person lives at some address. Students and professors are people. Because they are people, they can also live at some address.
What is a primary actor?
This is any given actor that can initiate the use cases and therefore invoke a certain functionality within the system
Why are sketches helpful for
This is easier for people who are not programming oriented to think about things
What does a proof of correctness entail?
This is when somebody mathematically verifies your program as working using some sort of design notation like UML graphs Note that this is laborious and it's usually done with formal specifications for verification purposes only
What is architectural erosion?
This occurs when the Prescriptive and Descriptive architecture do not match. This often happens when there's a hardware update and the software no longer works on the intended hardware. Prescriptive: what the software is meant to do Descriptive: what the program is currently doing
What does the term multi-person refer to?
This term refers to - When working in a group setting for the same code/same files - When people need to access each other's files - When people "step over each other's toes" and rewrite other's code
What is the purpose of error injection?
To assure that your testing method and testing process works. To build confidence in your testing process, and not just your code.
What is the purpose of use cases?
To describe a set of flows that together accomplishes a specific user "goal"
What are scenarios?
To imagine a case how different personas may interact with each other, through the medium of your program Almost identical to use cases but it's a different purpose For example: While Blake is searching the Internet to find out if there are any local theaters playing a newly released independent film, he finds the profile page for the film which is also released on MyFlix. Excited that he can watch it and similar films in the comfort of his apartment, he creates an account and begins paying the regular monthly fee. He accesses his account from his TV's browser and is able to stream the movie.
What is low coupling?
Ungrouping should be unrelated to functionality. This reduces interdependency.
What does unit testing specifically test?
Unit tests are focused on testing one class only You test if the strings, integers, etc. all the data of the class are initialized correctly You test if the methods of the class work as intended
What are the different categories of UML diagrams?
Use case Sequence Activity Class diagrams
What do UML diagrams include?
Use case diagrams Sequence diagrams Activity diagrams
What is UAT?
User Acceptance Testing
What is Nielson's heuristic evaluation?
Visibility of system status Match system words to the real world User control and freedom Consistency and standards Error prevention Recognition rather than recall Accelerators Minimalist design Help users recognize and recover from errors Help and documentation
What are accelerators?
Ways to type which allows for the action of something to occur faster Example: hotkeys, control f control c tab etc.
Why do we need different personas? Why do we need similar personas? Explain why
We need different personas because we want to see which target audiences we want to target, and we can treat them as groups for how we can target people We needs similar personas because sometimes our program is only meant to be used by these certain people. For example, if all your personas are over 18, then it's likely that the app is only meant for people over 18.
What is an example of a Nielson principle in practice?
When the program is loading something, there should be a visual that says loading, and a visual bar to see how much it has loaded until 100%
What is edge coverage?
When the program reaches coverage for every edge
What is loop coverage?
When the program reaches coverage for every loop boundary and the loop interior. The loop boundary and the loop interior is fully tested
What is node coverage (also called statement coverage)?
When the program reaches coverage for every node in the graph
What is path coverage? Is it feasible to test every single path possible?
When we select test cases where all the paths in a particular graph has been visited No: 1. Loops are a problem, though it's possible but time consuming 2. It's possible but time consuming even without loops because it's likely that you don't even need that much anyways
Which UCD method includes screens?
Wireframes and mockups
What is another name for extreme programming
XP
Can multiple flows occur at once?
Yes
Can you have multiple alternative/exception flows?
Yes
Does all software have bugs?
Yes
Is Moore's Law true?
Yes
Should a use case capture unsuccessful flows too?
Yes
How does Moore's law affect us? (us softwrae engineers)
You need to be able to take advantage of the processing speed so that the applications are better
something
something else
What do use cases include?
• Basic functionality/goal • Any precondition • Flow of events • Any postcondition • Any error condition and/or alternative flow
What are some pros of Agile?
• Customer (and developer) satisfaction • Adaptable to changing circumstances • Good for projects with unclear, changing requirements • Good for small teams
What are some cons of Agile?
• Lack of documentation • Unstable requirements • Technical debt • Not ideal for big teams • Not ideal for critical safety requirements • Not ideal for projects where customer involvement isn't possible
List some practices and principals of Extreme Programming
• Small releases • Customer tests • Simple design • Pair programming • Test-driven development • Design improvement • Continuous integration • Collective code ownership • Coding standards • Metaphor • Sustainable pace/developer welfare • Open space • Shared understanding • Rapid, fine feedback
Give some applications of AI
• Social media • Spam filtering • Virtual personal assistants • Fraud detection • Financial trading • Games • Medicine • TAs?
Describe pros and cons of the Rational Unified Process (RUP) software development process
• Strengths • Risk-driven, incremental • Lots of tool support • Provides a lot of guidance • Weaknesses • Needs special expertise to implement
Describe the Rational Unified Process software development process
• Use case driven • Architecture centric • Iterative and incremental
How do you build a use case?
•Name use case •Describe Basic Flow •Add variations, if applicable •Alternative Flows •Exception Flows