The final exam format will be one three-hour exam
held during the regular final exam period.
Update: The final exam will be held in room 114 in building 315
on Wednesday April 19th 1-4pm
The exam will be open notes and open book, no electronics permitted.
The questions will, by and large, be essay based, and the bulk of the marks for each question will be based on the explanations, justifications, and/or rationale you provide for your answers.
The questions are very open-ended, please base the length/detail of your responses to what can reasonably be described within the framework of 25 minutes per question.
The exam is worth a total of 50% of your final grade,
you must pass the final exam to pass the course.
Examinable material: material which can appear on the exam includes:
There are enough questions here for roughly two full exams, e.g. broken up as questions 1-8 and 9-15.
Question 1: Project metrics
Pick two of the three project aspects described below, and describe metrics that would provide relevant information for that aspect of a project, how you would gather those metrics, and any potential weaknesses in the approach you have suggested:
Question 2: Development life cycles
One type of suggested alternative to the traditional waterfall software life cycle is "agile software development".
Agile techniques typically emphasize frequent product inspection, user feedback, and product adaptation together with a greater focus on effective teamwork and collaboration skills.
Agile methodologies often use many short cycles, each of which lasts several weeks and makes a small incremental change to the product. A single cycle would generally consist of planning, analysis, design, coding, testing, and user testing - each done in a short burst focusing on the latest change.
With respect to the product for your team project, discuss how an agile methodology would have been better or worse than the approach you used this semester.
Question 3: Testing
Many test plans include, among other things, an explicit list of "Features not to be tested".
Discuss why you would choose not to test certain features of a product, providing examples and justification based on your team project where possible.
Question 4: System Documentation
Suppose you are working for the IT department of a large organization, and the company servers contain an extensive collection of internal software applications, data files, and databases that are used by different people and departments across the company to manage and report on their tasks and activities.
Unfortunately, these have been developed and modified by many different people over the past ten years, and often the supporting documentation is missing, incomplete, or inaccurate.
Your boss has assigned you the task of determining which applications are still relevant and which are obsolete, and developing up-to-date documentation (both for users and for the maintainers) for those applications still in use.
Outline and justify your plan for completing the task, including a discussion of how you plan to figure out how long the task will take you.
Question 5: Changeover/conversion plans
Suppose you were working for the IT department of a large import/export firm. Four months ago, your department deployed a major new piece of accounting software for the agency - running it in parallel with the old system.
The two systems have been running in parallel for the entire time, and - as far as your department can tell - the new system has been working flawlessly since a few minor glitches were ironed out in the first month. However, the head of the accounting department is now insisting on running the two systems in parallel for an entire year, despite the costs and complications involved.
Discuss the problems involved with parallel deployment, and come up with a plan or testing strategy that might either convince the head of accounting that the new system really is reliable enough to complete the switch-over.
Question 6: Scheduling
One of the scheduling/time estimation techniques we discussed was Joel Spolsky's 'Evidence Based Scheduling'. An interesting component of this was to keep track of how accurate every one of your time estimates has been across all tasks and projects. (E.g. task A took 1.7 times the estimate, task B took 1.1, task C took 0.4, etc etc.) These will be your list of 'alpha values'.
An approach to predict the expected completion date for your currrent project could then be as follows:
Make your best-guess estimates for the tasks in the current project Repeat 100 times: Start from your best-guess estimates For each project task: randomly select one of the alpha list values multiply the task time estimate by the alpha value selected Perform a PERT analysis of the project using the adjusted times to determine a projected completion date Plot the set of predicted completion dates, e.g. | | x x | x x x x x x x | x x x x x x x x x x x x +----------------------------------------- week: 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 month: April May June July AugustThe plotted completion dates should give you a good idea of a probably range of completion dates, based on your historical estimation tendencies.
Discuss the strengths and weaknesses of the approach outlined above.
Question 7: Process modeling
The primary technique we discussed for process modeling this semester involved the use of data flow diagrams, or DFDs.
If you were to produce a new model of your team project using DFDs,
(i) what are the core processes you would describe, and why?
(ii) what are the core data flows you would describe, and why?
(iii) what are the core data stores you would describe, and why?
Question 8: Data modeling
The primary technique we discussed for data modeling this semester involved the use of entity relation diagrams, or ERDs.
If you were to produce a new model of your team project using ERDs,
(i) what are the core entities you would describe, and why?
(ii) what are the core relationships you would describe, and why?
Question 9: User guidance
Focusing specifically on user-guidance, discuss how a project team can/should determine when they have provided "sufficient" documentation to accompany a software product.
Question 10: Requirements/JAD
One of the techniques considered for requirements gathering was group workshops (JAD sessions) where one tries to gather together representatives from all the relevant groups for a few sessions of several hours each. In these sessions the group performs brainstorming and analysis exercises to try and clarify what the requirements for the project should truly be.
Assuming your team was to run such workshops for your project,
Question 11: Closeout
With respect to your own skills, abilities, and work habits, discuss what is the most important thing you have learned from this team project and why it is the most important lesson you have learned.
Question 12: Task scheduling and staffing
The table below indicates the estimated staff time required to complete a variety of tasks, and the dependencies between tasks (e.g. if A and B are listed as immediate predecessors of C then C cannot begin until both A and B have completed).
Time estimates are given in hours, and for each task we show three time estimates: a best case scenario, a worst case scenario, and a probable scenario.
Assume any employee could be assigned to any task for any number of hours without penalty, but no task can be split between more than the listed "maximum staff members".
Answer the following:
How many staff members would you need to complete in that time?
Be sure to justify your answers, including which staff members would be assigned to which tasks, and at what times.
Be sure to justify your answers, including which staff members would be assigned to which tasks, and at what times.
Task | Best Case Time | Worst Case Time | Probable Time | Immediate Predecessors | Maximum Staff Members |
A: Collect requirements | 54 | 72 | 60 | - | 2 |
B: Analyze processes | 68 | 102 | 80 | A | 2 |
C: Analyze data | 72 | 120 | 92 | B | 2 |
D: Design processes | 168 | 240 | 200 | B | 2 |
E: Design data | 128 | 208 | 168 | C | 2 |
F: Design screens | 20 | 36 | 28 | C,D | 1 |
G: Design reports | 160 | 192 | 180 | D,E | 2 |
H: Program | 124 | 152 | 136 | F,G | 3 |
I: Plan tests and document | 204 | 308 | 260 | G | 3 |
J: Test and debug | 120 | 200 | 144 | H,I | 4 |
K: Install | 52 | 76 | 64 | J | 2 |
Be sure to clearly identify any assumptions you make
The system discussed below is a fictional replacement for VIU's
timetabling process, and has two main purposes
(i) to allow the scheduling
of courses offered each year (including assigning lecture and lab sessions,
instructors, rooms, class sizes, etc), and
(ii) to allow students to see which courses and sections are available,
who is teaching them, and how much space is available in each or how long the
wait lists are.
The people who use the system, and the ways they use it, are as follows:
The timetablers receive, from the various department heads, lists of courses that are to be run in a given year and, for each course, the department head specifies the following:
For each instructor, the department head also specifies any constraints on when the instructor is NOT available (i.e. some instructors might not be available certain days, or at certain times).
The timetabling system must provided the area timetablers with the following capabilities:
Once the official timetable has been produced, department heads are able to reallocate workloads, i.e. change which instructor is assigned to specific lectures, labs, or tutorials. (At this point it is the department head's responsibility to ensure the change doesn't create a timetabling conflict for the affected instructor.)
Once the official timetable has been produced, department heads must also be able to generate timetables for individual instructors, identifying the days, times, and locations for each of their assigned labs, lectures, and tutorials.
You may assume the timetabling data with respect to current size and seats available is automatically updated whenever a student registers in or drops a course.
Question 13: Risk management
Assume VIU is the client, and has hired you as a consultant on the development of a new timetabling process as outlined in the "System Description" above.
Your task is to create a preliminary risk analysis/management plan for them.
Be sure to clearly identify any assumptions you make
Question 14: Data modeling
Assume VIU is the client, and has hired you as a consultant on the development of a new timetabling process, as outlined in the "System Description" above.
Design a logical ERD, complete with several paragraphs of supporting text description, for the proposed system. Be sure to clearly label and identify all entities (including their most important attributes), the relationships between them, and the cardinality of all the relationships.
Be sure to clearly identify any assumptions you make
As discussed in lectures, such ERDs are to model the information used within the relevant portion of the client business process - NOT a description of any planned code/modules/etc. |
Question 15: Process modeling
Assume VIU is the client, and has hired you as a consultant on the development of a new timetabling process, as outlined in the "System Description" above.
Design a logical process model (collection of DFDs) for the proposed new timetabling process. Be sure to clearly label and identify all processes, data flows, participants, and data stores, and attach sufficient text descriptions to clarify the nature and purpose of each of these components.
Be sure to clearly identify any assumptions you make
As with the ERDs in Question 14, the purpose of these DFDs are to model the relevant portion of the client business process - NOT a description of any planned code/modules/etc. |