Homework Questions
[Week 1] [Week 2] [Week 3] [Week
4] [Week
5] [Week
6] [Week
7] [Week
8]
Week 1
- Ch 1 Review Questions 1 - 4, 9 - 10.
- Betty Analyst has conceptualized a medical patient monitoring
system as containing these elements: obtain patient vital signs,
check safe limits, signal alarm. Is her conceptualization
process or object oriented? How do you know?
- Which conceptualization scheme is superior, process or object
oriented? Why?
- Chapter 2 Review Question 2.
- Briefly contrast the waterfall development process with the
iterative development process.
- When is the waterfall process recommended? Why?
- What is an advantage of the iterative development process?
What is a disadvantage?
Week 2
Homework #2
Due Tuesday
Divide the questions among the member of your team. (Manager
records who was assigned which questions). Create a copy of your
solutions for the instructor and one for each other team member.
Answer the following questions using your own words.
- Define the following terms:
- structured programming
- functional decomposition
- stepwise refinement
- structured analysis and design
- entity relationship diagram
- Lookup several definitions of the term "abstraction" and create
your own definition.
- In a DFD (data flow diagram) the circles represent _____________
and the lines represent ________________________.
- Chapter 1 Review Question 7
- Chapter 1 Review Question 8.
- Are modules in a functional design encapsulated? Explain?
- Explain the purpose for creating informal scenarios.
- For each of the criteria in Summary Points 2.1, evaluate the
scenario below and write "yes" or "no" to indicate whether it meets the
criteria. If you answered "no" explain why.
Mark opens the dishwasher door and slides the bottom tray out along its
tracks. He picks up a plate and rinses it using the faucet. He stands
the plate in the first slot of the bottom tray. He continues placing
dishes in the dishwasher until there are no more dishes to load or the
dishwasher is full.- Give three reasons why modeling is helpful to
software developers.
- Define each of the four criteria Stiller provides for writing
quality modules in a design. Invent an example of each.
- Inheritance and templates are helpful programming constructs
because they contribute to what characteristic of a good design?
- List the ISO qualities of good software.
- Compare Brooks' team structure (p57-58) to our job
descriptions.
- In her article, Ludi describes several types of spoken behaviors.
"Is everyone clear how to create the data dictionary entries for their
use cases?" is an example of which behavior?
- What are some examples of positive group dynamics that Ludi
describes?
- In his article "Why Software is so bad" Mann argues that
programmers wrote better quality programs before the 1970's before the
advent of personal computers. Explain his argument.
- The "code and fix" development style lacks adequate design and
leads to what kinds of problems?
- In explaining the software industry's unreliable products, how do
defenders claim software is different than other industries?
- NASA and Lockheed Martin are examples of companies making
progress in producing quality software. What kind of software do
they create? In contrast, what kind of companies are frequently
guilty of releasing software with known defects?
- Some observers believe that software companies won't shift their
focus to quality until they are forced to by threat of lawsuit. Why
have
software firms been able to avoid product liability litigation so far?
- On page 293 Stiller says that three constraints - time, cost, and
results - must be balanced by the manager. Compare this with the
"manager's diamond" model shown in class.
- Categorize the project manager responsibilities shown in the
bulleted list on page 293 into those performed during project
commencement and those that are performed throughout the project.
- What three reasons does Stiller give for measuring
software? Think of another reason.
- For each of the three general schools of thought about how to
measure software, give a one sentence description of the general
approach, identify the phase or phases of the lifecycle when the
measure is computed, and list the major advantages and disadvantages of
the approach.
- The best project estimates are based on what?
- What is the difference in purpose for size metrics and quality
metrics?
- Fred Brooks in his classic book "The Mythical Man-Month" is
famous for his quote "Adding people to a late software project makes it
later." Explain this phenomenon.
- What is a software "configuration?" Invent an example of
software that has multiple configurations.
- Two-thirds of the way through your project the customer presents
a "must have" feature that he wants added to the software. What
procedure does Stiller recommend be followed for dealing with this
proposed change?
- Why is it important for the manager to understand the
interdependencies of each development task? Explain, using an
appropriate example.
- It seems that since dividing a project into functional partitions
can increase the likelihood of successful implementation, why don't we
divide the project into as many subprojects as possible?
- What is a "task network?" How is it useful to managers?
- What three scheduling tasks are facilitated by PERT/CPM methods?
- How does a Gantt chart differ from a PERT chart? What are
the advantages of each?
- Why are milestones better than progress reports for assessing
project status?
- Match the deliverables list in Fig 9.9 to our course deliverables
list in a side-by-side comparison. What items does Stiller include that
we have omitted? What items do we include that are not found on
Stiller's list?
- Give a one sentence description of each of the four stages of
team development.
- Stiller lists six symptoms of conflict occuring in a team. Can
you think of others?
- The suggestions Stiller makes for conflict resolution seem very
formal, as though intended for a large organization. What informal
strategies can you think of that could apply to a 205 team?
- What's the definition of a project "risk?"
- Stiller categorizes risks into "technical" and "human" risks.
Think of two real risks in each category for your team project at the
current time. Be specific.
- One of the best ways to reduce technical risk is to deliver the
product in a series of incremental steps, sometimes called "staged
delivery." List the benefits of this strategy.
Homework #3
Due Thursday
Select 12 of the following questions to answer using your own
words.
- Requirements analysis is a set of activities that includes
_____________ (p63).
- Chapter 3 Review Question 1.
- Chapter 3 Review Question 2.
- Since the end user is the one who wants the proposed system, it
can be argued that the user should be ultimately responsible for
verifying that the requirements specification is adequate to meet their
needs. Why does Stiller disagree?
- What are the advantages of prototyping as a requirements
refinement tool? Are there any disadvantages?
- What purpose do "walkthroughs" serve? How do they
accomplish this?
- What are the differences between "informal" and "structured"
walkthroughs?
- Why is it important to have some mechanism for cross-referencing
the models produced during development?
- The first step in the UCCD method is "identifying primary
classes." Although Stiller never mentions it, there may be danger in
performing this task so early in the development process. Explain what
this might be.
- What is a "use case?" What elements are included in the
description of the use case?
- What is the relationship between informal scenarios and use cases?
- Stiller makes a distinction between "informal scenarios" written before
use cases and "scenarios" written after use cases. What is the
purpose of "scenarios" and how are they different from "informal
scenarios?"
- Compare the ER diagram in Figure 1.7 with the "overall class
diagram" on pg99. These two styles of diagrams seem to be trying
to communicate similar information. What are the two significant
differences in the notation used?
- What is the purpose of a use case diagram? Is it created before
or after writing the use cases?
- Explain the relationship between use cases, functional
partitioning, and system evolution.
- Chapter 3 Review Question 16.
Homework #4
Due Tuesday Oct 5
After reading the Practical
Guide to Use Cases and Use
Case Tips, use the Use
Case HTML Template and write a use case for some requirement from
your team project.
Homework #5
Due Thursday Oct 7
Think of at least seven non-functional requirements for the Galaxy
Sleuth
software that your team is developing. Write them as clearly and
unambiguously as possible. Rank them in order of importance,
highest priority first.
Extra Credit
Write a use case for "Plan a Schedule" functionality of POWER.
Homework #6
Due Tuesday
Oct 12
Read the tutorial on how to draw Entity
Relationship Diagrams
(only steps 1 - 3). Follow steps 1-3 in the tutorial to create a
"rough" ERD for problem #1. Show your
work for each step. Optionally, you may complete step 4.
Homework #7
Due Thursday Oct 14
- User Interface Design is not "design" in the sense of technical
software design. Explain the difference.
- In her article, Honey,
I forgot the users! Pajerak argues that sometimes a keyboard is
superior to the mouse. What are the disadvantages of the mouse? In what
situations should you consider designing your User Interface around
keyboard input rather than a mouse?
- Write a critique of the User Interface for the PH client.
(Obtain the software by going to My CalPoly portal, choosing the
"technology" tab, go to the Software Download Channel,
select Windows, then "ph 1.2 Download."
Here is a sample screenshot.
You don't need to critique the menus, just the main window the
user interacts
with.
Refer to the principles of good UI design. (Stiller Section
4.12.2 or
this list
of criteria). List three aspects of the UI which are good and
three
which need improvement. In each case, explain which principles are
satisfied or broken.
Homework #8
Due date varies for each team.
Submit a copy of the Issues List (or other preparation documents) you
create
while doing the prep for an FTR. That is, while reviewing another
team's
documents.
Due the day of the reviewed team's FTR.
Homework #9
Due Th 10/21
Choose one of the following two problems:
- Draw a State Transition diagram for the "Plan a Schedule"
functionality
of
POWER. In a sense you are to "reverse engineer" the POWER functionality
and
draw the diagram for the already working software. The initial state
is the first "Plan a Schedule for Fall Quarter" page.
The final state is the login to register page.
- Draw a State Transition diagram for the client game play
functions of
Galaxy Sleuth. You don't need to draw the Server or connecting to a
game functions. Focus on the states and transitions that occur once
the game is underway.
Homework #10
Due Thursday Oct 28
- An architect's plans for a house are often used as an analogy for
a software design. It would be unheard of to expect a construction crew
to assemble a house without a detailed design (blueprints). Yet many
programmers seem to think it's acceptable to start coding a software
project without having a thorough design. What factors do you think
contribute to this attitude?
- What are the four components of a software design? Identify each
and give a short definition.
- Identify three important design principles and give a brief
definition of each in your own words.
- Decomposition is a way to reduce the perceived complexity of a
problem. However the benefits of decomposition need to be balanced
against what other cost? Explain.
- The design principles of abstraction and decomposition seem
intended to reduce complexity. They imply that too much complexity
exceeds the capacities of the human information processing system. If
we were to look for empirical evidence to justify how much complexity
is manageable, what psychological factors might we examine? (Answer not
in readings).
- The Interaction Diagrams created during design are based on what
Analysis document?
- In what actual notation will you express the class skeletons you
create for the design of Galaxy Sleuth?
- Coupling and cohesion are measures of what? (Stiller Chapter 2).
- Give a definition of cohesion in your own words. Which is
preferred, high or low cohesiveness? Why?
- Give a definition of coupling in your own words. Which is
preferred, high or low coupling? Why?
- Examine the three method definitions below, each of which
exhibits poor design quality. Assuming the method bodies are
consistent with their definitions, explain what kind of design quality
problems you suspect is present in each one.
public double Sin(double Angle, boolean
Radian_Or_Degree_Flag)
public void Compute_Earnings_and_Deductions();
public void Initialization_Tasks(); - You may
have been taught to avoid using "global variables" in
your programs. What is a global variable and which of the
guidelines for effective modular design does it violate? In Java,
is a class variable a kind of global variable?
- Are all of Stiller's guidelines for class design in Ch 5.4.3
included in Dr. Dalbey's design QA
Checklist? If not, which ones have been omitted.
Homework #11
Due Tuesday Nov 2
One design issue that strikes us for Galaxy Sleuth is that Weapons,
Suspects, and Planets are all different kinds of Evidence.
There's an IS-A relationship. So should we do the
typical OO solution and use inheritance (or interfaces), or should we
use a simpler solution? Describe two or three different ways to
design this solution (including sample UML or code where
appropriate). Evaluate the advantages and disadvantages of each
alternative, and select which you think is best and explain why.
Homework #12
Due Tuesday Nov 9
Spend not more than 45 minutes studying two classes from the
Employee
Scheduler javadocs:
Skills
and ListOfSkills. Attempt to identify aspects of the design
that
were done well and aspects that need improvement. Refer to the design
QA guidelines. Create two lists (did well, needs improvement)
that
are
ranked with the most significant items first.
Extra Credit (4 points)
You are to "reverse engineer" the source
code for a sample application and create a complete UML class
diagram. Your
diagram should include inheritance, aggregation, and dependency
relationships.
You may omit cardinality.
Homework #13
Due Tuesday Nov 16
For this exercise we
will study a working implementation in source code and critique the
author's design.
Review the source code HallOfFame.java
which implements a high score feature for a computer game. (If you are
curious you can see how I tested this class using the JUnit testing
framework: HallOfFameTest.java
)
Spend not more than 30 minutes studying the code and identifying
aspects of the program you think were done well and aspects that were
done poorly or need improvement. Write down as many things as you can
discover in 30 minutes. You may ignore the many violations of the class
coding
standard. Focus on design issues not low level
coding issues. There are both high level and detailed design issues to
examine. If you need some ideas you can read the design
QA guidelines.
Create two lists (did well, did poorly) that are ranked with the
most significant items first. Optionally, for each "did poorly" item,
suggest how it could be improved.
Homework #14
Due Thursday Nov 18
Study these examples of poorly
written pseudocode. Rewrite each example #1 - 5 so that it is
clear, precise and follows the pseudocode standard.
You may not know exactly what the original author intended so use
your knowledge of Galaxy Sleuth to make a reasonable guess at the
appropriate actions.
Homework #15
Due Thursday 12/2
- An investigation chaired by Fred Brooks (cited in Brown article)
concluded that the major problems with software development are not
technical problems but management problems. What is suggested as the
cause of poor management? How can you as a technical employee help to
rectify this problem?
- The Airlie Software Council is a group of some of the biggest
names in industry. They have identified nine principal best practices
for software management (discussed in Brown article). List these
practices, giving a one sentence definition of each in your own words.
Rank them in importance, and justify your ranking. Identify which of
these practices we
are applying in our course project and explain specifically how we are
implementing them.
- Both Norm Brown and Gibbs cite a fear that if American software
companies can't get their costs under control, that the software
business will move overseas. What evidence do they cite? How would one
argue that this fear is unjustified?
- Which of Hillelsohn's recommendations are most directly
applicable to CPE 205 course projects? Select three and describe
specifically how they could be put into practice by a student team.
Under Construction
-
Congratulations, the Cal Poly Records office has hired you as a
programmer at the princely wage of $50 an hour. Your first assignment
is to write an enhancement to an existing program that generates a
report of the percent of students in each department that are on
academic probation. As you study the source code (created by a previous
programmer who is no longer around) you notice that the programmer used
an array to store the student records.
This strikes you as an incredible waste of space. You learned in
your data structures class that arrays have to be statically allocated
and in this case the programmer declared the array with room for 20,000
students, even though during any particular report probably only about
5,000 students are going to be on probation. You decide to rewrite the
program using a dynamic data structure so that memory is allocated as
needed. It takes you only an hour to revise the program and test it.
Calculate how much money you just wasted for
your employer. That is, how much did the employer pay you versus how
much would it have cost to simply pay for the RAM to store the 15,000
students.
Assume:
- Each student record requires 5000 bytes of memory.
- You saved space for 15000 records.
- The current price of SDRAM is $25 for 128MB.
- Your pay rate is $50 per hour.
Problems
Problem #1
Due Tuesday Oct 5
Perform the Game2D explorations.
Problem #2
Due Tuesday Oct 12
Modify the source code for Game2D so it is a truly multiplayer
application. It should allow up to nine people to play the game
simultaneously.
- Instead of colored dots, simply use a number from 1 - 9 to
represent each player's "dot" on the display.
- Instead of having the server wait until nine players are
connected, ask the user running the server if they want to wait for
more
players after each connection.
- Tip: Change the "magic number" 3 in Game2DClient.unsetDot()
to a constant negative one.
- Extra Credit: Make the winner be the person with the most points
when somebody looses.
Submit a printout of the Game2D source code with your modifications
highlighted with a highlighting pen. Also attach a printout
demonstrating a successful execution (screen capture or console log as
appropriate).
Problem #3
Due Thursday Oct 28
Print a copy of the class
diagram for Game2D from page 213. (Landscape orientation may be
best). You may draw a version by hand if you prefer. Now examine
the source code to the Game2D application (see hwk #8) and compare the
actual source code to the class diagram. You will discover that
whoever implemented the source code didn't exactly follow the class
diagram. Modify the diagram so that it is consistent with the
actual code. For example, "Game2DInitiator" in the diagram is actually
called "G2DLaunch" in the code. So cross out the original name on the
diagram and write in the actual name.
Problem #4
Due Tuesday Nov 2
Draw a class diagram for a design of the solution to the Audio
Tape Calculator problem using complete UML notation. Include all
data fields and method signatures. You do not need to include
GUI
components in your solution. Strive for a design that is
thoroughly decomposed and has classes that could be reused in other
similar applications.
Under Construction
Reverse Engineering a class diagram from source code
Homework #10
Due Thursday
Study the Go
Fish applet and spend a few minutes playing the game to learn
how it works. Draw a UML Class Diagram including attibutes and
methods for an object oriented decomposition of the Go
Fish game. You do not need to include any User Interface elements
in
your design, just the underlying game elements.
Week 9
Homework #12 - "Makeup" Homework
Due Tuesday
Draw a class diagram for a solution to this problem.
This assignment is optional. You may complete it to "makeup" a
missing homework or for an extra credit homework. This assignment is
recommended for those who need more practice with design and class
diagrams.
Homework #13
Due Thursday
Read the class coding
standard. Then printout this sample
java module (on a single page) and mark in ink all the deviations
from the coding standard. You may use a brief narrative comment (e.g.,
"missing @param tag") or you can use a reference number from the coding
standard.
Week 5
Homework #6
Due Tuesday
Method Design Practice
Home