Theoretical Foundation Quiz Review Flashcards

1
Q

What is legacy code?

A

code that continues to meet the customers’ needs but is difficult to evolve and maintain

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What is beautiful code?

A

long-lasting code that is easy to evolve and meets the customers’ needs.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Why is it important to learn to deal with legacy code?

A

It might be difficult to rewrite old software

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What is quality assurance?

A

It is the process or standards that result in high quality products and improve the manufacturing process

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What is quality software?

A

It is software that meets the customers’ needs and is easy to evolve. Quality means “fitness for use.”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What does verification mean?

A

Did you build the thing right? Did you meet the specification?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What do we do to assure software quality?

A

Tests!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What is the approach that makes exhaustive testing feasible? Divide and ?

A

Divide and Conquer. We can significantly cut down the number of test cases by approaching the problem hierarchically.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What are the different types of tests: unit, …?

A

Unit Testing: makes sure a single procedure does what was expected
Module Testing: tests across individual units
Integration Testing: ensures that the interfaces between the units have consistent assumptions and communicate correctly,
System/Acceptance Testing: test to see if the integrated program meets its specifications
Widget Tests

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What is test coverage?

A

It is the percentage of lines of code that were run by the test suite.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What does regression testing mean?

A

It means automatically rerunning old tests so new changes don’t break old code.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What is continuous integration testing?

A

It is regression testing every time new code is added.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

How software engineering originated?

A

Margaret Hamilton used the term to distinguish it from hardware and other kinds of engineering

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What does Plan-and-Document mean?

A

Extensive Planning Up Front

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

The concept behind the P and D models. Why don’t P and D models work well?

A

The concept is extensive planning before you ever start coding and write detailed documentation.
The P&D models don’t work well because any changes require changes in the documentation, which means going over deadlines. Changes are inevitable in production.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What was a model that tried to fix it by prototypes?(Spiral) What is the bad part of Spiral?

A

The model was Spiral. The bad part was that it used iterations that were too long apart from each other.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Make sure you have read the Agile Manifesto

A

-Individuals and Interactions over Processes and Tools
-Working Software over Comprehensive Documentation
-Customer Collaboration over Contract Negotiation
-Responding to Change over Following Plans

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Who created the concept of Extreme Programming?

A

Kent Beck

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Does Extreme Programming advocate shorter or larger iterations?

A

Shorter iterations

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Does XP advocate writing tests before code or tests after code?

A

Writing tests before writing code, either using BDD or TDD

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Does XP advocate working alone or working in pairs?

A

Working in pairs

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

What doe Agile emphasize to reduce mistakes?

A

Test-Driven Development

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

What does Agile emphasize to validate customer requirements?

A

User Stories

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

What does Agile emphasize to measure progress?

25
Does Agile emphasize refining a working but incomplete prototype?
Yes.
26
How often in Agile do you get feedback from the customer/boss? Is Agile an accepted practice?
You get feedback from each iteration, which is 1-2 weeks long. Now, Agile is an accepted practice, but it wasn't before.
27
What are the difference between software as a product and software as a service?
SaaP: one physical copy of the software that works in one hw/os environment; slow upgrade cycles; if computer died, you lost your data; SaaS: distributing software in which the distributor hosts the application and makes it available to customers of the internet, client-server pattern in which a client makes a request and a server responds to the requests of many clients; one version of the application and it runs in the cloud; data stored in cloud; groups can easily share/collaborate; no compatibility for developers, users; upgrading means deploying the version in cloud; continuous customer feedback
28
How do App Stores make it easier to employ Agile Processes?
App stores continuously deliver value to the end users which makes this model of distribution perfect for Agile
29
Why is Flutter a good fit for learning Software as a Product development?
It's a complete SDK, software development kit
30
What is refactoring?
refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior
31
What are some of the benefits of working in Flutter in regards to refactoring?
-all refactoring techniques used in Dart code can also be applied to the UI; -functions can return UI; -you can create widget classes that can wrap and organize UI elements and encapsulate functionality; -you can specify your UI in different files and import them; -separate UI from logic and data (models & views)
32
Why do software projects fail?
-they don't do what the customers really want, -they are late, -they are over-budget, -they are hard to maintain and evolve
33
Why are some codebases hard to maintain and evolve?
-inelegant design -old tech(COBOL, Fortran) -lack of testing or insufficient test coverage
34
What is Agile?
-working closely, continuously with the customer to develop requirements and tests -maintaining a working prototype while deploying new features -checking with the customer on what's next to validate building the right thing
35
What is Behavior-Driven Design?
act of asking questions about the desired behavior in the application before and after the development to reduce miscommunication
36
What are user stories?
requirements written down from the perspective of the user, that user story eventually becomes an automated/acceptance test
37
When a test verifies the presence of a user story in the software, what type of test is it?
acceptance test
38
What are the benefits of using sketching to validate user stories?
-see if you interpreted what they wanted correctly and if that is indeed what they want
39
What are the benefits of creating high-fidelity user interfaces for your user stories?
it will give the customer an exact idea of how the application would look like
40
Creating high-fidelity user interface designs helps you do outside-in development or inside-out development?
outside in development
41
What are some tools you can use for low-fidelity prototypes?
drawings, sketches, index cards
42
What are some tools you can use for high-fidelity prototypes?
software such as figma and adobe xd
43
What is it called when new code breaks old code?
Regression
44
What is the problem with manual testing?
it's exhaustive, we cannot find all the errors in our code alone
45
What is a test suite?
It is a set of tests that we write for our application to ensure it works.
46
What are some of the benefits of automated testing?
-Catch bugs sooner and prevents them from being deployed -Reduces manpower to test an entire system -Doesn't require you leave your editor for testing
47
Why is relying on a QA team to find and catch bugs an expensive mistake?
Humans will never be as effective or scalable as automated tests at catching regressions.
48
What are the two major types of conceptual tests?
-Unit -Integration
49
How does testing enable confidence?
A good test suite allows you to make large, sweeping changes in your codebase without fearing you will break something. Confidence allows you to move faster.
50
If you are unsure of how an application is supposed to work, what is the best option?
Look at the test suite.
51
What are the three steps to Test-Driven Development?
Red, Green, Refactor
52
What is outside-in development? When should you use it?
Starts from the highest level of abstraction. From the perspective of the user walking through the application on their device, conceptually called an acceptance test, from a technical standpoint this is an integration test. As a feature is developed, you may need more lower level tests like unit test. Ensures no unnecessary code is written. I should use it when I have an understanding of how the user-interface will look and how the code will work ahead of time. The high-level test will guide the design of the feature all the way to completion.
53
What is inside-out development? When should you use it?
I should use it when I don't know what my user interface will look like. This helps build up the code component by component.
54
What are some of the benefits of Test-Driven Development?
-Confidence -Time Savings -Flow -Improved Design
55
When should you not use TDD?
-When you don't know what you are doing yet and you want to explore options with a quick implementation. This is called a spike. -The program is small and easy to test manually -The program will only be used for a short time then be thrown away -You don't care if the program works.
56
What are the three types of tests in Flutter?
Integration Tests Widget Tests Unit Tests
57
Why are integration tests in Flutter slow?
These open an emulator.
58
What can unit testing be used for?
-Check that we are able to create instances of the class when provided valid constructor - check that we are not able to create instances of the class when provided an invalid constructor -Does the function perform as expected under certain input/output combinations?