midterm
well-known agile methods
Dynamic systems development method (DSDM) feature driven development (FDD) scrum extreme programming crystal clear lean dev
which of the following are appropriate outcomes of system analysis activities? a) A better understanding of the real-world system b) A modular design that can form a basis for a development plan c) User interface specifications d) A high-level, logical database design e) All of the above
a. a better understanding of the real-world system
In which of following development processes is pair programming commonly practiced? a) Agile b) Spiral c) Evolutionary Prototyping d) Incremental
a. agile
in which of the following development processes is pair programming commonly practiced? a. agile b. spiral c. evolutionary prototyping d. incremental
a. agile
in which of the following development processes is pair programming commonly practiced? a. agile b. spiral d. evolutionary prototyping e. incremental
a. agile
which of the following certifications addresses the ability of organizations to deliver quality software products? a. capability maturity model b. unified software development process c. unified modeling language d. constructive cost model e.function point process
a. capability maturity model
PSP (personal software process)
concentrated on improving the software process on an individual level as opposed to a team format
Which of the following is an agile process/method? a) Spiral model b) Waterfall model c) Transformative model d) Extreme programming
d. extreme programming
which of the following process model cant be used effectively in connection with rapid prototyping? a. spiral b. unified process c. agile process. d. waterfall e. incremental process
d. waterfall
operation
defines behaviors of class objects
attribute
defines properties of class or objects
software architecture
defines the way the individual parts of a software is connected to each other to form the system
encapsulation
defining and storing together properties and behavior or class/object
software methodology
details the steps of how to perform a software process (implementation)
Which of the following might be included in a system release a)executable code b) configuration files c) documentation d) data files e) all of the above
e. all of the above
which of the following is not a logic error? a. requirement error b. design error c. detailed design error d. coding error e. large number of page faults
e. large number of page faults
Software Architecture considerations
ease of change and maintenance system performance (process real-time data, large volume of transactions) reliability security recovery
data abstraction
encapsulation, an object is a self-contained data type with its own operations behavior abstraction
types of systems
interactive subsystems event-driven systems transformational subsystems object-persistence systems
information hiding
shielding implementation detail to reduce change impact to other parts of program
Software Architecture importance
significant impact on system performance, efficiency, security, primary artifact for conceptualization, construction, managing system
waterfall merits
simple, straight sequence simplifies project management supports function-oriented projects good for tame problems
why domain modeling
software engineers need to work on different domains and need domain knowledge to develop a system
agile development
software mythologizes that promotes adaptive planning, customer value (normally requires the customer onsite), and rapid response to change. has short (1-3 week) releases. it is not plan-driven and has self-organizing teams. works best for small projects and teams, requires highly skilled workers
waterfall
straight through development with a minimum of rework and change; document driven
order 4 activities from earliest to latest requirement analysis feasible study requirement specification requirement definition
study analysis definition specification
software architecture
style of design of the structure of the system including interfacing and interaction among its subsystems
architectural design
style of design of the structure of the system including interfacing and interaction among its subsystems and components
waterfall process cycle
system engineering software requirement analysis software design coding and unit testing integration and integration testing acceptance testing maintence
recursive view of subsystems
systems and subsystems are relative to each other
extreme programming
the first agile process, business-value driven (customers can see product soon early on), has rapid iterations and short span releases, democratic management, team has collective ownership of code, uses clean simple code, test-driven. arose from "hacker" culture C
personal software process PSP
training software engineers helps software engineer identify areas of improvement prepares software engineer ot work in a team
regression testing
type of software testing that provides a general assurance that no additional errors were introduced in the process of fixing other problems (retesting a modified program)
TSP (team software process)
used to implement CMM key tasks and activities, increase quality and profitability of a project, improve control and vision to multiple participants in the project, model of organization management
which formalism best describes requirements elicited in an extreme programming project?
user stories
requirements
user stories that customers write about features they want in the project, does not use computer language and is easy to understand.
software paradigm- procedural
world is a network of processes. processes are refined by lower level processes. building blocks are processes
software paradigm- OO
world is interrelated and interacting objects building blocks are objects.
software paradigm- data-oriented
world is interrelated data entities processed by transactions. building blocks are data entities and relationships
unified process
object-oriented methodology based on iterative and incremental process
Iterative and Incremental Development
(IID), can be a part of agile and plan-driven development. have planned increments until customer is satisfied, have long time boxes (given time to work on a part of the project), feature/success driven (only after completing a feature do you continue on). also has early risk management analysis
inheritance
IS-A
class
a type. an abstraction of objects with similar properties and behavior
which of the following certifications address the ability of organizations to deliver quality software products? a. capability maturity model b. unified software development process c. unified modeling language d. constructive cost model e. function point process
a. Capability maturity model
five steps of domain modeling
collecting info about app domain brainstorming classifying brainstorming results UML class diagram performing inspection and review
Domain modeling
a conceptualization process to help the development team understand app domain
daily build
a development activity where a complete system is compiled and linked every day (usually overnight), so that a consistent system is available at any time including all latest changes. (synchronization points)
state machine
a diagram that shows the state of software then its action which changes it to another state.
Object and attribute
a non can be a class or an attribute. attributes describe objects or store state information. attributes formed from keyboard(enter value). object formed from invoking constructor
what is domain modeling
a process that helps the team understand app domain and establishes common understanding
Imagine you are working for a scientific computing firm with a small development team. Several of the developers are very familiar with the domain and development tools, but have poor people skills. Depending on the project, the development group follows either a spiral or incremental development process. If this group needed to start a new mission critical project that had some tight deadlines, which of the following team structures would be most appropriate. a) Chief Programmer - The team is organized around a highly skilled developer, in an attempt to ensure that this developer is as productive as possible. Team members beside the chief programmer play supporting roles such user-interface specialist, customer liaison, librarian, etc. There may be a backup chief programmer in case the chief programmer disappears. b) Hierarchical - The team structure may parallel a functional breakdown of the software. Developers report to team leaders, who in turn report to higher-level team leaders. Developers can make decisions for their own code. Team leader can make decision pertaining to their areas. c) Democratic - There is team leader, but all major decisions are made through a democratic process. d) Anarchistic - There is no team leader. Team members freely pick assignments that need to be done
a. chief programmer
which of the following is mainly for promoting reusability? a. design patterns b. use case c. COCOMO d. system analysis e. CASE
a. design patterns
Complete problem-domain models should include design details of the software system being developed. a) False b) True
a. false
Cohesion within a module is the degree to which communication takes place among the module's elements. Coupling is the degree to which modules communicate with other modules. What are the properties of good modular decompositions of software? a) High cohesion and low coupling. b) High cohesion and high coupling. c) Low cohesion and high coupling d) Low cohesion and low coupling.
a. high cohesion, low coupling
Which of the following design patterns is most suitable for printing all the elements in a linked list? a) Iterator b) Facade c) Interpreter d) Observer
a. iterator
which of the following activities was the waterfall model created to avoid? a. rework b. testing c. planning d. documentation e. communication
a. rework
Which of the following activities should occur soonest in a software development project? a) Risk analysis b) Specification c) Documentation d) Cost estimation
a. risk analysis
which of the following activities should occur soonest in a software development process? a. risk analysis b. specifications c. documentation d. cost estimations
a. risk analysis
Modeling use cases can be a effective tool for eliciting and describing key requirements. a) True b) False
a. true
what type of UML diagram best captures user goals? a. user case diagrams b. class diagrams c. interaction diagrams d. state charts
a. user case diagrams
Which of the following process models can't be used effectively in connection with rapid prototyping? a) Waterfall b) Spiral c)Unified process d)Agile process e)Incremental process
a. waterfall
brainstorming: constituents
aggregation
brainstorming: posession
aggregation
polymorphism
allowing a single function to be used with different types of data (specifically, different classes of objects). i.e. a polymorphic function definition can replace several type-specific ones, and a single polymorphic operator can act in expressions of various types, it is a particular kind of association of subclasses with a superclass and a client class.
decomposition
also known as factoring, refers to the process by which a complex problem or system is broken down into parts that are easier to conceive, understand, program, and maintain.
object
an instance of a class
extreme programming (XP)
anyone can change any code anywhere at any time integration and build many times a day whenever task is completed less than 40 hrs a week exploration (collect info and feasibility about app) planning (determine stories for next release) iteration to first release (define/modify architecture, select and implement stories for each iteration) prodctionizing (evaluate and improve system performance) maintenance (improve current release) death (produce system doc, replace system if maintenance is too costly)
OOD
approach to systems development that uses the object as the basic unit of systems analysis and design. The system is modeled as a collection of objects and the relationship between them (messages being passed and performance of the activity communicated), began with C++, its structuring is based on abstraction
brainstorming: transitive verbs
association relationships
brainstorming: containment
association/ aggregation
brainstorming: "X of Y" (color of car)
attribute
brainstorming: adjectives
attribute
brainstorming: numeric
attribute
which of the following are appropriate outcomes of systems analysis activities? a. a modular design that can form a basis for development plan b. a better understanding of the real-world system c. user interface specifications d. a high-level, logical database design
b. a better understanding of the real world system
Which of the following is true? A An attribute has an independent existence in the application B An application domain object has an independent existence in the application
b. an application domain object has an independent existence in the app
The C function that can be used to ensure an invariant is ___________? a) assert b) assert() c) asert d) asert() e) assurt f) assurt() g) asurt h) asurt()
b. assert()
Consider a small group of developers, all of whom are experts in their respective areas and have been working together for two years. In general, they communicate well with each other and all get along. Which of the following would be most efficient team structure? a) Anarchistic - There is no team leader. Team members freely pick assignments that need to be done. b) Democratic - There is team leader, but all major decisions are made through a democratic process. c) Chief Programmer - The team is organized around a highly skilled developer, in an attempt to ensure that this developer is as productive as possible. Team members beside the chief programmer play supporting roles such user-interface specialist, customer liaison, librarian, etc. There may be a backup chief programmer in case the chief programmer disappears d) Hierarchical - The team structure may parallel a functional breakdown of the software. Developers report to team leaders, who in turn report to higher-level team leaders. Developers can make decisions for their own code. Team leader can make decision pertaining to their areas.
b. democratic
in general, they communicate well with each other and all get along. Which of the following would be most efficient team? a. anarchist (no leader) b. democratic (major decisions are made through democratic process) c. chief programmer (team is organized around a skilled developer) d. hierarchical
b. democratic
which architecture is most appealing for modeling a mouse click action? a. client server architecture b. event system architecture c. layered architecture d. data flow architeture
b. event system architecture
if this group needed to start a new mission critical project and had some tight deadlines, which of the following team structures would be most appropriate? a. chief programmer b. hierarchical c. democratic d. anarchistic
b. hierarchical
Which method is associated with sprints? a) Dynamic systems development method b) Scrum c) Extreme programming d) Rational Unified process
b. scrum
What does the part of relation between an object and another object indicate? a) inheritance b) polymorphism c) aggregation/composition d) behavior
c. aggregation/ composition
which of the following concerns PSP but not TSP? a) Productivity tracking b) Time management c) Personal improvement d) Effort Projection
c. personal improvement
tame problems
can be completely specified there are stopping rules solution is right or wrong finite number of moves in problem solving solution can be tested immediately if problem is not solved, try again
inheritance
class can use another class' properties, methods, variables, ect. one of the main ways of constructing new classes in OOD
brainstorming: nouns/noun phrases
classes or attributes
CRC
classes, responsibilities, and collaborations. it allows for efficient communication between teams
association
expresses general relationship. instructor teaches course.
aggregation
expresses the fact something is part of another
feature driven dev (FDD)
feature/model driven config management, review and inspect on regular builds suitable for agile and plan-driven
collecting info about app domain
focus on functional requirements, consider other requirements and documents, consider business descriptions
dynamic systems development method (DSDM)
framework that works with rational unified process and XP based on the 80-20 principle suitable for agile and plan-driven projects
plan-driven development
have predictability and assurance as its goals, does well with larger teams and projects, focus on contract provisions rather than customer interaction, culture thrives on order and procedure, refactoring is expensive but can make use of less experienced workers (Cockburn 1B level) 1
construction of domain model
helps dev team understand app domain, lets team members communicate their understanding of app domain, provides basis for design and implementation
you are asked to come up with an appropriate software process. describe what considerations must be taken to choose between agile and plan-driven
if its mission critical, if the agile risks dominate, go plan driven, if the plan-driven dominate, go for agile
spiral process model
if risk remains, plan next phase and conduct prototyping else if risk resolves, proceed as waterfall else if prototype works, proceed as evolutionary
unified process model
inception (1-2 iterations, produces simple use case model and project plan) elaboration (next n iterations, produces architectural design and implements critical use cases) construction (remaining use cases iteratively implemented) transition (system is deployed, users are trained, defects corrected)
waterfall problems
inflexible to requirement changes long development duration means outdated when delivered users cannot experiment and provide early feedback customer has to wait until entire system is done to reap benefits customer may lose entire investment if project fails
brainstorming: x is a y
inheritance
interactive subsystems
interaction between system and actor is fixed sequence of actor requests and system responses (actor normally human) "client-server" relationship
function-oriented development
its system was a collection of functions, focus was an algorithm use due to lack of computing power, used an invocation hierarchy for structuring, only had a single thread of control, simultaneous function operations were not supported
evolutionary process model
lets prototype evolve into production system most suited for dev of exploratory types of stuff like research and environmental interacting systems not suitable for projects that require predictable schedule
in the feature team within Microsoft, what type of people are involved? a. marketing b. software developers c. rocket scientists d. testers
marketing, software developers, testers
transformational subsystems
network of info-processing activities, transforms activity input to output little interaction between system and actor (batch process), stateless, performs number crunching/computational transactions
evolutionary
no firm specifications, work until it seems okay
polymorphism
one thing can assume more than one form
agile process model
phases in iteration requirement analysis design implementation testing deployment
wicked problems
problems complex enough to have no simple solution and whose very nature changes over time no definite formulation, no stopping rule (always can do better), evaluated subjectively, infinite number of solutions, unique
process vs. methodolgy
process framework of phased activities, establishes milestones (waterfall, spiral, prototyping, agile) methodology is cook-book for tasks (HOW) (OMT, scrum, XP)
spiral
process model that combined elements of both design and prototyping in stages it is intended for large, expensive, and complicated projects. its diagram shows four quadrants that represent four standard periods in each cycle. it encourages prototyping, focuses on risks, enables rework, and incorporates existing models.
prototyping process model
prototypes constructed to acquire and validate requirements, asses feasibility and constraints prototypes classified into throwaway or evolutionary
software process models
prototyping process model evolutionary process model spiral process model unified process model personal software process model team software process model agile process model
object persistence systems
provides object storage and retrieval capabilities to other subsystems hides implementation from rest of system
event-driven subsystems
recieves events from and controls external entities, does not respond to each eent, interacts with many external entities, may need time constraints
aggregation
reference to an object
spiral
repeated cycles concentrate on identifying and resolving risks
scrum
scrum master, product owner, team roles, 15 min daily status meeting release planning meeting (identify and prioritize req. (product backlog), identify sprint dev activities) sprint iteration (plan what and how to build next) sprint review meeting (increment demo, team retrospect) deployment
code and fix
traditional process model where programmers, without much design, begin producing code while testing along the way. problems: it was poorly structured, user-unfriendly, and unmaintainable.
software process
the phases of activities or what need to be performed to construct a software system. each activity produces some artifacts which are input into other phases. each phase has a set of entrance criteria and exit criteria
refactoring
the process of changing a computer program's internal structure without modifying its external functional behavior or existing functionality, in order to improve internal quality attributes of the software
encapsulation
the process of combining a data structure's data with the methods that act upon the data inside the same module
transform
traditional process model that takes abstract requirements as input and transforms them step by step to executable code through stepwise refinements, the problems included many limitations, tool-intensive, may not support unanticipated evolution, and was quickly outdated. it does have stable requirements and tool availability
evolutionary
traditional process model where a project is separated into smaller waterfall models. allowed for good customer support problems: produced spaghetti code, makes products un-integratable, fosters wrong and unchangeable decisions, makes migrating to new systems difficult.
waterfall
traditional process model where programers follow strict phases and should not return to an already completed phase. review is done before moving onto a new phase but return to a phase is highly discouraged. problems:minimized prototyping, wastes effort on elaborate but incorrect designs and codes (reduces risk). it was replaced by the evolutionary (incremental process)