SlideShare ist ein Scribd-Unternehmen logo
1 von 49
Downloaden Sie, um offline zu lesen
The modern architect
“A Pragmatic View from the Trenches” -
Niels Bech Nielsen
Pragmatic Engineer
Services
Liv og Pension
Digital Selvbetjening
Professional Service
Projekter
Application Management
Arkitektur
Sikkerhed
Open Source
3
Disclaimer
• These slides do not tell the story, they are a natural
supplement to a vivid regurgitation, that is my real
presentation
• Read them at will, but expect the real story to be better
• Contact me, if you really want the truth
if you CAN handle the truth
4
One definition
• ”Software Architect is a computer manager who makes
high-level design choices and dictates technical
standards, including software coding standards, tools and
platforms”
5
One definition
• ”Software Architect is a computer manager who makes
high-level design choices and dictates technical
standards, including software coding standards, tools
and platforms”
6
Main Responsibility
• Limiting choices available during development by
Choosing a standard way of development
Creating, defining or choosing a framework for the application
• Recognizing potential reuse by
Observe and understand the broader system environment
Creating component design
Having knowledge of other applications in the organisation
• Subdivide a complex application into manageable entities
Grasp the functionality of each component within the application
Understand the component interactions and dependencies
• Communicate these concepts to developers
7
Enterprise Architectural Growth
Startup/Small-
cap
Mid-cap
Enterprise
8
Tiered architects
Strategic
Thinking
System
Interactions
Communication Design
Enterprise
Architect
Across Project Highly
Abstracted
Across
Organisation
Minimal, High
Level
Solution
Architect
Focused on
Solution
Very Detailed Multiple Teams Detailed
Application
Architect
Component Re-
use,
Maintainability
Single
Application
Single Project Very Detailed
9
The Dictating Ivory Tower
Enterprise
Architect
Solution
Architect
Application
Architect
Developer Developer
Application
Architect
Solution
Architect
Application
Architect
Application
Architect
Developer Developer
UML
Design
ManualReq
spec
TCO
ROI
EJB
MOM
ESB
Business
Intelligence
10
Agile
That is, while there is value in the items on the right,
we value the items on the left more
We are uncovering better ways of developing software by doing it
and helping others do it. Through this work we have to come to value
11
Agile
Up-front design
UML/BML
Organisation
ROI/TCO
Iterative
Real Options
Retrospectives
Craftmanship
We are uncovering better ways of developing software by doing it
and helping others do it. Through this work we have to come to value
That is, while there is value in the items on the right,
we value the items on the left more
12
Enterprise Agility Adoption
Startup/Small-
cap
Mid-cap
Enterprise
13
Agile Iterations
Options/Plans
ExecutionValidation
Reflection
”Tends to be focussed on delivering functionality rather
than looking after their architecture”
Project
Manager
?
14
Irrespectively of scale
• Cross-cutting concerns such as logging and exception handling
• Security; including authentication, authorisation and
confidentiality of sensitive data
• Performance, scalability, availability and other quality
attributes
• Audit and other regulatory requirements
• Real-world constraints of the environment
• Interoperability/integration with other software systems
• Operational, support and maintenance requirements
• Consistency of structure and approach to solving problems
• Implementing features across the codebase
• Evaluating that the foundations you’re building will allow
you to deliver what you set out to deliver
15
Agile Architecture
16
Time, Leading to..?
• Software Entropy receives no focus
as a system is modified, its disorder, or entropy, always increases. This is
known as software entropy
When a program is modified, its complexity will increase, provided that one
does not actively work against this.
• Technical Debt increases
a neologistic metaphor referring to the eventual consequences of poor
software architecture and software development within a codebase.
Technical Debt will increase until eventually only rewrite is possible
• Tribal Knowledge is not Internalized
Tribal Knowledge or Know-How is the collective wisdom of the organization.
It is the sum of all the knowledge and capabilities of all the people.
Knowledge must be transferred or else behaviour is duplicated or forgotten
• Who is around the agile project to identify reuse and manage
complexity?
17
- Pause, Paul
- Ja, pause Paul, bare 2 minutter
18
What IF
• ”Software Architect is a computer manager who makes
high-level design choices and dictates technical
standards, including software coding standards, tools and
platforms”
• ”Software Architect is a techo polymath* who offers
high-level design choices and and facilitates best
technical practises, including software coding standards,
tools and platforms”
*) A polymath is a person whose expertise spans a significant
number of different subject areas
19
Main Responsibilities
• Technical Leadership of the product
Set the standards for development
Provide high-level design practises
Ensure best practise and communicate these
Minimize software entropy and increase product quality
Ensure that the architecture is sufficiently documented
• Enterprise collaborator and networker
Identify and support re-use
Collaborate with enterprise architects to incorporate cross-
cutting concerns
20
Enterprise Foundation
Application Architecture
Foundation
Solution
Architecture
Enterprise
Architecture
Business
Requirements
Ensure that the product
Is built within the
Enterprise guidelines
To support the business
22
Up-Front Project Planning
Structure
Understand the
significant structural
elements and how they
fit together based on
the architectural drivers
Design and
Decomposition down to
containers and
components
Risk
Identify and mitigate the
highest priority risk
Risk-storming and
concrete experiments
Vision
Create and
communicate a vision
for the team to work
with
Context, container and
component diagrams
Just enough up front design to create firm foundations for the
software product and its delivery
24
In the face of Continuous Delivery
• Set the technology stack
• Control the build process
• Be responsible for deployment
• May be handled by the Build Engineer
25
Shifting the focus
• Focus for an application architect in the presence of
working software must be to facilitate the team to make
the best decisions and help provide the best possible
platform for further extension
26
Setting the standards versus templating
Examplification
An architect must often forefront
the development and provide an
initial implementation of the
framework in which the software
will be developed
27
Setting the standards versus templating
Copy and Paste
However, the architect should be
aware that not everybody can see
the aesthetics and evolve from
there.
28
Mastering Skillset
Remember
Describe
Name
Find
List
Relate
Write
Understand
Explain
Compare
Discuss
Predict
Outline
Restate
Apply
Complete
Use
Examine
Illustrate
Classify
Solve
Analyze
Compare
contrast
Examine
Explain
Identify
Categorize
Investigate
Evaluate
Justify
Assess
Prioritize
Recommend
Rate
Decide
Create
Plan
Invent
Compose
Design
Construct
Imagine
Bloom’s Taxonomy
> > > > > > > > > > > > > > > > > > > > > > > > >
29
Problem Solving in your Team
Stack
Overflow
Google
Architect
Smart Guy
30
Stack Overflow
I need to send multiple requests to many different web services and receive the results. The
problem is that, if I send the requests one by one it takes so long as I need to send and
process all individually.
I am wondering how I can send all the requests at once and receive the results.
31
Top 3 Ludicrous Answers
• It has got various option to develop this:
JMS : quality of service and management, e.g. redelivery
attempt, dead message queue, load management, scalability,
clustering, monitoring, etc.
Simply using the Observer pattern for this. For more details
OODesign and How to solve produce and consumer follow this
Kodelog
• Looking at the problem, you need to integrate your
application with 10+ different webservices. While making
all the calls asynchronous. This can be done easily with
Apache Camel.
• You can ask your jax-ws implementation to generate
asynchronous bindings for the web service.
32
Availability
• A software architect must have enough time and interest
to answer all questions from teams and individuals
• A software architect must facilitate learning and
mentoring
• A software architect must communicate shared models
and shared visions
• By having high developer interaction the software
architect can
Identify re-use and componentization
Increase awareness of cross-cutting concerns
33
Quality Assurance
• Code Review is a systematic examination of computer
source code. It is intended to find and fix mistakes
overlooked in the initial development phase improving
both the overall quality of software and the developers’
skills.
• Automatic as well as manual intervention
Automatic testing
Automatic software analysis
Peer review
34
Automatic Testing
• Accepted curse of unit testing
Documentation
Regression
Works best on loose coupled entities
• Focus on Integration testing
End to end scenario support
Ensure that Input leads to Output
Helped by virtualization and continuous deployments
Watch out for maintenance costs
35
Automatic Software Verification
• Perform automatic analysis of source code and binaries
Tools such as PMD, Checkstyle, Findbugs, jdepend, classycle,
Emma, Cobertura, Pathfinder, ThreadSafe, Macker, clirr,
Tattletale (for Java development)
Or collective in reporting systems such as SonarQube, QALab or
Xradar
• Important to apply qualified analysis on top of the result
36
Peer Review
• Formal or informal collaborate effort of cross-
examination of source code
• Review improve quality by
Rejecting or improving commits
Committers and reviewers learn from each other
Motivation to do boring tasks
• But can also improve overall morale and team coherence
• Important to keep an open culture and avoid blame
game
For any software team not already doing so, the single most effective thing
It can do to improve product quality is to introduce a code review process
37
The Code doesn’t Tell the Whole Story
• Code may hint at
(Functionality)
Programming language
Architectural tiers
Naming standards
Patterns and idioms
• But even those hints may be misinterpreted
• Code may not reveal
Why the technologies were chosen
The overall structure of the system
Whether any common patterns or principles are used
How and where to add new functionality
How security, stability, scalability, etc is achieved
38
Recognize this place?
39
Recognize this place?
40
Recognize this place?
41
Recognize this place?
42
Recognize this place?
43
Recognize this place?
44
Recognize this place?
45
Documenting Architecture
• Documentation is not hard
• Briefly outline technologies and choices
Keep the stories short and to the point
Create simplified diagrams
• Keep it with the source code under revision control
46
Example 1 - AsciiDoc
• Extremely simple markup, integrates with builds
<profile>
<!-- ========================================================================= -->
<!-- Include a documentation profile if the project have src/main/asciidoc -->
<!-- Adds a process-asciidoc goal to the generate-resources phase -->
<!-- ========================================================================= -->
<id>fdc-documentation-profile</id>
<activation>
<file><exists>${basedir}/src/main/asciidoc</exists> </file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctor-maven-plugin</artifactId>
<configuration>
<backend>html</backend>
<outputDirectory>${project.build.directory}/docs</outputDirectory>
<sourceHighlighter>coderay</sourceHighlighter>
</configuration>
</plugin>
</plugins>
</build>
</profile>
Ex
47
Example 2 - gmaven
• Generate lists from source code scanning
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source> src/main/gscripts/services.groovy </source>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.thoughtworks.qdox</groupId>
<artifactId>qdox</artifactId>
<version>1.12.1</version>
</dependency>
</dependencies>
</plugin>
def dir = new File(project.basedir.parent, "gps_persistence/src/main/java")
def builder = new com.thoughtworks.qdox.JavaDocBuilder()
builder.addSourceTree(dir)
def services = builder.classes.findAll {
it.annotations.find { it.type.value == "org.springframework.stereotype.Service" }
}
def servicelist = new File(project.build.directory, "service.ad")
servicelist.withPrintWriter { pw ->
services.each {
pw.println "+${it.name}+”
if (it.comment) pw.println "${it.comment}”
pw.println '[cols="2", options="header"1]’
pw.println '|===’
pw.println '|Method’
pw.println '|Description’
it.methods.each {
if (it.public) {
pw.println "|${it.name}”
pw.println "|${it.comment?:''}”
}
}
pw.println '|===’
}
}
48
Example 3 - Violet
• Simple tools for structural diagrams
49
Are you responsive?
• All changes to a software product must be reversible
Deployments fail for many reasons outwith control, making this
a real risk in any software project
However the risk is easy to avert by proper rollback mechanisms
• Projects are no longer static, and must be palpable by
engineering staff and newcomers
Especially when projects are signed off
• Ask yourself these questions
How long time does it take to check-out the software,
circumvent a simple problem and re-release your product to
production environment?
How long time does it take to integrate a new developer with a
workable developer environment?
50
In total
• Always start from an enterprise foundation
• Engage in Just Enough Up-Front Design
• Set the standards and the builds
• Evolve the documentation
• Master Code Reviews
• Be the go-to guy
• Be responsible for the product artefact
51
Q (+A?)
I left the murky, bedraggled streets of home to venture on a
Journey for a thousand miles and more.
I had a vision and a purpose and everything around me sprang to life
In a newfound thrill of excitement.
Arriving at my final destination I saw wonders beyond compare and such
Joy and such life that everything fell into place and harmony.
How can this be of wonder, you ask, when I reveal the final destination
As the origins of my journey. But alas, everything old can be born again
From a new perspective

Weitere ähnliche Inhalte

Was ist angesagt?

Software engineering : Layered Architecture
Software engineering : Layered ArchitectureSoftware engineering : Layered Architecture
Software engineering : Layered ArchitectureMuhammed Afsal Villan
 
Aimtech Software Development Company Presentation
Aimtech Software Development Company PresentationAimtech Software Development Company Presentation
Aimtech Software Development Company PresentationAnahitYeprikyan2
 
AlphaSimple product pitch
AlphaSimple product pitchAlphaSimple product pitch
AlphaSimple product pitchRafael Chaves
 
Software project management Software economics
Software project management Software economicsSoftware project management Software economics
Software project management Software economicsREHMAT ULLAH
 
No silver bullet summary (paper)
No silver bullet summary (paper)No silver bullet summary (paper)
No silver bullet summary (paper)shakeel khan
 
No silver bullet essence and accidents of software engineering
No silver bullet essence and accidents of software engineeringNo silver bullet essence and accidents of software engineering
No silver bullet essence and accidents of software engineeringArun Banotra
 
Improving software economics
Improving software economicsImproving software economics
Improving software economicsdeep sharma
 
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)siouxhotornot
 
No silver-bullllet-1
No silver-bullllet-1No silver-bullllet-1
No silver-bullllet-1Maria Riaz
 
The Role of the Software Architect (short version)
The Role of the Software Architect (short version)The Role of the Software Architect (short version)
The Role of the Software Architect (short version)Hayim Makabee
 
Building digital capabilities
Building digital capabilities   Building digital capabilities
Building digital capabilities Raji Gogulapati
 
Improving software economics - Top 10 principles of achieving agility at scale
Improving software economics - Top 10 principles of achieving agility at scaleImproving software economics - Top 10 principles of achieving agility at scale
Improving software economics - Top 10 principles of achieving agility at scaleIBM Rational software
 
Lecture 2 introduction to Software Engineering 1
Lecture 2   introduction to Software Engineering 1Lecture 2   introduction to Software Engineering 1
Lecture 2 introduction to Software Engineering 1IIUI
 
Why We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsWhy We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsRebecca Wirfs-Brock
 

Was ist angesagt? (20)

Slides chapter 16
Slides chapter 16Slides chapter 16
Slides chapter 16
 
Web Engineering
Web EngineeringWeb Engineering
Web Engineering
 
Software engineering : Layered Architecture
Software engineering : Layered ArchitectureSoftware engineering : Layered Architecture
Software engineering : Layered Architecture
 
Web Engineering
Web EngineeringWeb Engineering
Web Engineering
 
Aimtech Software Development Company Presentation
Aimtech Software Development Company PresentationAimtech Software Development Company Presentation
Aimtech Software Development Company Presentation
 
AlphaSimple product pitch
AlphaSimple product pitchAlphaSimple product pitch
AlphaSimple product pitch
 
Software project management Software economics
Software project management Software economicsSoftware project management Software economics
Software project management Software economics
 
No silver bullet summary (paper)
No silver bullet summary (paper)No silver bullet summary (paper)
No silver bullet summary (paper)
 
No silver bullet essence and accidents of software engineering
No silver bullet essence and accidents of software engineeringNo silver bullet essence and accidents of software engineering
No silver bullet essence and accidents of software engineering
 
Improving software economics
Improving software economicsImproving software economics
Improving software economics
 
software
softwaresoftware
software
 
Code generation
Code generationCode generation
Code generation
 
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
 
No silver-bullllet-1
No silver-bullllet-1No silver-bullllet-1
No silver-bullllet-1
 
The Role of the Software Architect (short version)
The Role of the Software Architect (short version)The Role of the Software Architect (short version)
The Role of the Software Architect (short version)
 
No silver bullet
No silver bulletNo silver bullet
No silver bullet
 
Building digital capabilities
Building digital capabilities   Building digital capabilities
Building digital capabilities
 
Improving software economics - Top 10 principles of achieving agility at scale
Improving software economics - Top 10 principles of achieving agility at scaleImproving software economics - Top 10 principles of achieving agility at scale
Improving software economics - Top 10 principles of achieving agility at scale
 
Lecture 2 introduction to Software Engineering 1
Lecture 2   introduction to Software Engineering 1Lecture 2   introduction to Software Engineering 1
Lecture 2 introduction to Software Engineering 1
 
Why We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsWhy We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile Projects
 

Ähnlich wie Modern software architect post the agile wave

Software Project management
Software Project managementSoftware Project management
Software Project managementsameer farooq
 
Software Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsSoftware Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsNishu Rastogi
 
Introduction to DevSecOps. An intuitiv approach
Introduction to DevSecOps. An intuitiv approachIntroduction to DevSecOps. An intuitiv approach
Introduction to DevSecOps. An intuitiv approachFrancisXavierInyanga
 
Initiating and Sustaining Design Systems for the Enterprise
Initiating and Sustaining Design Systems for the EnterpriseInitiating and Sustaining Design Systems for the Enterprise
Initiating and Sustaining Design Systems for the Enterpriseuxpin
 
UNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPTUNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPTmalathijanapati1
 
Software System Engineering - Chapter 15
Software System Engineering - Chapter 15Software System Engineering - Chapter 15
Software System Engineering - Chapter 15Fadhil Ismail
 
Lect5 improving software economics
Lect5 improving software economicsLect5 improving software economics
Lect5 improving software economicsmeena466141
 
Approaches for Distributed Agile
Approaches for Distributed AgileApproaches for Distributed Agile
Approaches for Distributed AgileBrad Kaufman
 
Chapter1 Advanced Software Engineering overview
Chapter1 Advanced Software Engineering overviewChapter1 Advanced Software Engineering overview
Chapter1 Advanced Software Engineering overviewBule Hora University
 
Lecture 3 software_engineering
Lecture 3 software_engineeringLecture 3 software_engineering
Lecture 3 software_engineeringmoduledesign
 
Innovate 2013 Design on a Diet - session 2131
Innovate 2013 Design on a Diet - session 2131Innovate 2013 Design on a Diet - session 2131
Innovate 2013 Design on a Diet - session 2131Daniel Leroux
 
Bridging the Gap: from Data Science to Production
Bridging the Gap: from Data Science to ProductionBridging the Gap: from Data Science to Production
Bridging the Gap: from Data Science to ProductionFlorian Wilhelm
 

Ähnlich wie Modern software architect post the agile wave (20)

Software Project management
Software Project managementSoftware Project management
Software Project management
 
Lect7
Lect7Lect7
Lect7
 
Lect7
Lect7Lect7
Lect7
 
CHAPTER12.ppt
CHAPTER12.pptCHAPTER12.ppt
CHAPTER12.ppt
 
Software Development
Software DevelopmentSoftware Development
Software Development
 
A Software Engineer
A Software EngineerA Software Engineer
A Software Engineer
 
Software Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsSoftware Engineering- Crisis and Process Models
Software Engineering- Crisis and Process Models
 
intro to DevOps
intro to DevOpsintro to DevOps
intro to DevOps
 
Introduction to DevSecOps. An intuitiv approach
Introduction to DevSecOps. An intuitiv approachIntroduction to DevSecOps. An intuitiv approach
Introduction to DevSecOps. An intuitiv approach
 
RRC RUP
RRC RUPRRC RUP
RRC RUP
 
Initiating and Sustaining Design Systems for the Enterprise
Initiating and Sustaining Design Systems for the EnterpriseInitiating and Sustaining Design Systems for the Enterprise
Initiating and Sustaining Design Systems for the Enterprise
 
UNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPTUNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPT
 
Software System Engineering - Chapter 15
Software System Engineering - Chapter 15Software System Engineering - Chapter 15
Software System Engineering - Chapter 15
 
Lect5 improving software economics
Lect5 improving software economicsLect5 improving software economics
Lect5 improving software economics
 
Approaches for Distributed Agile
Approaches for Distributed AgileApproaches for Distributed Agile
Approaches for Distributed Agile
 
Chapter1 Advanced Software Engineering overview
Chapter1 Advanced Software Engineering overviewChapter1 Advanced Software Engineering overview
Chapter1 Advanced Software Engineering overview
 
Lecture 3 software_engineering
Lecture 3 software_engineeringLecture 3 software_engineering
Lecture 3 software_engineering
 
Innovate 2013 Design on a Diet - session 2131
Innovate 2013 Design on a Diet - session 2131Innovate 2013 Design on a Diet - session 2131
Innovate 2013 Design on a Diet - session 2131
 
Bridging the Gap: from Data Science to Production
Bridging the Gap: from Data Science to ProductionBridging the Gap: from Data Science to Production
Bridging the Gap: from Data Science to Production
 
Cnpm bkdn
Cnpm bkdnCnpm bkdn
Cnpm bkdn
 

Kürzlich hochgeladen

JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIIvo Andreev
 
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.Sharon Liu
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Jaydeep Chhasatia
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntelliSource Technologies
 
Streamlining Your Application Builds with Cloud Native Buildpacks
Streamlining Your Application Builds  with Cloud Native BuildpacksStreamlining Your Application Builds  with Cloud Native Buildpacks
Streamlining Your Application Builds with Cloud Native BuildpacksVish Abrams
 
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageSales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageDista
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...OnePlan Solutions
 
Enterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze IncEnterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze Incrobinwilliams8624
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfBrain Inventory
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyRaymond Okyere-Forson
 
Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesSoftwareMill
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfTobias Schneck
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?AmeliaSmith90
 
Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxJoão Esperancinha
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorShane Coughlan
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdfMeon Technology
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmonyelliciumsolutionspun
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilVICTOR MAESTRE RAMIREZ
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionsNirav Modi
 

Kürzlich hochgeladen (20)

JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AI
 
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptx
 
Streamlining Your Application Builds with Cloud Native Buildpacks
Streamlining Your Application Builds  with Cloud Native BuildpacksStreamlining Your Application Builds  with Cloud Native Buildpacks
Streamlining Your Application Builds with Cloud Native Buildpacks
 
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageSales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
 
Enterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze IncEnterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze Inc
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdf
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human Beauty
 
Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retries
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?
 
Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptx
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS Calculator
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdf
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-Council
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in Trivandrum
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspections
 

Modern software architect post the agile wave

  • 1. The modern architect “A Pragmatic View from the Trenches” - Niels Bech Nielsen Pragmatic Engineer
  • 2. Services Liv og Pension Digital Selvbetjening Professional Service Projekter Application Management Arkitektur Sikkerhed Open Source
  • 3. 3 Disclaimer • These slides do not tell the story, they are a natural supplement to a vivid regurgitation, that is my real presentation • Read them at will, but expect the real story to be better • Contact me, if you really want the truth if you CAN handle the truth
  • 4. 4 One definition • ”Software Architect is a computer manager who makes high-level design choices and dictates technical standards, including software coding standards, tools and platforms”
  • 5. 5 One definition • ”Software Architect is a computer manager who makes high-level design choices and dictates technical standards, including software coding standards, tools and platforms”
  • 6. 6 Main Responsibility • Limiting choices available during development by Choosing a standard way of development Creating, defining or choosing a framework for the application • Recognizing potential reuse by Observe and understand the broader system environment Creating component design Having knowledge of other applications in the organisation • Subdivide a complex application into manageable entities Grasp the functionality of each component within the application Understand the component interactions and dependencies • Communicate these concepts to developers
  • 8. 8 Tiered architects Strategic Thinking System Interactions Communication Design Enterprise Architect Across Project Highly Abstracted Across Organisation Minimal, High Level Solution Architect Focused on Solution Very Detailed Multiple Teams Detailed Application Architect Component Re- use, Maintainability Single Application Single Project Very Detailed
  • 9. 9 The Dictating Ivory Tower Enterprise Architect Solution Architect Application Architect Developer Developer Application Architect Solution Architect Application Architect Application Architect Developer Developer UML Design ManualReq spec TCO ROI EJB MOM ESB Business Intelligence
  • 10. 10 Agile That is, while there is value in the items on the right, we value the items on the left more We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have to come to value
  • 11. 11 Agile Up-front design UML/BML Organisation ROI/TCO Iterative Real Options Retrospectives Craftmanship We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have to come to value That is, while there is value in the items on the right, we value the items on the left more
  • 13. 13 Agile Iterations Options/Plans ExecutionValidation Reflection ”Tends to be focussed on delivering functionality rather than looking after their architecture” Project Manager ?
  • 14. 14 Irrespectively of scale • Cross-cutting concerns such as logging and exception handling • Security; including authentication, authorisation and confidentiality of sensitive data • Performance, scalability, availability and other quality attributes • Audit and other regulatory requirements • Real-world constraints of the environment • Interoperability/integration with other software systems • Operational, support and maintenance requirements • Consistency of structure and approach to solving problems • Implementing features across the codebase • Evaluating that the foundations you’re building will allow you to deliver what you set out to deliver
  • 16. 16 Time, Leading to..? • Software Entropy receives no focus as a system is modified, its disorder, or entropy, always increases. This is known as software entropy When a program is modified, its complexity will increase, provided that one does not actively work against this. • Technical Debt increases a neologistic metaphor referring to the eventual consequences of poor software architecture and software development within a codebase. Technical Debt will increase until eventually only rewrite is possible • Tribal Knowledge is not Internalized Tribal Knowledge or Know-How is the collective wisdom of the organization. It is the sum of all the knowledge and capabilities of all the people. Knowledge must be transferred or else behaviour is duplicated or forgotten • Who is around the agile project to identify reuse and manage complexity?
  • 17. 17 - Pause, Paul - Ja, pause Paul, bare 2 minutter
  • 18. 18 What IF • ”Software Architect is a computer manager who makes high-level design choices and dictates technical standards, including software coding standards, tools and platforms” • ”Software Architect is a techo polymath* who offers high-level design choices and and facilitates best technical practises, including software coding standards, tools and platforms” *) A polymath is a person whose expertise spans a significant number of different subject areas
  • 19. 19 Main Responsibilities • Technical Leadership of the product Set the standards for development Provide high-level design practises Ensure best practise and communicate these Minimize software entropy and increase product quality Ensure that the architecture is sufficiently documented • Enterprise collaborator and networker Identify and support re-use Collaborate with enterprise architects to incorporate cross- cutting concerns
  • 21. 22 Up-Front Project Planning Structure Understand the significant structural elements and how they fit together based on the architectural drivers Design and Decomposition down to containers and components Risk Identify and mitigate the highest priority risk Risk-storming and concrete experiments Vision Create and communicate a vision for the team to work with Context, container and component diagrams Just enough up front design to create firm foundations for the software product and its delivery
  • 22. 24 In the face of Continuous Delivery • Set the technology stack • Control the build process • Be responsible for deployment • May be handled by the Build Engineer
  • 23. 25 Shifting the focus • Focus for an application architect in the presence of working software must be to facilitate the team to make the best decisions and help provide the best possible platform for further extension
  • 24. 26 Setting the standards versus templating Examplification An architect must often forefront the development and provide an initial implementation of the framework in which the software will be developed
  • 25. 27 Setting the standards versus templating Copy and Paste However, the architect should be aware that not everybody can see the aesthetics and evolve from there.
  • 27. 29 Problem Solving in your Team Stack Overflow Google Architect Smart Guy
  • 28. 30 Stack Overflow I need to send multiple requests to many different web services and receive the results. The problem is that, if I send the requests one by one it takes so long as I need to send and process all individually. I am wondering how I can send all the requests at once and receive the results.
  • 29. 31 Top 3 Ludicrous Answers • It has got various option to develop this: JMS : quality of service and management, e.g. redelivery attempt, dead message queue, load management, scalability, clustering, monitoring, etc. Simply using the Observer pattern for this. For more details OODesign and How to solve produce and consumer follow this Kodelog • Looking at the problem, you need to integrate your application with 10+ different webservices. While making all the calls asynchronous. This can be done easily with Apache Camel. • You can ask your jax-ws implementation to generate asynchronous bindings for the web service.
  • 30. 32 Availability • A software architect must have enough time and interest to answer all questions from teams and individuals • A software architect must facilitate learning and mentoring • A software architect must communicate shared models and shared visions • By having high developer interaction the software architect can Identify re-use and componentization Increase awareness of cross-cutting concerns
  • 31. 33 Quality Assurance • Code Review is a systematic examination of computer source code. It is intended to find and fix mistakes overlooked in the initial development phase improving both the overall quality of software and the developers’ skills. • Automatic as well as manual intervention Automatic testing Automatic software analysis Peer review
  • 32. 34 Automatic Testing • Accepted curse of unit testing Documentation Regression Works best on loose coupled entities • Focus on Integration testing End to end scenario support Ensure that Input leads to Output Helped by virtualization and continuous deployments Watch out for maintenance costs
  • 33. 35 Automatic Software Verification • Perform automatic analysis of source code and binaries Tools such as PMD, Checkstyle, Findbugs, jdepend, classycle, Emma, Cobertura, Pathfinder, ThreadSafe, Macker, clirr, Tattletale (for Java development) Or collective in reporting systems such as SonarQube, QALab or Xradar • Important to apply qualified analysis on top of the result
  • 34. 36 Peer Review • Formal or informal collaborate effort of cross- examination of source code • Review improve quality by Rejecting or improving commits Committers and reviewers learn from each other Motivation to do boring tasks • But can also improve overall morale and team coherence • Important to keep an open culture and avoid blame game For any software team not already doing so, the single most effective thing It can do to improve product quality is to introduce a code review process
  • 35. 37 The Code doesn’t Tell the Whole Story • Code may hint at (Functionality) Programming language Architectural tiers Naming standards Patterns and idioms • But even those hints may be misinterpreted • Code may not reveal Why the technologies were chosen The overall structure of the system Whether any common patterns or principles are used How and where to add new functionality How security, stability, scalability, etc is achieved
  • 43. 45 Documenting Architecture • Documentation is not hard • Briefly outline technologies and choices Keep the stories short and to the point Create simplified diagrams • Keep it with the source code under revision control
  • 44. 46 Example 1 - AsciiDoc • Extremely simple markup, integrates with builds <profile> <!-- ========================================================================= --> <!-- Include a documentation profile if the project have src/main/asciidoc --> <!-- Adds a process-asciidoc goal to the generate-resources phase --> <!-- ========================================================================= --> <id>fdc-documentation-profile</id> <activation> <file><exists>${basedir}/src/main/asciidoc</exists> </file> </activation> <build> <plugins> <plugin> <groupId>org.asciidoctor</groupId> <artifactId>asciidoctor-maven-plugin</artifactId> <configuration> <backend>html</backend> <outputDirectory>${project.build.directory}/docs</outputDirectory> <sourceHighlighter>coderay</sourceHighlighter> </configuration> </plugin> </plugins> </build> </profile> Ex
  • 45. 47 Example 2 - gmaven • Generate lists from source code scanning <plugin> <groupId>org.codehaus.gmaven</groupId> <artifactId>gmaven-plugin</artifactId> <version>1.5</version> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>execute</goal> </goals> <configuration> <source> src/main/gscripts/services.groovy </source> </configuration> </execution> </executions> <dependencies> <dependency> <groupId>com.thoughtworks.qdox</groupId> <artifactId>qdox</artifactId> <version>1.12.1</version> </dependency> </dependencies> </plugin> def dir = new File(project.basedir.parent, "gps_persistence/src/main/java") def builder = new com.thoughtworks.qdox.JavaDocBuilder() builder.addSourceTree(dir) def services = builder.classes.findAll { it.annotations.find { it.type.value == "org.springframework.stereotype.Service" } } def servicelist = new File(project.build.directory, "service.ad") servicelist.withPrintWriter { pw -> services.each { pw.println "+${it.name}+” if (it.comment) pw.println "${it.comment}” pw.println '[cols="2", options="header"1]’ pw.println '|===’ pw.println '|Method’ pw.println '|Description’ it.methods.each { if (it.public) { pw.println "|${it.name}” pw.println "|${it.comment?:''}” } } pw.println '|===’ } }
  • 46. 48 Example 3 - Violet • Simple tools for structural diagrams
  • 47. 49 Are you responsive? • All changes to a software product must be reversible Deployments fail for many reasons outwith control, making this a real risk in any software project However the risk is easy to avert by proper rollback mechanisms • Projects are no longer static, and must be palpable by engineering staff and newcomers Especially when projects are signed off • Ask yourself these questions How long time does it take to check-out the software, circumvent a simple problem and re-release your product to production environment? How long time does it take to integrate a new developer with a workable developer environment?
  • 48. 50 In total • Always start from an enterprise foundation • Engage in Just Enough Up-Front Design • Set the standards and the builds • Evolve the documentation • Master Code Reviews • Be the go-to guy • Be responsible for the product artefact
  • 49. 51 Q (+A?) I left the murky, bedraggled streets of home to venture on a Journey for a thousand miles and more. I had a vision and a purpose and everything around me sprang to life In a newfound thrill of excitement. Arriving at my final destination I saw wonders beyond compare and such Joy and such life that everything fell into place and harmony. How can this be of wonder, you ask, when I reveal the final destination As the origins of my journey. But alas, everything old can be born again From a new perspective

Hinweis der Redaktion

  1. Hvordan forholder en sådan kommandostruktur sig til matrixorganisation
  2. Agile practices of refactoring, unit-testing and continuous deployment
  3. Scrum master er en sekretærstilling som går på omgang. Der står ikke team captain på trøjen Spørg snehvides stedmor hvad et spejl kan bruges til.
  4. Hvem ejer cross-cutting concerns (i projektet, på tværs af aprojekter)
  5. Neologistisk = new to-be common term… What’s important is..
  6. A polymath is a person whose expertise spans a significant number of different subject areas
  7. Overordnet IT strategi er vigtig for drift og vedligeholdelse, mens forretningskrav kan være af højere prioritet
  8. En arkitekt, som ikke er en go-to guy er ikke god nok
  9. Manden bad ikke om asynkron kommunikation, men parallel over sekventielt
  10. Classycle is a nice little utility for checking your internal Java program architecture. It can find cycles and can also check conformance with an architecture definition. Java Pathfinder (JPF) is a system to verify executable Java bytecode programs Its primary application has been Model checking of concurrent programs, to find defects such as data races and deadlocks. Macker is a build-time architectural rule checking utility Clirr is a tool that checks Java libraries for binary and source compatibility with older releases. Tattletale is a tool that can help you get an overview of the project you are working on or a product that you depend on
  11. Raise your hand when you recognize the place, and add the most precise label to it.
  12. Do or do not, there is no try.