DOC PREVIEW
Toronto CSC 302 - CSC 302 Midterm Test

This preview shows page 1-2 out of 7 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 7 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 7 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 7 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

CSC302 Engineering Large Software Systems page 1/7 Faculty of Arts and Science University of Toronto Midterm Test Department: Computer Science Instructor: Steve Easterbrook Date and Time: 10:10am, Thurs 28th Feb, 2008 Conditions: Closed Book Duration: 50 minutes This test counts for 20% of your final grade Name: _______________________________________________________ (Please underline last name) Student Number: _______________________________________________ Question Marks 1 ______________/20 2 ______________/20 3 ______________/20 4 ______________/20 Total___________/80 = _________%CSC302 Engineering Large Software Systems page 2/7 1. [Short Questions; 20 marks total] (a) [Conway’s Law – 5 marks] Conway’s law states that the structure of a large software system will reflect the structure of the organization that built it. Why does this happen, and what clues does it give us about how to organize large software development teams? Conway’s law works because software design is a knowledge-intensive activity. Each decision taken by a developer can potentially affect the tasks of any other member of the team. To control the dependencies, and hence minimize the amount of knowledge sharing across subteams, the developers inevitably create modules that contain the parts they are responsible for, and try to simplify the interfaces with other people’s modules. This suggests that the best way to organize the development team is to choose a stable architecture for the software, and divide up the team according to the main architectural units. A good architecture minimizes coupling between units, which then means that the need for communication between subteams is minimized. (b) [Risk Management – 5 marks] Identify the three biggest risks you face on your course project this term? How do you know these are the biggest risks? [Many possible choices for risks here – marks awarded for any reasonable list] e.g. 1. team members dropping the course 2. failure to coordinate the tasks needed to complete the assignments 3. failure to understand what the assignments are asking for [to answer the second part, some reasonable risk assessment process must be described] e.g. We know these are the biggest risks because we conducted a risk assessment exercise. We brainstormed a list of possible risks, using the sample risk lists given in the lectures as a starting point. We then estimated the likelihood of each risk occurring, and the impact if it did. Impact was assessed as the potential for lowering our course grades. We then used these to rank the risks. The above three risks had the highest probability of occurring and all would lead to significant reduction of our course grades.CSC302 Engineering Large Software Systems page 3/7 (c) [Software Aging – 5 marks] What are the causes and symptoms of software aging? What steps can be taken to reduce the problems associated with software aging? Software ages because the world continually changes – technology improves and users demand more functionality. If the software is not updated continually, it becomes steadily less useful. Symptoms of software aging include growing size, growing complexity, and deteriorating structure, because it gets harder to accommodate changes within the original design. To reduce the problems associated with software aging, we can attempt to restructure the software by re-factoring it, or we can re-engineer it, through a process of reverse engineering a design model, redesigning these to improve modularity, and then re-implementing the system. (d) [Project Management – 5 marks] What techniques do agile development methods offer for keeping track of progress on a software project? How do these compare with traditional techniques? Agile methods emphasize small iterations, and regular delivery of working code. To keep track of progress, they compare completion of coding tasks with the estimates of effort needed for those tasks. One way of doing this is with a burn down chart, which plots effort remaining (sum of effort estimated for all unfinished tasks) against time. This shows day-by-day how the project is doing, compared to the plans. Traditional (non-agile) techniques focus on much larger-scale plans, using pert charts or gantt charts. They suffer from the problem that it’s hard to tell whether tasks other than coding are really completed.CSC302 Engineering Large Software Systems page 4/7 2. [Class Diagrams – 20 marks] The following class diagram shows part of the design of for software for EasyDVD, a web-based DVD rental agency. EasyDVD allows customers to browse its website to see the inventory of DVDs, and select DVDs for rent. DVDs are sent to the customer and returned by mail. Each DVD has a set rental fee and a set loan period. (a) [5 marks] There are no associations shown for the Date class. How would you redraw the diagram to show such associations? What at the advantages and disadvantages of adding these explicitly? You would need to add three associations from the Loan class to the Date class, labeled loadDate, dueDate, and returnDate, plus another association from the Payment class to the Date class. You would then remove these date attributes from the Loan and Payment class. Adding these to the diagram makes it more obvious how the date class is used, but makes the diagram more cluttered and harder to read. (b) [5 marks] EasyDVD wants to restrict customers to have no more than 3 DVDs on loan at a time. How would you modify the diagram to show this constraint? Note: EasyDVD still needs to keep track of (a potentially large number of) past loans for each customer’s account. First, you would need to distinguish between current loans and past loans. A simple way to do this is to create two subclasses of the Loan class. The existing 1-to-many association from Account to Loan would then be moved to the “pastLoans” subclass, and a new association from Account to currentLoans, with 0..3 at the loan end.CSC302 Engineering Large Software Systems page 5/7 (c) [5 marks] EasyDVD wants to simplify its pricing structure, so that there are a small number of categories of movies, where each category has a set rental fee and loan period. How would you modify the diagram to allow this? Add an additional class for movie types, which records the rental fee and loan period (and probably the late fee too?) and link this to the Movie


View Full Document

Toronto CSC 302 - CSC 302 Midterm Test

Documents in this Course
Load more
Download CSC 302 Midterm Test
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view CSC 302 Midterm Test and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view CSC 302 Midterm Test 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?