informatics 43 midterm 2
verification/validation
"implement the idea properly"/"implement the proper idea"
components and connectors
(data, processing) and (interaction); arranged into configurations
According to Brooks, the following are accidental but not essential to software, EXCEPT: a. Conformity b. Expert system c. Artificial intelligence d. Graphical programming e. Object-oriented programming
a
In a UML Class Diagram, each box can have three sections. The top section in the box contains a. the name of the class. b. the primary function of the class. c. a list of class attributes. d. the name of the user in the use case. e. a count of the number of times the class will be used.
a
Requirements documents should specify a. What the software system should do b. How the system should do it
a
Specifications that are descriptive a. Describe the system as it really is, how it's been in the past and present b. Describe the system as is it planned and envisioned in the future
a
What is the difference between white-box testing and black-box testing? a. How they determine whether the output is correct. b. Whether they can be used for unit testing. c. White-box testing is used with Agile approaches, and black-box is not. d. How test cases are selected. e. White-box testing is done by a Quality Assurance team, and black-box testing is performed by the programmer.
a
Which of the following is not a key value of the agile movement, as laid out in the Agile Manifesto? a. Planning ahead is more important than reacting to events. b. Individuals and interactions are more important than processes and tools. c. Working software is more important than comprehensive documentation. d. Customer collaboration is more important than contract negotiation. e. Responding to change is more important than following a plan.
a
blackbox testing assumes a) you have no knowledge or access to the code b) you have access to the code and know its structure
a
white box testing assumes a) you have access to the code and know its structure b) you have no knowledge or access to the code
a
fault
a defect in source code or in another document, such as a requirements specification
the architect
a distinctive role and character in a project, broad training, extensive experience, deep understanding of the domain, leads the team, good communicator, decision maker
error
a mistake made by a software engineer or programmer
software 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
defining software architecture
a software system's architecture is the set of principal design decisions about the system; the blueprint for a software system's construction and evolution
quality assurance
all activities designed to measure and improve quality in a product
evolution
all successful software evolves, essential part of software development, must be accommodated/planned as much as possible; architecture is a key tool in accommodating evolution
object-oriented design and UML
an "object" contains both data and methods; a "class" is a blueprint for making objects
in a class diagram, a solid line, w/ blank diamond on one end, means
an aggregation where one class is an aggregate of another
in a class diagram, a solid line, w/ arrowhead on one end, means
an association between the two classes
in a class diagram, a solid line, w/ blank arrow on one end, means
an inheritance relationship between two classes
prescriptive vs. descriptive architecture
as-designed/as-intended architecture; as-implemented/as-realized architecture
According to Brooks, the following is an essential property that makes software difficult: a. Complacency b. Complexity c. Simplicity d. Visibility e. Reliability
b
Specifications that are prescriptive a. Describe the system as it really is, how it's been in the past and present b. Describe the system as is it planned and envisioned in the future
b
The following are all included in (they are part of) the UML design notation, EXCEPT: a. Activity diagrams b. Physical-Activity diagrams c. Use-case diagrams d. Sequence diagrams e. Class diagrams
b
What is the significance of the word "equivalence" in the phrase Equivalence Class Partitioning? a. All classes are white box or all classes are black box. b. The class is divided into the same number of "what" and "how" subsets. c. The UML Class Diagram has only one-to-one relationships. d. Each class has the same liklihood of containing a test case with a bug. e. For the purposes of testing, every element of the class is the same as the others.
b
Which of the following would be a non-functional requirement: a. Withdraw and deposit money b. Manage performance and response time c. Manage customer information d. Manage account information e. Manage transaction information
b
software testing can a) show the absence of bugs, but not their presence b) show the presence of bugs, but not their absence
b
Brooks uses the analogy of a silver bullet that kills the werewolf to describe something in software that a. will have the impact of Ada and other high level languages. b. will make digital computer systems conform to the laws of nature. c. makes the invisible visible. d. provide opportunities for growing designers to interact with and stimulate each other. e. provides an order of magnitude improvement in productivity or reliability.
c
In Open Source Software Development, the distinctive characteristic is that a.the developers rely on Wikipedia as the source of information. b.the UML "Open Source" diagram is used to drive development. c.access to the source code is provided to all people. d.the development team is open about their software process model. e.anyone who pays a small fee can join the development team
c
Which of the following is not part of the design phase of software development? a. Defining modules and their interfaces. b. Selecting programming languages and libraries. c. Coding algorithms and data structures. d. Developing the specifications in more detail. e. All of the above are not part of the design phase.
c
effects of high cohesion/low coupling
changes don't propagate, reuse is facilitated
UML class diagram can have
classes, class attributes, class methods, relationship names
white-box testing
code, path analysis
WWW in a nutshell
collection of resources, each of which has a unique name (URL); a URL can be used to determine the identity of a machine on the Internet, from which the resource may be obtained; clients make requests of servers for their resources
software architecture's elements
components and connectors
A UML class diagram can show the following information, EXCEPT: a. Class name b. Class attributes c. Class operations d. How one class invokes operations available in another class e. How one class is related to/associated with another class
d
Good design and modularization is often said to exhibit a. low cohesion and low coupling. b. low cohesion and high coupling. c. high cohesion and high coupling. d. high cohesion and low coupling. e. all of the above.
d
How does Brooks describe "Brooks's Law" in The Mythical Man-Month? a. Surprisingly accurate. b. Incredibly useful. c. Naively optimistic. d. Outrageously oversimplified. e. Complex and invisible.
d
Requirements documents should specify, EXCEPT: a. What the customer needs b. What problems will be addressed c. What the system should accomplish d. How the system will implement solutions to customer needs and problems
d
Testing is very challenging due to the following reasons, EXCEPT: a. Software has many users who can cause unexpected behavior b. Software has essential properties that can cause unexpected behavior c. Software must accommodate functional and non-functional requirements d. Software doesn't change much over the years e. Software continues to change and evolve over many years
d
What is "Brooks' Law," as stated in The Mythical Man-Month? a. late software projects can be controlled by improved software process models. b. complexity of project increases with the Square of the Man month. c. more software projects have gone awry for the lack of calendar time then for all other causes combined. d. Adding manpower to a late software project makes it later. e. the essence of software is its conceptual construct.
d
parallels
design before build, satisfaction of customers' needs, specification of labor, multiple perspectives of the final product, intermediate points where plans and progress are reviewed
purpose of designs
designs to think, talk, prescribe
testing-basic process
detect and correct errors in a software product
why does architectural erosion happen
developer sloppiness, short deadlines, lack of prescriptive architecture, code optimization, inadequate techniques or tool support
software development languages
different languages are used at different stages: requirements --> design --> coding/testing ==> english --> diagrams/UML --> java, python
By "conformity", Brooks refers to how a. software has to anticipate future needs. b. software process models have to incorporate prototyping. c. software testing has to verify all use cases. d. software has to comply with existing institutions and systems. e. all of the above.
e
In The Mythical Man-Month Brooks writes that "the man-month as a unit for measuring the size of a job is a dangerous and deceptive myth." What does Brooks think is deceptive about the man- month? a. It implies that women cannot be software developers. b. It conflicts with the Waterfall Model. c. It does not account for the multi-person nature of software engineering. d. It does not account for fractional months. e. It implies that men and months are interchangeable.
e
The reason for emphasizing "what" over "how" in a requirements specification is a. the client is more interested in the "what" aspects. b. the "how" aspects are best left to the programmers. c. it is important to determine the "what" aspects before spending time on the "how" aspects. d. the writers of the requirements specification may not be programmers or designers. e. All of the above.
e
Which of the following activities is associated with the upper left hand quadrant of the Spiral model? a. Architecture. b. Prototyping and resolving risks. c. Assigning specific tasks to individuals on the team. d. Software product design. e. Determining objectives.
e
Which of the following would be a functional requirement in your requirements document: a. Usability (user friendliness, ease of use) b. Security (secure access) c. Reliability d. Performance and Response time e. Withdraw and deposit money
e
You should write good clear requirements documents. The following people might read them: a. Customer representatives b. Testers c. Developers d. Project managers e. All of the above
e
Bridge between two other UML diagrams
entity relationship diagram
regression testing
existing test cases
testing goals
find and fix failures/faults/errors, improve confidence that the system performs as specified and as desired
QA techniques
formal methods, static analysis of program properties, reviews and inspections, testing
abstraction
formed by removing irrelevant information and retaining/highlighting relevant information, every design notation supports a certain kind of abstraction, software engineering is all about contracting and elaborating abstractions/models
git command to view changes between two branches
get diff
git command to view one or more existing branches
git branch
create new git repository
git init
high cohesion
grouping related functionality
information hiding
hide design decisions that are most likely to change, thereby protecting other parts of the program from change if the design decision is changed
UML (unified modeling language)
industry standard for software design/modeling; different types of UML diagrams are used to represent different aspects of a system
architecture in software engineering
intellectual control, conceptual integrity, effective project communication, reusability, maintainability
ways to choose test cases
intuition, specification, code, existing test cases, faults
style 5: peer-to-peer
key benefits: efficiency robustness; examples: skype, file sharing systems, bitcoin
style 7: pub-sub
key benefits: efficient, scalability; examples: stock market ticker, stock market, news
style 4: layered
key benefits: modularity, abstraction, anticipation of change, reuse; examples: restaurant, operating systems, networks
style 2: model-view-controller
key benefits: modularity, anticipation of change; examples: web applications, ATM
style 6: pipe-and-filter
key benefits: modularity, reuse, anticipation of change; examples: compiler, UNIX shell, compilers
style 3: client-server
key benefits: shared data/services, centralized control; examples: video game, email, web browser-based programs
style 1: object oriented
key benefits: understandability, abstraction, anticipation of change; examples: uber, business applications
7 styles
object-oriented, model-view-controller, client-server, layered, peer-to-peer, pipe-and-filter, pub-sub
services such as netflix, skipper, and google hangout, can stream data directly between two nodes in a communication network
peer-to-peer
on the command line for the UNIX or Linux operating system, you can start with a file of records, then filter them, sort them, and then remove duplicate records
pipe-and-filter
New York Stock Exchange makes available large amounts of data, as well as 'real time' updates, that many are interested in
publish-subscribe
recurring, fundamental principles
rigor and formality, separation of concerns, anticipation of change, generality, incrementally
approaches to software design (textbook)
software architecture, functional decomposition, relational database design, object-oriented design and UML, user interface design
black-box testing
specification, equivalence class partitioning
failure
the inability of a system to perform the correct function; and incorrect output
limitations of analogy
the nature of software is different from that of building architecture
low coupling
ungrouping unrelated functionality/ reducing interdependency
levels of testing
unit testing, functional/integration testing, system/acceptance testing
UML class diagrams
used in decomposing a system into modules known as classes, typically used to model domain concepts and create a detailed, object oriented design of the code
architectural erosion
when a system evolves, ideally its prescriptive architecture is modified first
not allowed/available multiplicity in UML class diagrams
0 to 0
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)