CSC 408F/CSC2105F Lecture NotesThese lecture notes are provided for the personal use ofstudents taking CSC 408H/CSC 2105H in the Fall term2004/2005 at the University of Toronto.Copying for purposes other than this use and all forms ofdistribution are expressly prohibited.cDavid B. Wortman, 1999,2000,2001,2002,2003,2004cKersti Wain-Bantin, 2001cYijun Yu, 20040Phase A. Requirements AnalysisPick 4 to 5 partners to form a project teamDescribe the people in the team, allocation of tasksPick one editor (VIM or Eclipse) to study, document the discussions why andhow you choose the editorDiscover why we shall use Web Services to bridge hetergeneous editorsDescribe the architecture of the OmniEditor projectPlan the project as an iterative process and proposes a test plan1Deliverables after Phase A by Oct. 7Documentsa– 30% marks: Requirements specification of the OmniEditor– 20%: Understanding of legacy editor: identify reusable components– 20%: Test plan of the project– 10%: Project plan of the OmniEditor– 10%: Risk analysis of the project– 10%: Team organization of the projectProject team– Who are the team members and Who is the team leader– Skills and Preferences– Tasks and allocations– Team meeting schedulesaNo lower or upper bounds to the document length2Requirements for requirements specificationsReference to John Mylopoulos’s CSC340S course:http://www.cs.toronto.edu/jm/340S/A list of functional (behavioral) requirements– Goal of the requirement– Inputs, Outputs– Preconditions on Input, Postconditions on Output, ExceptionsA list of non-functional (quality) requirements– Softgoal of the quality attribute– Metric of the attribute– Satisfaction criteria3Goal-oriented requirements engineering (GORE)Goal: the desired state, often described in terms of predicateGORE: identify logical dependency relationships between requirements (goal).Abstraction/Refinements: asking Why and HowCompleteness (obstacle analysis): asking What-if?Contributions and Correlations: asking How much?Domain analysis: asking who, what and where?Use natural languages, Req. Spec. do not include project requirements, designsand quality assurance plans.To edit the goal dependencies, try this tool for Windows:http://www.cs.toronto.edu/yijun/OpenOME.htmlAn example requirements goal model, seehttp://www.cs.toronto.edu/yijun/slides/yu04re.ppt4 2004 John MylopoulosIntentions and Agents -- 5Conceptual Modeling CSC2507AND/OR Goal GraphsAND/OR Goal GraphsI Goals can be AND- or OR-decomposed to build AND/ORgraphs.I A simple procedure exists for AND/OR graphs fordetermining whether a root node of an AND/OR goal graphis solved/fulfilled, given that some other nodes of the graphhave been found to be solved/fulfilled, or unsolvable/unfulfillable. 2004 John MylopoulosIntentions and Agents -- 6Conceptual Modeling CSC2507SchedulemeetingCollectconstraintsCollecttimetablesCollect other constraintsShare timetablesSystemcollectsPersoncollectsBy emailBy all meansFrom allFromInitiatoronlyManuallyAutomaticallyInteractivelyGeneratescheduleAND decompositionOR decomposition 2004 John MylopoulosIntentions and Agents -- 9Conceptual Modeling CSC2507Programmability++++Allow Change of ColoursAllow Change ofStateAllow Change ofLanguageErrorAvoidanceInformationSharingEase ofLearningUserTailorabilityUsabilityUser-DefinedWriting ToolModularityUseComponentsUserFlexibilityAllow Change ofSettings+++ 2004 John MylopoulosIntentions and Agents -- 10Conceptual Modeling CSC2507Goal RelationshipsGoal RelationshipsI To arrive at a more qualitative framework for modelinggoals, we also need to extend the set of relationshipsbetween goals beyond AND- and OR-relationships: + -- one goal contributes positively towards thefulfillment of another goal; - -- one goal contributes negatively towards thefulfillment of another goal; ++ (--) -- one goal subsumes/negates another, I.e., ifthe first goal is fulfilled, the second is fulfilled/denied;I With these enhancements, we can build goal modelswhich could be useful for strategic business analysis orrequirements analysis (as opposed to planning).Front [shop]S:1.000,D:0.000Informing[shop]S:1.000,D:0.000ANDManaging[shop]S:1.000,D:0.000ANDShopping[shop]S:1.000,D:0.000ANDReporting [shop]S:1.000,D:0.000Reporting[stock]S:1.000,D:0.000ANDReporting[account]S:1.000,D:0.000ANDReporting[product]S:1.000,D:0.000ANDTransaction[account]S:1.000,D:0.000ANDTransaction[product]S:1.000,D:0.000ANDTransaction[stock]S:1.000,D:0.000ANDCustomization[language]S:1.000,D:0.000ANDInfooctagon[font]S:1.000,D:0.000ANDPageLayout[gui]S:1.000,D:0.000ANDSearching [shop]S:1.000,D:0.000Navigating[stock]S:1.000,D:0.000ANDSearching[stock]S:1.000,D:0.000ANDANDANDANDANDManaging [product]S:1.000,D:0.000Managing [account]S:1.000,D:0.000Managing [stock]S:1.000,D:0.000Preparing[cart,product]S:1.000,D:0.000Selecting[item,cart]S:1.000,D:0.000ANDAdding[item,cart]S:1.000,D:0.000ANDTransaction[cart]S:1.000,D:0.000ANDANDANDANDGetting [account]S:1.000,D:0.000Customizing [English]S:1.000,D:0.000Usability[language]S:1.000,D:0.000Make1.000000+CheckingOut[cart,product,account,stock]S:1.000,D:0.000Clearing[cart]S:1.000,D:0.000ANDUpdating[account,product]S:1.000,D:0.000ANDUpdating[product,stock]S:1.000,D:0.000ANDLogin/Logout[account]S:1.000,D:0.000ANDANDANDANDANDANDANDANDPasswordProtection[account]S:1.000,D:0.000ANDSSL[protocol]S:1.000,D:0.000ANDSessionCookie[transaction]S:1.000,D:0.000ORDatabaseTable[transaction]S:1.000,D:0.000ORORORANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDORUsability[font]S:1.000,D:0.000Make1.000000+Usability[layout]S:1.000,D:0.000Make1.000000+Confidentiality[system]S:1.000,D:0.000Make1.000000+Responsiveness[transaction]S:1.000,D:0.000Make1.000000+Integrity[data]S:1.000,D:0.000Make1.000000+Info.flow Security[system]S:1.000,D:0.000Make1.000000+Security[system]S:1.000,D:0.000Usability[ui]S:1.000,D:0.000ANDANDANDUsability[gui]S:1.000,D:0.000ANDANDANDExample of requirements specificationsA functional requirement– Goal: query [stock price]– Inputs: stock quote [string]– Outputs: stock price [float]– Precondition: stock quote is not empty– Postcondition: stock price0 if stock quote is foundstock price1 if stock quote is not foundAn alternative requirement– Inputs: stock name [string]– Precondition: stock name is not empty– Postcondition: stock price0 if stock name is found and uniquestock price1 if stock name is not
View Full Document