Informatics 43 Study Guide
What are benefits of publish-subscribe ("pub-sub") architecture?
Efficiency, scalability
What are some examples of architecture in action?
Email, WWW, Client Server Architecture
What are examples of client-server architecture?
Email, web browser-based programs
What language is used in the requirements stage?
English
Software is
Everywhere; exciting; fun, doing a lot, saving a lot of lives, helpful, harmful, visually studied very extensively
What is a scenario?
Fictional representation of scenarios that personas are in that you can use to help guide decisions about product, features, navigation, visual design...
What are examples of peer-to-peer architecture?
File sharing systems, Skype, Google Hangouts, Internet of Things, Bitcoin, Blockchain
What are the phases of the classic OSS model?
First, develop the initial version; second, maintain (evolve)
What are some QA techniques?
Formal methods; status analysis of program properties; reviews and inspections; testing; using a mixture of techniques
How do you use subdomains in equivalence class partitioning/boundary value analysis?
From each subdomain, select a representative(s) to be a test case input(s). Test for each subdomain; use normal values, boundary or edge input values.
What are the strengths of the spiral model?
Good for new projects with uncertain, complex requirements
What are the strengths of the build-and-fix software model?
Good for small programs that do not require much maintenance or many developers
How is software used in cars
Hackers can cut the breaks, shut down the engines; self-driving cars
What are examples of some "false" silver bullets?
High-level languages Time-sharing Unified programming environments Object-oriented programming AI Expert systems Automatic/graphical programming Program verification Environments/tools Workstations
What is an error?
Human mistake in programmer's mind
What is HCI?
Human-Computer-Interaction
What are inspections and reviews (testing)?
Humans read documents and look for defects. It's surprisingly effective
How does a real world scenario compare to an ideal world scenario?
Ideal world scenarios assume that everything is formal and verified. In real world scenarios, however, aspects are mixed and not necessarily according to what is "correct"
What does the functional requirements of a requirements document consist of?
Identifies all concepts, functions, features, and information that the system provides to its users Provides an abstraction for each of those, characterizing the properties and functions that are relevant to the user
What is verification?
Implement the idea properly
What is validation?
Implement the proper idea
What should you do before testing with real users?
Improve designs and interfaces with checklists, Heuristic Evaluation, or Cognitive Walkthrough
Why is architecture a very powerful tool in SE?
Intellectual control Conceptual integrity Effective project communication Reusability Maintainability (management of a set of variant systems)
Software Engineering definition (Tsui, Karam, Bernal)
"A broad field that touches upon all aspects of developing and supporting a software system."
Software Engineering definition (Ghezzi, Jazayeri, Mandrioli)
"A discipline that deals with the building of software systems which are so large that they are built by a team or teams of engineers."
Software Engineering definition (Schach)
"A discipline whose aim is the production of fault-free software, delivered on-time and within budget, that satisfies the user's needs. Furthermore, the software must be easy to modify when the user's needs change."
What is a basic flow?
"Happy day" scenario
Software Engineering definition (Navarro)
"Managing the complexity of both a problem and its solution, to create a software product that successfully solves the problem."
Software Engineering definition (Parnas)
"Multi-person construction of multi-version software."
How is software used in politics
"The higher a politician ranks on the internet, the more likely people will vote for them"; speeches written by AI programs
What does the requirements analysis consist of?
Interview customer Create use cases/scenarios Prototype solutions Observe customer Identify important objects/roles/functions/goals Perform research Construct models ... (Data)
What does the Agile Manifesto state?
"We have come to value": Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
What is static analysis?
A computer program analyzes source code and finds defects (w/o running the code); results are reviewed by a person b/c many "errors" are not errors at all.
What are characteristics of the architect?
A distinctive role and character in a project Broad training Extensive experience A keen sense of aesthetics Deep understanding of the domain
What are test oracles?
A mechanism for deciding whether a test case execution succeeds or fails
Architectural style?
A named collection of architectural design decisions that: Are applicable in a given development context Constrain architectural design decisions Result in beneficial qualities in each resulting system A named, commonly used set of components/connectors/configurations
What are some user-oriented (user-centered) methods?
Interviews and observations of end users; personas; scenarios; storyboards; swimming lane diagrams; site maps; wireframes and mockups; design guidelines; Heuristic evaluation; user testing
What is a diagram?
A statement in a language that has syntax
What is the structure of a requirements document?
Introduction; executive summary; application context; environmental requirements; Functional requirements; software qualities; other requirements; time schedule; potential risks; assumptions; future changes; glossary; reference documents
What are some ways to choose test cases?
Intuition, specification, code, existing test cases, faults
Why does software change/evolve?
It's all about the user
Why does UCD work?
It's simple, inexpensive, yields higher sales and higher satisfaction
How are designs developed?
Iteratively
What language is used during coding/testing?
Java, Python
What are the weaknesses of Agile?
Lack of documentation Unstable requirements Bad for projects with large teams Bad for projects in which customer involvement is not possible
What are top software failure causes?
Lack of user input/involvement; incomplete requirements and specifications; changing requirements and specifications; lack of discipline in development processes; lack of methodical usage of metrics; lack of resources
How are classes determined?
Looking at the requirements specification; tester's intuition
Software Principles (Davis, 1994)
Make quality #1; Give products to customers early; Understand the problem first; Use an appropriate process model; Get it right before you make it faster; Good management is more important than good technology; People are the key to success; And more!
What are software design goals/activities?
Making system-wide decisions (architecture, languages, libraries, platforms), making lower-level decisions in an iterative manner (studying the problem, identifying solutions, creating abstractions)
What is version control software?
Manages changes over time by multiple people; AKA revision control, source control
Of lesser interest
Managing and scheduling software development teams; money - business models; software's impact on users, organization, society
What are use cases good for?
Map well to design implementation constructs Make it easy to verify/validate a design and implementation against user goals Framed in terms of user goals and flows of events, user requests and system
Software Principles (Wasserman, 1996)
Modularity Abstraction User interface (UI) prototyping Reuse Metrics
What are the benefits of layered architecture?
Modularity, abstraction, anticipation of change, reuse
What are the key benefits of model-view-controller architecture?
Modularity, anticipation of change
What are the benefits of pipe-and-filter architecture?
Modularity, reuse, anticipation of change
What is Extreme Programming (XP)?
More "extreme" reaction to waterfall, other heavyweight/traditional processes
What are the weaknesses of the OSS model?
Not appropriate for proprietary software or software with strict requirements and/or tight deadlines Technical support/maintenance can be iffy Developers are often not compensated financially
What are use cases not good for?
Not good for specifying: User interfaces Data formats Business rules Non-functional requirements
What are the weaknesses of the build-and-fix software model?
Not rigorous enough for non-trivial projects
What is an acceptance test plan?
Often accompanies a requirements specification; specifies how it will be determined that each requirement is met; good to base this off requirements and before the code; binds a customer to accept the delivered system if it passes all the tests
What are examples of layered architecture?
Operating systems, networks
What are some reasons, according to Brooks, why software projects are so delayed?
Our techniques of estimating are poorly developed; our estimating techniques confuse effort with progress; managers lack stubbornness of Antoine's chef; schedule progress is poorly monitored; when behind schedule, we add more manpower; we're too optimistic/confident
What are the essential ingredients of software?
People + Processes + Tools
Software architecture analogy?
Plan, design, build, done
What do environmental requirements of a requirements document refer to?
Platforms (hardware, software), programming language(s), standards
Who does the testing?
Programmers, testers, users
What are the strengths of the waterfall model?
Promotes understanding of requirements first Disciplined, rigorous, formal Lots of documentation Easy to track progress Good for short, simple projects will well-understood requirements Provided a starting point for other software process models Better than nothing Very much like other engineering practices
What are formal methods of testing?
Proof of correctness, usually done w/ formal specifications
How does quality assurance relate to project management?
Quality assurance and development are dependent on each other. Both depend on project management.
Why is QA so difficult?
Real needs are confused between "correct" specification and actual specification; software qualities;complex data communications; distributed processing; stringent performance objectives; complex processing
What are actors?
Represent external entities that interact with system: human, hardware, another software system; a use case is initiated by an actor (primary actor) to invoke certain functionality in the system
Process of construction software (waterfall model)
Requirements -> Design -> Implementation -> Verification -> Maintenance
Phases of development other than programming
Requirements document; flow charts of delivery, service, features
What is the incremental software model?
Requirements phase (verify) -> Architectural design (verify) -> For each increment: Perform detailed design, implementation, and integration. Test. Deliver to client. -> Operations mode -> Retirement
What is the waterfall model?
Requirements phase -> Design phase -> Implementation phase -> Integration phase -> Testing phase -> Operations mode -> Retirement
What are the phases of requirement engineering?
Requirements phase; requirements analysis; requirements specification
What are the weaknesses of the waterfall software model?
Rigid, not amenable to change Limited user input Bad for long-term projects with any ambiguity in requirements "The waterfall model amounts to a pledge by all parties not to learn anything while doing the actual work." (Clay Shirky) Hard to backtrack
Software Principles (recurring, fundamental)
Rigor and formality Separation of concerns(Modularity, Divide and conquer, Abstraction) Anticipation of change Generality Incrementality
What are the strengths of the RUP model?
Risk-driven, incremental Lots of tool support Provides a lot of guidance
What are benefits of peer-to-peer architecture?
Robustness, efficiency
What is condition coverage?
Select test cases such that all conditions are tested. Ex, if (a > b || c > d)
What is edge coverage?
Select test cases such that every edge in the graph is visited. It's more thorough than node coverage, and more likely to reveal logical errors. Also known as branch coverage.
What is loop coverage?
Select test cases such that every loop boundary and interior is tested.
What is node coverage?
Select test cases such that every node in the graph is visited; the minimal number of test cases is chosen. Also known as statement coverage
What is path coverage?
Select test cases such that every path in the graph is visited. Loops are a problem, though. This coverage is most thorough, but is it feasible?
What does the requirements specification consist of?
Serves as the fundamental reference point between customer and software producer
What should classes do in regards to testing?
Should cover the complete input domain; should never overlap
What are some possible bases for equivalence class partitioning/boundary value analysis?
Size/magnitude, structure, correctness, your creative thinking
What are design guidelines?
Smart, common-sense ways to implement something
What are some approaches to software design?
Software architecture, functional decomposition, relational database design, object-oriented design and UML, user interface design, sketching
What are the limitations of the analogy?
Software serves a much broader range of purposes We know much more about buildings than software Software is much more malleable than physical materials Software is a machine; a building is not The nature of software is different from that of building architecture
What is black-box testing?
Specification-based testing
What are examples of publish-subscribe ("pub-sub") architecture?
Stock market, news
What is white-box testing?
Structural testing
Describe software design
Structure, behavior, interaction, functional properties are all encompassed by design decisions and architectural decisions, the latter of which is the principle
What are the principal design decisions of a software system's architecture?
Structure, behavior, interaction, non-functional properties
What should you plan for user testing?
Subjects; the system; tasks; the session; measures taken
How is software used in the medical field
Surgery can be done remotely
How does quality assurance uncover the faults?
Taps developers on their fingers; creates image of "competition"
What kind of test cases should you choose in white-box testing?
Test cases that are covered by node/statement coverage, edge/branch coverage, loop coverage, condition coverage, or path coverage
What is unit testing?
Testing of a single code unit
What is system/acceptance testing?
Testing of complete system for satisfaction of requirements
What is functional/integration testing?
Testing of interfaces among integrated units
What are the benefits of object-oriented architecture?
Abstraction, anticipation of change, understandability
What are the strengths of the OSS model?
Accessibility -> huge user base -> novel features, higher quality code Some of the greatest minds, motivated and working together to solve hard problems can result in huge advances
What is the manner of testing?
Accurate, thorough, repeatable, systematic
What is requirements specification?
Activity of describing/documenting customer's needs
What is requirements analysis?
Activity of discovering/observing/gathering customer's needs
What is test-driven development?
Add tests -> see tests fail -> write code -> run tests -> refactor -> rinse and repeat
What is Brook's law?
Adding manpower to a late project makes it later
How do we know when we're done testing?
Aim to reveal as many faults as possible in a fixed budget; aim to meet the quality requirements established; pepper the code with defects and observe how many of the seeded defects are discovered
What is Scrum?
Another Agile development methodology that is lighter in prescriptions than XP; iterative, based on short iterations called "sprints" (one month or less in duration), and ideally a potentially shippable product is produced at the end of each spring
What is a use case?
Textual description of a set of actions defining interactions between an actor and the system to achieve a goal; describes a set of scenarios/flows that together accomplish a specific user "goal"; includes: Basic functionality/goal Any precondition Flow of events (scenarios) Any postcondition Any error condition and/or alternative flow
What is an alternative flow?
The goal is achieved, but in some alternate way
What is an exception flow?
The goal is not achieved
How are bugs and code related?
The more code there is, the harder it gets for someone else to understand what you did and to maintain your code, which leads to more bugs
What is software engineering in relation to diagrams?
The process of building a set of related models that represent the system-to-be
Informatics 43 definition of software engineering
The process of constructing software; phases of development other than programming; principles and qualities of enduring value
Why did the CA payroll system and DWP billing system upgrades fail?
The tasks were too large and complex; inadequate programming languages required to be used; flawed management structure; etc.
What does No Silver Bullet basically say?
There are essential qualities of software and accidental qualities, and breakthroughs so far address accidental qualities. There is no silver bullet to remove what's essential.
What is the purpose of designs?
To think, talk, prescribe
What test cases guarantee a wide range of coverage?
Typical values; boundary values; special cases; invalid input values
What are examples of pipe-and-filter architecture?
UNIX shell, compilers
What is UML?
Unified Modeling Language, an industry standard for software design/modeling
Why is usability engineering so hard?
Usability design is based on psychology, cognitive science, aesthetics, and art. Software engineers are generally not the audience of the software they develop
Software Principles (Royce, 1998)
Use a risk-driven, iterative process Use component-based development (buy vs. build) to reduce the coding effort Use change management Show the customer preliminary versions of the software frequently Have incremental releases
What does a use case model consist of?
Use case diagrams (one or more): actors, use cases, relationships, system boundary Descriptions of use cases: textual sometimes using a template
What is the Rational Unified Process (RUP) software model?
Use case driven Architecture centric Iterative and incremental
What is the corporate version of the OSS model?
Use open source software to save money and provide business agility; sponsor open source projects; make corporate software open source
How do you derive test cases in white-box testing?
Use source code to derive test cases. Build a graph model of the system and state test cases in terms of graph coverage.
How do you use a basis in equivalence class partitioning/boundary value analysis?
Use the basis to divide the set of all possible inputs into classes/subdomains
What are UML Class diagrams?
Used in decomposing a system into modules (classes) to model domain concepts and create a detailed, object-oriented design of the code
What are some other kinds of diagrams?
User interface mockups, pseudo code, entity relationship diagram, architecture diagram, storyboard, sketches
What is a persona?
User-archetype; a fictional representation of target users you can use to help guide decisions about product, features, navigation, visual design
What is UCD?
User-centered design
What is boundary value analysis?
Uses the same classes as equivalence partitioning, but tests at the boundaries of the classes, rather than just any element from the class. Experience has shown that many errors are made at the "boundaries" rather than under normal conditions
What are requirements?
WHAT the software should do (without saying HOW to do it)
What is the scope of a use case?
WHAT, not HOW; use audience-friendly terminology; include: How the use case starts and ends The interactions (in sequence) between use case and actors What data is needed by/exchanged during the use case Basic flow Alternative/exception flows (if applicable)
What are examples of model-view-controller architecture?
Web applications
What is the Agile Software Model?
Welcome change in requirements Business people and developers work together daily throughout project Build projects around motivated individuals Face-to-face conversation is the best way to convey information Documentation is just a means to an end Continuous delivery
What does the introduction of a requirements document consist of?
What is this document about? Who was it created for? Who created it? Outline
What is architectural erosion?
When a system evolves, ideally its prescriptive architecture is modified first; in practice, the system - and thus its descriptive architecture - is often directly modified
What are the practices and principles of XP?
Whole team Planning game Small releases Customer tests Simple design Pair programming Test-driven development Design improvement Continuous integration Collective code ownership Coding standards Metaphor Sustainable pace/developer welfare Open source Shared understanding Rapid, fine feedback
What is the open-source software (OSS) model (classic)?
You can be Open-source and another process model at the same time Source code is freely available and (usually) re-distributable Many contributors working in a distributed manner Heavy reliance on software tools Scales up amazingly well
How does quality assurance lay out the rules?
You will check in your code every day; you will comment your code; you will...
What is man-month?
a hypothetical unit of work representing the work done by one person in one month
What is the spiral software model?
a spiral lol; driven by risk analysis
What is quality assurance (QA)?
all activities designed to measure and improve quality in a product
What are characteristics of object-oriented design (and UML)?
an "object" contains both data and methods, and a "class" is a blueprint for making objects
What is prescriptive architecture?
as-designed/as-intended architecture
What is descriptive architecture?
as-implemented/as-realized architecture
Software is in
cars, medical field, politics, military, space, disaster response, refugee crisis, siri, movies (Star Wars), games, law enforcement, GANGSTA RAP, college must-haves
Principles and qualities of enduring value
correctness; reliability; adaptability; modularity; efficiency ; usability
Design describes the what of software?
how
What is a systematic approach to equivalence class partitioning/boundary value analysis?
identify the domain; identify a basis for subdividing the set of inputs; use the basis to divide the set of all possible inputs into classes/subdomains; from each subdomain, select a representative(s) to be a test case input(s)
What parts of software does society see?
impact, output, trends, dangers
Blind men elephant metaphor
miss a lot of things about the elephant; no idea what's going on inside the elephant
What are the benefits of more numbers for software?
moneyz
What is the group intercommunication formula?
n(n-1)/2
Does software have a lot of degrees of freedom?
no
What does the glossary of a requirements document consist of?
precise definitions of terms used throughout the requirements document
What is "Hubble Psychology"?
Bad. It states that it doesn't matter how we get there, as long as we get there.
How are test cases produced in test-driven development?
Based on the developer's intuitions and experience
What is the rapid prototyping software model?
Build and discard simple prototype -> Design phase -> Implementation phase -> Integration phase -> Testing phase -> Operations mode -> Retirement
What is the build-and-fix software model?
Build first version -> modify until client is satisfied -> operations mode -> retirement
What are examples of object-oriented architecture?
Business applications
Perspectives on software engineering
Business; Medical Systems; Game Dev
What are some potential silver bullets?
Buy vs. build Requirements refinement and rapid prototyping Incremental development Great designers
How are abstractions formed?
By removing irrelevant information and retaining relevant information
What are principles of minimalist design?
Contrast; repetition; alignment; proximity
What does the application context of a requirements document consist of?
Describes the situation in which the software will be used; identifies all things that the system affects
Parallels of software architecture to real architecture?
Design before build Satisfaction of customer's needs Specialization of labor Multiple perspective of the final product Intermediate points where plans and progress are reviewed
What is the basic process of testing?
Detect and correct errors in a software product; exercise a module, collections of modules, or system (devise test case, run test case, capture actual output, compare expected output to actual output)
What are the steps of XP?
Determine the desired features; implement/deliver each task; follow values and principles
Why does architectural erosion happen?
Developer sloppiness Short deadlines Lack of (documented) prescriptive architecture Code optimizations Inadequate techniques or tool support
What are the weaknesses of the spiral model?
Developers have to be competent at risk analysis
What language is used in the design stage?
Diagrams/UML
What is equivalence class partitioning?
Divide the input into several classes that are considered "equivalent" for the purpose of finding errors; if it fails/passes for one member of the class, it is likely to fail/pass for all members
What are the three core roles of Scrum?
product owner (customer), development team, Scrum Master (coach but not project lead)
What parts of software do software designers see?
product, structure
What parts of software do business people see?
profits, costs, required training
What are the benefits of using HCI and UCD well?
sales double; traffic count more than doubles; user performance cuts time by more than half
What are inspection methods of Heuristic Evaluation?
select tasks; someone pays the user; evaluators focus on an aspect; someone takes notes
What parts of software do electrical engineers see?
semiconductors, transistors, power supply
What does the executive summary of a requirements document consist of?
short, succinct, to-the-point description of software; identifies main goals, key features, key risks/obstacles
Engineering components
skill and knowledge; application of scientific principles; trade-offs, cost/benefit analysis
What parts of software do programmers see?
source code
What must you have in a Scrum framework?
team roles, events, artifacts, rules
What parts of software do software project managers see?
teams, budgets, timetables
What are some benefits of test-driven coverage?
usually leads to writing more tests and simpler code; usually achieves at least node coverage
According to Nielsen, what are the principles of Heuristic Evaluation?
visibility of system status; match system words to the real world; user control and freedom; consistency and standards; error prevention; recognition rather than recall; accelerators; minimalist design; help users recognize and recover from errors; help and documentation
Why do first impressions matter for software?
would you wanna use a shady-ass lookin app or some complicated Newton-type shit
Software components
Code; documentation, user manuals; designs, specifications; test cases; plans and schedules
According to Fred Brooks, what are the essential properties of software?
Complexity, conformity, changeability, invisibility
What are the weaknesses of the RUP model?
Complicated
Software architecture's elements
Components (data, processing) Connectors (interaction); components and connectors are arranged into configurations
What are the benefits of client-server architecture?
Centralized control
What are some challenges w/ white-box testing?
Can be useful for identifying under-tested parts of a program; can cover all nodes or edges w/o revealing obvious faults; some nodes, edges, or loop combinations may be infeasible
What are software qualities?
Correctness Reliability Efficiency Usability Maintainability Portability Reusability Interoperability Robustness Security Scalability ...
What matters most?
Cost of developing (purchasing) software; time to market of product; profit that will be made from sale of software
What are the strengths of Agile?
Customer satisfaction Adaptable to changing circumstances Good for projects with unclear, changing requirements Good for small teams
What parts of software do users see?
buttons, cons, menus, etc.
What is a fault/defect?
discrepancy in code
What are some testing goals?
find and fix failures/faults/errors; improve confidence that a system performs as specified (verification) and as desired (validation)
All successful software...
evolves
What is a failure?
external behavior/execution/output is incorrect