27
301AA - Advanced Programming [AP-2017] Lecturer: Andrea Corradini [email protected] Assistant: Lillo GalleBa [email protected] Department of Computer Science, Pisa Academic Year 2017/18 AP-2017-02: Mo%va%ons and Introduc%on

301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

301AA-AdvancedProgramming[AP-2017]

Lecturer:[email protected]:[email protected]

DepartmentofComputerScience,PisaAcademicYear2017/18

AP-2017-02:Mo%va%onsandIntroduc%on

Page 2: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

SoJwareisEverywhere

Page 3: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

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

Page 4: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

Programminginthe21century •  SoJwareascomplexasever•  Commandlineinterfacenotenough•  DatacomesfrommulOplesources:structured(DB)andunstructured

•  Singlecomputernotenough•  SoJwaredevelopmentisagroupacOvity•  DeploymentonWebormobiledevices

Page 5: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

ComplexityPromptsforInnovaOon

•  Object-OrientedProgrammingallowseverlargerapplicaOonstobebuilt

•  Butlimitedsupportforreuse•  OS+librariesnotenough•  Reusablecomponentsareneeded•  MulO-OerapplicaOonsdevelopmentincreasesthechoicesonhowtobuildapplicaOons

Page 6: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

KeyIngredientsforComplexSoJware

•  Advancedfeaturesextendingprogramminglanguages

•  Componentmodelstoensurereusability•  Frameworkstosupportefficientdevelopmentof(componentbased)applicaOons

•  Execu4onenvironmentsprovidingrunOmesupportforeverdynamicsoJwaresystems

6

Page 7: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

TheSoJwareArchitect

•  Anewroleisneeded:SoBwareArchitect•  tocreate,defineorchooseanapplica4onframework•  tocreatethecomponentdesignaccordingtoacomponentmodel

•  tostructureacomplexapplicaOonintopieces•  tounderstandtheinteracOonsanddependenciesamongcomponents

•  toselecttheexecu4onenvironment/plaEormbasedoncost/performancecriteria

•  toorganizeandsupervisethedevelopmentprocess

Page 8: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

WhatareFrameworks?

•  SoBwareFramework:AcollecOonofcommoncodeprovidinggenericfunc%onalitythatcanbeselec%velyoverriddenorspecializedbyusercodeprovidingspecificfunc%onality

•  Applica4onFramework:AsoJwareframeworkusedtoimplementthestandardstructureofanapplicaOonforaspecificdevelopmentenvironment

Page 9: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

FrameworkFeatures•  Frameworks,likeso*warelibraries,providereusableabstrac6onsofcodewrappedinawell-definedAPI

•  But:Inversionofcontrol–  unlikeinlibraries,theoverallprogram'sflowofcontrolisnotdictatedbythecaller,butbytheframework

•  Helpssolvingrecurringdesignproblems•  DrivessoluOon

–  Providesadefaultbehavior–  Dictateshowtofill-in-the-blanks

•  Non-modifiableframeworkcode–  Extensibility:usuallybyselecOveoverriding

Page 10: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

OOSoJwareFramework

•  Object-orientedprogrammingframeworksconsistsofasetofabstractclasses

•  AnapplicaOoncanbebuiltsimplyinheriOngfrompre-exisOngclassesintheframework

•  InstanOaOonofaframeworkconsistsofcomposingandsubclassingtheexisOngclasses

Page 11: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

ExamplesofFrameworks

•  GeneralsoJwareframeworks–  .NET–Windowsplajorm.Provideslanguageinteroperability

– AndroidSDK–SupportsdevelopmentofappsinJava(butdoesnotuseaJVM!)

–  Spring–Cross-plajorm,forJavaapplicaOons–  Cocoa–Apple’snaOveOOAPIformacOS.IncludesCstandardlibraryandtheObjecOve-CrunOme.

–  Eclipse–Cross-plajorm,easilyextensibleIDEwithplugins

Page 12: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

ExamplesofFrameworks

•  FrameworksforApplicaOonwithGUI– MFC-MicrosoJFoundaOonClassLibrary.C++object-orientedlibraryforWindows.

– Gnome–WriBeninC;mainlyforLinux

– Qt-Cross-plajorm;wriBeninC++

Page 13: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

ExamplesofFrameworks

•  WebApplicaOonFrameworks[basedonModel-View-ControllerdesignpaBern]– ASP.NETbyMicrosoJforwebsites,webapplicaOonsandwebservices

– GWT-GoogleWebToolkit(GWT)– Rails-WriBeninRuby-Providesdefaultstructuresfordatabases,webservicesandwebpages.

Page 14: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

ExamplesofFrameworks

•  Concurrency– HadoopMap/Reduce-soJwareframeworkforapplicaOonswhichprocessbigamountsofdatain-parallelonlargeclusters(thousandsofnodes)inafault-tolerantmanner.

• Map:Takesinputdataandconvertsitintoasetoftuples(key/valuepairs).

•  Reduce:TakestheoutputfromMapandcombinesthedatatuplesintoasmallersetoftuples.

Page 15: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

FrameworkDesign

•  IntellectualChallengingTask•  Requiresadeepunderstandingoftheproblemdomain

•  RequiresmasteringofsoBware(design)paQerns,OOmethodsandpolymorphisminparOcular

Page 16: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

DesignPaBerns•  Generalconceptualsolu%onstorecurrentdesignproblems

•  Moreabstractthanframeworks –  Frameworkscanbeembodiedincode,butonlyexamplesofpaBernscanbeembodiedincode

–  DesignpaBernsexplaintheintent,trade-offs,andconsequencesofadesign

•  Smallerarchitecturalelementsthanframeworks –  AtypicalframeworkcontainsseveraldesignpaBernsbutthereverseisnevertrue.

•  Lessspecializedthanframeworks–  FrameworksalwayshaveaparOcularapplicaOondomain–  DesignpaBernscanbeusedinnearlyanykindofapplicaOon

Page 17: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

The23DesignPaBernsoftheGangofFour

173

Tabella dei pattern GoF

comportamentali

creazionali strutturali

Behavioural

CreaOonal Structural

ErichGamma,RichardHelm,RalphJohnsonandJohnVlissidesDesignPa:erns:ElementsofReusable

Object-OrientedSo*ware[1995]

Page 18: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

CourseobjecOvesandSyllabus

Page 19: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

CourseObjecOves•  Understandprogramminglanguagetechnology:

–  ExecuOonModels–  Run-Ome

•  Analyzeprogrammingmetaphors:– Objects–  Components–  PaBerns

•  Learnadvancedprogrammingtechniques•  Presentstate-of-the-artframeworksincorporaOngthesetechniques

•  PracOcewithalltheseconceptsthroughsmallprojects

Page 20: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

Run-OmeSystems•  VirtualExecuOonEnvironment

– MemoryManagement–  ThreadManagement–  ExcepOonHandling–  Security– DebuggingSupport– AOTandJITCompilaOon– DynamicLink/Load–  ReflecOon–  VerificaOon

•  Aconcreteexample:theJVM

Page 21: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

SelectedAdvancedConceptsinProgrammingLanguage

•  OverloadingandTypeClassesinHaskell•  LambdaexpressionsandStreamsinJava8•  ClosuresvsDelegatesinCLI•  AlgebraicdatatypesandAcOvepaBernsinF#•  AssociaOvearraysinscripOnglanguages•  ExtensionsinSwiJ

Page 22: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

AdvancedProgrammingTechniques

•  GenericProgramming–  JavaGenerics–  C++templates–  C#Generics–  Scalagenerics

•  GeneraOveProgramming– Metaprogramming–  ReflecOon–  Template– Generators

•  Actorbasedprogramming–  ScalaandAkka

Page 23: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

ComponentModelsandFrameworks

•  Component-orientedProgramming•  JavaBeansandNetBeans•  SpringandSpringBeans•  COM•  CLRand.NET•  OSGiandEclipse•  HadoopMap/Reduce

Page 24: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

IEEESpectrumRanking2017-2014

Page 25: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features
Page 26: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features
Page 27: 301AA - Advanced Programming [AP-2017]pages.di.unipi.it/corradini/Didattica/AP-17/SLIDES/AP-2017-02.pdf · 301AA - Advanced Programming [AP-2017] Lecturer: ... Framework Features

Top10Frameworks