cpsc 3720 - Final exam topics, Spring 2009 (open book exam) ----------------------------- SHORT ANSWER QUESTIONS: The type of questions you received in the assignments may be included in the exam. Also, you may get 1 or 2 questions inspired from the papers chosen for presentations. - What is Software Engineering (SE)? (notes) - What are the essential characteristics of SE? (notes) - Why is documention important in a s/w project? (notes) - What are the major phases in software (s/w) development? (notes) - Assume for a moment that you are the instructor in the SE course and project team 1 comes to you and says "we've found and fixed 50 faults in our system". Team 2 says "we've found and fixed 200 faults in our system". (recall, they talk about the same project). Can you say anything about the quality of the systems from this metric? If you were to use one of the systems at home to play, would you make your choice based on this measurement? (think) - Describe the pros and cons of using Commercial-Off-The-Shelf (COTS) software. What are the risks and benefits associated with COTS? (think + design goals in Ch 6) - What is the purpose of information hiding? Explain. (notes, think) - If a system is being developed where the customers are not sure of what they want, the requirements are likely to be poorly defined. Which of the process models will be most appropriate for this type of development and why? (Ch 15 + notes) - Brooks argues that adding people to a project that is running late will make it even later. Explain why this is the case, and what approach you would follow instead. (think) - A) What are the advantages of using an object model as a modular decomposition style? B) Object-oriented design takes advantage of the concept of inheritance. What are the problems with inheritance in OO design? (Ch 8 + think: what about testing?) - Previous question suggests that there are problems with inheritance in the design of a system. However, design patterns which are solutions to many common problems in design, rely on inheritance. Is this a contradiction? Explain. (think) - Explain what is implementation inheritance, interface inheritance, and delegation in an object oriented model. When, if ever, is it appropriate to use each of these solutions in your design? (Ch 8) - Software inspections are widely used for verification. What types of errors are unlikely to be discovered through inspection, and why? (think) - Explain the difference between verification and validation. Explain where, in the stages of a project, each of these should be used. (Notes) - What are the sources of uncertainty that make prediction of reliability challenging? (Ch 6 - design goals + notes + think) - Discuss the advantages and disadvantages of bottom-up and top-down integration testing. What problems does sandwitch integration testing try to address? (Ch 11) - It has been argued that non-functional requirements should be specified in a way that makes them testable. How can we ensure that requirements about reliability are testable? How can we demonstrate the reliability of a system that is required never to fail? (Notes) - What does it mean to make requirements traceable? Discuss advantages and disadvandages of insuring traceability of requirements. (Ch 4) - what is the difference between a walkthrough and an inspection? (Ch 11) - what are the differences between using white-box testing on an object-oriented system versus a procedural one? (Ch 11) - Think of the differences between an "Information S/W System" and a "Real-Time S/W System" (search for the definition of "real-time" system if you don't now). How each of the following development activities are different in the two cases? * requirements elicitation and modelling * design * quality assurance (think) - define in your own words what design is (note: you will be taken marks OFF if you copy the definition in the textbook!). Think about how you approach design when you work on a student programming project. Explain this briefly (do you use diagrams?, do you write notes?, do you start with basic data structures and work your way up to more complex functions?, do you start with the "main()" function?, etc...). Include at least one example and stick to the point! NOTE: no marks will be taken off because I don't agree with your process. Marks WILL be taken off if your description is UNCLEAR, and NOT TO THE POINT. - same as above for architecture (system) design. No example required. PROJECT TYPE QUESTIONS: The project type questions from the assignment may be included in the exam, possibly using a different project. - Given a source code, describe test cases that are: * branch covering * path covering - Given a very brief specification (input to a function), discuss test cases based on black-box testing. - Given a procedure that receives 3 numerical inputs representing the lengths of the sides of a triangle, and outputs "scalene", "isosceles", or "equilateral", propose test cases to test this procedure (you may consider only numerical inputs). Provide the actual input! - Describe the flow of control for the design you established for one of the projects. - Give a message sequence diagram for a particular function from one of the projects. - A concrete design task will be described. You will be asked to choose one of the design patterns from Ch 8 that satisfies the design goals and to provide the class definitions for that pattern. You will need to explain briefly the interfaces. One example: Project "airport door". Your system is still a prototype. Now, the information captured for each user will be stored in a text file, but you want to accommodate future changes, for example you might store the info using a database, or you might send it over a network connection to the central airport security system, etc... Specify what design pattern is appropriate. Describe briefly the interface of the classes (class name, attributes, functions, and a short class diagram). - Write use cases for functional requirement X from one of the projects given. - Write a class diagram from the one of the use cases you wrote in the previous exercise. - Write a state chart diagram for class X from the class diagram you identified earlier. - Given the functional requirement X from one of the projects below, what modelling technique you think is most appropriate to describe your design (solution) for implementing that requirement? Provide the description. Include enough details to guide the implementation, but not too many details which will prevent you to finish the task in time. One example: Project "track layout". Requirement: given a start and end point and a set of tracks, design a layout that connects the start with the end. Note: your focus is on the algorithm. You may define entities if you need, but you don't have to specify the structure of these entities. LIST OF PROJECTS ---------------- In all these descriptions, you are free to make any assumptions about the project as long as these assumptions are consistent and do not contradict other statements. - A coursework submission system This system should manage the electronic submission of assignments from students to instructors. It should keep track of which students have submitted assignments and should allow instructors to manage the grading of assignments. It should provide summaries of student grades and facilities for electronically returning information to students. You might consider some kind of annotation system where instructors could comment on electronic versions of students' work. If you cover security in your courses, you could include encryption facilities in the system. - Software for a bank ATM machine Think of what an ATM machine is able to do. Focus only on the function of "dispensing money" (we are not interested in the ability to pay bills, check transactions, etc). The system works with the bank network and with the Interac network. Interac allows clients from other banks to use the ATM. You need to make assumptions about the functions that the Interac network needs to provide for your system. - A museum information system A museum requires an automated information system for use by visitors which helps them locate it ems in the museum and to find out more about items which are on display. The system is intended for use in a computer museum which contains many old computers, modern machines running simulati ons, books and audio recordings of pioneers of computer development. Factors which must be taken into account in the design are: * The system must be a 'walk up and use' system for visitors who have no training whatsoever in computer system use. * You will need to be able to manage floor plan of the museum and the location of items on that floor plan. Information about specific items should be accessible by indicating their location. * The system will have to manage multi-media information - sound, images and video. * It must be possible for museum staff to change the information in the system and to add information about new exhibits. * When you give people information about where to find an item, they respond best to simple instructions made with reference to prominent landmarks rather than maps which they often find difficult to read. - A track layout design tool A customer comes to you and tells you the following: My little boy (aged 18 months) has got a (rather extensive) wooden railway set made by Brio. There is a wide variety of pieces of track: Single (and double) long curved pieces, Single (and double) short curved pieces, Single (and double) straight pieces of varying sizes, points, parallel switches, Y-switches, T-junctions etc. In addition there are lots of different bridges, stations, level crossings etc. The Brio catalogue lists all the items that are currently available. Designing layouts can be very complicated (especially if one sets constraints such as "I must use every piece of track I own and leave no dead ends"). The main aim of this project will be to implement a Brio Design Layout tool. It should have the following features: * An on screen toy box: This will contain all the pieces that are currently owned. When new pieces are bought they should be easily added to the toy box from an on-line catalogue. * Drag and Drop: The user should be able to drag pieces from the toy box and add them to the current layout. Moving pieces from one part of the layout to another should also be allowed. * Error Detection: The system should tell the user if two pieces will not physically fit together. * Some element of automation: The user should be able to place two points on the screen and ask the system to join them together (if possible) with pieces from the toy box. - Door at the airport. You are implementing the software for an intelligent door. It locks automatically and unlocks when someone swipes an ID card through the door's reader and punches a secret PIN at the numeric keyboard (think of doors at the airport). You need to gather information about the ID, time, date, and direction (going in or out) for the user when accessing the door. The decision for allowing access or not can be taken locally (the software checks a local database) or globally (the software informs the airport's central security and monitoring system which tells the door to unlock or not).