Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
301AA-AdvancedProgramming[AP-2017]
Lecturer:[email protected]:[email protected]
DepartmentofComputerScience,PisaAcademicYear2017/18
AP-2017-02:Mo%va%onsandIntroduc%on
SoJwareisEverywhere
SoJwareasCompeOOveAdvantage
MostAdmiredCompaniesMakingITaCompe44veAdvantage(Forbes)• Accenture• Amazon• Apple• ClevelandClinic• GeneralElectric• GoldmanSachs• Google• HospitalCorporaOonof
America• IBM• IntermountainHealthcare
• JP Morgan Chase • Kaiser Permanente • Mayo Clinic • Microsoft • Nestle • Procter & Gamble • Progressive Insurance • Schlumberger • Target • Toyota • Wells Fargo
Programminginthe21century • SoJwareascomplexasever• Commandlineinterfacenotenough• DatacomesfrommulOplesources:structured(DB)andunstructured
• Singlecomputernotenough• SoJwaredevelopmentisagroupacOvity• DeploymentonWebormobiledevices
ComplexityPromptsforInnovaOon
• Object-OrientedProgrammingallowseverlargerapplicaOonstobebuilt
• Butlimitedsupportforreuse• OS+librariesnotenough• Reusablecomponentsareneeded• MulO-OerapplicaOonsdevelopmentincreasesthechoicesonhowtobuildapplicaOons
KeyIngredientsforComplexSoJware
• Advancedfeaturesextendingprogramminglanguages
• Componentmodelstoensurereusability• Frameworkstosupportefficientdevelopmentof(componentbased)applicaOons
• Execu4onenvironmentsprovidingrunOmesupportforeverdynamicsoJwaresystems
6
TheSoJwareArchitect
• Anewroleisneeded:SoBwareArchitect• tocreate,defineorchooseanapplica4onframework• tocreatethecomponentdesignaccordingtoacomponentmodel
• tostructureacomplexapplicaOonintopieces• tounderstandtheinteracOonsanddependenciesamongcomponents
• toselecttheexecu4onenvironment/plaEormbasedoncost/performancecriteria
• toorganizeandsupervisethedevelopmentprocess
WhatareFrameworks?
• SoBwareFramework:AcollecOonofcommoncodeprovidinggenericfunc%onalitythatcanbeselec%velyoverriddenorspecializedbyusercodeprovidingspecificfunc%onality
• Applica4onFramework:AsoJwareframeworkusedtoimplementthestandardstructureofanapplicaOonforaspecificdevelopmentenvironment
FrameworkFeatures• Frameworks,likeso*warelibraries,providereusableabstrac6onsofcodewrappedinawell-definedAPI
• But:Inversionofcontrol– unlikeinlibraries,theoverallprogram'sflowofcontrolisnotdictatedbythecaller,butbytheframework
• Helpssolvingrecurringdesignproblems• DrivessoluOon
– Providesadefaultbehavior– Dictateshowtofill-in-the-blanks
• Non-modifiableframeworkcode– Extensibility:usuallybyselecOveoverriding
OOSoJwareFramework
• Object-orientedprogrammingframeworksconsistsofasetofabstractclasses
• AnapplicaOoncanbebuiltsimplyinheriOngfrompre-exisOngclassesintheframework
• InstanOaOonofaframeworkconsistsofcomposingandsubclassingtheexisOngclasses
ExamplesofFrameworks
• GeneralsoJwareframeworks– .NET–Windowsplajorm.Provideslanguageinteroperability
– AndroidSDK–SupportsdevelopmentofappsinJava(butdoesnotuseaJVM!)
– Spring–Cross-plajorm,forJavaapplicaOons– Cocoa–Apple’snaOveOOAPIformacOS.IncludesCstandardlibraryandtheObjecOve-CrunOme.
– Eclipse–Cross-plajorm,easilyextensibleIDEwithplugins
ExamplesofFrameworks
• FrameworksforApplicaOonwithGUI– MFC-MicrosoJFoundaOonClassLibrary.C++object-orientedlibraryforWindows.
– Gnome–WriBeninC;mainlyforLinux
– Qt-Cross-plajorm;wriBeninC++
ExamplesofFrameworks
• WebApplicaOonFrameworks[basedonModel-View-ControllerdesignpaBern]– ASP.NETbyMicrosoJforwebsites,webapplicaOonsandwebservices
– GWT-GoogleWebToolkit(GWT)– Rails-WriBeninRuby-Providesdefaultstructuresfordatabases,webservicesandwebpages.
ExamplesofFrameworks
• Concurrency– HadoopMap/Reduce-soJwareframeworkforapplicaOonswhichprocessbigamountsofdatain-parallelonlargeclusters(thousandsofnodes)inafault-tolerantmanner.
• Map:Takesinputdataandconvertsitintoasetoftuples(key/valuepairs).
• Reduce:TakestheoutputfromMapandcombinesthedatatuplesintoasmallersetoftuples.
FrameworkDesign
• IntellectualChallengingTask• Requiresadeepunderstandingoftheproblemdomain
• RequiresmasteringofsoBware(design)paQerns,OOmethodsandpolymorphisminparOcular
DesignPaBerns• Generalconceptualsolu%onstorecurrentdesignproblems
• Moreabstractthanframeworks – Frameworkscanbeembodiedincode,butonlyexamplesofpaBernscanbeembodiedincode
– DesignpaBernsexplaintheintent,trade-offs,andconsequencesofadesign
• Smallerarchitecturalelementsthanframeworks – AtypicalframeworkcontainsseveraldesignpaBernsbutthereverseisnevertrue.
• Lessspecializedthanframeworks– FrameworksalwayshaveaparOcularapplicaOondomain– DesignpaBernscanbeusedinnearlyanykindofapplicaOon
The23DesignPaBernsoftheGangofFour
173
Tabella dei pattern GoF
comportamentali
creazionali strutturali
Behavioural
CreaOonal Structural
ErichGamma,RichardHelm,RalphJohnsonandJohnVlissidesDesignPa:erns:ElementsofReusable
Object-OrientedSo*ware[1995]
CourseobjecOvesandSyllabus
CourseObjecOves• Understandprogramminglanguagetechnology:
– ExecuOonModels– Run-Ome
• Analyzeprogrammingmetaphors:– Objects– Components– PaBerns
• Learnadvancedprogrammingtechniques• Presentstate-of-the-artframeworksincorporaOngthesetechniques
• PracOcewithalltheseconceptsthroughsmallprojects
Run-OmeSystems• VirtualExecuOonEnvironment
– MemoryManagement– ThreadManagement– ExcepOonHandling– Security– DebuggingSupport– AOTandJITCompilaOon– DynamicLink/Load– ReflecOon– VerificaOon
• Aconcreteexample:theJVM
SelectedAdvancedConceptsinProgrammingLanguage
• OverloadingandTypeClassesinHaskell• LambdaexpressionsandStreamsinJava8• ClosuresvsDelegatesinCLI• AlgebraicdatatypesandAcOvepaBernsinF#• AssociaOvearraysinscripOnglanguages• ExtensionsinSwiJ
AdvancedProgrammingTechniques
• GenericProgramming– JavaGenerics– C++templates– C#Generics– Scalagenerics
• GeneraOveProgramming– Metaprogramming– ReflecOon– Template– Generators
• Actorbasedprogramming– ScalaandAkka
ComponentModelsandFrameworks
• Component-orientedProgramming• JavaBeansandNetBeans• SpringandSpringBeans• COM• CLRand.NET• OSGiandEclipse• HadoopMap/Reduce
IEEESpectrumRanking2017-2014
Top10Frameworks