[2024]Digital Global Overview Report 2024 Meltwater.pdf
Agile Modeling with Uml and Visual Studio 2010
1. Agile Modeling with UML and Visual Studio 2010 Ogren Paunović ogrenpaunovic[at]gmail.com www.printecgroup.com
2. Q: Why is writing correct software so difficult?? COMPLEXITY! Modern software is reaching levels of complexity encountered in biological systems; sometimes comprising systems of systems each of which may include tens of millions of lines of code …any one of which may bring down the entire system at great expense
3. Complexity Essential complexity inherent to the problem cannot be eliminated by technology or technique e.g., solving the traveling salesman problem Accidental complexity due to technology or methods used to solve the problem e.g., building a skyscraper using hand tools only Modern software development suffers from an excess of accidental complexity
6. Abstraction, tool for complexity Abstraction is the process or result of generalization by reducing the information content of an observable phenomenon, typically to retain only information which is relevant for a particular purpose. Every system can be described with more than one abstraction, depending on a purpose. Progressive abstractions is way of building new abstractions on top of existing ones. Represented through models Usually, one model is not enough Models can be expressed in different notations
7. Unified Modeling Language Standardized general-purpose modeling language in the field of software engineering. ~150 known notations before UML Models structure and behavior Vide exploitation range (construction, communication, documentation, implementation) UML encapsulates almost all possible elements in software development Why use UML among other notations? It’s the least bad
8. Agile development Iterative and incremental (evolutionary) development based on frequent inspection and adaption through self-organizing cross-functional teams. Lightweight Different implementations (RUP, Scrum, XP, Crystal…)
9. Agile + UML? “What UML has to do with Agile? Wasn’t the whole point to cut out the ballast?” Modeling and UML are (funda)mental tools in overriding complexity! By just being agile, we are not overriding the complexity, we are ignoring it and suffering it. Agile manifesto doesn’t specify how any of mentioned goals should be achieved and it certainly doesn’t specify to get rid of the models (even some documentation)
11. So, what’s the catch? Having a model without automated relation to end result (functional software) has a cost and someone must explicitly choose to make that investment. Executable models should be considered as standard part of development environment, for others, the benefit of having models (and documentation) must be greater than the cost of creating and maintaining it.
12. Lifecycle of an agile model Models become permanent when they are stable, clear and provide value (to audience or through code) It is very useful to have modeling tools that support “offline” models that are not in direct relationship with the code all the time.
13. Models vs. Languages Level of abstraction Human understanding Modeling languages Programming languages Implementation details
14. Executable models Instead of abstract diagrams an executable model is a working prototype It encourages focus on user needs, not technical design considerations Transformation from platform independent to platform specific model UML Profiles as extension mechanism for customizing models for particular domains and platforms At the end we still have to write code
15. Static models (documents) The fundamental issue should be communication, not documentation Write it only if that's the best way to achieve the relevant goals Should be concise: overviews/roadmaps are generally preferred over details Developers rarely trust static models Create it only when you need it at the appropriate point in the lifecycle Update only when it hurts.
16. Visual Studio 2010 and UML Microsoft has become OMG member Focus on: Understanding the code, maintaining the control and understanding the domain New project type – Modeling project (VS 2010 Ultimate + VS 2010 SDK + VS 2010 Visualization & Modeling SDK) Model data are not related to diagrams anymore, but stored in model repository related to modeling project Model explorer instead of files Support for code generation through standard extensibility mechanism - UML profiles (T4 based generator) Feature Pack
Lightweight - Only measure of a result is working software.Individuals and interactions over processes and toolsWorking software over comprehensive documentationCustomer collaboration over contract negotiationResponding to change over following a planDifferent implementations do not exists as attempts to promote different approach, but when talking about selecting development methodology - there is no silver bullet. It depends on project type, team members, environment.
Agile approach and modeling are two totally independent questions that do not exclude each other!RUP even proposes which documents should be created in which development phase (architectural model)
UML Profile is a collection of stereotypes that can be applied to individual model elements. Each stereotype defines a set of attributes that extend definition of the model element it is applied to At the end we still have to write code, since there aren’t any modeling languages capable of abstracting all details and related generators to generate efficient and correct code.
Visual Studio includes C# Profile that can be used to extend UML classes with attributes specific to C#.T4 - Text Template Transformation Toolkit