SlideShare a Scribd company logo
1 of 45
Download to read offline
The	
  modern	
  architect	
  
A	
  Pragmatic	
  View	
  from	
  the	
  Trenches	
  
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”	
  
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”	
  
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	
  
Enterprise	
  Architectural	
  
Growth	
  
Startup/
Small-­‐cap	
  	
  
Mid-­‐cap	
  	
  
Enterprise	
  
Tiered	
  architects	
  
Strategic	
  
Thinking	
  
System	
  
Interactions	
   Communication	
   Design	
  
Enterprise	
  
Erchitect	
  
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	
  
The	
  Dictating	
  Ivory	
  
Tower	
  
Enterprise	
  
Architect	
  
Solution	
  
Architect	
  
Application	
  
Architect	
  
Developer	
   Developer	
  
Application	
  
Architect	
  
Solution	
  
Architect	
  
Application	
  
Architect	
  
Application	
  
Architect	
  
Developer	
   Developer	
  
UML	
  
Design	
  
Manual	
  Req	
  
spec	
  
TCO	
  
ROI	
  
EJB	
  
MOM	
  
ESB	
  
Business	
  
Intelligence	
  
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	
  
Agile	
  
That	
  is,	
  while	
  there	
  is	
  value	
  in	
  the	
  items	
  on	
  the	
  
right,	
  we	
  value	
  the	
  items	
  on	
  the	
  left	
  more	
  
Up-­‐front	
  design	
  
UML/BML	
  
Organisation	
  
ROI/TCO	
  
Iterative	
  
Real	
  Options	
  
Retrospectives	
  
Craftmanship	
  
Enterprise	
  Agility	
  
Adoption	
  
Startup/
Small-­‐cap	
  
Mid-­‐cap	
  
Enterprise	
  
Agile	
  Iterations	
  
Options/
Plans	
  
Execution	
  Validation	
  
Reflection	
  
”Tends	
  to	
  be	
  focussed	
  on	
  delivering	
  functionality	
  rather	
  
	
  than	
  looking	
  after	
  their	
  architecture”	
  
Project	
  
Manager	
  
?	
  
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	
  
Agile	
  Architecture	
  
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?	
  
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”	
  
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	
  
Convergence	
  
BUSINESS	
  =	
  IT	
  
Project	
  
Manager	
  
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	
  
SÅDAN!	
  
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	
  
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	
  
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	
  
Problem	
  Solving	
  in	
  your	
  
Team	
  
Stack	
  
Overflow	
  
Google	
  
Architect	
  
Smart	
  Guy	
  
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.	
  
	
  
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.	
  
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	
  
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	
  
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	
  
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	
  
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	
  
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	
  
Recognize	
  this	
  place?	
  
Recognize	
  this	
  place?	
  
Recognize	
  this	
  place?	
  
Recognize	
  this	
  place?	
  
Recognize	
  this	
  place?	
  
Recognize	
  this	
  place?	
  
Recognize	
  this	
  place?	
  
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	
  
	
  
	
  
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	
  
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	
  '|===’	
  
	
  	
  	
  	
  	
  }	
  
	
  }	
  
Example	
  3	
  -­‐	
  Violet	
  
!   Simple	
  tools	
  for	
  structural	
  diagrams	
  
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?	
  
In	
  total	
  
!   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	
  
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	
  
	
  

More Related Content

What's hot

Chapter 15 software product metrics
Chapter 15 software product metricsChapter 15 software product metrics
Chapter 15 software product metricsSHREEHARI WADAWADAGI
 
SE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design PatternsSE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design PatternsAmr E. Mohamed
 
Software Requirements
Software RequirementsSoftware Requirements
Software RequirementsNethan Shaik
 
Software Designing - Software Engineering
Software Designing - Software EngineeringSoftware Designing - Software Engineering
Software Designing - Software EngineeringPurvik Rana
 
Software Coding- Software Coding
Software Coding- Software CodingSoftware Coding- Software Coding
Software Coding- Software CodingNikhil Pandit
 
Software Design and Modularity
Software Design and ModularitySoftware Design and Modularity
Software Design and ModularityDanyal Ahmad
 
Ch01 introducing operating systems
Ch01 introducing operating systemsCh01 introducing operating systems
Ch01 introducing operating systemsJacob Cadeliña
 
Software Architecture and Design Introduction
Software Architecture and Design IntroductionSoftware Architecture and Design Introduction
Software Architecture and Design IntroductionUsman Khan
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and DesignRa'Fat Al-Msie'deen
 
Human Computer Interaction Chapter 3 HCI in the Software Process and Design ...
Human Computer Interaction Chapter 3 HCI in the Software Process and  Design ...Human Computer Interaction Chapter 3 HCI in the Software Process and  Design ...
Human Computer Interaction Chapter 3 HCI in the Software Process and Design ...VijiPriya Jeyamani
 
Configuration Management
Configuration ManagementConfiguration Management
Configuration ManagementSaqib Raza
 
Software engineering socio-technical systems
Software engineering   socio-technical systemsSoftware engineering   socio-technical systems
Software engineering socio-technical systemsDr. Loganathan R
 
Systems Analysis And Design 2
Systems Analysis And Design 2Systems Analysis And Design 2
Systems Analysis And Design 2MISY
 
Design process interaction design basics
Design process interaction design basicsDesign process interaction design basics
Design process interaction design basicsPreeti Mishra
 
User interfaces for mobile applications
User interfaces for mobile applicationsUser interfaces for mobile applications
User interfaces for mobile applicationsK Senthil Kumar
 
Lead Allocation System's Attribute Driven Design (ADD)
Lead Allocation System's Attribute Driven Design (ADD)Lead Allocation System's Attribute Driven Design (ADD)
Lead Allocation System's Attribute Driven Design (ADD)Amin Bandeali
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality AssuranceSiddhesh Palkar
 

What's hot (20)

Chapter 15 software product metrics
Chapter 15 software product metricsChapter 15 software product metrics
Chapter 15 software product metrics
 
SE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design PatternsSE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design Patterns
 
Software Requirements
Software RequirementsSoftware Requirements
Software Requirements
 
Software Designing - Software Engineering
Software Designing - Software EngineeringSoftware Designing - Software Engineering
Software Designing - Software Engineering
 
Software Coding- Software Coding
Software Coding- Software CodingSoftware Coding- Software Coding
Software Coding- Software Coding
 
Software Design and Modularity
Software Design and ModularitySoftware Design and Modularity
Software Design and Modularity
 
Ch01 introducing operating systems
Ch01 introducing operating systemsCh01 introducing operating systems
Ch01 introducing operating systems
 
Software development process models
Software development process modelsSoftware development process models
Software development process models
 
Software Architecture and Design Introduction
Software Architecture and Design IntroductionSoftware Architecture and Design Introduction
Software Architecture and Design Introduction
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and Design
 
Human Computer Interaction Chapter 3 HCI in the Software Process and Design ...
Human Computer Interaction Chapter 3 HCI in the Software Process and  Design ...Human Computer Interaction Chapter 3 HCI in the Software Process and  Design ...
Human Computer Interaction Chapter 3 HCI in the Software Process and Design ...
 
Configuration Management
Configuration ManagementConfiguration Management
Configuration Management
 
Software engineering socio-technical systems
Software engineering   socio-technical systemsSoftware engineering   socio-technical systems
Software engineering socio-technical systems
 
Systems Analysis And Design 2
Systems Analysis And Design 2Systems Analysis And Design 2
Systems Analysis And Design 2
 
Design process interaction design basics
Design process interaction design basicsDesign process interaction design basics
Design process interaction design basics
 
User interfaces for mobile applications
User interfaces for mobile applicationsUser interfaces for mobile applications
User interfaces for mobile applications
 
Lead Allocation System's Attribute Driven Design (ADD)
Lead Allocation System's Attribute Driven Design (ADD)Lead Allocation System's Attribute Driven Design (ADD)
Lead Allocation System's Attribute Driven Design (ADD)
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 
Component level design
Component   level designComponent   level design
Component level design
 
Chap03
Chap03Chap03
Chap03
 

Viewers also liked

Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and MobileModern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and MobileDan Mohl
 
Software Architecture Patterns
Software Architecture PatternsSoftware Architecture Patterns
Software Architecture PatternsAssaf Gannon
 
Modern Software Architecture Styles and Patterns
Modern Software Architecture Styles and PatternsModern Software Architecture Styles and Patterns
Modern Software Architecture Styles and PatternsGanesh Samarthyam
 
05 architectural styles
05 architectural styles05 architectural styles
05 architectural stylesMajong DevJfu
 
A Software Architect's View On Diagramming
A Software Architect's View On DiagrammingA Software Architect's View On Diagramming
A Software Architect's View On Diagrammingmeghantaylor
 
Kiến trúc phần mềm
Kiến trúc phần mềmKiến trúc phần mềm
Kiến trúc phần mềmNguyen Tran
 
Django Weekend talk "Infrastructure of modern web applications"
Django Weekend talk "Infrastructure of modern web applications"Django Weekend talk "Infrastructure of modern web applications"
Django Weekend talk "Infrastructure of modern web applications"Sergey Kopylov
 
Leverage Hibernate and Spring Features Together
Leverage Hibernate and Spring Features TogetherLeverage Hibernate and Spring Features Together
Leverage Hibernate and Spring Features TogetherEdureka!
 
Pjok bs sem1_sma kelas xi kurikulum 2013_[blogerkupang.com]
Pjok bs sem1_sma kelas xi kurikulum 2013_[blogerkupang.com]Pjok bs sem1_sma kelas xi kurikulum 2013_[blogerkupang.com]
Pjok bs sem1_sma kelas xi kurikulum 2013_[blogerkupang.com]Randy Ikas
 
Spotify services - Leetspeak 2014
Spotify services - Leetspeak 2014Spotify services - Leetspeak 2014
Spotify services - Leetspeak 2014Niklas Gustavsson
 
Descending from the architect's ivory tower
Descending from the architect's ivory towerDescending from the architect's ivory tower
Descending from the architect's ivory towerValtech UK
 
INTRODUCTION TO SOFTWARE ARCHITECTURE-TRAINING WORKSHOP
INTRODUCTION TO SOFTWARE ARCHITECTURE-TRAINING WORKSHOPINTRODUCTION TO SOFTWARE ARCHITECTURE-TRAINING WORKSHOP
INTRODUCTION TO SOFTWARE ARCHITECTURE-TRAINING WORKSHOPAmit Midha
 
Introduction to Software Architecture
Introduction to Software ArchitectureIntroduction to Software Architecture
Introduction to Software ArchitectureYuriy Guts
 
Pendidikan jasmani, olahraga, dan kesehatan (buku siswa)
Pendidikan jasmani, olahraga, dan kesehatan (buku siswa) Pendidikan jasmani, olahraga, dan kesehatan (buku siswa)
Pendidikan jasmani, olahraga, dan kesehatan (buku siswa) Indah Rohmatullah
 
Introduction to NserviceBus
Introduction to NserviceBusIntroduction to NserviceBus
Introduction to NserviceBusMauro Servienti
 
Technical Architect, Software Architect job in London, see @niruban_abrs
Technical Architect, Software Architect job in London, see @niruban_abrsTechnical Architect, Software Architect job in London, see @niruban_abrs
Technical Architect, Software Architect job in London, see @niruban_abrsMark Long
 

Viewers also liked (20)

Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and MobileModern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile
 
Software Architecture Patterns
Software Architecture PatternsSoftware Architecture Patterns
Software Architecture Patterns
 
Modern Software Architecture Styles and Patterns
Modern Software Architecture Styles and PatternsModern Software Architecture Styles and Patterns
Modern Software Architecture Styles and Patterns
 
05 architectural styles
05 architectural styles05 architectural styles
05 architectural styles
 
A Software Architect's View On Diagramming
A Software Architect's View On DiagrammingA Software Architect's View On Diagramming
A Software Architect's View On Diagramming
 
Kiến trúc phần mềm
Kiến trúc phần mềmKiến trúc phần mềm
Kiến trúc phần mềm
 
Django Weekend talk "Infrastructure of modern web applications"
Django Weekend talk "Infrastructure of modern web applications"Django Weekend talk "Infrastructure of modern web applications"
Django Weekend talk "Infrastructure of modern web applications"
 
Leverage Hibernate and Spring Features Together
Leverage Hibernate and Spring Features TogetherLeverage Hibernate and Spring Features Together
Leverage Hibernate and Spring Features Together
 
Pjok bs sem1_sma kelas xi kurikulum 2013_[blogerkupang.com]
Pjok bs sem1_sma kelas xi kurikulum 2013_[blogerkupang.com]Pjok bs sem1_sma kelas xi kurikulum 2013_[blogerkupang.com]
Pjok bs sem1_sma kelas xi kurikulum 2013_[blogerkupang.com]
 
Spotify services (SDC 2013)
Spotify services (SDC 2013)Spotify services (SDC 2013)
Spotify services (SDC 2013)
 
Oredev 2009 JAX-RS
Oredev 2009 JAX-RSOredev 2009 JAX-RS
Oredev 2009 JAX-RS
 
Spotify services - Leetspeak 2014
Spotify services - Leetspeak 2014Spotify services - Leetspeak 2014
Spotify services - Leetspeak 2014
 
REST made simple with Java
REST made simple with JavaREST made simple with Java
REST made simple with Java
 
Descending from the architect's ivory tower
Descending from the architect's ivory towerDescending from the architect's ivory tower
Descending from the architect's ivory tower
 
INTRODUCTION TO SOFTWARE ARCHITECTURE-TRAINING WORKSHOP
INTRODUCTION TO SOFTWARE ARCHITECTURE-TRAINING WORKSHOPINTRODUCTION TO SOFTWARE ARCHITECTURE-TRAINING WORKSHOP
INTRODUCTION TO SOFTWARE ARCHITECTURE-TRAINING WORKSHOP
 
Usability
UsabilityUsability
Usability
 
Introduction to Software Architecture
Introduction to Software ArchitectureIntroduction to Software Architecture
Introduction to Software Architecture
 
Pendidikan jasmani, olahraga, dan kesehatan (buku siswa)
Pendidikan jasmani, olahraga, dan kesehatan (buku siswa) Pendidikan jasmani, olahraga, dan kesehatan (buku siswa)
Pendidikan jasmani, olahraga, dan kesehatan (buku siswa)
 
Introduction to NserviceBus
Introduction to NserviceBusIntroduction to NserviceBus
Introduction to NserviceBus
 
Technical Architect, Software Architect job in London, see @niruban_abrs
Technical Architect, Software Architect job in London, see @niruban_abrsTechnical Architect, Software Architect job in London, see @niruban_abrs
Technical Architect, Software Architect job in London, see @niruban_abrs
 

Similar to The Modern Software Architect

Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture uploadThe Real Dyl
 
04 designing architectures
04 designing architectures04 designing architectures
04 designing architecturesMajong DevJfu
 
Modern software architect post the agile wave
Modern software architect post the agile waveModern software architect post the agile wave
Modern software architect post the agile waveNiels Bech Nielsen
 
Agile paris 2022 sharing
Agile paris 2022   sharingAgile paris 2022   sharing
Agile paris 2022 sharingJas Chong
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)FarjanaAhmed3
 
Software Architecture: How Much Design?
Software Architecture: How Much Design?Software Architecture: How Much Design?
Software Architecture: How Much Design?Òscar Vilaplana
 
[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLESIvano Malavolta
 
Secrets of going codeless - How to build enterprise apps without coding
Secrets of going codeless - How to build enterprise apps without codingSecrets of going codeless - How to build enterprise apps without coding
Secrets of going codeless - How to build enterprise apps without codingNewton Day Uploads
 
Lect5 improving software economics
Lect5 improving software economicsLect5 improving software economics
Lect5 improving software economicsmeena466141
 
Are You an Accidental or Intentional Architect?
Are You an Accidental or Intentional Architect?Are You an Accidental or Intentional Architect?
Are You an Accidental or Intentional Architect?iasaglobal
 
Roles and Responsibilities of a DevOps Engineer
Roles and Responsibilities of a DevOps EngineerRoles and Responsibilities of a DevOps Engineer
Roles and Responsibilities of a DevOps EngineerZaranTech LLC
 
Webinar - Design Thinking for Platform Engineering
Webinar - Design Thinking for Platform EngineeringWebinar - Design Thinking for Platform Engineering
Webinar - Design Thinking for Platform EngineeringOpenCredo
 
want to contact me login to www.stqa.org
want to contact me login to www.stqa.orgwant to contact me login to www.stqa.org
want to contact me login to www.stqa.orgnazeer pasha
 
Software engineering
Software engineeringSoftware engineering
Software engineeringsweetysweety8
 
Xanadu Company Profile
Xanadu Company ProfileXanadu Company Profile
Xanadu Company Profilearnab74
 

Similar to The Modern Software Architect (20)

Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture upload
 
04 designing architectures
04 designing architectures04 designing architectures
04 designing architectures
 
Modern software architect post the agile wave
Modern software architect post the agile waveModern software architect post the agile wave
Modern software architect post the agile wave
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Agile paris 2022 sharing
Agile paris 2022   sharingAgile paris 2022   sharing
Agile paris 2022 sharing
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
 
Software Architecture: How Much Design?
Software Architecture: How Much Design?Software Architecture: How Much Design?
Software Architecture: How Much Design?
 
Consulting
ConsultingConsulting
Consulting
 
01 the big_idea
01 the big_idea01 the big_idea
01 the big_idea
 
Lecture1422914635
Lecture1422914635Lecture1422914635
Lecture1422914635
 
[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES
 
Secrets of going codeless - How to build enterprise apps without coding
Secrets of going codeless - How to build enterprise apps without codingSecrets of going codeless - How to build enterprise apps without coding
Secrets of going codeless - How to build enterprise apps without coding
 
Lect5 improving software economics
Lect5 improving software economicsLect5 improving software economics
Lect5 improving software economics
 
Are You an Accidental or Intentional Architect?
Are You an Accidental or Intentional Architect?Are You an Accidental or Intentional Architect?
Are You an Accidental or Intentional Architect?
 
Roles and Responsibilities of a DevOps Engineer
Roles and Responsibilities of a DevOps EngineerRoles and Responsibilities of a DevOps Engineer
Roles and Responsibilities of a DevOps Engineer
 
Webinar - Design Thinking for Platform Engineering
Webinar - Design Thinking for Platform EngineeringWebinar - Design Thinking for Platform Engineering
Webinar - Design Thinking for Platform Engineering
 
want to contact me login to www.stqa.org
want to contact me login to www.stqa.orgwant to contact me login to www.stqa.org
want to contact me login to www.stqa.org
 
Chapter1
Chapter1Chapter1
Chapter1
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Xanadu Company Profile
Xanadu Company ProfileXanadu Company Profile
Xanadu Company Profile
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 

Recently uploaded (20)

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 

The Modern Software Architect

  • 1. The  modern  architect   A  Pragmatic  View  from  the  Trenches  
  • 2. 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”  
  • 3. 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”  
  • 4. 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  
  • 5. Enterprise  Architectural   Growth   Startup/ Small-­‐cap     Mid-­‐cap     Enterprise  
  • 6. Tiered  architects   Strategic   Thinking   System   Interactions   Communication   Design   Enterprise   Erchitect   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  
  • 7. The  Dictating  Ivory   Tower   Enterprise   Architect   Solution   Architect   Application   Architect   Developer   Developer   Application   Architect   Solution   Architect   Application   Architect   Application   Architect   Developer   Developer   UML   Design   Manual  Req   spec   TCO   ROI   EJB   MOM   ESB   Business   Intelligence  
  • 8. 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  
  • 9. Agile   That  is,  while  there  is  value  in  the  items  on  the   right,  we  value  the  items  on  the  left  more   Up-­‐front  design   UML/BML   Organisation   ROI/TCO   Iterative   Real  Options   Retrospectives   Craftmanship  
  • 10. Enterprise  Agility   Adoption   Startup/ Small-­‐cap   Mid-­‐cap   Enterprise  
  • 11. Agile  Iterations   Options/ Plans   Execution  Validation   Reflection   ”Tends  to  be  focussed  on  delivering  functionality  rather    than  looking  after  their  architecture”   Project   Manager   ?  
  • 12. 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  
  • 14. 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?  
  • 15. 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”  
  • 16. 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  
  • 17. Convergence   BUSINESS  =  IT   Project   Manager  
  • 18. 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  
  • 20. 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  
  • 21. 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  
  • 22. 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  
  • 23. Problem  Solving  in  your   Team   Stack   Overflow   Google   Architect   Smart  Guy  
  • 24. 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.    
  • 25. 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.  
  • 26. 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  
  • 27. 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  
  • 28. 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  
  • 29. 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  
  • 30. 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  
  • 31. 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  
  • 39. 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      
  • 40. 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  
  • 41. 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  '|===’            }    }  
  • 42. Example  3  -­‐  Violet   !   Simple  tools  for  structural  diagrams  
  • 43. 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?  
  • 44. In  total   !   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  
  • 45. 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