List of Questions for the Oral ESE Exam
=======================================

Q: What is Software Maintenance?

Q: What does it entail?
A: Corrective, Adaptive, Perfective Maintenance

Q: When does maintenance start in the software lifecycle?

Q: Is Maintenance important in the software lifecycle?

Q: What is the biggest problem in SE teams when the teams grow bigger?
A: Communication overhead grows. People cannot work closely together, 
   knowledge is concentrated on single persons, knowledge has to be written 
   down to be communicated, knowledge gets lost when people leave.

Q: What is Conway's Law?

Q: Give an example of conway's law. 

Q: Give a possible explanation for why it holds true.

Q: How do you know if a software system fulfills its requirements?
   What quality do the requirements have to have?
A: Because the Requirements have been made verifiable.
   It must be testable.

Q: What kind of requirements are difficult to be made verifiable?
A: Non-functional requriements

Q: Examples of Non-functional requirements?
A: [Slide 88: Types of Non-Functional requirements]

Q: Why is the design method called Responsibility driven design?
A: We look at the behavior of the objects, not at the implementation,
   ('what, not how') and the steps of the design process consist in assigning 
   Responsibilities, organizing classes (into hierarchies, into subsystems)
   according to matching responsibilities
Q: What is the advantage of doing CRC cards before drawing an UML diagram?
A: CRC entails communication which is important for design   

Q: Explain some rules to be followed when asigning resposniblities.
A: responsibilities close to object, not to the clients. state
   responsibilties as general as possible. keep behavior and data
   together (encapsulation) 

Q: Can you give examples of software architecture styles?
A: Layered architecture, Client-Server, Blackboard, Dataflow

Q: What is the difference between a client server architecture and a 
   blackboard architecture?
A: CS: Processing is done on server.
   BB: Procesing is done in applications, only data is shared centrally.

Q: When do you know that you have found all the faults during your 
   testing phase?
A: You never know that you have all the faults.
   Testing can only prove the presence of tests, not the absence.

Q: What kind of methods are there to assess the correctness of software?
A: branch coverage, path coverage (for white box testing)
   statement coverage
   equivalence partitioning of input (for black box testing)
   reliability testing to determine probability of failure on demand,
     mean time to failure, ...
     -> stop when failure rate sinks under a predefined threshold

Q: Give some examples of quality attributes
A: Correctness, Reliability, Robustness, Efficiency, Usability

Q: Give examples of metrics which can assess software complexity

Q: When does it make sense to make a class abstract?

Q: Which parts of a UML diagram are obligatory?

Q: When do use wich UML diagrams in the software lifecycle?

Q: Do you have to have more than one sequence diagram or is one sufficient?

Q: Compare Collaboration with Sequence diagrams

Q: What is the difference in analysis and design documents?

Q: What role play tests in the software lifecycle? (Regression-Tests)

Q: Which strategy is better, Whitebox or Blackbox testing?

Q: Why is architecture important? Why do you have to select and name an
   architecture and why don't you just start to design?

Q: What are the roles of inheritance in design? How do you *model* with it?

Q: What is the difference between a class and an object and what is 
   the relation between them?
Q: What is coupling, what is cohesion and why is it important to minimize 
   one and maximize the other?
Q: What is white-box testing?

Q: Can you interpret the UML-diagram?

Q: Can you identify GUI bloopers in the screenshot?
