CSC440 Software Engineering
Fall 2018
Assignment #6
- Problems 1 - 4 (50%):
testing problems on the examples link based on slide #6.
- 5) What is the purpose of testing?
- 6) When we modify a program (e.g. add a new feature, or fix a bug), we not only test the new code but we also retest related components to check whether what was previously working is still working or new bugs were introduced by the modification. This is called ______________ testing. Unit testing tools such as JUnit provide support for this by storing the tests in JUnit test classes and allowing you to re-run the tests with a single click.
- 7) What is the Waterfall Model? Compare and contrast it with the Spiral Model, i.e. what do they have in common, and how are they different?
- 8) What are agile methodologies? Examples of agile methodologies are XP and Scrum. Compare and contrast XP and Scrum.
- 9) What is a metric and what is an example of a metric?
-
10) Given class A (defined in package java.util), suppose we need class B that requires some but not all of the methods of class A. In this case, why is aggregation (B contains A) more appropriate than inheritance (B is a sublass of A) ? In what situation(s) would inheritance be appropriate?
- 11) What are interfaces, and for what are they useful?
- 12) What is the relationship between software engineering and security?
- 13) For each of the clauses in the ACM/IEEE Code of Ethics shown in Figure 1.6 of the 7th or 8th edition (or Figure 1.3 of the 9th or 10th edition), suggest an appropriate example that illustrates that clause.
- 14) Consider one of the software engineering horror stories (e.g. Therac-25, Ariane 5, ...) and imagine you are a member of the development team. There would probably be many things you would want to change about the project. Specify (at least) one of the things that you would do differently, and relate it to (at least) one of the things that went wrong.