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?

A

Velocity

25
Q

Does Agile emphasize refining a working but incomplete prototype?

A

Yes.

26
Q

How often in Agile do you get feedback from the customer/boss? Is Agile an accepted practice?

A

You get feedback from each iteration, which is 1-2 weeks long. Now, Agile is an accepted practice, but it wasn’t before.

27
Q

What are the difference between software as a product and software as a service?

A

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
Q

How do App Stores make it easier to employ Agile Processes?

A

App stores continuously deliver value to the end users which makes this model of distribution perfect for Agile

29
Q

Why is Flutter a good fit for learning Software as a Product development?

A

It’s a complete SDK, software development kit

30
Q

What is refactoring?

A

refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior

31
Q

What are some of the benefits of working in Flutter in regards to refactoring?

A

-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
Q

Why do software projects fail?

A

-they don’t do what the customers really want, -they are late,
-they are over-budget,
-they are hard to maintain and evolve

33
Q

Why are some codebases hard to maintain and evolve?

A

-inelegant design
-old tech(COBOL, Fortran)
-lack of testing or insufficient test coverage

34
Q

What is Agile?

A

-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
Q

What is Behavior-Driven Design?

A

act of asking questions about the desired behavior in the application before and after the development to reduce miscommunication

36
Q

What are user stories?

A

requirements written down from the perspective of the user, that user story eventually becomes an automated/acceptance test

37
Q

When a test verifies the presence of a user story in the software, what type of test is it?

A

acceptance test

38
Q

What are the benefits of using sketching to validate user stories?

A

-see if you interpreted what they wanted correctly and if that is indeed what they want

39
Q

What are the benefits of creating high-fidelity user interfaces for your user stories?

A

it will give the customer an exact idea of how the application would look like

40
Q

Creating high-fidelity user interface designs helps you do outside-in development or inside-out development?

A

outside in development

41
Q

What are some tools you can use for low-fidelity prototypes?

A

drawings, sketches, index cards

42
Q

What are some tools you can use for high-fidelity prototypes?

A

software such as figma and adobe xd

43
Q

What is it called when new code breaks old code?

A

Regression

44
Q

What is the problem with manual testing?

A

it’s exhaustive, we cannot find all the errors in our code alone

45
Q

What is a test suite?

A

It is a set of tests that we write for our application to ensure it works.

46
Q

What are some of the benefits of automated testing?

A

-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
Q

Why is relying on a QA team to find and catch bugs an expensive mistake?

A

Humans will never be as effective or scalable as automated tests at catching regressions.

48
Q

What are the two major types of conceptual tests?

A

-Unit
-Integration

49
Q

How does testing enable confidence?

A

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
Q

If you are unsure of how an application is supposed to work, what is the best option?

A

Look at the test suite.

51
Q

What are the three steps to Test-Driven Development?

A

Red, Green, Refactor

52
Q

What is outside-in development? When should you use it?

A

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
Q

What is inside-out development? When should you use it?

A

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
Q

What are some of the benefits of Test-Driven Development?

A

-Confidence
-Time Savings
-Flow
-Improved Design

55
Q

When should you not use TDD?

A

-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
Q

What are the three types of tests in Flutter?

A

Integration Tests
Widget Tests
Unit Tests

57
Q

Why are integration tests in Flutter slow?

A

These open an emulator.

58
Q

What can unit testing be used for?

A

-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?