Software Systems MidTerm

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

1/104

encourage image

There's no tags or description

Looks like no tags are added yet.

Last updated 2:16 AM on 10/14/26
Name
Mastery
Learn
Test
Matching
Spaced
Call with Kai
Chat

No analytics yet

Send a link to your students to track their progress

105 Terms

1
New cards

Difficulties of Software Engineering

  • Complexity

  • Conformity

  • Changeability

  • Invisibility


2
New cards

Requirements

  • defines what a system must do to meet customer needs

  • include functional goals & quality attributes


3
New cards

Functional Requirements

what the system should do - features

4
New cards

Non-Functional Requirements

how the system should operate - constraints

5
New cards

Non-Functional Requirement Examples

performance, availability, security, usability

6
New cards

Testing

checks whether a program produces expected results for given test cases

7
New cards

Types of Testing

  • manual

  • automated


8
New cards

Test Pyramid

bottom: unit tests (cheap)

middle: integration tests (middle)

top: end-to-end tests (slower, expensive)

9
New cards

Types of Automated Tests

  • unit

  • integration

  • end-to-end


10
New cards

Maintenance

  • corrective

  • preventive

  • adaptive

  • evolutionary

  • refactoring


11
New cards

Legacy Systems

  • older systems with outdated technologies

  • costly and risky to maintain


12
New cards

Processes

  • activities followed when developing software


13
New cards

Approaches For Processes

  • waterfall

  • agile


14
New cards

Waterfall Approach

  • requirements

  • analysis

  • design

  • implementation

  • tests

  • deployment

-goes in that order. can’t go back without restarting.


15
New cards

Waterfall Approach Cons

  • requirements change

  • upfront specification takes time

  • customers don’t know what they want

  • documentation becomes outdated


16
New cards

ABC of Software Engineering (3 types of software)

  • Type A: Acute

  • Type B: Business

  • Type C: Casual


17
New cards

Casual Software Systems

  • small, low-criticality

  • built by 1-2 devs

  • risk of over-engineering

  • vibe coding


18
New cards

Business Software Systems

  • critical to the organization

  • benefits from SE practices

  • banking and financial systems


19
New cards

Acute Software Systems

  • failure is unacceptable (human lives or major financial losses at stake)

  • subway, aviation

  • requires certification


20
New cards

Iterative Development

  • frequent updates

  • less emphasis on documentation

  • customer involvement


21
New cards

Agile Methods

  • provide a structure to agile ideas

  • defines a lightweight process


22
New cards

Types of Agile Methods

  • extreme programming

  • scrum

  • kanban


23
New cards

Extreme Programming Values

  • communication

  • simplicity

  • feedback

  • courage

  • respect

  • 40-hour week


24
New cards

Extreme Programming Principles

  • economics

  • continuous improvement

  • failure happens

  • baby steps

  • personal responsibility


25
New cards

Extreme Programming Practices

  • pair programming

  • open scope contracts


26
New cards

Pair Programming

2 people, navigator and driver

27
New cards

Mob Programming

  • entire team works on the same programming task

  • collective learning, knowledge sharing


28
New cards

Software Contracts

  • outsourcing devs requires a contract

  • closed scope contracts

  • negotiated scope contracts


29
New cards

Closed Scope Contracts

  • deadline → defined by customer

  • price and deadline → defined by supplier


30
New cards

Negotiated Scope Contracts

  • scope defined per iteration, contract is renewable after each iteration

  • customer involvement


31
New cards

Scrum

  • sprints

  • stakeholders → product owner → devs

  • formal to informal specifications

  • daily meetings


32
New cards

Sprints

  • team implements user stories (features)

  • product owner writes the stories

  • problem-domain expert does as well


33
New cards

Product Owner

  • writes user stories

  • explain user stories to devs

  • define acceptance tests

  • prioritize user stories


34
New cards

Product Backlog

prioritized list of user stories and other work items

35
New cards

Characteristics of Product Backlog

  • prioritized → highest-priority stories at the top

  • dynamic → stories can be added or removed


36
New cards

Sprint Planning Steps

  1. select sprint stories

  2. break stories into tasks and assign them to devs


37
New cards

Scrum Team Layout

  • small (basketball-football team size)

  • includes 1 product owner and 1 scrum master

  • cross-functional (devs, UX designers, data scientists)


38
New cards

Scrum Master

  • helps team follow Scrum

  • leader

  • removes old technical impediments

  • collects process metrics


39
New cards

Sprint Ending Review

  • team presents sprint outcomes to PO and stakeholders

  • each story is approved, partially approved, or rejected

  • story returns to backlog if not


40
New cards

Sprint Ending Retrospective

  • final sprint event

  • reviews what went well and how to improve


41
New cards

Scrum Board

similar to a trello board

42
New cards

Story Points

  • estimate story size empirically

  • help determine what fits in a sprint

  • fibonacci scale


43
New cards

Kanban

  • no sprints

  • no mandatory roles or events

  • teams define their own roles and events

  • pull a task to work on, complete task, repeat


44
New cards

Work in Progress Limits

  • maximum number of tasks per step

  • prevents team overload

  • reflects team’s agreed capacity


45
New cards

Spiral Model (Non-agile process)

  1. goals and constraints

  2. alternatives and risk analysis

  3. development

  4. next iteration planning


46
New cards

Rational Unified Process (RUP)

plan and document with UML and CASE tool (company was acquired by IBM)


47
New cards

CASE

Computer-Aided Software Engineering

48
New cards

The 3 C’s of User Stories

  • card

  • conversations

  • confirmation


49
New cards

Card (User Stories)

reminder for conversations during sprint

50
New cards

Conversations (User Stories)

communication with team

51
New cards

Confirmation (User Stories)

tests the product owner will perform to verify the story’s implementation (acceptance tests)

52
New cards

Characteristics of Good User Stories (INVEST)

  • independent

  • negotiable

  • valuable

  • estimable

  • small

  • testable


53
New cards

DoD

definition of done

54
New cards

Dogfooding

using/testing your own app

55
New cards

Feature Bloat

too many features

56
New cards

Use Cases

  • detailed requirement specifications

  • normal flow and extensions

    • extensions include exceptions and additional details for specific steps


57
New cards

Software Models

  • bridge the gap between requirements and code

  • documents solutions to problems defined by requirements


58
New cards

Types of Software Models

  • formal: less common

  • graphical: UML, most common


59
New cards

Unified Modeling Language (UML)

  • proposed in 1995 to unify different modeling notations

  • used as a blueprint or sketch


60
New cards

Unified Modeling Language (UML) As A Sketch

  • common in agile methods

  • lightweight, informal

  • supports forward and reverse engineering


61
New cards

Forward Engineering

sketches are used to discuss alternative designs before coding

62
New cards

Reverse Engineering

sketches help explain existing code, for software maintenance and evolution

63
New cards

Types of UML Diagrams

  • static diagrams: code structure (changes only when code changes)

  • dynamic diagrams: runtime behavior (may vary across executions)


64
New cards

UML Diagrams

  • activity diagram

  • sequence diagram

  • class diagram

  • package diagram


65
New cards

UML Class Diagrams

  • syntax includes class name, attributes, methods


66
New cards

Association

connects two classes with → in a class diagram

67
New cards

Multiplicity

connects two classes with → x..1 to represent how many of that class can have the other class

68
New cards

Common Multiplicities

  • 0..1

  • 1

  • *

  • 0..*

  • 1..*

  • n


69
New cards

Bidirectional Associations

connects two classes with ←> and has multiplicities

70
New cards

Inheritance

  • connects to a class with a → (but arrow part is not filled in)

  • ex: student → person


71
New cards

Dependencies

  • represented by dashed arrows

  • when a class uses an object, it ‘depends’ on that object


72
New cards

Sequence Diagrams

  • behavioral dynamic diagrams that model objects and method calls between them

  • review discord for image example


73
New cards

Return Arrows In Sequence Diagrams can be omitted when _

  • return value is irrelevant

  • method returns void


74
New cards

Modules

  • the smaller parts resulting from the decomposition of the big problem

  • AKA: packages, components, folders, layers


75
New cards

Design Properties

  1. conceptual integrity

  2. information hiding

  3. cohesion

  4. coupling


76
New cards

Design Principles

  1. single responsibility

  2. interface segregation

  3. prefer interfaces to classes (dependency inversion)

  4. prefer composition to inheritance

  5. open/closed

  6. demeter

  7. liskov substitution


77
New cards

Conceptual Integrity

  • everything looks the same

  • user interface, design decisions, implementation decisions, technological decisions


78
New cards

Information Hiding

  • classes hide their internal implementation details with the private modifier


79
New cards

Interface

set of public methods and attributes of a class

80
New cards

Cohesion

classes should have a single goal or single service

81
New cards

Coupling

  • classes depend on each other

  • call methods of other classes

  • acceptable coupling (good)

  • poor coupling (bad)


82
New cards

Acceptable Coupling

class A uses class B and:

  • B provides a useful service to A

  • B has a stable interface

  • A interacts with B only via B’s interface


83
New cards

Poor Coupling

class A uses class B but:

  • B’s interface is unstable

  • A does not use B through its interface


84
New cards

Static (Structural) Coupling

  • A’s code contains an explicit reference to B

  • can be acceptable or poor


85
New cards

Evolutionary (Logical) Coupling

  • A’s code contains no reference to B

  • changes in B can impact A

  • always poor coupling


86
New cards

Single Responsibility (SRP)

  • each class has a single responsibility

  • a class should only have one reason to change


87
New cards

Interface Segregation (ISP)

  • interfaces should be small, cohesive, and tailored to each client


88
New cards

Dependency Inversion (DIP)

high-level code doesn’t depend on low-level details, both should depend on a shared interface

89
New cards

Prefer Composition to Inheritance

avoid unnecessary inheritance

90
New cards

Demeter

an object should have limited knowledge of the inner workings of other objects

91
New cards

Open/Closed (OCP)

a class should be open to extension but closed to modification

  • parameters

  • inheritance

  • higher-order functions

  • design patterns


92
New cards

Liskov Substitution Principle (LSP)

provides guidelines for redefining methods in subclasses

93
New cards

Design Patterns

  • common solutions to recurring design problems

  • shared vocabulary

  • design reuse

  • creational, structural, behavioral


94
New cards

Factory Design Pattern

  • creational

  • provides a single point of change if the code must be updated


95
New cards

Singleton Design Pattern

  • creational

  • ensures a class has only one instance throughout an application

  • also provides a global access point of that instance


96
New cards

Proxy Design Pattern

  • structural

  • provides a placeholder object that controls access to a real object

  • allows a request from a user to be interjected for security reasons


97
New cards

Adapter Design Pattern

  • structural

  • bridges two incompatible interfaces so they can work together


98
New cards

Facade Design Pattern

  • structural

  • a unified interface to a complex system of classes (hides internal intricacies)


99
New cards

Decorator Design Pattern

  • structural

  • dynamically adds new behaviors or responsibilities to individual objects without modifying original code


100
New cards

Strategy Design Pattern

  • behavioral

  • encapsulates a family of algorithms into separate classes which makes them interchangeable at runtime