Sytyke laivaseminaari 7-9.9.2005Sytyke laivaseminaari 7-9.9.2005
Software Factories:Software Factories:Järjestelmien mallinnusJärjestelmien mallinnusMicrosoftin välineilläMicrosoftin välineillä
Aali AlikoskiAali AlikoskiArchitect Evangelist, Microsoft OyArchitect Evangelist, Microsoft Oy
[email protected]@microsoft.comblogs.msdn.com/aalialikoskiblogs.msdn.com/aalialikoski
2
AgendaAgenda
Työkaluja kehitysprosessin hallintaanTyökaluja kehitysprosessin hallintaanVälineitä suoraan purkistaVälineitä suoraan purkista
Mallinnus ja sovelluskehityksenMallinnus ja sovelluskehityksenabstraktiotason nostaminenabstraktiotason nostaminenAlusta välineiden tekemiseksiAlusta välineiden tekemiseksi
3
Sovellusten elinkaariSovellusten elinkaariAsiakkaat kertovat…Asiakkaat kertovat…
““Sovelluskehitys on hyvin vaikeaa”Sovelluskehitys on hyvin vaikeaa”““Meidän ryhmämme on hajallaan jaMeidän ryhmämme on hajallaan jakoostuu erikoistuneistakoostuu erikoistuneistaasiantuntijoista”asiantuntijoista”““Nykyiset työkalut eivät toimi hyvinNykyiset työkalut eivät toimi hyvinyhteen toistensa kanssa”yhteen toistensa kanssa”““Minun täytyy pystyä paremminMinun täytyy pystyä paremminennustamaan/seuraamaanennustamaan/seuraamaankehitysprojektien etenemistä”kehitysprojektien etenemist䔓“Organisaatiomme tarvitseeOrganisaatiomme tarvitseemuokattavaa prosessiohjausta”muokattavaa prosessiohjausta”
4
KehittäjäKehittäjäProjekti-Projekti-päällikköpäällikköInfra-Infra-
arkkitehtiarkkitehti
TestaajaTestaajaSovellus-Sovellus-arkkitehtiarkkitehti
Bisnes-Bisnes-päättäjäpäättäjä
Saarekkeita elinkaarenSaarekkeita elinkaarenaikanaaikana
5
KehittäjätiimitKehittäjätiimit
Infra-Infra-arkkitehtiarkkitehti
Sovellus-Sovellus-arkkitehtiarkkitehti
ProjektipäällikköProjektipäällikkö
KehittäjäKehittäjä
TestaajaTestaaja
LoppukäyttäjäLoppukäyttäjä
6
ViestintäongelmiaViestintäongelmia
Informaatiosaarekkeita eri tahoillaInformaatiosaarekkeita eri tahoillaVastuiden jako epäselväVastuiden jako epäselväRistiriitaisia käytäntöjä ja arkkitehtuurejaRistiriitaisia käytäntöjä ja arkkitehtuurejaRistiriitaisia päämääriäRistiriitaisia päämääriä
Sovellus-Sovellus-arkkitehtiarkkitehtiInfra-arkkitehtiInfra-arkkitehti
Infraylläpitäjät eivätymmärrä sovelluksenrakennettaKehittäjät eivät ymmärrä
Infran hallintapolitiikkaa
Infraylläpidon tuntemusInfraylläpidon tuntemusvähentää monimutkaisuuttavähentää monimutkaisuuttaVälineiden integraatio lisääVälineiden integraatio lisää
Kommunikaatiota jaKommunikaatiota jayhteistyötäyhteistyötä
7
MenestystekijöitäMenestystekijöitä
Työkalujen pitää…Työkalujen pitää………vähentää nykyaikaisten palvelupohjaistenvähentää nykyaikaisten palvelupohjaistensovellusten tuottamiseen liittyvääsovellusten tuottamiseen liittyväämonimutkaisuuttamonimutkaisuutta
……olla tiiviimmin toisiinsa integroituja jaolla tiiviimmin toisiinsa integroituja jamahdollistaa parempi yhteistoiminta tiiminmahdollistaa parempi yhteistoiminta tiiminjäsenten (ja roolien) keskenjäsenten (ja roolien) kesken
……mahdollistaa muokkaus jamahdollistaa muokkaus jalaajennettavuus sekälaajennettavuus sekäkäyttäjäorganisaatioille että ISV:llekäyttäjäorganisaatioille että ISV:lle
8
Visual Studio 2005Visual Studio 2005“Personalized productivity”“Personalized productivity”
Novices
Enthusiasts
Students
Hobbyists
Consultants
Solo Professionals
Enterprise Devs
Architects
Testers
Project Managers
Part-Timers
VB6 Devs
Web Professionals
9
Visual Studio Team SystemVisual Studio Team System
Change Management
Work Item Tracking
Reporting
Project Site
Visual Studio
Team Foundation
Integration Services
Project Management
Process
andArchitectureGuidance
Process
andArchitectureGuidance
Dynamic Code Analyzer
Visual Studio
Team Architect
Static Code Analyzer
Code Profiler
Unit Testing
Code Coverage
Visio and UML Modeling
Team Foundation Client
VS Pro
Class Modeling
Load Testing
Manual Testing
Test Case Management
Application Modeling
Logical Infra. Modeling
Deployment Modeling
Visual Studio
Team DeveloperVisual Studio
Team Test
VisualStudioIndustryPartners
VisualStudioIndustryPartners
10
Visual Studio Team SystemVisual Studio Team System
Change Management
Work Item Tracking
Reporting
Project Site
Visual Studio
Team Foundation
Integration Services
Project Management
Process
andArchitectureGuidance
Process
andArchitectureGuidance
VisualStudioIndustryPartners
VisualStudioIndustryPartnersDynamic Code Analyzer
Visual Studio
Team Architect
Static Code Analyzer
Code Profiler
Unit Testing
Code Coverage
Visio and UML Modeling
Team Foundation Client
VS Pro
Class Modeling
Load Testing
Manual Testing
Test Case Management
Application Modeling
Logical Infra. Modeling
Deployment Modeling
Visual Studio
Team DeveloperVisual Studio
Team Test
Application Modeling
Logical Infra. Modeling
Deployment Modeling
Class Modeling
11
Team ArchitectTeam ArchitectDistributed Application DesignerDistributed Application DesignerWhiteboard mode for application designWhiteboard mode for application design
Web Services Enhancements (WSE) supportWeb Services Enhancements (WSE) support
Validation against logical infrastructureValidation against logical infrastructure
Logical Infrastructure DesignerLogical Infrastructure DesignerSettings and constraints editorSettings and constraints editor
SDM generation and compilerSDM generation and compiler
Click-once supportClick-once support
Class DesignerClass DesignerTwo-way code synchronizationTwo-way code synchronization
12
Visual Studio Team SystemVisual Studio Team System
Change Management
Work Item Tracking
Reporting
Project Site
Visual Studio
Team Foundation
Integration Services
Project Management
Process
andArchitectureGuidance
Process
andArchitectureGuidance
VisualStudioIndustryPartners
VisualStudioIndustryPartnersDynamic Code Analyzer
Visual Studio
Team Architect
Static Code Analyzer
Code Profiler
Unit Testing
Code Coverage
Visio and UML Modeling
Team Foundation Client
VS Pro
Class Modeling
Load Testing
Manual Testing
Test Case Management
Application Modeling
Logical Infra. Modeling
Deployment Modeling
Visual Studio
Team DeveloperVisual Studio
Team Test
Dynamic Code Analyzer
Static Code Analyzer
Code Profiler
Unit Testing
Code Coverage
13
Team DeveloperTeam Developer
Static code analysisStatic code analysisSupport for managed and native codeSupport for managed and native code
Code profilingCode profilingSequence view examines running threadsSequence view examines running threads
GC view of object allocation and lifetimeGC view of object allocation and lifetime
Caller-callee, callstack, and function viewsCaller-callee, callstack, and function views
Code coverageCode coverage
Integrated unit testing and frameworkIntegrated unit testing and framework
14
Visual Studio Team SystemVisual Studio Team System
Change Management
Work Item Tracking
Reporting
Project Site
Visual Studio
Team Foundation
Integration Services
Project Management
Process
andArchitectureGuidance
Process
andArchitectureGuidance
VisualStudioIndustryPartners
VisualStudioIndustryPartnersDynamic Code Analyzer
Visual Studio
Team Architect
Static Code Analyzer
Code Profiler
Unit Testing
Code Coverage
Visio and UML Modeling
Team Foundation Client
VS Pro
Class Modeling
Load Testing
Manual Testing
Test Case Management
Application Modeling
Logical Infra. Modeling
Deployment Modeling
Visual Studio
Team DeveloperVisual Studio
Team TestLoad Testing
Manual Testing
Test Case Management
15
Team TestTeam Test
Load testingLoad testingWeb services load testing via protocol-Web services load testing via protocol-based scriptbased script
Load patterns: constant, step, customLoad patterns: constant, step, custom
Perf counter collection and thresholdPerf counter collection and thresholdmonitoringmonitoring
Test case managementTest case management
Application VerifierApplication Verifier
16
Team TestTeam TestTesting is 1Testing is 1stst class in Visual Studioclass in Visual StudioTests are Source CodeTests are Source CodeTest Authoring & Execution EnvironmentTest Authoring & Execution EnvironmentTest ViewTest ViewTest Explorer (Test Case Management UI)Test Explorer (Test Case Management UI)
Load testingLoad testingWeb services load testing via protocol-basedWeb services load testing via protocol-basedscriptscriptLoad patterns: constant, step, customLoad patterns: constant, step, customPerf counter collection and thresholdPerf counter collection and thresholdmonitoringmonitoring
Unit TestingUnit TestingSimilar to NUnitSimilar to NUnit
17
Visual Studio Team SystemVisual Studio Team SystemProcess
andArchitectureGuidance
Process
andArchitectureGuidance
VisualStudioIndustryPartners
VisualStudioIndustryPartners
Change Management
Work Item Tracking
Reporting
Project Site
Visual Studio
Team Foundation
Integration Services
Project Management
Dynamic Code Analyzer
Visual Studio
Team Architect
Static Code Analyzer
Code Profiler
Unit Testing
Code Coverage
Visio and UML Modeling
Team Foundation Client
VS Pro
Class Modeling
Load Testing
Manual Testing
Test Case Management
Application Modeling
Logical Infra. Modeling
Deployment Modeling
Visual Studio
Team DeveloperVisual Studio
Team Test
Change Management
Work Item Tracking
Reporting
18
Team FoundationTeam Foundation
Portfolio creation and navigationPortfolio creation and navigationProject Creation WizardProject Creation Wizard
Process editor for customized guidanceProcess editor for customized guidance
Project managementProject managementMicrosoft Project and Excel integrationMicrosoft Project and Excel integration
Change managementChange managementBranching, changesets, shelvingBranching, changesets, shelving
Migration from PVCS, ClearCase, and VSSMigration from PVCS, ClearCase, and VSS
Reporting and analyticsReporting and analytics
Project portalProject portal
19
Project Management GoalsProject Management Goals
Shape the ProjectShape the ProjectOffice IntegrationOffice Integration
Rich ReportingRich Reporting
Instrument the ProcessInstrument the ProcessMSF 4.0 IntegrationMSF 4.0 Integration
Process CustomizationProcess Customization
20
Team System IntegrationTeam System Integration
Delivered via Team Foundation ServerDelivered via Team Foundation Server
Methodology TemplatesMethodology TemplatesWork Item Types, workflowWork Item Types, workflow
Check In PolicyCheck In Policy
Specification TemplatesSpecification Templates
ReportsReports
Groups & PermissionsGroups & Permissions
Integrated HelpIntegrated Help
Phase Exit CriteriaPhase Exit Criteria
Exposed within HelpExposed within Help
Updated from MSDNUpdated from MSDN
Book series: Addison Wesley & MS LearningBook series: Addison Wesley & MS Learning
21
Broad Industry SupportBroad Industry Support
MallinnusMallinnus
Alusta välineiden tekemiseksiAlusta välineiden tekemiseksi
23
SovelluskehityksenSovelluskehityksentuottavuustuottavuusIT-teollisuuden maine on huonoIT-teollisuuden maine on huonoYli puolet projekteista epäonnistuu tavallaYli puolet projekteista epäonnistuu tavallatai toisellatai toisella
Tuottavuutta, ennustettavuutta jaTuottavuutta, ennustettavuutta jaluotettavuutta parannettavaluotettavuutta parannettava
KehittäjänKehittäjäntuottavuus:tuottavuus:
24
SovelluskehityksenSovelluskehityksenvaikeusvaikeus
Useita eri tapoja ratkaista ongelmaUseita eri tapoja ratkaista ongelmaKaikki yhtä hyviä – ei ainoaa oikeaa ratkaisuaKaikki yhtä hyviä – ei ainoaa oikeaa ratkaisua
On usein löydettävissä joukko ratkaisumallejaOn usein löydettävissä joukko ratkaisumallejajotka toimivat ”hyvin yhteen”jotka toimivat ”hyvin yhteen”
Suunnitelmat ja toteutus ovat liian kaukanaSuunnitelmat ja toteutus ovat liian kaukanatoisistaantoisistaan
Oleellista on että kehitystiimi on yhtenäinenOleellista on että kehitystiimi on yhtenäinenRatkaisee samat asiat samalla tavalla→Ratkaisee samat asiat samalla tavalla→yhtenäinen arkkitehtuuriyhtenäinen arkkitehtuuri
Noudatetaan samaa kehitysprosessiaNoudatetaan samaa kehitysprosessia
25
YhtenäisyysYhtenäisyys
Miten hyödyntää ”hyvien” kehittäjienMiten hyödyntää ”hyvien” kehittäjienpotentiaali ja saada se muidenpotentiaali ja saada se muidenkäyttöön?käyttöön?
Asiantuntijat suunnittelevat jaAsiantuntijat suunnittelevat jatoteuttavat arkkitehtuurin keskeisettoteuttavat arkkitehtuurin keskeisetosatosatMuut rakentavat niiden avullaMuut rakentavat niiden avullajärjestelmänjärjestelmän
Eri lähestymistapojaEri lähestymistapojaFramework, luokkakirjasto, yhteisetFramework, luokkakirjasto, yhteisetkomponentit, DSL-kielet...komponentit, DSL-kielet...
26
Software FactoriesSoftware Factories
Tapa suunnitella ja toteuttaa DSL-Tapa suunnitella ja toteuttaa DSL-pohjaisesti järjestelmiäpohjaisesti järjestelmiäDSL = Domain Specific LanguageDSL = Domain Specific Language
Mallinnus perustuen DSL-käsitteisiinMallinnus perustuen DSL-käsitteisiinEconomies of scopeEconomies of scopeUudelleenkäytetään suunnitelmiaUudelleenkäytetään suunnitelmia
Yleiskäyttöisestä välineestäYleiskäyttöisestä välineestätarvelähtöinen spesifi työkalutarvelähtöinen spesifi työkaluAutomatisoidaan toistuva jaAutomatisoidaan toistuva jarutiininomainen työvaiherutiininomainen työvaiheNostetaan abstraktiotasoa!Nostetaan abstraktiotasoa!
27
A software “model” isA software “model” is
Partly about visualisationPartly about visualisationAbstraction for clarityAbstraction for clarity
Because picture worth a thousand wordsBecause picture worth a thousand words
Sometimes about algorithmsSometimes about algorithmsExpression in a convenient formExpression in a convenient form
Because compact and efficientBecause compact and efficient
Often a set of instructionsOften a set of instructionsA recipeA recipe
Because can be automatedBecause can be automated
28
Customers Want To KnowCustomers Want To Know
WhatWhat types of systemstypes of systems can I build?can I build?What’s theWhat’s the architecturearchitecture of each type?of each type?
How do I goHow do I go from requirements to deploymentfrom requirements to deployment??WhatWhat artifactsartifacts and how are they related?and how are they related?
Why areWhy are methodologiesmethodologies so ineffective?so ineffective?Why aren’t they integrated with myWhy aren’t they integrated with my toolstools??Why can’t I getWhy can’t I get detailed and specific guidancedetailed and specific guidance forformy project?my project?
Why areWhy are modeling toolsmodeling tools so ineffective?so ineffective?Why can’t they generateWhy can’t they generate production quality codeproduction quality code??Why don’t modelsWhy don’t models stay synchronizedstay synchronized with code?with code?Why can’t models fit myWhy can’t models fit my file-orientedfile-oriented environment?environment?
29
Software Development asSoftware Development asCraftsmanshipCraftsmanship
Labor IntensiveLabor Intensive
Generic ToolsGeneric Tools
Generic ProcessesGeneric Processes
One offOne offapplicationsapplications
Hand stitched fromHand stitched fromscratchscratch
Minimal reuseMinimal reuse
Overruns, defects, security holes,project failures
30
Exploiting CommonalityExploiting Commonality
We already exploitWe already exploiteconomies of scaleeconomies of scaleto automateto automateproductionproductionStamping out manyStamping out manyidenticalidentical copiescopies of aof aprototypeprototypeUsed to produceUsed to produceCDs/DVDsCDs/DVDsDoes nothing to helpDoes nothing to helpdevelopmentdevelopment
31
Exploiting CommonalityExploiting CommonalityWe can alsoWe can alsoexploitexploit economieseconomiesof scopeof scope
ReuseReuse designsdesigns &&componentscomponents
Build many similarBuild many similarbut distinctbut distinctprototypesprototypes
Key is supportingKey is supportingvariabilityvariability
Define only the unique piecesof each system
32
Software FactoriesSoftware Factories
Domain-specificDomain-specificprocessprocess
Domain-specificDomain-specifictoolstools && languageslanguages
Domain-specificDomain-specificcontentcontent
AutomateAutomate rote androte andmenial tasksmenial tasks
General-purpose IDEs becomedomain-specific software factories
33
Domain-SpecificDomain-SpecificLanguagesLanguages
Focused on a single aspect of app buildingFocused on a single aspect of app buildingSuccess in broad horizontal domains: SQL,Success in broad horizontal domains: SQL,Windows Form DesignerWindows Form Designer
Designed support the concepts defined byDesigned support the concepts defined byan underlying frameworkan underlying frameworkAutomate rote tasks with effective codeAutomate rote tasks with effective codegenerationgeneration
Increase agility by visualizing concepts,Increase agility by visualizing concepts,generating code and other artifacts,generating code and other artifacts,enabling rapid iterationenabling rapid iteration
Building them must be fast, cheap and easy
34
XML, Projects,XML, Projects,Configs, Classes,Configs, Classes,
CodeCode
DeploymentDeploymentUnitsUnits
packaged intopackaged into
Code VisualizationCode Visualization
Class Designerand
two-way code synch
Class Designerand
two-way code synch
Class Designerand
two-way code synch
Class Designerand
two-way code synch
35
XML, Projects,XML, Projects,Configs, Classes,Configs, Classes,
CodeCode
DeploymentDeploymentUnitsUnits
packaged intopackaged into
Services,Services,Messages, Applications,Messages, Applications,
EndpointsEndpoints
Abstraction/Abstraction/refinementrefinement
Vertical Mapping - SystemVertical Mapping - SystemDesignDesign
36
XML, Projects,XML, Projects,Configs, Classes,Configs, Classes,
CodeCode
Physical ServersPhysical Serversand Networkand NetworkSegmentsSegments
DeploymentDeploymentUnitsUnits
packaged intopackaged into deployed ondeployed on
Services,Services,Messages, Applications,Messages, Applications,
EndpointsEndpointsLogical Data CenterLogical Data CenterHost SoftwareHost Software
Abstraction/Abstraction/refinementrefinement
Vertical Mapping - DataVertical Mapping - DataCenter DesignCenter Design
37
Providing TraceabilityProviding Traceability
Applications
ApplicationHosting
Logical Machines &Network Topology
Hardware
SystemDefinitionModel
38
XML, Projects,XML, Projects,Configs, Classes,Configs, Classes,
CodeCode
Physical ServersPhysical Serversand Networkand NetworkSegmentsSegments
DeploymentDeploymentUnitsUnits
packaged intopackaged into deployed ondeployed on
Services,Services,Messages, Applications,Messages, Applications,
EndpointsEndpointsLogical Data CenterLogical Data CenterHost SoftwareHost Software
constraintsconstraints
Horizontal Mapping -Horizontal Mapping -DeploymentDeployment
39
DSL ToolkitDSL Toolkit
40
Entä UML?Entä UML?
Visual Studio mallinnuspiirteetVisual Studio mallinnuspiirteeteiväteivät ole UML-välineitäole UML-välineitä
Visio on edelleen UML-piirtäjänVisio on edelleen UML-piirtäjänvälinevälineVisual Studio 2005 ei sisälläVisual Studio 2005 ei sisällävastinetta kaikille UML-vastinetta kaikille UML-kaaviotyypeillekaaviotyypeille
UML-pohjaisia mallinnusvälineitäUML-pohjaisia mallinnusvälineitäVisual Studio 2005:n päälleVisual Studio 2005:n päälletulossa kumppaneiltatulossa kumppaneilta
41
Ote: Visual Studio 2005 Team SystemOte: Visual Studio 2005 Team SystemModeling Strategy and FAQModeling Strategy and FAQ
To summarize, we would recommend using UML and UML-basedTo summarize, we would recommend using UML and UML-basedtools for:tools for:
Sketching.Sketching.
White boarding.White boarding.
Napkins.Napkins.
Documentation.Documentation.
Conceptual drawings that do not directly relate to code.Conceptual drawings that do not directly relate to code.
We would recommend precisely defined DSLs and DSL-based toolsWe would recommend precisely defined DSLs and DSL-based toolsfor:for:
Precise abstractions from which code is generated.Precise abstractions from which code is generated.
Precise abstractions that map to variation points in frameworks andPrecise abstractions that map to variation points in frameworks andcomponents.components.
Precise mappings between DSLs.Precise mappings between DSLs.
Conceptual drawings that have precisely specifiable mappings to otherConceptual drawings that have precisely specifiable mappings to otherDSLs or to code artifacts.DSLs or to code artifacts.
We would recommend neither of the above for visual programmingWe would recommend neither of the above for visual programmingof detailed program logic (or at least not for many years yet).of detailed program logic (or at least not for many years yet).
42
YhteenvetoYhteenveto
Visual Studion käyttäjäkunta laajeneeVisual Studion käyttäjäkunta laajeneeProjektipäälliköt, arkkitehdit, testaajat jneProjektipäälliköt, arkkitehdit, testaajat jne
Mallinnus perustuu DSLiinMallinnus perustuu DSLiinTyövälineet omien DSL-kieltenTyövälineet omien DSL-kieltenmäärittelyynmäärittelyyn
DSL Tools (Corona)DSL Tools (Corona)
AikatauluAikatauluBeta 2 ilmestynyt keväällä 2005 (go live)Beta 2 ilmestynyt keväällä 2005 (go live)
RTM marraskuu 2005RTM marraskuu 2005
43
ResourcesResourcesBookBook
Software Factories: Assembling ApplicationsSoftware Factories: Assembling Applicationswith Patterns, Models, Frameworks, and Toolswith Patterns, Models, Frameworks, and Tools,,Jack Greenfield, Keith Short, et al, ISBN 0-471-Jack Greenfield, Keith Short, et al, ISBN 0-471-20284-3, Wiley Publishing Inc., 2004.20284-3, Wiley Publishing Inc., 2004.
WebsitesWebsitesSoftware FactoriesSoftware Factories
msdn.microsoft.com/architecture/softwarefactmsdn.microsoft.com/architecture/softwarefactoriesories
Visual Studio 2005 Team SystemVisual Studio 2005 Team Systemmsdn.microsoft.com/vstudio/teamsystemmsdn.microsoft.com/vstudio/teamsystem
Visual Studio Team System WorkshopVisual Studio Team System WorkshopDomain-Specific Language (DSL) ToolsDomain-Specific Language (DSL) Toolslab.msdn.microsoft.com/vs2005/teamsystem/workslab.msdn.microsoft.com/vs2005/teamsystem/workshop/hop/
NewsgroupsNewsgroupsmicrosoft.private.whidbey.teamsystem.architectmicrosoft.private.whidbey.teamsystem.architectmicrosoft.private.whidbey.teamsystem.architect.modelmicrosoft.private.whidbey.teamsystem.architect.modelinging
44
LisätietojaLisätietoja
Professional Developers ConferenceProfessional Developers ConferenceLos Angeles 13-16.9.2005Los Angeles 13-16.9.2005lab.msdn.microsoft.com/vs2005/teamsystem/lab.msdn.microsoft.com/vs2005/teamsystem/
www.codezone.fiwww.codezone.fi
DSL Workshop joulu/tammikuussaDSL Workshop joulu/tammikuussa
45© 2005 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.