Act ¡Responsibly! ¡ Responsibility-‑Driven ¡Design ¡Concepts ¡and ¡Tools ¡ Jennifer ¡Wood ¡ CSCI ¡5448 ¡– ¡Fall ¡2012 ¡
Act ¡Responsibly! ¡ ¡ Responsibility-‑Driven ¡Design ¡Concepts ¡and ¡Tools ¡ • ExecuIve ¡Summary: ¡ – Structuring ¡objects ¡by ¡their ¡responsibiliIes ¡was ¡originally ¡presented ¡as ¡ an ¡alternaIve ¡to ¡Data-‑Driven ¡Design ¡by ¡Rebecca ¡Wirfs-‑Brock ¡and ¡Brian ¡ Wilkerson ¡in ¡1989 ¡ – Responsibility-‑Driven ¡Design ¡promotes ¡the ¡analysis ¡and ¡design ¡of ¡ soRware ¡systems ¡by ¡focusing ¡on ¡what ¡things ¡the ¡applicaIon ¡and ¡its ¡ objects ¡must ¡know, ¡do ¡or ¡decide ¡to ¡fulfill ¡its ¡purpose ¡ • A ¡detailed ¡guide ¡to ¡the ¡Responsibility-‑Driven ¡Design ¡process ¡is ¡presented ¡in ¡ Rebecca ¡Wirfs-‑Brock ¡and ¡Alan ¡Kean’s ¡text ¡Object ¡Design: ¡Roles, ¡ ResponsibiliIes, ¡and ¡CollaboraIons ¡(2003) ¡ – Maintaining ¡a ¡responsibility-‑driven ¡design ¡approach ¡can ¡result ¡in ¡a ¡ system ¡with ¡excellent ¡encapsulaIon, ¡loose ¡coupling ¡and ¡strong ¡ cohesion ¡by: ¡ • ¡Keeping ¡related ¡a\ributes ¡and ¡methods ¡within ¡the ¡same ¡object ¡or ¡ “neighborhood ¡of ¡objects” ¡ • PrevenIng ¡knowledge ¡of ¡a ¡data ¡structure ¡in ¡an ¡object ¡from ¡being ¡revealed ¡in ¡ the ¡object’s ¡public ¡methods ¡ 11/16/12 ¡ Jennifer ¡Wood ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡CSCI ¡5448 ¡ 2 ¡
What ¡are ¡responsibiliIes? ¡ • Let’s ¡start ¡with ¡the ¡big ¡concepts ¡and ¡definiIons: ¡ – Objects ¡are ¡things ¡with ¡responsibili3es ¡ ¡ – ResponsibiliIes ¡fall ¡into ¡one ¡of ¡three ¡categories: ¡ • To ¡know ¡things ¡ • To ¡do ¡things ¡ • To ¡decide ¡things ¡ – A ¡group ¡of ¡related ¡responsibiliIes ¡is ¡a ¡role ¡ • An ¡object ¡can ¡implement ¡more ¡than ¡one ¡role ¡if ¡appropriate ¡ • Roles ¡commonly ¡encountered ¡across ¡many ¡designs ¡are ¡called ¡ Role ¡Stereotypes ¡– ¡more ¡on ¡these ¡later ¡ – When ¡two ¡or ¡more ¡roles ¡or ¡objects ¡work ¡together ¡it ¡is ¡ called ¡a ¡collaboraIon ¡ 11/16/12 ¡ Jennifer ¡Wood ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡CSCI ¡5448 ¡ 3 ¡
Early ¡Responsibility-‑Driven ¡Design ¡ • Conceived ¡by ¡Rebecca ¡Wirfs-‑Brock ¡and ¡Brian ¡Wilkerson ¡and ¡first ¡ documented ¡in ¡the ¡OOPSLA ¡(Object-‑Oriented ¡Programming, ¡ Systems, ¡Languages ¡& ¡ApplicaIons) ¡Conference ¡Proceedings ¡of ¡ 1989 ¡in ¡“Object-‑Oriented ¡Design: ¡A ¡Responsibility-‑Driven ¡Approach” ¡ • They ¡contrasted ¡Responsibility-‑Driven ¡Design ¡with ¡Data-‑Driven ¡ Design ¡ • Data-‑Driven ¡Design ¡meant ¡designing ¡objects ¡around ¡the ¡data ¡they ¡contained ¡ and ¡was ¡a ¡common ¡approach ¡in ¡early ¡Object-‑Oriented ¡programming ¡ ¡ – Wirfs-‑Brock ¡and ¡Wilkerson ¡argued ¡that ¡this ¡violated ¡encapsulaIon ¡because ¡the ¡internal ¡ structure ¡of ¡the ¡(hidden) ¡data ¡was ¡visible ¡in ¡the ¡implementaIon ¡of ¡the ¡object ¡containing ¡ it ¡ • Responsibility-‑Driven ¡Design ¡tries ¡to ¡avoid ¡revealing ¡internal ¡structure ¡by ¡ ignoring ¡implementaIon ¡details ¡unIl ¡aRer ¡the ¡responsibiliIes ¡of ¡an ¡object ¡ have ¡been ¡characterized ¡ – Forces ¡encapsulaIon ¡during ¡the ¡design ¡phase ¡rather ¡than ¡in ¡implementaIon ¡when ¡it ¡can ¡ be ¡difficult ¡to ¡achieve ¡ 11/16/12 ¡ Jennifer ¡Wood ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡CSCI ¡5448 ¡ 4 ¡
Benefits ¡of ¡Responsibility-‑Driven ¡Design ¡ • In ¡a ¡data-‑driven ¡design, ¡the ¡structure ¡of ¡the ¡data ¡is ¡oRen ¡ reflected ¡in ¡the ¡objects ¡designed ¡around ¡it ¡– ¡compromising ¡ encapsulaIon ¡by ¡providing ¡a ¡view ¡into ¡that ¡structure ¡ • Many ¡design ¡heurisIcs ¡can ¡be ¡strengthened ¡by ¡applying ¡ Responsibility-‑Driven ¡Design ¡ By ¡idenIfying ¡as ¡many ¡responsibiliIes ¡as ¡possible ¡within ¡a ¡design ¡prior ¡ • to ¡implementaIon ¡it ¡can ¡be ¡easier ¡to: ¡ Find ¡opportuniIes ¡for ¡polymorphism ¡(you ¡can ¡see ¡that ¡there ¡are ¡several ¡ – different ¡objects ¡that ¡need ¡to ¡be ¡processed ¡in ¡the ¡same ¡way) ¡ Determine ¡what ¡and ¡where ¡abstracIons ¡add ¡value ¡to ¡your ¡design ¡ – Group ¡related ¡responsibiliIes ¡into ¡the ¡same ¡object ¡or ¡cluster ¡of ¡objects ¡ – making ¡your ¡design ¡more ¡cohesive ¡ – Group ¡informaIon ¡and ¡methods ¡performed ¡on ¡that ¡informaIon ¡within ¡the ¡ same ¡object ¡or ¡cluster ¡of ¡objects, ¡reducing ¡coupling ¡ 11/16/12 ¡ Jennifer ¡Wood ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡CSCI ¡5448 ¡ 5 ¡
Growth ¡of ¡Responsibility-‑Driven ¡Design ¡ ¡ • Wirfs-‑Brock ¡and ¡her ¡colleagues ¡took ¡that ¡original ¡view ¡“An ¡object ¡is ¡ something ¡with ¡responsibiliIes” ¡and ¡developed ¡tools ¡and ¡ techniques ¡to ¡use ¡this ¡insight ¡throughout ¡the ¡design ¡process ¡ • Wirfs-‑Brock’s ¡Object ¡Design: ¡Roles, ¡ResponsibiliIes, ¡and ¡ CollaboraIons ¡(2003) ¡provides ¡a ¡guide ¡to ¡taking ¡a ¡responsibility-‑ driven ¡viewpoint ¡through ¡the ¡analysis ¡and ¡design ¡process ¡ – The ¡goal ¡in ¡Responsibility-‑Driven ¡Design ¡(RDD) ¡is ¡to ¡idenIfy ¡as ¡many ¡ responsibiliIes ¡and ¡roles ¡present ¡in ¡your ¡system ¡as ¡possible ¡BEFORE ¡ you ¡begin ¡to ¡implement ¡them ¡into ¡objects ¡and ¡classes ¡ – It’s ¡easier ¡to ¡change ¡what ¡objects ¡you ¡have ¡or ¡what ¡responsibiliIes ¡ they ¡have ¡BEFORE ¡you ¡have ¡thousands ¡of ¡lines ¡of ¡code ¡wri\en ¡ 11/16/12 ¡ Jennifer ¡Wood ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡CSCI ¡5448 ¡ 6 ¡
Responsibility-‑Driven ¡Analysis ¡& ¡Design ¡Stages ¡ Wirfs-‑Brock ¡idenIfies ¡three ¡main ¡analysis ¡and ¡design ¡phases ¡in ¡the ¡ • development ¡of ¡a ¡project ¡from ¡the ¡responsibility-‑driven ¡perspecIve ¡ Development ¡Stage ¡ Phase ¡ Focus ¡of ¡Ac3vi3es ¡ RDD ¡Analysis ¡ System ¡DefiniIon ¡ • ¡System ¡level ¡architecture ¡ • ¡Main ¡design ¡themes ¡and ¡concepts ¡ Level ¡of ¡Detail ¡Increases ¡ ¡ • ¡Goals ¡for ¡your ¡system ¡to ¡accomplish ¡ • ¡IdenIfy ¡users ¡and ¡write ¡user ¡stories ¡and ¡use ¡cases ¡ Detail ¡DescripIon ¡ • ¡Determine ¡plakorms, ¡frameworks ¡and ¡other ¡key ¡pre-‑built ¡ components ¡ • ¡Develop ¡“scenarios” ¡and ¡“conversaIons” ¡ Object ¡Analysis ¡ • ¡Sketch ¡screen ¡views ¡and ¡user ¡interfaces ¡ • ¡IdenIfy ¡system-‑defining ¡objects ¡and ¡assign ¡preliminary ¡roles ¡ and ¡responsibiliIes ¡ Exploratory ¡Design ¡ • ¡IdenIfy ¡supporIng ¡objects ¡and ¡their ¡likely ¡roles ¡and ¡ responsibiliIes ¡ • ¡IdenIfy ¡collaboraIons ¡between ¡objects ¡or ¡groups ¡of ¡objects ¡ Design ¡Refinement ¡ • ¡Revise ¡system ¡soluIon ¡to ¡make ¡it ¡more ¡maintainable, ¡flexible, ¡ and ¡reliable ¡ • ¡Finalize ¡object ¡roles ¡and ¡responsibiliIes ¡ ¡ • ¡Generate ¡class ¡descripIons ¡ ¡ • ¡Determine ¡a\ribute ¡and ¡method ¡visibiliIes ¡ • ¡Create ¡formal ¡documentaIon ¡(if ¡required) ¡ 11/16/12 ¡ Jennifer ¡Wood ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡CSCI ¡5448 ¡ 7 ¡
Recommend
More recommend