1/70
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai |
|---|
No analytics yet
Send a link to your students to track their progress
What is a key difference between programming and software engineering?
software engineering involves managing large-scale systems and teams
the essential ingredient that can make up for the other two
people
3 “essential ingredients” of software engineering
people, processes, and tools
A function call presents a simple interface and hides the logic that will be performed. This is an example of...
abstraction
INF 43 recurring fundamental principles
rigor and formality, separation of concerns (modularity, divide and conquer, abstraction), anticipation of change, generality, incrementality
what piece of advice would Fred Brooks be least likely to give?
You should always build functionality yourself from scratch rather than reuse existing software that provides the functionality you need.
What matters most from the engineering perspective?
internal quality of the software
What matters most from the business perspective?
money
What matters most from the user perspective?
everything the user sees
4 essential difficulties in software engineering
complexity, conformity, changeability, and invisibility
software engineering
the process of constructing software
Requirements should define:
the what, not the how
Requirements issues are at the root of many software failures.
True
If you go into a career in software engineering in the U.S., which one of the following situations is most likely outcome for you (or any random person)?
In-house staff writing systems for internal use
another name for hubble psychology
over-optimism disease
requirements analysis
activity of gathering customer needs
requirements specification
activity of documenting user needs in a requirements document
Ziv’s law
software development is unpredictable and the requirements will never be fully understood
A use case diagram primarily shows:
actors and their interactions with use cases
use case
a set of actions defining interactions between an actor and the system to achieve a goal
Use cases are NOT good for specifying:
non-functional requirements
What is the primary consideration in the ACM Code of Ethics?
public good
Why is lifelong learning important in software engineering?
knowledge quickly becomes outdated
software architecture
the blueprint for a software system’s construction and evolution
components and connectors arranged into ___
configurations
software architecture consists of ___ & ___
components, connectors
prescriptive architecture
as-intended architecture
descriptive architecture
as-realized architecture
architectural erosion
when a system evolves, its prescriptive architecture is modified first, often directly modifying the descriptive architecture
components
the major computational elements or modules of the system
connectors
the communication paths or interaction mechanisms between components
Conceptual integrity is important because it helps ensure that:
different teams follow a coherent overall vision
example of model-view architecture
ATM
example of client-server
video games
example of layered arch.
restaurant
example of peer-to-peer
skype
example of pipe-and-filter
compiler
example of publish-subscribe
stock-market ticker
functional decomposition
design process led by breaking down the functionality [ex. authenticate (login, logout), messaging (view, send, delete)…]
relational database
design process led by breaking down the data in a database
object-oriented design and UML
design process led by breaking down the entities identified in the domain and the functionality that accompanies each entity
user interface design
design process led by envisioning the user interface and iterating
purpose of designs
think, talk, and prescribe
UML class diagrams
used in decomposing a system into classes to model domain concepts
parts of a UML class diagram
class name, attributes, parameters
high-cohesion/low-coupling
grouping related functionality and ungrouping unrelated functionality
information hiding
hide design decisions most likely to change
verification
does it conform to its specifications
validation
does it serve its purpose
dijkstra quote
testing can be used to show the presence of bugs, but never to show their presence
mistake
a human action that produces an incorrect result
fault/bug
an incorrect step in a computer program
error
a difference between a computed result and the correct result
failure
the incorrect result of a fault
levels of testing in order from most integration (slowest) to most isolation (fastest)
system, integration, unit
test oracles
a mechanism for deciding wether a test case succeeds or fails
how to know when done testing
problem find rate reaches 0
equivalence class partitioning
if a test fails/passes for a member of a class, it fails/passes for the entire class
boundary class partitioning
tests at boundaries of the classes
combinatorial testing
testing specific combinations of input parameters
black box testing
using specifications to drive test cases
white box testing
use source code to drive test cases
statement coverage
select test case such that every line of code runs
branch coverage
select test cases such that every ‘if’ statement is reached
waterfall
each phase of the development lifecycle must be fully completed and approved before the next one begins
rapid prototyping
build and discard prototypes before committing to full-scale development
incremental
system is built and delivered in small, manageable parts instead of releasing the entire application at once
spiral
evaluating potential risks and building prototypes to mitigate them
rational unified process
iterative and incremental, use case driven, architecture centric
extreme programming
pair programming, short development cycles and frequent releases, adaptability to changing requirements
agile
values customer collaboration, individuals and interactions, working software, and responding to change