CS100 Software Engineering Lecture and Discussion Notes

0.0(0)
Studied by 0 people
call kaiCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/32

flashcard set

Earn XP

Description and Tags

Vocabulary flashcards covering software development methodologies, Git version control, prerequisites and architecture, testing techniques, continuous integration/deployment, and UML diagrams.

33 Terms

1
New cards

Waterfall Method

A linear software development model where progress flows sequentially through phases without returning to previous stages; typically used for control systems and highly regulated industries where systems are deployed once and rarely updated.

2
New cards

Kanban

An Agile framework developed at Toyota that visualizes tasks on a board using cards and columns representing pipeline stages, emphasizing Work In Progress (WIP) limits so available team members pull and address work items directly.

3
New cards

Scrum Pillars

The three foundational principles of the Scrum framework: transparency, inspection, and adaptation.

4
New cards

Scrum Values

The five core values governing a Scrum team: commitment, courage, focus, openness, and respect.

5
New cards

Scrum Roles

The defined roles within a Scrum team designed to keep members focused: the Scrum Master (enforces Scrum principles and tracks progress), the Product Owner (acts as the voice of the user and manages requirements), and the Scrum Team (developers).

6
New cards
<p>Centralized vs. Distributed Version Control Systems</p>

Centralized vs. Distributed Version Control Systems

Two architectures for tracking changes: Centralized VCS utilizes a single central server repository that client working copies commit to and update from, whereas Distributed VCS (DVCS) provides each workstation with its own local repository, using push and pull operations to sync with a remote server repository.

7
New cards

git clone

A Git command that copies an entire object graph from a remote repository into a local directory and automatically checks out the main branch.

8
New cards

git fetch vs. git pull

git fetch downloads commits and changes from a remote repository to the local repository without altering the working directory, whereas git pull fetches the changes and immediately merges them into the current working workspace.

9
New cards

git revert

An undo operation that inverts the changes introduced by a specific commit and creates a new commit containing the inverted state, leaving the original project history intact.

10
New cards

The 3 C's of User Stories

The three components of user stories: Card (stories written on note cards with estimates and notes), Conversation (details clarified through discussions with the Product Owner), and Confirmation (acceptance tests that verify the story is correctly coded).

11
New cards

Epic

A large user story that represents a significant body of work, which is subsequently broken down into smaller, specific user stories.

12
New cards

Theme

A high-level collection or grouping of related user stories.

13
New cards

Semantic Versioning

A software versioning scheme structured as Major.minor.patch (e.g., v4.2.1), indicating the scale and impact of changes in a release.

14
New cards

Problem Definition

A clear one- or two-page description of what problem needs solving with zero reference to technical solutions, written entirely in user language to serve as a project foundation.

15
New cards

Software Architecture

The top-level technical design of a software system that guides programmers and partitions tasks so multiple teams can work independently, preventing expensive modifications during and after construction.

16
New cards

Test-Driven Development (TDD)

A software development approach where developers write automated tests before writing production code, following a cycle of writing a failing test, writing the minimum code required to make it pass, and refactoring to eliminate redundancy.

17
New cards

Arrange-Act-Assert (AAA)

The standard three-stage pattern of a unit test: Arrange (set up and initialize the component being tested), Act (execute the behavior or apply stimulus), and Assert (verify that the resulting behavior matches expectations).

18
New cards

ASSERT vs. EXPECT (Google Test)

Verification macros in Googletest: ASSERT generates fatal failures that abort execution of the current test function immediately, whereas EXPECT generates non-fatal failures that permit the test to continue executing until completion.

19
New cards

F.I.R.S.T. Principles

Criteria for clean unit testing: Fast (run quickly), Independent (isolated from other tests and modules), Repeatable (environment-agnostic), Self-validating (boolean pass/fail without reading logs), and Timely (written just before production code).

20
New cards
<p>Google Test Starter Main Function</p>

Google Test Starter Main Function

The standard C++ entry point implementation for running a Googletest suite, which initializes the framework via ::testing::InitGoogleTest(&ac, av); and returns RUN_ALL_TESTS(); to run all registered tests.

21
New cards

Smoke Testing

Preliminary high-level testing designed to confirm that critical core features function well enough to justify full, detailed testing; builds that fail smoke tests are rejected immediately.

22
New cards

Alpha / Beta Testing

Formal testing conducted by a subset of real customers prior to widespread release to ensure system functionality meets business requirements from an end-user perspective.

23
New cards

User Acceptance Testing (UAT)

The final validation phase performed by the client to verify that end-to-end system flows satisfy business requirements and user needs before the product goes live.

24
New cards

Stress Testing

A form of non-functional testing that pushes a software system past its specified operational limits (such as extreme data input, queries, or storage volume) to identify how and when it fails.

25
New cards

Regression Testing

The practice of re-executing functional and non-functional tests on existing features to verify that recent code changes, bug fixes, or enhancements have not introduced new defects.

26
New cards

Code Coverage Formula

The mathematical metric expressing test coverage: \text{Code coverage} = \t\left(\frac{\text{lines of code executed by tests}}{\text{Total number of lines in a system component}}\right) \times 100

27
New cards

Code Coverage Benchmarks

Standard industry thresholds: 100%100\% coverage is ideal for newly committed code, 90%90\% is the benchmark for regression testing, 80%80\% is the minimum acceptable threshold, and 60%−70%60\%-70\% is typical for unmonitored codebases.

28
New cards

Continuous Integration (CI)

A software engineering practice where developers frequently merge code changes into the main repository branch, automatically validating each integration with builds and tests to prevent integration conflicts.

29
New cards

Continuous Delivery vs. Continuous Deployment

Continuous Delivery automates testing and release staging so code can be deployed to production reliably at the click of a button; Continuous Deployment extends this by automatically deploying all passed builds directly into production without human intervention.

30
New cards

Valgrind Memcheck Clean Criteria

The required indicators of a memory-leak-free C++ program in Valgrind: zero errors, the total number of heap frees equal to allocs, and a leak summary showing 00 bytes in 00 blocks across all categories.

31
New cards
<p>UML Class Diagram Compartments</p>

UML Class Diagram Compartments

The three standard divisions of a UML class box: the top compartment contains the class name, the middle compartment lists class attributes (variables), and the bottom compartment specifies class operations (functions).

32
New cards
<p>UML Class Relationship Connectors</p>

UML Class Relationship Connectors

The graphical notations defining class interactions: open solid arrow for Association, closed hollow triangular arrowhead on a solid line for Inheritance, closed hollow triangle on a dashed line for Realization/Implementation, open dashed arrow for Dependency, hollow diamond for Aggregation, and solid filled diamond for Composition.

33
New cards

Top-Down vs. Bottom-Up Design

Architectural strategies: Top-down designs high-level modules first using stubs (easier to prototype, harder to unit test), while bottom-up builds low-level utility modules first (easier to unit test, harder to prototype).