Questions on Software Development Methods - Class Design | CS 314, Study notes of Computer Science

Final Study Guide (Questions) Material Type: Notes; Professor: France; Class: Software Development Methods; Subject: Computer Science; University: Colorado State University; Term: Fall 2013;

Typology: Study notes

2013/2014

Uploaded on 01/06/2014

j-rad992
j-rad992 🇺🇸

5

(1)

5 documents

1 / 4

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
CS314 Final Exam Study Guide
The final exam will have the following parts:
Part 1: True/False and Multiple-choice questions
Part 2: “Fill in the blanks” statements
Part 3: Modeling and Design Patterns exercises
Study all the course slides used in this course. With respect to the textbook, it is very
important that you study the following chapters: 2, 3, 4, 5, 6, 9, and 10. Note that the text
book uses UML models that DO NOT all adhere to strictly to the UML standard (e.g.,
use of filled in arrows instead of unfilled arrows for inheritance, and not having
multiplicities on each end of an association and not having names on associations); the
UML notation and rules given in my course slides overrule those in the text book, e.g., all
associations must have meaningful names and must have multiplicities in your answers.
Students should be able to answer the following questions or have a good understanding
of the following concepts before the date of the final exam:
Intro to SE (read course slides in Week 1)
1. What is software engineering?
2. Understand the differences between programming-in-the-large and programming-
in-the-small.
3. Understand the factors behind the emergence of software engineering.
4. Understand the software product qualities and their differences: e.g., correctness
vs. reliability; reliability vs. robustness vs. correctness; evolvability, testability.
5. Understand why the notion of software quality varies across stakeholders and
application domains.
Processes (read course slides in Week 1)
1. Understand the pros and cons of each of the following process models: “code and
fix”, waterfall, and iterative/incremental.
2. Under what circumstances is a conservative process model preferred over a
radical process model (and vice versa)?
3. What is the purpose of the Capability Maturity Model (CMM)?
4. Understand the Unified Process
a. What is time-boxing and why is it important?
b. What is the difference between a phase and an iteration in UP?
c. What is the difference between a phase and a workflow in UP?
OO Design (read text book Chapters 2 to 6 and course slides in
Weeks 2, 3)
1. What is an abstract data type? How is a class related to an abstract data type?
2. What is information hiding? What is encapsulation? Can you have a class that
supports encapsulation but not information hiding? Can you have a class that
pf3
pf4

Partial preview of the text

Download Questions on Software Development Methods - Class Design | CS 314 and more Study notes Computer Science in PDF only on Docsity!

CS314 Final Exam Study Guide

The final exam will have the following parts: Part 1 : True/False and Multiple-choice questions Part 2 : “Fill in the blanks” statements Part 3 : Modeling and Design Patterns exercises Study all the course slides used in this course. With respect to the textbook, it is very important that you study the following chapters: 2, 3, 4, 5, 6, 9, and 10. Note that the text book uses UML models that DO NOT all adhere to strictly to the UML standard (e.g., use of filled in arrows instead of unfilled arrows for inheritance, and not having multiplicities on each end of an association and not having names on associations); the UML notation and rules given in my course slides overrule those in the text book , e.g., all associations must have meaningful names and must have multiplicities in your answers. Students should be able to answer the following questions or have a good understanding of the following concepts before the date of the final exam:

Intro to SE (read course slides in Week 1)

  1. What is software engineering?
  2. Understand the differences between programming-in-the-large and programming- in-the-small.
  3. Understand the factors behind the emergence of software engineering.
  4. Understand the software product qualities and their differences: e.g., correctness vs. reliability; reliability vs. robustness vs. correctness; evolvability, testability.
  5. Understand why the notion of software quality varies across stakeholders and application domains.

Processes (read course slides in Week 1)

  1. Understand the pros and cons of each of the following process models: “code and fix”, waterfall, and iterative/incremental.
  2. Under what circumstances is a conservative process model preferred over a radical process model (and vice versa)?
  3. What is the purpose of the Capability Maturity Model (CMM)?
  4. Understand the Unified Process a. What is time-boxing and why is it important? b. What is the difference between a phase and an iteration in UP? c. What is the difference between a phase and a workflow in UP?

OO Design (read text book Chapters 2 to 6 and course slides in

Weeks 2, 3)

  1. What is an abstract data type? How is a class related to an abstract data type?
  2. What is information hiding? What is encapsulation? Can you have a class that supports encapsulation but not information hiding? Can you have a class that

supports information hiding but not encapsulation? How are these concepts related to the concept of an abstract data type?

  1. What is a class responsibility and how is it discharged in an OO program?
  2. Understand the design principles that guide the assignment of responsibility to classes (cohesion, coupling, expert, creator and controller principles).
  3. You should be able to identify a bad/naïve OO design from a good OO design.
  4. What is polymorphism? What is dynamic binding?
  5. Understand the difference between overriding and overloading.
  6. Know the difference between inheritance and “implements” relationships in Java.
  7. Know the difference between implementation inheritance and interface inheritance.
  8. Understand the situations in which an interface is preferred over an abstract class and vice versa.
  9. Given an inheritance hierarchy you should be able to tell if it satisfies Liskov’s Substitutability Principle (LSP) or not.
  10. What is a class invariant?
  11. What is a precondition? What is a postcondition? How are they checked in a program?
  12. What is refactoring? Under what situations should code be refactored?

Design Class & Sequence Diagrams (read course slides in

Weeks 3, 4)

  1. What is a design class diagram? What aspect of a design does it describe?
  2. What is an association class and how is it represented in UML?
  3. How can a class diagram with association classes be converted to a class diagram with association classes?
  4. What is a navigability symbol?
  5. What does it mean when an association in a class diagram does not have a navigability symbol?
  6. How is inheritance represented in a design class diagram?
  7. What is a discriminant in a UML inheritance hierarchy?
  8. What is multiple inheritance?
  9. Understand when to use associations instead of inheritance.
  10. What is an object diagram?
  11. Understand how a class diagram can be used to determine of an object model is valid or not.
  12. Why is there no symbol for inheritance in an object model?
  13. What does a sequence diagram describe?
  14. What does a message in a sequence diagram represent?
  15. Distinguish between synchronous and asynchronous messages? What is a return message?
  16. What is a lifeline? How do you show method execution on a lifeline?
  17. How are loops and alternative structures shown in a sequence diagram?

Requirements Modeling (read course slides in Weeks 8, 9)

  1. What is a problem and how are the elements of a problem described during
  1. What is regression testing?
  2. What is a test oracle and how is it used in testing?
  3. What is the difference between black-box and white-box testing?
  4. Distinguish among the white-box testing criteria.