Midterm Test Department: Computer Science Instructor: Steve Easterbrook Date and Time: 10:10am, Thursday 1st March, 2012

Similar documents
Getting Started. Chapter 1

Midterm Test Department: Computer Science Instructor: Steve Easterbrook Date and Time: 10:10am, Thursday Nov 9, 2006

Scheduling for Success with Critical Chain. Abstract

Linda Carrington, Wessex Commercial Solutions

Marginal Costing Q.8

Marketing Automation: One Step at a Time

VIDEO 1: WHY IS A STRATEGY PLAN IMPORTANT?

8 ways to make your survey useless if you are making any of these mistakes with your surveys, you might as well throw away the data and start all over

TickITplus Implementation Note

Introduction to Agile Life Cycles. CSCI 5828: Foundations of Software Engineering Lecture 07 09/13/2016

On the Path to ISO Accreditation

Appendix A Tools to Prioritize Requirements

Law firms & the 7 Ps. Why is there no real legal marketing?

Building High Performing Teams

ARBONNE UNIVERSITY. SuccessPlan Basics. BY Donna Johnson. Independent Consultant, Executive National Vice President

THE HR GUIDE TO IDENTIFYING HIGH-POTENTIALS

DEVELOPING A PERSUASIVE BUSINESS CASE FOR CRM. Glenda Parker

OPENEDGE BPM OVERVIEW

Kanban kick- start (v2)

The Beginners Guide to Setting Up an Adwords Account

Tutorial: Advanced Rule Modeling in Corticon Studio

Chapter 12. Sample Surveys. Copyright 2010 Pearson Education, Inc.

Getting Started with Risk in ISO 9001:2015

How to Get Your Marketing to Do What It s Supposed to Do -- Get and Keep Profitable Customers

Start Making Money: Make Money Helping Local Businesses! Page 1

The Dirty Little Secret of Software Pricing

Your Action Plan to Launch New Paid Content

Seven Principles for Performance

Leveraging Risk Assessments to Raise Funding for Your Security Program

Managing Your Backlog

Automating Debt Collection 101. Key concepts and requirements for a successful automation effort

Shape and Velocity Management. Stu Schmidt

Measuring Your ROI On Social Media

Cost Optimization for Cloud-Based Engineering Simulation Using ANSYS Enterprise Cloud

MODULE THREE. Step-by-Step Formula for Connecting with Her Desires

The Attentional and Interpersonal Style (TAIS) Inventory: Measuring the Building Blocks of Performance

Tip #1: Data Entry Tricks Practice these tips in my Core Training Interactive Tutorial

WORKING WITH TEST DOCUMENTATION

Cups4U Forecasting Process Design Case

INVESTIGATING AND WRITING GRIEVANCES

Helping Your Online Community Succeed

SAS ANALYTICS AND OPEN SOURCE

Agile Tutorial for the Senior Project Class School of Computing and Information Sciences Florida International University

The fastest, most effective way to take an idea to development RAPID CONCEPT WORKSHOP TM

INSIGHTS. 10 Talent Management Activities to Stop Doing Right Now

New Compensation Plan FAQ s

Lecture 2: Your Idea and the Business Opportunity

Best Practices for Creating an Open Source Policy. Why Do You Need an Open Source Software Policy? The Process of Writing an Open Source Policy

Innovative Marketing Ideas That Work

LEADERSHIP AND SUPERVISION

02 AdWords. 04 Campaign Settings. 06 Google Analytics & Google Tag Manager

The Challenger TM Customer: THE NEW REALITY OF SALES

ANZ EFTPOS card and ANZ Visa Debit card CONDITIONS OF USE

AHGILE A N D B O O K

CSCC40 Analysis and Design of Information Systems mid-term exam

CxC Studio 151 Inventory System

STOP. COLLABORATE & LISTEN. EIGHT BEST PRACTICES FOR IMPROVING COLLABORATION IN THE PROPOSAL PROCESS

Project Management. Agenda - What will you learn today? Theory Lecture Plan. A Software Life-cycle Model Which part will we talk about today?

Effective Performance Evaluations

Discover Prepaid Jeff Lewis Interview

HOW BEST-IN-CLASS DEALERS ARE MAKING MORE CUSTOMER CONNECTIONS

The Reuse Environment A Promise Unfulfilled A TenStep White Paper

THE PURPOSE OF TESTING

BUILDING A BUSINESS CASE FOR INVESTMENT AND INNOVATION

ISO whitepaper, January Inspiring Business Confidence.

Grow Your Small Business With Salesforce SELL. SERVICE. MARKET. SUCCEED.

Contents. Today Project Management. What is Project Management? Project Management Activities. Project Resources

Bayesian Agile Planner (BAP) Release Planning

Introduction to Systems Analysis and Design

SEO & CONTENT MARKETING: A SPEED DATE

Applying Situation Appraisal to Assess Project Status

The Proven Path involves executive leadership and other levels of management in: Developing a vision of the future

Negotiation and Selling Against Lower-Priced Competition

Turning Clients Into Creative Team Partners. inmotionnow

Agile TesTing MeTrics Quality Before Velocity

Cornerstone Solutions, Inc.

My essay Predictable Competitors1 explored the assumption

How to Run a Successful B2B Content Syndication Campaign

Millennials are crowdsourcingyouhow companies and brands have the chance to do

Testing 2. Testing: Agenda. for Systems Validation. Testing for Systems Validation CONCEPT HEIDELBERG

Overcoming Waterfallacies and Agilephobias: Tales of Resistance and Woe

The Ultimate Guide to Keyword Research

LCA in decision making

Using Systems Capacity Data for Business Intelligence

HOW YOUR CAREER BACKGROUND CAN HELP YOU BECOME A BUSINESS ANALYST

My Top 19 Customer Service Tips

Contents: Choosing a. cloud-based. phone system provider. Getting it right first time.

Headline. Body. Traffic Leaf Your Institute Old Marketing 2 Behind The 6 Automotive Marketing Tactics You Need To Quit Cold Turkey

Enterprise Architecture: an ideal discipline for use in Supply Chain Management

Why Your SIEM Isn t Adding Value And Why It May Not Be The Tool s Fault Co-management applied across the entire security environment

Visionary Leadership. A leadership style to get your team aligned toward achieving your vision.

BUY BUTTON OR BACK BUTTON HOW WEBSITE WRITING CAN ENGAGE OR DETER CUSTOMERS

Sawtooth Software. Sample Size Issues for Conjoint Analysis Studies RESEARCH PAPER SERIES. Bryan Orme, Sawtooth Software, Inc.

Watson-Glaser II Critical Thinking Appraisal. Development Report. John Sample COMPANY/ORGANIZATION NAME. March 31, 2009.

Exploring the Climate for Earned Income Development

Smart energy outlook. February 2017

Architecture Planning Adding value to projects with Enterprise Architecture. Whitepaper. September By John Mayall

Before You Start Modelling

The Ultimate Guide to Performance Check-Ins

Scope Creep: need strong change control to prevent or mitigate. Must establish the change control system early in the project.

Transcription:

CSC302 Engineering Large Software Systems page /9 Faculty of Arts and Science University of Toronto Midterm Test Department: Computer Science Instructor: Steve Easterbrook Date and Time: 0:0am, Thursday st March, 202 Conditions: Duration: Closed Book 50 minutes This test counts for 20% of your final grade Name: (Please underline last name) Student Number: Question Marks /20 2 /20 3 /20 Total /60 = %

CSC302 Engineering Large Software Systems page 2/9. [Short Questions; 20 marks total] (a) [Software Modeling 5 marks] It has been suggested that UML models can be used in software engineering as either sketches, blueprints, or as a high-level programming language. Explain each of these different ways of using UML, and describe the limitations of each. [Note: mark for each defn, mark for a limitation of each use, up to 5 marks total] Sketches: UML is used primarily to share ideas during meetings, and the diagrams aren t (usually) kept after the meeting is over. Limitations: When sketching, you tend not to worry about precise syntax (thus: possibility of mis-communication), nor do you analyze in detail the more subtle aspects of a model such as the implications of multiplicities on associations (thus: not exploiting the full power of the notations) Blueprints: UML is used as a specification language to tell the programmers what they need to implement. Limitations: UML does not capture many things the programmers might need to know, such as user s goals, rationale for the design, assumptions about the problem domain, etc. If used in place of face-to-face communication with users and/or domain experts, may lead to code that does the wrong thing High-level programming language: Tools convert the UML models directly into assembly code to be run on the machine (i.e. no need to use a conventional programming language). Limitations: Hard to capture detailed programming constructs, such as order of operations, conditional logic, etc. Current generation of tools still require some programming code to be added to the translated models, and the translated models are much harder to understand than hand-written code. (b) [Agile Planning 5 marks] Timeboxing is a technique used in agile planning processes to decide what features to develop for an upcoming software release. But it only works if there are reasonable effort estimates available for how long each feature will take to build. What techniques are available to help obtain and improve such estimates? How do these techniques differ from traditional (waterfall) style project estimation? To obtain estimates, could use: 3-point estimation, where programmers give best case, worst case and typical case estimate for each task (and a suitable formula combines them). That card game, where each member of the team selects a card with her estimate on it, and then they all show their cards and discuss differences in estimates (avoids having them bias each other s first estimates). To improve estimates, could use: Post-mortem meeting at the end of each development cycle Project velocity compare estimates to actual development speed in the last cycle, and use this ratio to adjust estimates for the next cycle. Key differences from waterfall style estimation: The programmers themselves discuss and agree on estimates Estimate only for small tasks, each of which delivers working code Only estimate stuff you re ready to do in the next cycle (a few weeks) Fit the tasks to the time available, rather than the other way round

CSC302 Engineering Large Software Systems page 3/9 (c) [Software Evolution 5 marks] Lehmann argued that most useful software is E-type (E for Embedded), meaning the software itself will be embedded in the world, and will change the nature of the problem it solves. Give an example of such software, and an example of software that is not E-type. How would you assess the success of a project that develops E-type software? E-type software includes anything that changes the way people work (and hence the way they think about their work). E.g. word processors, spreadsheets, websites, etc are all E- type. Very little software is not E-type, unless it solves very well defined, simplistic problems. Examples include programming assignments in intro CS courses & simple mathematical problems. You cannot measure the success of E-type software by looking at whether it passes some tests; rather it requires a subjective judgment of the people who use it, and other people who are affected by its use. Most importantly, E-type software is subject to continuous evolution, so it s never finished. A project to develop E-type software might best be judged not by any specific release, but by the way the project handles the ongoing evolution of the software. For example: Is the project responsive to the ongoing change in users needs? Does the project engage the users in the development process? Is the software adaptable/modifiable? Does each release make the software more useful? Does the project manage the complexity of the design as the software grows? (d) [Software Architecture 5 marks] Layered architectures are designed to reduce coupling between components of a software system. Why is this reduced coupling useful? Describe a typical layered architecture, and explain the role of each of the layers. Reduced coupling is good because it separates the functions that might need to be changed at different times. This is good for: Modifiability changes can be made at one layer without affecting others Reusability layers can be reused in similar systems Understandability easier to understand how the software works [Must have at least two advantages for full marks] A typical 3-layered architecture has: Presentation layer, responsible for the user interface e.g. to accept input from the user, display results, and manage the appearance of the interface; Business Logic layer for the basic functions provided by the system. Includes all the entity classes, and control classes needed to implement the use cases; Data storage layer, responsible for persistent storage of the information users in the system. Usually includes a database component. [Notes: other possible answers: 2-layers (essentially client-server); 4-layers model splits business logic layer into application layer (responsible for controlling the use cases) and domain entity layer (for basic functions shared by different applications).]

CSC302 Engineering Large Software Systems page 4/9 2. [Class Diagrams 20 marks] The University of Kinakuta (UoK) has decided to implement an electronic card system for its students, so that students can use their K-cards to access secure areas (e.g labs and residences), and also as a debit card, linked to an account into which students can deposit money, to be used to pay fees at locations on campus. For the initial release of the system, this will be limited to a few university fees: parking fees at campus parking lots, library fees at campus libraries, and equipment rental at the sports centre. The system will keep a usage record for each K-card. An initial class model for the system has been produced: (a) [5 marks] In the model provided above, there is a -to- association between a student and a K- Card. Is this an appropriate way to model students and K-Cards or is there a better way? Defend your answer. [Note: could argue either way credit for a well thought out answer] No, this is not appropriate; it means a student ID can only ever be linked to one card. What if students lose their cards? You would need to deactivate the lost card, so no-one else can use it, and issue a new one. That means you ll need more than one card associated with that student. Even the solution where you don t bother remembering which student a lost card belonged to is not possible in this model, because every card must always be associated with exactly one student. Also, you won t be able to represent the case when a student does not have a card. So when you create a student record, you ll have to issue a card immediately. (b) [5 marks] In the model above, there are no explicit associations from the Deposit and Fee classes to the Account class into which these transactions are to be made. Should such associations be added? Defend your answer. [Again, could argue either way credit for a well thought out answer] Associations from the account to the specific transactions are unnecessary. In the implementation, if code in the Account class needs access to info about transactions, it can ask the K-card object with which it is associated to provide the information (and vice versa). As long as there is a path through the model to the relevant information, and no ambiguity about which object a query refers to, then there is no problem. This design reduces coupling between the classes, and therefore makes future modification easier.

CSC302 Engineering Large Software Systems page 5/9 (c) [5 marks] In the original model, the relationship between the Usage class and K-Card class is an association. Alternatively, this relationship could be modeled using an aggregation or composition. Which alternative is better for this problem domain and why? It doesn t make a lot of difference. The -to-many association means that each K-Card will need to keep track of multiple instances of the Usage class that are associate with it. That would probably be via suitable data structure (e.g. an Array) in the K-Card object. Making this an aggregation makes no real difference to how it would be implemented, although it does imply that the set of usages belong to the K-card, which is a sensible interpretation. Making it a composition implies a stronger relationship, i.e. that the individual transactions (deposit, fee, etc) cannot exist independently of the card they belong to. This might be a better design, because it would mean the programmers have to make sure that transactions are always linked to a specific card, and if you delete the record for a given card, you will also delete the record of its transactions. (d) [5 marks] After further discussions, UoK decides to add more features to the system. Food services wants to keep track of each student s meal-plan allowance when they use their K-cards to buy food and snacks at all campus eateries. Computing services wants to keep track of each student s printing allowance, when they use their K-cards at self-service printers across campus. The meal-plan allowance and printing allowance are separate from the debit-card balance. Student will also be able to use their card to make purchases (as well as paying fees) and to make deposits at many locations across campus, and the system will need to keep track of the location of each transaction. Revise the original domain model to allow for these additional features. Cross out elements that are no longer needed, and add any new elements. Use multiplicities, associations, generalizations, etc as appropriate. You may use the space below to re-draw the entire model if necessary. Here s one solution; many other variants are possible: UoK Student student ID K-Card barcode status: {active, deactive} Account debit card balance; meal plan balance; printing balance; Printing quantity * Usage date; description; location; Will need some methods for buying more meal plan / printing allowances Deposit amount; Fee amount Access location Meal Purchase number of units; Other Purchase price; Assumptions: adding location to the Usage class makes sense, although it s not clear whether the location in the Access class is of a different type (e.g. a room or a lab, rather than a campus shop) I ve left it in Access as well, so that it can over-ride the superclass variable.

CSC302 Engineering Large Software Systems page 6/9 3. [Risk Management 20 marks] You re being interviewed for a job at NASA to develop flight control software for the next generation of Mars missions (cool, eh?). The NASA project manager conducting the interview shows you a long list that her team has brainstormed, of possible risks things that could go wrong with the project, either during development or during the actual mission and she asks you what you would do with such a list. What would you say? Hint: On the wall behind her during the interview is a poster with the following quote on it: The only way risk management has value is if it affects the way you do business. You sense that she wants to hear more than just a brief answer about measuring risk. And you really want the job [Notes: To get full marks, the answer must cover all of these aspects of risk management well (although exact terminology isn t necessary). Bonus marks for suggesting ways in which all members of the project team can participate, and how the risk management would change their work practices (as per the hint). Award marks for good insights/suggestions in each area. Give plenty of credit for good examples, especially ones that pull in ideas from other parts of the course.] ) Risk prioritization. First we need to decide the relative importance of each of the risks on the list. Several possible approaches: - Could start with a basic triage process, to select the major risks that will need careful management, and the non-risks (e.g impossible or trivial issues) that can be ignored, leaving the middle group of risk to be monitored. The weakness of this approach is that we haven t systematically measured each risk. - Could attempt to measure each risk explicitly, by calculating the probability (p) of occurrence and the cost (c) of the loss for each risk, and calculate the risk exposure as RE = p x c. Can then compute this for each risk, and use this to put the list of risks in rank order. However, it may be hard to quantify many of the risks. - Could use a hybrid approach, using a qualitative matrix, where probability and loss are evaluated on a small number of levels (e.g 3-5 levels for each). Cells in the matrix that have high probability and/or high loss are treated as critical risks to be managed. Each cell in the matrix identifies a type of risk, and we ll handle the different types separately: Undesirable outcome Likelihood of Occurrence Very likely Possible Unlikely (5) Loss of Life Catastrophic Catastrophic Severe (4) Loss of Spacecraft Catastrophic Severe Severe (3) Loss of Mission Severe Severe High (2) Degraded Mission High Moderate Low () Inconvenience Moderate Low Low 2) Risk Mitigation. Just identifying and ranking risks is not enough. Need to identify a strategy to reduce the likelihood and/or impact of each risk. The position of each risk in the risk matrix will guide this we ll spend more time on the risks in the upper left, and

CSC302 Engineering Large Software Systems page 7/9 less on the lower right. Also, will look for strategies that move risks in the left hand column(s) towards the right, and risks in the upper rows downwards. For each risk, we can ask (a) how to reduce chances of it occurring, (b) how to reduce the impact if it does occur, and (c) what the warning signs are i.e. what project variables would we monitor to check whether the likelihood is increasing. For example, if the risk for a Mars spacecraft is missing the launch window, then we could reduce its probability by allowing for extra slack in the schedule, using critical path planning, etc. We could reduce its impact by having an alternative launch schedule (if that s even possible!). We could monitor this risk using tools such as burndown charts, which show task completion against schedule. Then we d define specific trigger points when we have to consider whether other contingency plans need to be put into action to help meet the schedule. 3) Continuous risk management. It s not sufficient to just go through the exercise of identifying and planning for risk once it has to be a continuous activity throughout the project. One way of doing this is to maintain a top ten risk list, and review this every week with the entire project team. The aim is to focus everyone on what steps they are taking to reduce each of the risks on the list. Periodically, the entire list of risks needs to be revisited, to check whether any of the risk exposures have changed, and whether new risks have been identified. The whole project team needs to be involved in this exercise, and they need to be encouraged to identify and report new risks (so some kind of reward system might be needed, to overcome the human tendency to assume the worst can t happen, and also the human tendency to downplay risk when talking to managers, to make the project sound like it s going better than it really is). One idea for project managers is risk as a resource it s one of the four key things a manager can actively adjust about the project (the others being functionality - how much software we re building; resources people, computing, etc; and schedule). Any adjustments on the other three variables need to be assessed for their impact on risk, and risk can often be reduced by adjusting the other variables. For example, to continue the previous example, if the burndown chart shows we re getting behind (and hence risk of missing the launch deadline is growing), then we can do things like a requirements scrub (reduce functionality), or add resources (e.g. bring in more engineers to help).

CSC302 Engineering Large Software Systems page 8/9 [scratch paper]

CSC302 Engineering Large Software Systems page 9/9 [scratch paper]