CSE 110 Midterm 2 Study Flashcards

0.0(0)
studied byStudied by 0 people
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/91

flashcard set

Earn XP

Description and Tags

Study things for the CSE110 midterm this evening. Good luck!

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

92 Terms

1
New cards

What are the 4 key Agile values from Extreme Programming (XP)?

Communication, Feedback, Simplicity, and Courage

2
New cards

What does XP stand for in this course?

Extreme Programming

3
New cards

Of “Individuals and Interactions” and “Process and Tools”, what does the XP manifesto prefer?

Individuals and Interactions

4
New cards

Of “Working Software” and “Comprehensive Documentation”, what does the XP manifesto prefer?

Working Software

5
New cards

Of “Contract Negotiation” and “Customer Collaboration”, what does the XP manifesto prefer?

Customer Collaboration

6
New cards

Of “Following a Plan” and “Responding to Change”, what does the XP manifesto prefer?

Responding to Change

7
New cards

At its heart, Agile is about (quality/speed), (customer focus/reliability), (communication/documentation), (self organization/team organization), good (planning/tech and design), keeping it (real/simple) and dealing with (previous commitments/change).

speed, customer focus, communication, self organization, tech and design, keeping it simple, dealing with change

8
New cards

What are the 12 main points of the Agile manifesto?

  1. Customer Satisfaction by rapid delivery of software

  2. Welcoming changing requirements even late in development

  3. Working software is delivered frequently (weeks, not months)

  4. Working software is the principal measure or progress

  5. Sustainable development, able to maintain a constant pace

  6. Close, daily cooperation between business people and developers

  7. Face-to-face conversation is the best form of communication (co-location)

  8. Projects are built around motivated individuals, who should be trusted

  9. Continuous attention to technical excellence and good design

  10. Simplicity - the art of maximizing the amount of work not done - is essential

  11. Self-organizing teams

    1. Regular adaptation to changing circumstances

9
New cards

What is one major bias in the Agile manifesto?

Preference towards the corporate customer over the end user

10
New cards

Daily standups should be (thorough/short) meetings discussing what you want/need to do, any (new tasks/blockers), and group (alignment/participation).

short, blockers, alignment

11
New cards

What is the general format for a user story?

“As a [user who is focus of story] I want [to accomplish the goal of the story] so that [reason for story]”.

12
New cards

What is a backlog in Agile?

A collection of user stories that have been defined for the product. It contains what you will eventually do, but should be limited and more detailed to current workloads.

13
New cards

What is a sprint in Agile?

A time box to conduct work under. They are used to create a particular cadence and segment work into sections.

14
New cards

The word “sprint” typically implies speed, getting things done as fast as possible. Is this applicable to Agile?

Yes, but it is not a main point. It is meant to maintain velocity, but if overused, may lead to burnout and high turnover.

15
New cards

A sprint planning session is a (shorter/longer) meeting where developers choose (new/backlog) items to work on. Choosing what to work on is (team/developer)-oriented and typically uses a “virtual currency” such as ____________.

longer, backlog, team, story points

16
New cards

What are story points in Agile?

A unit of measurement to assign tasks sizes, in terms of the effort needed to complete them.

17
New cards

What is a Burn Down Chart in Agile?

A graphical representation of work left to do versus time, used to track progress in a sprint or project.

18
New cards

A Sprint Review in Agile is a form of (show and tell/retrospective) that discusses what (went wrong/was completed) and how the team worked together.

show and tell, was completed

19
New cards

A Retrospective in Agile is where we (look back/look forwards) and discuss (issues/features) and how to (add them/fix them).

look back, issues, fix them.

20
New cards

Is Agile a fixed standard, or does it differ between companies?

Agile is not a fixed standard; it can differ significantly between companies based on their specific processes, cultures, and project needs. Agile principles allow for flexibility and adaptability in implementation.

21
New cards

What is an Andon Cord?

Analogous to a physical pull-cord on an assembly line, this is a signal to stop production and address a problem or defect in the workflow.

22
New cards

In Agile, should sprints be fixed length or could sprint length vary?

Spring length may vary depending on workload.

23
New cards

What does it mean to have an assignment rotation pattern?

Changing the work assigned to developers to prevent burnout from repetition.

24
New cards

Why is planning cheaper/faster than coding?

It is easier to modify sketches/outlines than to refactor existing pieces of code.Planning allows for adjustments early on, reducing costs and time associated with coding errors. Wh

25
New cards

What are the 5 Ws and 1 H of requirements?

Who, What, When, Where, Why and How

26
New cards

If you skip the requirements, what fills that gap?

Assumptions, which in turn become requirements.

27
New cards

Users (are/are not) developers, so getting requirements from people is (hard/easy).

are not, hard

28
New cards

What are the 17 -ilities covered in this course?

Usability, Maintainability, Scalability, Availability, Reliability, Portability, Testability, Flexibility, Interoperability, Reusability, Security, Performance, Stability, Accessibility, Compatibility, Configurability, and Modularity.

29
New cards

What are the 8 main -ilities covered in this course?

Functionality, Performance, Compatibility, Usability, Reliability, Security, Maintainability, and Portability

30
New cards

What is the difference between quantitative and qualitative requirements?

Quantitative requirements provide some value to aim for (ex. RAIL), while qualitative requirements only specifiy some broad quality to aim for (ex. must look clean and modern).

31
New cards

What should you do if you recieve a qualitative requirement?

Attempt to put some quantitative backing to it. For example, “High Security” becomes “No major vulnerabilities discovered during code scan”.

32
New cards

What is the required formality level for documentation?

It varies, but consistently mediocre documentation applied across the board typically beats inconsistent, but occasionally perfect documentation.

33
New cards

Should you focus on users or features?

Users. Users typically think in needs, wants, or “thinks they have to get done”. One way to think of this is “I use <thing> because it helps me do <outcome>”.

34
New cards

What is the difference between a System Model and a User Model?

The System Model outlines the software as data and features, which is helpful for organizing code. The User Model focuses on how users will actually use features and how to organize based on typical user preferences.

35
New cards

What is an SSOT?

A Single Source of Truth - a place where important information and requirements for the projects are documented. If these are spread out, they are unlikely to be acted on.

36
New cards

What are the main segments architecture planning should cover?

Things which are most important and most difficult to change.W

37
New cards

What are some -ilities that architecture affects?

Availability, Maintainability, Usability, Security, Performance, Reliability, Satisfiability

38
New cards

Should the -ilities drive architecture, or should architecture guide the -ilities?

The -ilities should drive the decisions made at the architectural stage.

39
New cards

What were the two in-class examples provided that demonstrated failure after successful architecture and success after failing architecture?

Success after failing architecture: Sydney Opera House, terrible acoustics so they built a building inside the building
Failure after successful architecture: Death Star, planned thoroughly but disintegrated by an architectural flaw

40
New cards

Should architectural designers interact with the code?

Yes, they should either have discussion with those who work with the code, or ideally work with the code hands-on themselves.

41
New cards

What is Tech Debt?

Short term decisions from previous development tend to add up over time to larger assumptions and boundaries.

42
New cards

Is tech debt inherently bad?

Not necessarily. It may be fine for some short term gain to meet a deadline or requirement, as long as that debt is paid off eventually.

43
New cards

What does GETS stand for?

“Good Enough To Ship”. It is a minimal requirement of functionality to get the code going without proper architectural function, typically accumulating large amounts of tech debt.

44
New cards

Should we aim for perfection?

No. We should aim for close to perfection, but perfect products likely will not stay perfect forever. Future changes, premature optimization/abstraction and early automation can lead to even more problems.

45
New cards

What does Form Follows Function mean?

The system should be defined as what it should do for the user, the looks and feel of the system come afterwards.

46
New cards

What does YAGNI stand for?

“You Ain’t Gonna Need It” - Keep a reasonable feature set, limit abstraction, and use simple tools because you likely won’t need more.

47
New cards

What does KISS stand for?

Keep It Super Simple/Keep It Simple Stupid/similar, limit the complexity of projects to avoid complexity explosion (remember Grug)

48
New cards

What does DRY stand for?

“Don’t Repeat Yourself” - Keep a SSOT, avoid code duplication.

49
New cards

What does it mean to embrace tradeoffs?

You usually can’t have everything - see the Iron Triangle.

50
New cards

What is Abstraction?

Hiding internal values and exposing interfaces to them. For example, having a bank account with a private balance, with only deposit, withdraw, and readBalance methods available to interact with it.

51
New cards

What is Dependency Injection?

Passing in dependencies from the outside to allow for different dependencies for each object. Typically done at construction time.

52
New cards

What is Inversion of Control (IoC)?

Instead of your code calling a library, some higher-level code calls yours to do some tasks. This can help with modular design.

53
New cards

What is Decomposition?

Breaking code down into appropriately-sized parts. Code should be broken down into segments which are easier to reason about and are more reusable, but not to a degree where code blows up due to too many interconnected function calls.Wh

54
New cards

What is Cohesion?

The grouping of related code into sections, such as modules, classes, and functions.

55
New cards

What is Coupling?

A way to measure how related things are. A loose coupling may be some related dependencies, but if a component is tightly tied to many components it is highly coupled.

56
New cards

Do we typically aim for tight or loose coupling?

Loose. This makes code more modular and easier to work with.

57
New cards

What is Architectural Communication?

Decomposed objects that are related need to communicate (related to coupling). Architectural design should create patterns which minimize overhead and try to account for failure in communication.

58
New cards

What are Architectural Patterns?

Specific guided layouts to guide the coding process. Examples include Client-Server, Monolith/Microservice, CRUD, etc.

59
New cards

What is an ADR? A MADR?

Architectural Design Records, documentation of choices made at the architecture phase. These should be relatively standalone and easy to access/consume.

60
New cards

How should we ensure our architecture is ready for change?

By providing flexibility, midifiability, and maintenance as high-priority workflows in the architectural process. Systems will need to be changed.

61
New cards

What is NoDUF?

“No Design Up-Front”. A design and architectural decision where you simply don’t, and just start building. This is the exact opposite of software engineering, as the design and applications part of the process is what differentiates software engineering from software development.

62
New cards

Agile leads to incremental changes. Does this mean larger grouped increments or smaller additive increments?

Smaller, additive increments. Adding too much means you fall to far back if the changes cause problems.

63
New cards

What is Continuous Integration?

Constantly integrating and testing software into a workable build for testing and use. Performs steps such as testing, linting, formatting, optimization, building/merging, documenting, etc.

64
New cards

What is Continuous Delivery?

Tha ability to take an automatically produced build and get it out into production use quickly. Higher-risk than CI as it puts automated work into end users’ hands.

65
New cards

What is a Feature Flag?

A way to introduce new functionality for some subset of users and test how it works.

66
New cards

What is the strongest determinant of project success and code outcomes?

Team stability and a promotion of knowledge retention. Additionally, adherence to disciplined working habits.

67
New cards

What is Spreading?

When the repository (or other SSOT) becomes limited to one type of knowledge (ex. code) and other knowledge spreads to different places (Miro, Docs, etc.)

68
New cards

Where should plans be kept?

Near the code. They should be the source of truth rather than the code.

69
New cards

What does it mean to favor reading over writing?

You spend far more time reading code than writing it, so simpler, more verbose solutions can be better than clever ones.

70
New cards

What are Pace Layers?

An indication of how quickly ideas change throughout the field. For example, visual design has changed significantly over the past 40 years, but a computer from 40 years ago can still hook up via TCP/IP.

71
New cards

What are the differences between a Negative Model, Positive Model, and Behavioral Model in security?

A Negative Model is a blacklist, Positive Model is a whitelist, and Behavioral Model is an AI which is trained to monitor activity and disallow outliers.

72
New cards

What are the pros and cons of the Negative Model?

It provides weak security, but is unlikely to cause issues for average users. Does not account for emergent threats.

73
New cards

What are the pros and cons of the Positive Model?

It provides strong security, but unless you have absolute coverage of every possible input, there may be new inputs which are fine but were not accounted for. This is typically impossible to perfect

74
New cards

What are the Pros and Cons of the Behavioral Model?

Has to be trained (both on positive and negative inputs), and ends up causing both the issues of emergent attacks in the Negative Model and the issues of erroneous detections in the Positive Model.

75
New cards

What is the Client-Server Model?

A client makes a request to a server, where each has distinct hardware and software. The Client makes these requests, the Server services, them, and the Network carries the communications between the two.

The Client Side is rarely under developer control, likely hostile, and widely varying in computational power. The server side is well controlled, securable, and predictably powerful so we can decide to address capacity/ability as necessary.

This approach is network-constrained.

76
New cards

What does CRUD stand for?

Create, Read, Update, Delete

77
New cards

What is CRUD?

A development pattern which covers the actions typically taken on some data/resource.

My brain is too fried to write this out at the moment.

78
New cards

What does REST stand for?

REpresentational State Transfer.

79
New cards

What does REST do?

it describes methods of defining resources as URLs and actions on those resources as HTTP methods. In linguistics terms, URLs are nouns, HTTP methods are verbs on those nouns. This turns the URL into practically a command-line.

80
New cards

What are the HTTP methods used for REST?

GET, POST, PUT, DELETE

81
New cards

What HTTP methods work with CRUD?

Create: POST
Read: GET

Update: PUT
Delete: DELETE

82
New cards

What does MVC stand for?

Model View Controller

83
New cards

What are the principles of MVC?

The model manages data, logic, and rules; the view presents data to users; and the controller handles input, coordinates model and the view.

84
New cards

What does TETO stand for?

Kasane. Test Early, Test Often.

85
New cards

What does ABT stand for?

Always Be Testing

86
New cards

What does TFT stand for?

Test the Full Stack

87
New cards

What is the Testing Pyramid?

The pyramid, from faster→slower and more isolation→more integration, Unit Tests, Service Tests, and UI Tests (bottom up).

88
New cards

What is TDD?

Test-Driven Development, where you write tests for the code before the actual code.

89
New cards

What are the phases of TDD?

Red, where you write tests and they initially fail; Green where you write code to make the tests pass; and Refactor where you redo the code, keeping it green so it is of high quality.

90
New cards

What does BDD stand for?

Behavior-Driven Development.

91
New cards

What does BDD do?

Bases code development on the behaviours outlined in the user stories.

92
New cards