Sytyke laivaseminaari 7-9.9.2005 Software Factories: Järjestelmien mallinnus Microsoftin välineillä Aali Alikoski Architect Evangelist, Microsoft Oy aali@microsoft.com blogs.msdn.com/aalialikoski
Agenda Työkaluja kehitysprosessin hallintaan Välineitä suoraan purkista Mallinnus ja sovelluskehityksen abstraktiotason nostaminen Alusta välineiden tekemiseksi 2
Sovellusten elinkaari Asiakkaat kertovat Sovelluskehitys on hyvin vaikeaa Meidän ryhmämme on hajallaan ja koostuu erikoistuneista asiantuntijoista Nykyiset työkalut eivät toimi hyvin yhteen toistensa kanssa Minun täytyy pystyä paremmin ennustamaan/seuraamaan kehitysprojektien etenemistä Organisaatiomme tarvitsee muokattavaa prosessiohjausta 3
Saarekkeita elinkaaren aikana Projektipäällikkö Infraarkkitehti Bisnespäättäjä Kehittäjä Testaaja Sovellusarkkitehti 4
Kehittäjätiimit Infraarkkitehti Sovellusarkkitehti Kehittäjä Testaaja Loppukäyttäjä Projektipäällikkö 5
Viestintäongelmia Kehittäjät eivät ymmärrä Infran hallintapolitiikkaa Infra-arkkitehti Sovellusarkkitehti Välineiden integraatio lisää Kommunikaatiota ja yhteistyötä Infraylläpitäjät eivät ymmärrä sovelluksen rakennetta Infraylläpidon tuntemus vähentää monimutkaisuutta Informaatiosaarekkeita eri tahoilla Vastuiden jako epäselvä Ristiriitaisia käytäntöjä ja arkkitehtuureja Ristiriitaisia päämääriä 6
Menestystekijöitä Työkalujen pitää vähentää nykyaikaisten palvelupohjaisten sovellusten tuottamiseen liittyvää monimutkaisuutta olla tiiviimmin toisiinsa integroituja ja mahdollistaa parempi yhteistoiminta tiimin jäsenten (ja roolien) kesken mahdollistaa muokkaus ja laajennettavuus sekä käyttäjäorganisaatioille että ISV:lle 7
Visual Studio 2005 Personalized productivity Hobbyists Students Enthusiasts Novices Project Managers Web Professionals VB6 Devs Part-Timers Solo Professionals Testers Consultants Architects Enterprise Devs 8
Visual Studio Visual Studio Visual Studio Team Architect Team Developer Team Test Application Modeling Dynamic Code Analyzer Load Testing Logical Infra. Modeling Static Code Analyzer Manual Testing Deployment Modeling Code Profiler Test Case Management Unit Testing Code Coverage Class Modeling Visio and UML Modeling Team Foundation Client VS Pro Visual Studio Team Foundation Change Management Reporting Integration Services Work Item Tracking Project Site Project Management Visual Studio Industry Partners Process and Architecture Guidance Visual Studio Team System 9
Visual Studio Visual Studio Visual Studio Team Architect Team Developer Team Test Application Modeling Dynamic Code Analyzer Load Testing Logical Infra. Modeling Static Code Analyzer Manual Testing Deployment Modeling Code Profiler Test Case Management Unit Testing Code Coverage Class Modeling Visio and UML Modeling Team Foundation Client VS Pro Visual Studio Team Foundation Change Management Reporting Integration Services Work Item Tracking Project Site Project Management Visual Studio Industry Partners Process and Architecture Guidance Visual Studio Team System 10
Team Architect Distributed Application Designer Whiteboard mode for application design Web Services Enhancements (WSE) support Validation against logical infrastructure Logical Infrastructure Designer Settings and constraints editor SDM generation and compiler Click-once support Class Designer Two-way code synchronization 11
Visual Studio Visual Studio Visual Studio Team Architect Team Developer Team Test Application Modeling Dynamic Code Analyzer Load Testing Logical Infra. Modeling Static Code Analyzer Manual Testing Deployment Modeling Code Profiler Test Case Management Unit Testing Testing Unit Code Coverage Coverage Code Class Modeling Visio and UML Modeling Team Foundation Client VS Pro Visual Studio Team Foundation Change Management Reporting Integration Services Work Item Tracking Project Site Project Management Visual Studio Industry Partners Process and Architecture Guidance Visual Studio Team System 12
Team Developer Static code analysis Support for managed and native code Code profiling Sequence view examines running threads GC view of object allocation and lifetime Caller-callee, callstack, and function views Code coverage Integrated unit testing and framework 13
Visual Studio Visual Studio Visual Studio Team Architect Team Developer Team Test Application Modeling Dynamic Code Analyzer Load Testing Logical Infra. Modeling Static Code Analyzer Manual Testing Deployment Modeling Code Profiler Test Case Management Unit Testing Code Coverage Class Modeling Visio and UML Modeling Team Foundation Client VS Pro Visual Studio Team Foundation Change Management Reporting Integration Services Work Item Tracking Project Site Project Management Visual Studio Industry Partners Process and Architecture Guidance Visual Studio Team System 14
Team Test Load testing Web services load testing via protocolbased script Load patterns: constant, step, custom Perf counter collection and threshold monitoring Test case management Application Verifier 15
Team Test Testing is 1st class in Visual Studio Tests are Source Code Test Authoring & Execution Environment Test View Test Explorer (Test Case Management UI) Load testing Web services load testing via protocol-based script Load patterns: constant, step, custom Perf counter collection and threshold monitoring Unit Testing Similar to NUnit 16
Visual Studio Visual Studio Visual Studio Team Architect Team Developer Team Test Application Modeling Dynamic Code Analyzer Load Testing Logical Infra. Modeling Static Code Analyzer Manual Testing Deployment Modeling Code Profiler Test Case Management Unit Testing Code Coverage Class Modeling Visio and UML Modeling Team Foundation Client VS Pro Visual Studio Team Foundation Change Management Reporting Integration Services Work Item Tracking Project Site Project Management Visual Studio Industry Partners Process and Architecture Guidance Visual Studio Team System 17
Team Foundation Portfolio creation and navigation Project Creation Wizard Process editor for customized guidance Project management Microsoft Project and Excel integration Change management Branching, changesets, shelving Migration from PVCS, ClearCase, and VSS Reporting and analytics Project portal 18
Project Management Goals Shape the Project Office Integration Rich Reporting Instrument the Process MSF 4.0 Integration Process Customization 19
Team System Integration Delivered via Team Foundation Server Methodology Templates Work Item Types, workflow Check In Policy Specification Templates Reports Groups & Permissions Integrated Help Phase Exit Criteria Exposed within Help Updated from MSDN Book series: Addison Wesley & MS Learning 20
Broad Industry Support 21
Mallinnus Alusta välineiden tekemiseksi
Sovelluskehityksen tuottavuus IT-teollisuuden maine on huono Yli puolet projekteista epäonnistuu tavalla tai toisella Tuottavuutta, ennustettavuutta ja luotettavuutta parannettava Kehittäjän tuottavuus: 23
Sovelluskehityksen vaikeus Useita eri tapoja ratkaista ongelma Kaikki yhtä hyviä ei ainoaa oikeaa ratkaisua On usein löydettävissä joukko ratkaisumalleja jotka toimivat hyvin yhteen Suunnitelmat ja toteutus ovat liian kaukana toisistaan Oleellista on että kehitystiimi on yhtenäinen Ratkaisee samat asiat samalla tavalla yhtenäinen arkkitehtuuri Noudatetaan samaa kehitysprosessia 24
Yhtenäisyys Miten hyödyntää hyvien kehittäjien potentiaali ja saada se muiden käyttöön? Asiantuntijat suunnittelevat ja toteuttavat arkkitehtuurin keskeiset osat Muut rakentavat niiden avulla järjestelmän Eri lähestymistapoja Framework, luokkakirjasto, yhteiset komponentit, DSL-kielet... 25
Software Factories Tapa suunnitella ja toteuttaa DSLpohjaisesti järjestelmiä DSL = Domain Specific Language Mallinnus perustuen DSL-käsitteisiin Economies of scope Uudelleenkäytetään suunnitelmia Yleiskäyttöisestä välineestä tarvelähtöinen spesifi työkalu Automatisoidaan toistuva ja rutiininomainen työvaihe Nostetaan abstraktiotasoa! 26
A software model is Partly about visualisation Abstraction for clarity Because picture worth a thousand words Sometimes about algorithms Expression in a convenient form Because compact and efficient Often a set of instructions A recipe Because can be automated 27
Customers Want To Know What types of systems can I build? What s the architecture of each type? How do I go from requirements to deployment? What artifacts and how are they related? Why are methodologies so ineffective? Why aren t they integrated with my tools? Why can t I get detailed and specific guidance for my project? Why are modeling tools so ineffective? Why can t they generate production quality code? Why don t models stay synchronized with code? Why can t models fit my file-oriented environment? 28
Software Development as Craftsmanship Labor Intensive Generic Tools Generic Processes One off applications Hand stitched from scratch Minimal reuse Overruns, defects, security holes, project failures 29
Exploiting Commonality We already exploit economies of scale to automate production Stamping out many identical copies of a prototype Used to produce CDs/DVDs Does nothing to help development 30
Exploiting Commonality We can also exploit economies of scope Reuse designs & components Build many similar but distinct prototypes Key is supporting variability Define only the unique pieces of each system 31
Software Factories Domain-specific process Domain-specific tools & languages Domain-specific content Automate rote and menial tasks General-purpose IDEs become domain-specific software factories 32
Domain-Specific Languages Focused on a single aspect of app building Success in broad horizontal domains: SQL, Windows Form Designer Designed support the concepts defined by an underlying framework Automate rote tasks with effective code generation Increase agility by visualizing concepts, generating code and other artifacts, enabling rapid iteration Building them must be fast, cheap and easy 33
Code Visualization Class Class Designer Designer and and twotwo-way way code code synch synch XML, Projects, Configs, Classes, Code packaged into Deployment Units 34
Vertical Mapping - System Design Services, Messages, Applications, Endpoints Abstraction/ refinement XML, Projects, Configs, Classes, Code packaged into Deployment Units 35
Vertical Mapping - Data Center Design Services, Messages, Applications, Endpoints Logical Data Center Host Software Abstraction/ refinement XML, Projects, Configs, Classes, Code packaged into Physical Servers and Network Segments Deployment Units deployed on 36
Providing Traceability Applications System Definition Model Application Hosting Logical Machines & Network Topology Hardware 37
Horizontal Mapping Deployment constraints Services, Messages, Applications, Endpoints Logical Data Center Host Software XML, Projects, Configs, Classes, Code packaged into Physical Servers and Network Segments Deployment Units deployed on 38
DSL Toolkit 39
Entä UML? Visual Studio mallinnuspiirteet eivät ole UML-välineitä Visio on edelleen UML-piirtäjän väline Visual Studio 2005 ei sisällä vastinetta kaikille UMLkaaviotyypeille UML-pohjaisia mallinnusvälineitä Visual Studio 2005:n päälle tulossa kumppaneilta 40
Ote: Visual Studio 2005 Team System Modeling Strategy and FAQ To summarize, we would recommend using UML and UML-based tools for: Sketching. White boarding. Napkins. Documentation. Conceptual drawings that do not directly relate to code. We would recommend precisely defined DSLs and DSL-based tools for: Precise abstractions from which code is generated. Precise abstractions that map to variation points in frameworks and components. Precise mappings between DSLs. Conceptual drawings that have precisely specifiable mappings to other DSLs or to code artifacts. We would recommend neither of the above for visual programming of detailed program logic (or at least not for many years yet). 41
Yhteenveto Visual Studion käyttäjäkunta laajenee Projektipäälliköt, arkkitehdit, testaajat jne Mallinnus perustuu DSLiin Työvälineet omien DSL-kielten määrittelyyn DSL Tools (Corona) Aikataulu Beta 2 ilmestynyt keväällä 2005 (go live) RTM marraskuu 2005 42
Resources Book Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools, Jack Greenfield, Keith Short, et al, ISBN 0-47120284-3, Wiley Publishing Inc., 2004. Websites Software Factories msdn.microsoft.com/architecture/softwarefact ories Visual Studio 2005 Team System msdn.microsoft.com/vstudio/teamsystem Visual Studio Team System Workshop Domain-Specific Language (DSL) Tools lab.msdn.microsoft.com/vs2005/teamsystem/works hop/ Newsgroups microsoft.private.whidbey.teamsystem.architect microsoft.private.whidbey.teamsystem.architect.model ing 43
Lisätietoja Professional Developers Conference Los Angeles 13-16.9.2005 lab.msdn.microsoft.com/vs2005/teamsystem/ www.codezone.fi DSL Workshop joulu/tammikuussa 44
2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. 45