Public Final Exam Study Questions


What is software engineering and what are its main goals? 

What are the most important responsibilites of the software project manager?   Which of these responsibilities did you manager carry out effectively?  If you were to make a suggestion for improvement for your manager, to which area would you suggest he devote more attention?

Give a one sentence description of each phase in the waterfall model.  For each phase, also give a one sentence description of the artifact(s) produced during that phase.

Dr. Dalbey categorizes requirements into four types.   Name and describe each type and give an example from your project.

The author gives 14 criteria for writing good requirements (4.9).  Give a brief explanation of each one.  Be able apply the criteria to critique a written requirement.

What are the important difficulties and risks in the analysis phase?

What are the important difficulties and risks in the design phase?

What is a software prototype and what is its main purpose? What advantages are offered by the prototyping model of development? Are there any disadvantages?   Describe how your team incorporated prototyping into their development process.  Can you think of any ways to take more advantage of prototyping?

Suppose you are a QA manager for a team who is resistant to the idea of using FTR's.  How might you try to demonstrate or prove that FTR's are a cost effective use of developer's time?

Name and describe each of the four parts of a design (according to Dr. Dalbey's scheme).

Be able to explain each of the author's design principles.  Be able to critique a design using these principles.

Know the definition of coupling and cohesion and be able to give examples (both good and bad).

What is the biggest design flaw remaining in your design?   What do you think would be a good way to correct it?

The author gives twelve principles of good user interfaces. Name each one and give a one sentence description. Which of these criteria are most important to apply in your project?  Give a good and poor example from your UI.

What are the benefits of using a version control system?

What are the steps in a Formal Technical Review?

What are the advantages of writing detailed design in pseudocode instead of actual source code?

What are the benefits of documenting your design rationale?

Know the advantages and disadvantages of coding parties.

Know  these test coverage concepts and definitions and be able to solve a problem like the exercise at the bottom of the page. Given a Java method be able to write a JUnit test case that provides a specified level of coverage.

Know the activities that occur during each phase of the testing lifecycle.

Be able to explain the concept of "change control" and choose the appropriate change control policy for a given artifact.

Be able to explain the different integration approaches we studied.  Be able to identify examples of integration defects.

Be able to write the detailed design for a method using the class pseudocode standard.

Be able to identify and repair checkstyle errors resulting from violations of our class coding standard.

Be able to write an integration test given a class diagram and method definitions.

Given a UML diagram, be able to create a dependency chart.

Given a dependency chart, be able to create an integration schedule.

Be able to explain the metrics for release explained in Chapter 16. Be able to apply them to making a release decision for a hypothetical scenario.

Be able to use correct UML notation to draw a class diagram for the relationships between a set of domain entities.  Be able to identify errors in a UML class diagram.

Be able to explain the benefits and disadvantages of automated testing compared to manual testing.

Be able to identify the problems in a poorly written system test and be able to revise or improve it.
Be able to write a system test given the requirements.

Be able to explain the difference between empirical and formal verification.

Be able give a definition of a software process model and give examples.

Be able to explain software processes your team used (or didn't) and describe what might have worked better.

Be able to draw (from memory) a diagram of the software lifecycle, showing each phase and the artifacts it produces.

Given a list of tasks and dependencies, create a task network and a Gantt chart.

Given a design issue (question), prepare a complete analysis of all alternatives and their pros and cons.

Be able to distinguish design issues from requirements issues.

Be able to critique the javadocs for a class, identify where it violates the author's design principles.

Critique a poorly written MVC application.

Be able to decompose a simple GUI application into Model-View-Controller architecture. (Tutorial)

Given a class diagram, write the Java class skeletons.

Given a set of Java class skeletons, reverse-engineer the class diagram.

Given a class diagram, draw a sequence diagram for a specific use case.

Critique a poorly drawn sequence diagram.

Rewrite a poor algorithm design in pseudocode.

Know the elements of a defect report.