The document provides 10 pieces of advice for software architects. It begins by introducing Eberhard Wolff and his background. Some of the key advice includes: understanding that the role of architect has changed with agile development and they are not managers; focusing on non-functional requirements and quality; caring about architecture and code quality rather than just diagrams; measuring code quality using tools; and ensuring proper dependency management to maintain architecture. The architect role is compared to that of a craftsman focusing on continual improvement rather than being separated from developers.
”In general programmers are pretty smart people. Smart people sometimes like to show off their smarts by demonstrating their mental juggling abilities. One difference between a smart programmer and a professional programmer is that the professional understands that clarity is king. Professionals use their powers for good and write code that others can understand.”
Awareness of design smells - indicators of common design problems - helps developers or software engineers understand mistakes made while designing and apply design principles for creating high-quality designs. This presentation provides insights gained from performing refactoring in real-world projects to improve refactoring and reduce the time and costs of managing software projects.
”In general programmers are pretty smart people. Smart people sometimes like to show off their smarts by demonstrating their mental juggling abilities. One difference between a smart programmer and a professional programmer is that the professional understands that clarity is king. Professionals use their powers for good and write code that others can understand.”
Awareness of design smells - indicators of common design problems - helps developers or software engineers understand mistakes made while designing and apply design principles for creating high-quality designs. This presentation provides insights gained from performing refactoring in real-world projects to improve refactoring and reduce the time and costs of managing software projects.
Lviv IT Arena is a conference specially designed for programmers, designers, developers, top managers, inverstors, entrepreneur and startuppers. Annually it takes place on 2-4 of October in Lviv at the Arena Lviv stadium. In 2015 conference gathered more than 1400 participants and over 100 speakers from companies like Facebook. FitBit, Mail.ru, HP, Epson and IBM. More details about conference at itarene.lviv.ua.
The slides of my talk at PUGRoma.
Here, a complete sample code
https://github.com/leopro/trip-planner
Presentation is also here: http://t.co/5EK56yYBmQ
Software Architecture: Principles, Patterns and PracticesGanesh Samarthyam
Are you a developer or designer aspiring to become an architect? Do you want to learn about the architecture of open source applications? Do you want to learn software architecture through case studies and examples? If you have answered “yes” to any of these questions, this presentation is certainly for you. This presentation will introduce you to key topics in software architecture including architectural principles, constraints, non-functional requirements (NFRs), architectural styles and design patterns, viewpoints and perspectives, and architecture tools. A special feature of this workshop: it covers examples and case studies from open source applications. What’s more, you’ll also get exposed to some free or open source tools used by practicing software architects.
Contents overview:
* Introduction to SA
* Overview of design principles, patterns and architectural styles
* Realising quality requirements (NFRs)
* Case studies: Architecture of well-known open source applications
* Tools: Free or open source tools for software architects
* Must to read books on software architecture
(Presented in OSI Days workshop in Bangalore on 19th Nov 2015).
Commands, events, queries - three types of messages that travel through your application. Some originate from the web, some from the command-line. Your application sends some of them to a database, or a message queue. What is the ideal infrastructure for an application to support this on-going stream of messages? What kind of architectural design fits best?
This talk provides answers to these questions: we take the *hexagonal* approach to software architecture. We look at messages, how they cross boundaries and how you can make steady communication lines between your application and other systems, like web browsers, terminals, databases and message queues. You will learn how to separate the technical aspects of these connections from the core behavior of your application by implementing design patterns like the *command bus*, and design principles like *dependency inversion*.
Talking to Architects: How Social Media Can Help - RIBA CPD Providers Networ...Su Butcher
Getting specified by architects is a pretty thankless task. It is difficult enough to get in the door, and since the recession fragmented many practices, finding the door can be a challenge too!
Drawing on her experience of both running architectural practices and working with manufacturers in construction, Su Butcher will explain the challenge of building relationships with architect specifiers, how practice is changing, and why getting your people on social media might be the key that opens the door.
Su illustrates her talk with both horror stories and success stories from her three years consulting with product manufactures, and will set out her10 step guide to an effective social media strategy.
If you sell building materials and want architects to specify your products, this presentation will help you be more successful. You can also view it on YouTube
Software is not a Building - Designing Technical Architecture for ChangeCantina
In this presentation, we talk about the symptoms that make software hard to change and remedies to cure them. Topics like tension between patterns in modern, rapid development frameworks and the patterns and practices used to keep software malleable are discussed.
Slides by David Fox, Director of Technical Design
Lean-Agile Development with SharePoint - Bill AyersSPC Adriatics
SharePoint gives us a great platform for developing sophisticated intranet portals and collaboration sites and many other workloads. But it can also be a challenge to use modern software development frameworks like Scrum and XP. Wouldn’t it be great if we could get all the benefits of Agile practices – faster development, predictable deliveries, better quality, less stress and happy stakeholders? In this session we will cover the definitions of Lean, Agile, Scrum, Kanban, XP, and TDD. Then we will look at the specific challenges around Agile SharePoint development and some development techniques to overcome these obstacles. This talk covers both project delivery and engineering. We’ll look at unit tests, integration tests, UI tests, continuous integration and, of course, test-driven development (TDD) with practical experiences from real-life Agile SharePoint projects.
Lviv IT Arena is a conference specially designed for programmers, designers, developers, top managers, inverstors, entrepreneur and startuppers. Annually it takes place on 2-4 of October in Lviv at the Arena Lviv stadium. In 2015 conference gathered more than 1400 participants and over 100 speakers from companies like Facebook. FitBit, Mail.ru, HP, Epson and IBM. More details about conference at itarene.lviv.ua.
The slides of my talk at PUGRoma.
Here, a complete sample code
https://github.com/leopro/trip-planner
Presentation is also here: http://t.co/5EK56yYBmQ
Software Architecture: Principles, Patterns and PracticesGanesh Samarthyam
Are you a developer or designer aspiring to become an architect? Do you want to learn about the architecture of open source applications? Do you want to learn software architecture through case studies and examples? If you have answered “yes” to any of these questions, this presentation is certainly for you. This presentation will introduce you to key topics in software architecture including architectural principles, constraints, non-functional requirements (NFRs), architectural styles and design patterns, viewpoints and perspectives, and architecture tools. A special feature of this workshop: it covers examples and case studies from open source applications. What’s more, you’ll also get exposed to some free or open source tools used by practicing software architects.
Contents overview:
* Introduction to SA
* Overview of design principles, patterns and architectural styles
* Realising quality requirements (NFRs)
* Case studies: Architecture of well-known open source applications
* Tools: Free or open source tools for software architects
* Must to read books on software architecture
(Presented in OSI Days workshop in Bangalore on 19th Nov 2015).
Commands, events, queries - three types of messages that travel through your application. Some originate from the web, some from the command-line. Your application sends some of them to a database, or a message queue. What is the ideal infrastructure for an application to support this on-going stream of messages? What kind of architectural design fits best?
This talk provides answers to these questions: we take the *hexagonal* approach to software architecture. We look at messages, how they cross boundaries and how you can make steady communication lines between your application and other systems, like web browsers, terminals, databases and message queues. You will learn how to separate the technical aspects of these connections from the core behavior of your application by implementing design patterns like the *command bus*, and design principles like *dependency inversion*.
Talking to Architects: How Social Media Can Help - RIBA CPD Providers Networ...Su Butcher
Getting specified by architects is a pretty thankless task. It is difficult enough to get in the door, and since the recession fragmented many practices, finding the door can be a challenge too!
Drawing on her experience of both running architectural practices and working with manufacturers in construction, Su Butcher will explain the challenge of building relationships with architect specifiers, how practice is changing, and why getting your people on social media might be the key that opens the door.
Su illustrates her talk with both horror stories and success stories from her three years consulting with product manufactures, and will set out her10 step guide to an effective social media strategy.
If you sell building materials and want architects to specify your products, this presentation will help you be more successful. You can also view it on YouTube
Software is not a Building - Designing Technical Architecture for ChangeCantina
In this presentation, we talk about the symptoms that make software hard to change and remedies to cure them. Topics like tension between patterns in modern, rapid development frameworks and the patterns and practices used to keep software malleable are discussed.
Slides by David Fox, Director of Technical Design
Lean-Agile Development with SharePoint - Bill AyersSPC Adriatics
SharePoint gives us a great platform for developing sophisticated intranet portals and collaboration sites and many other workloads. But it can also be a challenge to use modern software development frameworks like Scrum and XP. Wouldn’t it be great if we could get all the benefits of Agile practices – faster development, predictable deliveries, better quality, less stress and happy stakeholders? In this session we will cover the definitions of Lean, Agile, Scrum, Kanban, XP, and TDD. Then we will look at the specific challenges around Agile SharePoint development and some development techniques to overcome these obstacles. This talk covers both project delivery and engineering. We’ll look at unit tests, integration tests, UI tests, continuous integration and, of course, test-driven development (TDD) with practical experiences from real-life Agile SharePoint projects.
Tech and Product Management by Foursquare's PMProduct School
How important is it to understand technology? The Product Manager at Foursquare, Avneesh Kohli, discussed how to build rapport and how understanding tech will make you a better Product Manager. If you're new to Product Management, he also talked about how much technology you should know and what coding language you should learn.
Why We Need Architects (and Architecture) on Agile ProjectsRebecca Wirfs-Brock
This is an updated version of this talk which I will present at Agile 2013.
The rhythm of agile software development is to always be working on the next known, small batch of work. Is there a place for software architecture in this style of development? Some people think that software architecture should simply emerge and doesn’t require ongoing attention. But it isn’t always prudent to let the software architecture emerge at the speed of the next iteration. Complex software systems have lots of moving parts, dependencies, challenges, and unknowns. Counting on the software architecture to spontaneously emerge without any planning or architectural investigation is at best risky.
So how should architecting be done on agile projects? It varies from project to project. But there are effective techniques for incorporating architectural activities into agile projects. This talk explains how architecture can be done on agile projects and what an agile architect does.
An introduction to fundamental architecture conceptswweinmeyer79
(Note: This is a very dated version of this popular deck, as SlideShare does not provide authors with a mechanism to update their documents. If interested in the latest version, feel free to message me on LinkedIn or at wweinmeyer@gmail.com. Also, feel free to ask SlideShare to bring back the ability to update posted documents.)
A discussion of the fundamentals you need to nail in your architecture practice:
- Architecture vs. Design
- Conceptual vs. Logical vs. Physical architecture
- Viewpoint Frameworks
- Architecture Domains
- Architecture Tiers
You are free to use/copy this information but if you do so, please include an acknowledgement
The Fundamentals of Continuous Software DesignJeremy Miller
Here's my talk from CouchCon on the fundamental ideas and thinking behind doing software design in an Agile Software project
See the whole talk at https://www.youtube.com/watch?v=v9icxKMJ9PA
Simon White, Marks and Spencer Group DevOps Manager discusses the disconnect between traditional SQA & Agile approaches and how DevOps can be perceived as the ‘mature Agile’ model.
Limiting software architecture to the traditional ideas is not enough for today's challenges. This presentation shows additional tools and how problems like maintainability, reliability and usability can be solved.
Continuous Delivery solves many current challenges - but still adoption is limited. This talks shows reasons for this and how to overcome these problems.
Four Times Microservices - REST, Kubernetes, UI Integration, AsyncEberhard Wolff
How you can build microservices:
- REST with the Netflix stack (Eureka for Service Discovery, Ribbon for Load Balancing, Hystrix for Resilience, Zuul for Routing)
- REST with Consul for Services Discovery
- REST with Kubernetes
- UI integration with ESI (Edge Side Includes)
- UI integration on the client with JavaScript
- Async with Apache Kafka
- Async with HTTP + Atom
This presentation show several options how to implement microservices: the Netflix stack, Consul, and Kubernetes. Also integration options like REST and UI integration are covered.
There are many different deployment options - package managers, tools like Chef or Puppet, PaaS and orchestration tools. This presentation give an overview of these tools and approaches like idempotent installation or immutable server.
Held at Continuous Lifecycle 2016
How to Split Your System into MicroservicesEberhard Wolff
Splitting a system into microservices is a challenging task. This talk shows how ideas like Bounded Context, migration scenarios and technical constraints can be used to build a microservice architecture. Held at WJAX 2016.
Microservices and Self-contained System to Scale AgileEberhard Wolff
Architectures like Microservices and Self-contained Systems provide a way to support agile processes and scale them. Held at JUG Saxony Day 2016 in Dresden.
Data Architecturen Not Just for MicroservicesEberhard Wolff
Microservices change the way data is handled and stored. This presentation shows how Bounded Context, Events, Event Sourcing and CQRS provide new approaches to handle data.
We assume software should contain no redundancies and that a clean architecture is the way to a maintainable system. Microservices challenge these assumptions. Keynote from Entwicklertage 2016 in Karlsruhe.
Nanoservices are smaller than Microservices. This presentation shows how technologies like Amazon Lambda, OSGi and Java EE can be used to enable such small services.
Microservices: Architecture to scale AgileEberhard Wolff
Microservices allow for scaling agile processes. This presentation shows what Microservices are, what agility is and introduces Self-contained Systems (SCS). Finally, it shows how SCS can help to scale agile processes.
Microservices, DevOps, Continuous Delivery – More Than Three BuzzwordsEberhard Wolff
Microservices, DevOps and Continuous Delivery are three hypes at the moment. This talk looks into the relationships between these three approaches and gives an idea how these approaches help to solve concrete problems. Held at Continuous Lifecycle 2015.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
2. About me
• Eberhard Wolff
• Architecture & Technology Manager at adesso
• adesso is a leading IT consultancy in Germany
• Speaker
• Author (e.g. first German Spring book)
• Blog: http://ewolff.com
• Twitter: @ewolff
• http://slideshare.com/ewolff
• eberhard.wolff@adesso.de
4. Software Architect
Software architect is a general term
with many accepted definitions
which refers to a broad range of roles.
Not really well defined…
5. Software Architecture
The software architecture of a system is the set of
structures
needed to reason about it, which comprise
software elements,
relations among them, and
properties of both.
6. Why We Care
Defines
Structures Performance
Software elements
non-functional
Relations
Properties
Availability
Productivity
requirements &
Software
Architecture
Maintainability
quality Security
Operations
7. Software Architect:
Responsibilities
• Manager
• Responsibility: non-functional
requirements / quality
• Tool: Define and enforce
architecture
• Functional requirements covered
by requirements process
• Functional requirements influence
the architecture
9. Agile Development i.e. Scrum
Where is Scrum Master
Removes obstacles
Enforces rules
the
Architect Stories
?
Product
Owner
Creates stories
Team
Self-organizing
Implements stories
10. You Are Not An Architect!
• No manager
• Need to convince not manage
• Therefore: Not that different from a developer
• More experienced
• More knowledge
11. Is “Architect” a Good Metaphor?
• Buildings are physical entities
– Hard to change
• Construction industry is established
• …and has a long history
• Buildings can be fully specified
• Software can’t (see Agility)
• Clear separation: Architect vs.
construction worker
• Common for a Software Architect to
be a former developer
• …or even doing some coding
13. Software Craftsmanship Manifesto
(2009)
• As aspiring Software Craftsmen we are raising the bar
of professional software development by practicing it
and helping others learn the craft. Through this work
we have come to value:
• Not only working software,
– but also well-crafted software
• Not only responding to change,
– but also steadily adding value
• Not only individuals and interactions,
– but also a community of professionals
• Not only customer collaboration,
– but also productive partnerships
14. Architect as a Master Craftsman
• More experienced
• Knows the tools very
well
• Guides and helps others
• Incorporates feedback
• Improves the craft
• Quality
• Will work on code
• But knows the bigger
picture of the project
• Education and work on
the project at hand
16. Your Opinion Matters!
• You need to have your own opinion
• …about technologies
• …about architecture approaches
• Listen to opinions of others
• …but come up with your own
• Your responsibility
18. Your Opinion Matters!
• This applies to this conference
• …and this talk
• If it does not make sense to you
– say so
• Your opinion – your responsibility
• Even if someone is a speaker – he might still
be wrong
• Never be intimidated!
20. People Want to Improve!
• Technical people take pride in
their skills
• …often also quality
• They want to improve and create
great quality!
• Guide the way
• Define what quality is
21. What You Can Do…
• Education
• Review
• Pairing
• Talks
• …
22. What If They Don’t Want to
Improve?
• You are screwed
• No way to create high quality with
those people
• Ensure that they know what
quality is and what is expected
24. Architecture = Trade Off
• There are numerous ways to architect
each system
• There is no one single right
architecture
• Each architecture has strength and
weaknesses
• Think about architecture in terms of
Trade Offs
• Do they match your requirements?
25. Example for Trade Off:
Persistence
• Option: SQL
– More control
– Less infrastructure
• Option: O/R mapper
– Seemingly easier to use
– But a complex piece of technology
• Option: NoSQL
– A lot of options with individual strength and
weaknesses
27. Vocabulary
• Approaches to architecting a
system
• Defines what kind of architectures
and systems you can express
• The more you know the better you
can do trade offs
• Will offer new perspectives on what
you doing
• Also it is interesting to learn what
others do
28. How to Improve Your Vocabulary
• Patterns
– Fowler: Patterns of Enterprise
Application Architecture
– Gamma et al: Design Patterns
– Buschmann et al: Patterns-
Oriented Software Architecture
– Hohpe: Pattern of Enterprise
Integration
• Evans: Domain Driven Design
29. How to Improve Your Vocabulary
• Technologies
– How many Persistence
approaches do you know?
– Should at least have a high level
overview
– There is life beyond standards
– Can save a lot of time and effort
• Conferences
• Web Sites
• Reviews
30. Again: Persistence
• “Patterns of Enterprise Application
Architecture” lists persistence approaches
• Ruby on Rails uses Active Record (i.e.
objects can store themselves)
• myBATIS for easy persistence using SQL
(Java / .NET)
• …
32. Eat Your Own Dog Food!
• Defining an architecture is easy
• It is hard to create the right
architecture
• Need feedback
• Eat your own dog food: Develop
code yourself
• Do pair programming
• To become grounded
34. Broken Windows Theory
• Once windows are not
repaired…
• …vandals will break more
• …break into the building
• …
• Accepting compromises on
quality is risky
• …but if you strive for ultimate
quality everywhere, you will fail
• In particular with legacy
software
35. Broken Windows in Architecture
• Compromises on quality will
become out of hand
• Might speed up a project for
a limited time
• But: Will hurt productivity in
the long run
• …and ultimately slow it down
• Higher quality can mean less
cost and quicker delivery
• Metaphor: Technical debt
• Much like debt in real life
36. But…
• There might still be broken windows
• There might be more and less skilled
developers
• What do I do?
38. Domain Driven Design
• “Tackling Complexity
in the Heart of
Software”
• E.g. Ubiquitous
Language
for Code, Developers
and Customers
39. Strategic Domain Driven Design
• Bounded Context:
Model used only in a specific
part of the system
• Context Map:
Translate models from
different parts of the system
• Anti-Corruption Layer:
Make sure the core domain
is not corrupted
40. Strategic Domain Driven Design
• Can be used to manage
quality
• What are the core business
domains?
• Focus on quality of those
• Isolate them from the rest of
the system
• Let the best developer work
on the most important parts
41. Strategic Domain Driven Design
• Acknowledges that not all developers are
equals
• …and not all parts of a system will have the
same quality
• Allows you to steer which parts will be better
43. Care About Architecture and Code
• You can draw diagrams until the end of time
• It’s the code and the architecture in the code
that matters
• Architectures is only used to influence code
45. Measure and Reduce
• No way to know all code by heart
• Still: You and the team need to understand
the state of the project
• Need tools to measure and reduce
information
46. Sonar
• Server that integrates a lot of systems
• Static code analysis (Findbugs, PMD etc)
• Lines of Code, classes
• Test code coverage
• Complexity
• Historized i.e. easy to spot trends
• Easy to install
• Visit http://nemo.sonarsource.org/ for
examples
47. Draw Conclusions!
• Do not try to enforce a certain value for a
metric!
• Metrics are used to reduce information and
get warning signs
• Use them to improve quality
• If you enforce a value mindlessly problems
will be avoided – not solved
• …and measurements will become worthless
49. Dependency Management
• Essential for measuring architecture
• i.e. what is the structure in the code?
• Why are Dependencies so important?
50. What is Architecture?
• Architecture is the decomposition of systems
in parts
• No large or complex parts
• No cyclic dependencies
51. Normal Dependencies
• A and B might be
packages or classes
Component A
• B depends on A, i.e. it
uses classes, methods
etc.
Component B
• Changes in A impact B
• Changes in B do not
impact A
52. Cyclic Dependency
• B depends on A and A on
B
Component A
• Changes in A impact B
• Changes in B impact A
• A and B can only be
changed as one unit Component B
• …even though they should
be two separate units
54. Measure Dependencies!
• …otherwise they will get out of hand
• Cyclic dependencies mean:
– It should be separated according to the
architecture
– …but it is not
• JDepend – rather outdated
• Structure 101
• Sonargraph
55. Care about
You are Not an Architecture is
Code and Quality
Architect Trade Off
Architecture
Measure and Eat your own No Broken
Vocabulary
Reduce Dog Food Windows
Dependencies People Want Strategic
Matter To Improve Design
And Remember: Your Opinion Matters!
56. Wir suchen Sie als
Ø Software-Architekt (m/w)
Ø Projektleiter (m/w)
Ø Senior Software Engineer (m/w)
Ø Kommen Sie zum Stand und gewinnen Sie ein iPad 2!
jobs@adesso.de
www.AAAjobs.de