Software Engineering A Practitioner's Approach, 9th Edition Roger S. Pressman , Bruce
R. Maxim
Chapters 1-29
Chapter 1 - Test Questions
1. How does software differ from the artifacts produced by other engineering
disciplines?
Answer (Section 1.1):
Software is both a product and a vehicle for delivering a product. As a product,
software is an information transformer. As a vehicle for delivering a product,
software serves as a basis for computer control, communication, and creation of other
programs.
2. How do software characteristics differ from hardware characteristics?
Answer (Section 1.1.1):
Software is developed, not manufactured. Software does not wear out. Most software
is custom built, not assembled out of components.
3. Explain what is wrong with the notion that computer software does not need to evolve
over time.
Answer (Section1.1.3):
Computer software must be revised as errors are discovered and corrected. Software
must be updated to accommodate changes in the computing environment. Many times
a customer will request changes to add new functions to an existing product or to
accommodate changes in the business environment. Sometimes an older system will
need to be reengineered to provide benefits to the user in a modern context. The
bottom line is that software that does not evolve will eventually become unusable.
4. List three areas in which process models may differ from one another.
Answer (Section 1.3.3):
Overall flow and level of interdependencies among tasks
Degree to which work tasks are defined within each framework activity
Degree to which work products are identified and required
Manner in which quality assurance activities are applied
Manner in which project tracking and control activities are applied
, Overall degree of detail and rigor of process description
Degree to which stakeholders are involved in the project
Level of autonomy given to project team
Degree to which team organization and roles are prescribed
5. Describe how Polya‘s problem solving principles describe the essence of engineering
practice?
Answer (Section 1.4):
Understand the problem (communication and analysis)
Plan a solution (modeling and design)
Carry out the plan (code generation)
Examine the result for accuracy (testing and quality assurance)
Chapter 2 - Test Questions
,1. How does software team choose the task set for a particular project?
Answer (Section 2.3):
The software chooses the task set based on the characteristics of the team, the
project, and the problem to be solved.
2. How can process patterns assist a development team build software products
efficiently?
Answer (Section 2.4):
Process patterns are proven solutions to commonly encountered development
problems. If developers can recognize that that this is problem seen before they
can use a previously known means of solving it, without have to take the time to
invent a new solution.
3. Why it important for software processes to be agile?
Answer (Chapter 2 Overview):
Software process provides the stability, control, and organization to an activity to
prevent it from becoming chaotic. Yet, modern software processes must only
demand the activities, controls, and work products that are appropriate for the
team and product to be produced – to ensure that it can accommodate changes
easily and deliver a high quality software product.
4. Describe the phases of the prototyping model for software development?
Answer (Section 2.5.2):
Requirements are gathered by having the customer and developer meet and
identify whatever objectives and requirements they can. Quick design follows,
focusing on representation of the software that will be visible to the customer. A
prototype is constructed by the developer and evaluated by the customer and used
to refine the requirements. Iteration occurs and the prototype is tuned to satisfy
the customer's needs.
5. Why are evolutionary models considered by many to be the best approach to
software development in a modern context?
Answer (Section 2.5.3):
Because timelines for the development of modern software are getting shorter and
, shorter, customers are becoming more diverse (making the understanding of
requirements even harder), and changes to requirements are becoming even more
common (before delivery), we need a way to provide incremental or evolutionary
delivery. The evolutionary process accommodates uncertainty better than most
process models, allows the delivery of partial solutions in an orderly and planned
manner, and most importantly, reflects what really happens when complex
systems are built.
Chapter 3 - Test Questions
1. List the key issues stressed by an agile philosophy of software engineering.
Answer (Section 3.3):
The importance of self-organizing teams
Communication and collaboration between team members and customers
Recognition that change represents opportunity
Emphasis on rapid delivery of software that satisfies the customer
2. What are the tradeoffs proposed by the ―Manifesto for Agile Software
Development‖?
Answer (Section 3.3.1):
Individuals and interactions valued over processes and tools
Working software valued over comprehensive documentation
Customer collaboration valued over contract negotiation
Responding to change valued over following a plan
3. Describe the role of customers and end-users on an agile process team?
Answer (Chapter 3 Overview):
Customers and end-users participate as full collaborators on agile process teams.
They are the source of information used to create use cases and provided needed
information on the business value of proposed software feature and functionality.
They also provide much needed feedback on operational prototypes during
incremental delivery of software increments.
4. Describe the three key assumptions regarding software projects that every agile
software process must address.
Answer (Section 3.3):