Week 1 Flashcards
Measures of data (6)?
bit, byte kilo byte (kb) mega byte (mb) giga byte (gb) tera byte (tb)
components of a computer
internal memory
- RAM (random access memory) temporary data
- ROM (read only memory) permanent storage
processor/CPU (central processing unit)
kernel - program at the core of OS
HDD (hard disk drive) / SSD (solid state drive)
operating system (OS) - Windows, Mac, Linux
high vs low level programming languages
- high is programmer friendly, but low is machine friendly
- high is easy to understand, but low is difficult
- high is easy to debug/maintain, but low is not
- high can run on any platform, but low is machine-dependent
high exs: JAVA, C, Python, etc
low exs: binary
Explain Java syntax - case sensitivity
Java is case sensitive, which means identifier Hello and hello would have different meaning in Java.
Steps in the Software Development Life Cycle (SDLC)
- Planning & Analysis - gather all info from client and analyze what’ll work or not
- Design - create design specs, how will we build this?
- Implement/Code - build the software using PL
- Testing & Integration - release application to testing environment, helps spot defects, bugs, or other
- Deployment - all bugs fixed and software built to goals and specs
- Maintenance - updating and supporting software after it’s gone public
Explain Waterfall Methodology / Pros & Cons
Rigid. Receive ALL the info from the client up front and begin. No new requirements are given during the SDLC, and once you’ve moved to the next stage you cannot go backwards.
PROS - no room for confusion because you have clear barriers -> clean transfer to next steps; procedural knowledge not required
CONS - excludes the client; can’t make changes in previous stages if needed; after deployment you’re only maintaining not adding; only test once so bugs/errors aren’t noticed until ENTIRE project goes into testing
Explain Agile Methodology / Pros & Cons
Fluid. Ability to adjust to changing requirements and requests from the client during life cycle.
PROS - open communication w/ client; iterative (parts not included in 1 release can be moved to next release); multiple releases makes faster movement through testing;
CONS - flexibility can create poor practices like procrastinating or shortcuts
Explain Scrum Framework / Pros & Cons
Simplest Agile; Project backlog gets filtered to sprint backlog (priorities) to move to sprint (2-4 weeks long). Scrum Leader will lead daily 15-min standups to keep everyone on the same page. Product is released at the end of each sprint, then retrospective stage is where teams talks about good/bad with project to know how to tackle next sprint backlog.
PROS - daily standups; short sprints allows for constant releases which incorporates client throughout entire phase -> client feedback during creates a product more in line with their needs
CONS - no set deadline makes it difficult to gage costs and release date; feature creep (a continuous expansion of proposed functionalities) -> happens because no set deadline; Scrum ceremonies require engagement that some may not participate in
Explain Kanban Framework / Pros & Cons
visual representation of the progress of the project (usually with sticky notes on a grid labeled w/ project stages); should never be more tasks than developers during sprint
PROS - event-driven (no sprint deadline pressure); allows for specialists (ex 1 associate can be testing specialist) -> builds expertise; can take new client requirements; entire team sees progress
CONS - board can grow to be unnecessarily complex and difficult to understand/navigate; team needs to keep board up-to-date or associates can repeat work; no timing element, which can result in extreme feature creep and constant release delays/uncertainty
Explain Scrumban Framework / Pros & Cons
pairs the visual representation of Kanban with the ceremonies and sprints of Scrum; eliminates Kanban’s timing issue with Scrum’s sprints; adds Kanban specializations/cross-functionality to Scrum
Explain eXtreme Programming (XP) Framework / Pros & Cons
most verbose Agile; strict procedures designed to encourage XP’s values of teamwork, seeks to improve product quality by also improving team cohesion and individuals’ lives; 1-wk sprints, quarterly releases, continuous integration, incremental design, use of user stories and epics, TDD, pair programming, team includes client
PROS - constant communication w/ client minimizes sunk costs because you’re implementing features they actual want; group cohesion w/ open communication and pair programming; brief development results in quick solutions
CONS - amount of procedures can make following the framwork difficult; client on the team can create hindrance -> non-technically inclined; weekly iterations can create bad practices to meet deadlines; short sprints and client can create frequent changes
define test-driven development (TDD)
designing the tests that your code must pass BEFORE writing the actual code, allowing the developer to have a clearer understanding of what their program must accomplish BUT code should still be able to handle a variety of input
define Pair programming
teams are broken into groups of two while developing: pilot and navigator. pilot is actively writes code, while the navigator plans how the code will tie into the larger user story, epic, and project codebase. pairs can collaborate and solve issues faster and narrow their focus due to lessened responsibility
Agile vs Waterfall
Waterfall: linear, one-way, unable to make changes; best for projects with fixed, rigid requirements or highly regulated (ex gov projects)
Agile: iterative approach, customer collaboration, responding to change; best for projects in dynamic environments where adaptation required
user acceptance testing (UAT) (agile term)
LAST phase of testing stage
type of testing performed by the end user (client) to verify/accept the software before moving the application to deployment
minimum viable product (MVP) (agile term)
development technique in which a new product or website is developed with sufficient features to satisfy early adopters
product backlog (agile term)
the list of user stories for the entire project
sprint backlog (agile term)
the list of features that the team is planning to complete in the upcoming sprint
epic (agile term)
A group of related features that is broken down into multiple user stories
sprint (agile term)
A brief period of development (almost always less than four weeks, sometimes as short as one week) generally culminating in a release of related features
done (agile term)
The requirements the team agrees have to be met for a user story to be considered “done” (Example: all unit tests pass, code is reviewed and merged in feature branch, non-functional requirements met)
user story (agile term)
- card
- conversation
- confirmation
An individual feature of/requirement for a project in Agile development
- card - user stories written on cards (just enough info to communicate reqs)
- conversation - verbal conversation involving team and clients going into story’s details
- confirmation - everyone is on the same page! organization for the project begins
story point (agile term)
A level of difficulty assigned to a user story through the use of a sequence of numbers that increases with increasing difficulty
product owner (agile term)
sets the vision for the product, helps with generating requirements /user stories and prioritizing
scrum leader (agile term)
the cheerleader / advocate for the team; they make sure nothing is in the team’s way
velocity (agile term)
The sum of story points of all user stories completed during a sprint. Velocity allows Agile teams to more accurately predict how many user stories can be completed in future sprints
capacity (agile term)
the amount of work that can be completed within a given time frame based on the number of hours a person or team has available to complete that work. client and team will determine for upcoming sprints.
Scrum ceremonies include?
sprint planning, daily standups, review, and retrospective
burndown chart (agile term)
showing reduction in outstanding story points over the sprint
technologies used to keep track of progress
JIRA, Github projects, Trello, Asana
explain big bang methodology / pros and cons
simplest model of SDLC as it requires almost no planning. combines time, effort, and resrouces to gradually build product as reqs arrive from client. easy for small projects with few developers and a client that’s unsure.
PROS - no planning and few resources required, easy to implement, very flexible
CONS - not suitable for large projects, high risk, could get expensive and timely
explain v-model methodology / pros and cons
- also know as verification or validation model
- for each development stage, there is a testing activity, and you only move to the next phase after completion of previous one
PROS - highly disciplined because one phase completed at a time, good for small projects, constant testing enhances probability of error-free product, easy to track progress
CONS - high risk, not good for complex or object-oriented projects, doesn’t support iteration of phases, doesn’t easily handle concurrent events
Functional vs non-functional requirements (agile)
functional - describes what the system does via user stories
non-functional - requirements that specifies criteria that can be used to judge the operation of a system (describes how the system does it)