This presentation defines software architecture, describes it's value for an organization producing software, and describes the characteristics of a successful software architect.
Solution Architecture tips & tricks by Roman ShramkovJavaDayUA
In this presentation we will cover:
* What is Solution Architecture and how it differs from other architectures
* What is good and what is bad for SA, tips & tricks from our experience
Scaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference BrisbaneBejoy Jaison
Leaning into diverse experiences from 18 years of large-scale product engineering and ownership, Bejoy highlights several factors across a broad spectrum of areas that contribute to making agile work at scale.
Solution Architecture tips & tricks by Roman ShramkovJavaDayUA
In this presentation we will cover:
* What is Solution Architecture and how it differs from other architectures
* What is good and what is bad for SA, tips & tricks from our experience
Scaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference BrisbaneBejoy Jaison
Leaning into diverse experiences from 18 years of large-scale product engineering and ownership, Bejoy highlights several factors across a broad spectrum of areas that contribute to making agile work at scale.
The Outcome 2021 Conference
Summary of the talk:
- Intro to design systems and what a design system is made of
- How design systems help businesses to become more efficient
- Process of starting out a design system
- Measuring success and maintenance
Industry data indicates that untrained and inexperienced requirements authors commonly inject thirty to fifty major defects per page of text. With many requirements specifications reaching several hundred pages, potentially thousands of defects are injected into the software development process. John Terzakis says training and mentoring of authors by a requirements coach is effective in reducing defect densities by an order of magnitude—when each coach is assigned only a few authors, they are collocated and, most importantly, experienced requirements coaches are available. So what happens if there are dozens of authors spread across multiple geographical sites and there are no requirements coaches at those sites? The Requirements Authors Mentoring Program (RAMP) provides the solution. John shares how a network of site-based requirements apprentices were recruited, trained to be coaches, and then assigned to requirements authors in their geographic region. John provides details on the defect detection and removal training, key success factors, and results from an actual Intel project. Learn how your organization can establish RAMP, which is applicable to both waterfall and agile software development lifecycles.
One of the values of the Agile manifesto is working software over comprehensive documentation. However many agile teams think that now we are Agile we don’t need to document. Come to this session to learn about lightweight documentation and how to strike a sensible balance between working software and documentation. Learn which documents are necessary and which documents you can do without as well. Learn about JIT lightweight alternatives to our tradition documentation set. Leave with specific techniques to evaluate the value of each document along with recommended alternatives.
Hothouse combines rapid prototyping with executive decision making to drive consensus on customer experience design.
Presented at ProductCamp DC Spring 2012 event on May 5.
My talk about DevOps in Knowit Developer Summit 2018 in Oslo. This talk is a condensed version of the DevOps workshop I run for management teams and technical teams to start their journey as an organization towards DevOps. We refer to DASA DevOps Agile Skills Association's definitions of DevOps. The talk includes also Knowit DevOps Maturity Model high level description.
The certification for Foundation Level Extension – Agile Tester is designed for professionals who are working within Agile environments. It is also for professionals who are planning to start implementing Agile methods in the near future, or are working within companies that plan to do so.
The Personal Software Process (PSP) and the Team Software Process (TSP) are process improvement frameworks tailored to produce virtually defect free software and deliver it on time.
The main focus of this speed talk is to state some of the similarities and differences between TSP/PSP and Scrum methodologies as well as some Agile practices. Why was there a need to blend these methods (TSP and Agile)? What were we trying to accomplish, or what was the goal here? The goal was to get the best of the TSP and Agile methods/models so that we could develop high quality products in a predictable and repeatable way to successfully tackle projects that are highly unpredictable, rapidly changing, with unknown final client, among others.
There are a few similarities between both management methods (TSP and SCRUM), as well as some differences. There also seems to be a lot of misunderstandings regarding TSP and this presentation will try to debunk some of them. TSP can be Agile too! – Incremental, iterative and adaptive.
Agile Portugal 2012
23 June 2012
Summary of Accelerate - 2019 State of Devops report by Google Cloud's DORARagavendra Prasath
A detailed 82 pages report is abridged to 5 pages report. Access DORA report here - https://services.google.com/fh/files/misc/state-of-devops-2019.pdf
Inspiration and Courtesy to the authors.
The Outcome 2021 Conference
Summary of the talk:
- Intro to design systems and what a design system is made of
- How design systems help businesses to become more efficient
- Process of starting out a design system
- Measuring success and maintenance
Industry data indicates that untrained and inexperienced requirements authors commonly inject thirty to fifty major defects per page of text. With many requirements specifications reaching several hundred pages, potentially thousands of defects are injected into the software development process. John Terzakis says training and mentoring of authors by a requirements coach is effective in reducing defect densities by an order of magnitude—when each coach is assigned only a few authors, they are collocated and, most importantly, experienced requirements coaches are available. So what happens if there are dozens of authors spread across multiple geographical sites and there are no requirements coaches at those sites? The Requirements Authors Mentoring Program (RAMP) provides the solution. John shares how a network of site-based requirements apprentices were recruited, trained to be coaches, and then assigned to requirements authors in their geographic region. John provides details on the defect detection and removal training, key success factors, and results from an actual Intel project. Learn how your organization can establish RAMP, which is applicable to both waterfall and agile software development lifecycles.
One of the values of the Agile manifesto is working software over comprehensive documentation. However many agile teams think that now we are Agile we don’t need to document. Come to this session to learn about lightweight documentation and how to strike a sensible balance between working software and documentation. Learn which documents are necessary and which documents you can do without as well. Learn about JIT lightweight alternatives to our tradition documentation set. Leave with specific techniques to evaluate the value of each document along with recommended alternatives.
Hothouse combines rapid prototyping with executive decision making to drive consensus on customer experience design.
Presented at ProductCamp DC Spring 2012 event on May 5.
My talk about DevOps in Knowit Developer Summit 2018 in Oslo. This talk is a condensed version of the DevOps workshop I run for management teams and technical teams to start their journey as an organization towards DevOps. We refer to DASA DevOps Agile Skills Association's definitions of DevOps. The talk includes also Knowit DevOps Maturity Model high level description.
The certification for Foundation Level Extension – Agile Tester is designed for professionals who are working within Agile environments. It is also for professionals who are planning to start implementing Agile methods in the near future, or are working within companies that plan to do so.
The Personal Software Process (PSP) and the Team Software Process (TSP) are process improvement frameworks tailored to produce virtually defect free software and deliver it on time.
The main focus of this speed talk is to state some of the similarities and differences between TSP/PSP and Scrum methodologies as well as some Agile practices. Why was there a need to blend these methods (TSP and Agile)? What were we trying to accomplish, or what was the goal here? The goal was to get the best of the TSP and Agile methods/models so that we could develop high quality products in a predictable and repeatable way to successfully tackle projects that are highly unpredictable, rapidly changing, with unknown final client, among others.
There are a few similarities between both management methods (TSP and SCRUM), as well as some differences. There also seems to be a lot of misunderstandings regarding TSP and this presentation will try to debunk some of them. TSP can be Agile too! – Incremental, iterative and adaptive.
Agile Portugal 2012
23 June 2012
Summary of Accelerate - 2019 State of Devops report by Google Cloud's DORARagavendra Prasath
A detailed 82 pages report is abridged to 5 pages report. Access DORA report here - https://services.google.com/fh/files/misc/state-of-devops-2019.pdf
Inspiration and Courtesy to the authors.
Master the art of orchestrating innovative solutions for
Continuous Delivery
Do you wish to be a certified DevOps Architect? Are you keen to learn how to
deploy effective and efficient automated pipelines to deliver high quality
softwares, reduce risk and costs, and enhance business value? Well..
The “DevOps Architect” certification equips IT professionals with a sound
understanding of the DevOps landscape and empowers you to lead the
transformation of the organization’s architecture from traditional waterfall or
agile to DevOps.
Ce
This is take two of the presentation, some things added, some removed, but still the regurgitation is best..
The purpose is to raise your awareness of software architecture in light of modern day agile development. Disciplines to incorporate and reconsider
The collaboration between business and technology while building digital products is still not as close as it should be. This lack of close collaboration and common understanding that product and software design mutually impact each other leads to badly designed systems that can constrain business evolution.
In this talk, Codurance co-founder Sandro presents helpful techniques on how a more collaborative way of working can be achieved, in order to align product and software design.
Link to the video: https://www.youtube.com/watch?v=PGsW9qFb-_M
The video was recorded at SCLConf 2019, an annual conference for software professionals that care about their craft. Learn more about SCLConf at https://sc-london.com/
https://twitter.com/SCLConf
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
This ppt explains about the FAQ's in software engineering and software engineer profession and ethics of software engineer.
Difference between the system engineer and software engineer.
MODULE 1 :
Software Product and Process
Introduction –FAQs About Software Engineering,
Definition Of Software Engineering,
Difference Between Software Engineering And Computer Science,
Difference Between Software Engineering And System Engineering,
Software Process,
Software Process Models,
The Waterfall Model,
Incremental Process Models,
Evolutionary Process Models
Spiral Development, Prototyping,
Component Based Software Engineering ,
The Unified Process, Attributes Of Good Software,
Key Challenges Facing By Software Engineering,
Verification – Validation,
Computer Based System,
Business Process Engineering,
This lecture helps to understand basics software design and especially Architecture Design and its importance. This lecture also describes the goals and importance of architecture design.
Similar to Importance of Software architecture (20)
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
Developing Distributed High-performance Computing Capabilities of an Open Sci...Globus
COVID-19 had an unprecedented impact on scientific collaboration. The pandemic and its broad response from the scientific community has forged new relationships among public health practitioners, mathematical modelers, and scientific computing specialists, while revealing critical gaps in exploiting advanced computing systems to support urgent decision making. Informed by our team’s work in applying high-performance computing in support of public health decision makers during the COVID-19 pandemic, we present how Globus technologies are enabling the development of an open science platform for robust epidemic analysis, with the goal of collaborative, secure, distributed, on-demand, and fast time-to-solution analyses to support public health.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
How to Position Your Globus Data Portal for Success Ten Good PracticesGlobus
Science gateways allow science and engineering communities to access shared data, software, computing services, and instruments. Science gateways have gained a lot of traction in the last twenty years, as evidenced by projects such as the Science Gateways Community Institute (SGCI) and the Center of Excellence on Science Gateways (SGX3) in the US, The Australian Research Data Commons (ARDC) and its platforms in Australia, and the projects around Virtual Research Environments in Europe. A few mature frameworks have evolved with their different strengths and foci and have been taken up by a larger community such as the Globus Data Portal, Hubzero, Tapis, and Galaxy. However, even when gateways are built on successful frameworks, they continue to face the challenges of ongoing maintenance costs and how to meet the ever-expanding needs of the community they serve with enhanced features. It is not uncommon that gateways with compelling use cases are nonetheless unable to get past the prototype phase and become a full production service, or if they do, they don't survive more than a couple of years. While there is no guaranteed pathway to success, it seems likely that for any gateway there is a need for a strong community and/or solid funding streams to create and sustain its success. With over twenty years of examples to draw from, this presentation goes into detail for ten factors common to successful and enduring gateways that effectively serve as best practices for any new or developing gateway.
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
Graspan: A Big Data System for Big Code AnalysisAftab Hussain
We built a disk-based parallel graph system, Graspan, that uses a novel edge-pair centric computation model to compute dynamic transitive closures on very large program graphs.
We implement context-sensitive pointer/alias and dataflow analyses on Graspan. An evaluation of these analyses on large codebases such as Linux shows that their Graspan implementations scale to millions of lines of code and are much simpler than their original implementations.
These analyses were used to augment the existing checkers; these augmented checkers found 132 new NULL pointer bugs and 1308 unnecessary NULL tests in Linux 4.4.0-rc5, PostgreSQL 8.3.9, and Apache httpd 2.2.18.
- Accepted in ASPLOS ‘17, Xi’an, China.
- Featured in the tutorial, Systemized Program Analyses: A Big Data Perspective on Static Analysis Scalability, ASPLOS ‘17.
- Invited for presentation at SoCal PLS ‘16.
- Invited for poster presentation at PLDI SRC ‘16.
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Importance of Software architecture
1. Software Architecture
Presented by Steve EssichPresented by Steve Essich
https://www.linkedin.com/in/sessich/https://www.linkedin.com/in/sessich/
2. Introduction to Software Architecture
Agenda
• VisionVision
• ValueValue
• What is Software Architecture?What is Software Architecture?
• Documenting a Software ArchitectureDocumenting a Software Architecture
• Characteristics of an ArchitectCharacteristics of an Architect
3. Introduction to Software Architecture
Vision
• Maximize the value of the solutions built forMaximize the value of the solutions built for
customerscustomers
Utilize the depth and breadth of the technical portfolio andUtilize the depth and breadth of the technical portfolio and
resource pool.resource pool.
• Distinguish solutions from those ofDistinguish solutions from those of
competitorscompetitors
Explore innovative and novel approachesExplore innovative and novel approaches
• Leverage assets created during projectsLeverage assets created during projects
Repeat success by creating reference architecturesRepeat success by creating reference architectures
4. Introduction to Software Architecture
Vision(continued)
• Encourage cross-selling / up-sellingEncourage cross-selling / up-selling
Harness the imagination and experience of the technicalHarness the imagination and experience of the technical
staff by improving communication about opportunitiesstaff by improving communication about opportunities
across the firm’s technical communityacross the firm’s technical community
• Promote long-term relationships withPromote long-term relationships with
customerscustomers
Provide a foundation for the future with the delivery of aProvide a foundation for the future with the delivery of a
well architected solution.well architected solution.
• Improve communication with stakeholdersImprove communication with stakeholders
regarding technical issues and decisionsregarding technical issues and decisions
Enable debate, therefore improving overall qualityEnable debate, therefore improving overall quality
5. Introduction to Software Architecture
Vision(continued)
• Move toward a solution focus from aMove toward a solution focus from a
technology biastechnology bias
Look at the delivery organization as a toolbox containingLook at the delivery organization as a toolbox containing
diverse and complimentary toolsdiverse and complimentary tools
• Identify technical areas that needIdentify technical areas that need
enhancementenhancement
Increase customer value and enhance our deliveryIncrease customer value and enhance our delivery
capabilitiescapabilities
• Harness and focus developer creativity byHarness and focus developer creativity by
providing necessary constraintsproviding necessary constraints
Define best practices, standards and guidelinesDefine best practices, standards and guidelines
• Improve the firm’s ability to scale up byImprove the firm’s ability to scale up by
creating an architecture practicecreating an architecture practice
6. Introduction to Software Architecture
• VisionVision
• ValueValue
• What is Software Architecture?What is Software Architecture?
• Documenting a Software ArchitectureDocumenting a Software Architecture
• Characteristics of an ArchitectCharacteristics of an Architect
Agenda
7. Introduction to Software Architecture
Value
• Reduce operating costs for development andReduce operating costs for development and
supportsupport
Lower the number of latent defects / LOCLower the number of latent defects / LOC
Reduce the cost of removing defectsReduce the cost of removing defects
Positive impact on costs during warranty periodsPositive impact on costs during warranty periods
• Reduce the customer’s cost of ownership forReduce the customer’s cost of ownership for
productsproducts
Defect repair (outside warranty periods) is expensive.Defect repair (outside warranty periods) is expensive.
Increased customer satisfactionIncreased customer satisfaction
Increased product lifespanIncreased product lifespan
8. Introduction to Software Architecture
Value (continued)
• Enhance customer retention, encourageEnhance customer retention, encourage
extensions to existing productsextensions to existing products
Well architected solutions are easier to extend, therebyWell architected solutions are easier to extend, thereby
extending the product lifespan and the relationship with theextending the product lifespan and the relationship with the
firm.firm.
Building new software and extending existing systems isBuilding new software and extending existing systems is
higher margin work than fixing defects.higher margin work than fixing defects.
• Higher staff productivity & improved retentionHigher staff productivity & improved retention
More efficient use of staffMore efficient use of staff
Reduction in the time spent repairing defectsReduction in the time spent repairing defects
Increased employee satisfactionIncreased employee satisfaction
9. Introduction to Software Architecture
Value (continued)
• Improved estimates and more predictableImproved estimates and more predictable
schedulesschedules
Reduces the risk of project work, especially fixed price projectsReduces the risk of project work, especially fixed price projects
• Create reusable assetsCreate reusable assets
Leverage assets created for one project across other projectsLeverage assets created for one project across other projects
in the verticalin the vertical
10. Introduction to Software Architecture
Agenda
• VisionVision
• ValueValue
• What is Software Architecture?What is Software Architecture?
• Documenting a Software ArchitectureDocumenting a Software Architecture
• Characteristics of an ArchitectCharacteristics of an Architect
11. Introduction to Software Architecture
What is Software Architecture?
• Software architecture is the collection ofSoftware architecture is the collection of
decisions affecting the system’s qualitydecisions affecting the system’s quality
attributes; which have global effects andattributes; which have global effects and
are hardest to change.*are hardest to change.*
* Arnon Rotem-Gal-Oz
• Software architecture providesSoftware architecture provides
the frame within which the designthe frame within which the design
(code) is built.*(code) is built.*
12. Introduction to Software Architecture
What is Software Architecture? (continued)
• Software architecture is the fundamentalSoftware architecture is the fundamental
organization of a system, embodied in itsorganization of a system, embodied in its
components, their relationships to each othercomponents, their relationships to each other
and the environment, and the principlesand the environment, and the principles
governing its design andgoverning its design and
evolution.*evolution.*
* IEEE 1471-2000
13. Introduction to Software Architecture
What is Software Architecture? (continued)
• The software architecture of a program orThe software architecture of a program or
computing system is the structure orcomputing system is the structure or
structures of the system, which comprise thestructures of the system, which comprise the
software elements, the externally visiblesoftware elements, the externally visible
properties of those elements,properties of those elements,
and the relationships betweenand the relationships between
them.them.*
* Software Architecture in Practice
14. Introduction to Software Architecture
What is Software Architecture? (continued)
• Software architecture…Software architecture…
Identifies the technologies that will be usedIdentifies the technologies that will be used
Defines the main components of a system and theirDefines the main components of a system and their
relationships.relationships.
Defines how the components interact with eachDefines how the components interact with each
other, and with the outside world.other, and with the outside world.
Is complex and can’t be described in a one-Is complex and can’t be described in a one-
dimensional fashion.dimensional fashion.
Is driven by the need to satisfy quality factorsIs driven by the need to satisfy quality factors
Constrains the design and the implementation.Constrains the design and the implementation.
• Thereby focusing creativity and innovation.Thereby focusing creativity and innovation.
15. Introduction to Software Architecture
What is Software Architecture? (continued)
• Every system has an architectureEvery system has an architecture
Even if it is accidental.Even if it is accidental.
• Architecture is about making choices…Architecture is about making choices…
Early in the product development lifecycleEarly in the product development lifecycle
That if delayed would be expensive or significantlyThat if delayed would be expensive or significantly
degrade quality.degrade quality.
In response to (conflicting) requirements.In response to (conflicting) requirements.
• Architecture is about strategy, structure andArchitecture is about strategy, structure and
purpose.purpose.
Tends to be abstractTends to be abstract
16. Introduction to Software Architecture
What is Software Architecture? (continued)
• The Architecture is a blueprint for the project!The Architecture is a blueprint for the project!
Team selectionTeam selection
Documentation organizationDocumentation organization
Work breakdown structureWork breakdown structure
Scheduling, planning, budgetingScheduling, planning, budgeting
Unit testing and integrationUnit testing and integration
17. Introduction to Software Architecture
What is Software Architecture?
• All Architecture is design…All Architecture is design…
But not all design is architectureBut not all design is architecture
• Design focuses on…Design focuses on…
The internal structure of componentsThe internal structure of components
The configuration of previously identified tools andThe configuration of previously identified tools and
technologiestechnologies
Algorithms, procedures and data types.Algorithms, procedures and data types.
• Design w/o architecture may produce solutions that…Design w/o architecture may produce solutions that…
Don’t address non-functional requirementsDon’t address non-functional requirements
Incur high-levels of unintentional technical debt.Incur high-levels of unintentional technical debt.
not
19. Introduction to Software Architecture
Rules of Thumb for Architecture
• Created by a single architect or a smallCreated by a single architect or a small
group with an identified leadergroup with an identified leader
• Start with functional and non-functionalStart with functional and non-functional
requirements, along with prioritizedrequirements, along with prioritized
quality factors.quality factors.
• Documented with the needs of allDocumented with the needs of all
stakeholders in mindstakeholders in mind
20. Introduction to Software Architecture
Rules of Thumb for Architecture
(continued)
• Actively reviewed by stakeholdersActively reviewed by stakeholders
• Evaluated for satisfaction ofEvaluated for satisfaction of
requirements and quality factorsrequirements and quality factors
• Suitable for incremental implementationSuitable for incremental implementation
• Decomposed into software componentsDecomposed into software components
that adhere to the modularity principlesthat adhere to the modularity principles
21. Introduction to Software Architecture
Rules of Thumb for Architecture
(continued)
• Isolate dependencies on COTSIsolate dependencies on COTS
Or external systemsOr external systems
• Separate production and consumption ofSeparate production and consumption of
datadata
• Use a small number of interactionUse a small number of interaction
patternspatterns
22. Introduction to Software Architecture
Agenda
• VisionVision
• ValueValue
• What is Software Architecture?What is Software Architecture?
• Documenting a Software ArchitectureDocumenting a Software Architecture
• Characteristics of an ArchitectCharacteristics of an Architect
23. Introduction to Software Architecture
Documenting a Software Architecture
• The perfect architecture is useless unless itThe perfect architecture is useless unless it
is effectively communicated.is effectively communicated.
Appropriate level of detailAppropriate level of detail
Without ambiguityWithout ambiguity
Organized for ease of useOrganized for ease of use
Tailored to the audience and their purposesTailored to the audience and their purposes
• You cannot create a single comprehensive model ofYou cannot create a single comprehensive model of
a reasonably complex software system.a reasonably complex software system.
24. Introduction to Software Architecture
Introduction to Views
• You must partition the documentation into separateYou must partition the documentation into separate
but interrelated views.but interrelated views.
Each view represents one or more structural aspects of anEach view represents one or more structural aspects of an
architecture.architecture.
• Benefits of Views include…Benefits of Views include…
Separation of concernsSeparation of concerns
Communication with stakeholder groupsCommunication with stakeholder groups
Management of complexityManagement of complexity
Improved developer focusImproved developer focus
• Drawbacks of Views include…Drawbacks of Views include…
InconsistencyInconsistency
Selection of the wrong set of viewsSelection of the wrong set of views
View fragmentationView fragmentation
25. Introduction to Software Architecture
View Catalog
• Logical or Functional ViewLogical or Functional View
Decomposes the system into functional elements.Decomposes the system into functional elements.
• Includes the architecturally significant elementsIncludes the architecturally significant elements
• Layers, components.Layers, components.
• Describes each elements’ responsibilitiesDescribes each elements’ responsibilities
Describes the relationships and interactions betweenDescribes the relationships and interactions between
elements.elements.
• Data or Information ViewData or Information View
Represents the data model for the systemRepresents the data model for the system
Relates the data model back to Logical View elementsRelates the data model back to Logical View elements
26. Introduction to Software Architecture
View Catalog (continued)
• Process or Concurrency ViewProcess or Concurrency View
Represents the systems processes, threads, andRepresents the systems processes, threads, and
concurrency control mechanisms.concurrency control mechanisms.
Maps elements of the Logical View to processes andMaps elements of the Logical View to processes and
threads.threads.
• Implementation or Development ViewImplementation or Development View
Represents the organization of the system in terms ofRepresents the organization of the system in terms of
packages for design and implementation.packages for design and implementation.
Identifies standards and guidelines to be used during theIdentifies standards and guidelines to be used during the
design and implementation.design and implementation.
27. Introduction to Software Architecture
View Catalog (continued)
• Deployment ViewDeployment View
Describes the physical environment in which the system willDescribes the physical environment in which the system will
run. (For example:run. (For example: nodes, connections and storage)nodes, connections and storage)
Identifies the technical requirements for each elementIdentifies the technical requirements for each element
Maps Logical View elements across nodes.Maps Logical View elements across nodes.
• Operational ViewOperational View
Describes how the system will be operated, administeredDescribes how the system will be operated, administered
and supported when running in the production environment.and supported when running in the production environment.
Includes information about…Includes information about…
• Installation / upgradesInstallation / upgrades
• Data migrationData migration
• Operational monitoring and controlOperational monitoring and control
• Configuration managementConfiguration management
• Backup and restoreBackup and restore
28. Introduction to Software Architecture
Agenda
• VisionVision
• ValueValue
• What is Software Architecture?What is Software Architecture?
• Documenting a Software ArchitectureDocumenting a Software Architecture
• Characteristics of an ArchitectCharacteristics of an Architect
29. Introduction to Software Architecture
Characteristics of an Architect
• GeneralistGeneralist
Experience with multiple technologies.Experience with multiple technologies.
Appreciation of multiple disciplinesAppreciation of multiple disciplines
Awareness of personal strengths and weaknessesAwareness of personal strengths and weaknesses
• LeaderLeader
Able to make technical decisions after seekingAble to make technical decisions after seeking
meaningful inputmeaningful input
• CommunicatorCommunicator
ListenerListener
Able to effectively communicate with a variety ofAble to effectively communicate with a variety of
audiences, tailoring the message appropriatelyaudiences, tailoring the message appropriately
30. Introduction to Software Architecture
Characteristics of an Architect (continued)
• Delivery focusedDelivery focused
Act as a driving force for the delivery of tangibleAct as a driving force for the delivery of tangible
results throughout the product lifecycle.results throughout the product lifecycle.
• Organize resources and contribute to planningOrganize resources and contribute to planning
Architectural decisions drive…Architectural decisions drive…
• The skill sets required for the project.The skill sets required for the project.
• The identification and sequencing of tasks.The identification and sequencing of tasks.
• Keen interest in the business domainKeen interest in the business domain
The architect is an advocate for the customer andThe architect is an advocate for the customer and
the delivery of a solution.the delivery of a solution.
31. Introduction to Software Architecture
Characteristics of an Architect (continued)
• Understands the importance of the softwareUnderstands the importance of the software
development processdevelopment process
Key participant in the definition of the SDP.Key participant in the definition of the SDP.
• Skilled participant in the elicitation andSkilled participant in the elicitation and
documentation of requirementsdocumentation of requirements
Especially non-functional requirementsEspecially non-functional requirements
• Significant experience in the use of relevantSignificant experience in the use of relevant
technologiestechnologies
At least some of the relevant technologiesAt least some of the relevant technologies
32. Introduction to Software Architecture
Characteristics of an Architect (continued)
• Ability to recognize a good design orAbility to recognize a good design or
implementationimplementation
Or a poor one.Or a poor one.
• MentorMentor
Mentor developers in design and implementationMentor developers in design and implementation
• Aware of organizational politicsAware of organizational politics
33. Introduction to Software Architecture
Mantras for the Architect*
• It DependsIt Depends
Architects make decisionsArchitects make decisions
First the architect must identify the optionsFirst the architect must identify the options
Then the architect must evaluate the optionsThen the architect must evaluate the options
• Requirements Are Lord Over AllRequirements Are Lord Over All
Requirements are what the customer decides theyRequirements are what the customer decides they
want / need.want / need.
Requirements drive the architecture, which drivesRequirements drive the architecture, which drives
the design, which drives the implementationthe design, which drives the implementation
Customers don’t really know what they want / needCustomers don’t really know what they want / need
so requirements change.so requirements change.
* Microsoft .NET: Architecting Applications for the Enterprise
34. Introduction to Software Architecture
Mantras for the Architect (continued)
• Program To An InterfaceProgram To An Interface
Keep the interface and implementation separateKeep the interface and implementation separate
• Keep It Simple But Not SimplisticKeep It Simple But Not Simplistic
Simple and concise is usually equivalent to greatSimple and concise is usually equivalent to great
and well done.and well done.
But simplistic is just as dangerous as tooBut simplistic is just as dangerous as too
complicated.complicated.
Just complicated enough, but no more.Just complicated enough, but no more.
35. Introduction to Software Architecture
Mantras for the Architect (continued)
• Inheritance Is About PolymorphismInheritance Is About Polymorphism
Inheritance enables reuse, but reuse should beInheritance enables reuse, but reuse should be
viewed as a side effect.viewed as a side effect.
Use of inheritance for reuse alone is gratuitousUse of inheritance for reuse alone is gratuitous
• No SQL Outside of the DALNo SQL Outside of the DAL
The use of SQL (or any other similar queryThe use of SQL (or any other similar query
language) outside of the Data Access Layerlanguage) outside of the Data Access Layer
should be avoided at all costs.should be avoided at all costs.
36. Introduction to Software Architecture
Mantras for the Architect (continued)
• Maintainability FirstMaintainability First
If a software system can’t be maintained itIf a software system can’t be maintained it
will probably have a short and miserablewill probably have a short and miserable
existence.existence.
• All User Input Is EvilAll User Input Is Evil
Murphy was a userMurphy was a user
37. Introduction to Software Architecture
Mantras for the Architect (continued)
• Optimize LastOptimize Last
Donald Knuth said premature optimizationDonald Knuth said premature optimization
is the root of all software evil.is the root of all software evil.
Design the system for extendibility andDesign the system for extendibility and
maintainability.maintainability.
Optimize only when you’ve identified aOptimize only when you’ve identified a
deficiencydeficiency
• Security and Verifiability Are By DesignSecurity and Verifiability Are By Design
If it’s important it needs to be consideredIf it’s important it needs to be considered
from the beginning.from the beginning.
38. Introduction to Software Architecture
Agenda
• VisionVision
• ValueValue
• What is Software Architecture?What is Software Architecture?
• Documenting a Software ArchitectureDocumenting a Software Architecture
• Characteristics of an ArchitectCharacteristics of an Architect
Editor's Notes
Maximize the value of the solutions we build for our customers
Utilize the depth and breadth of the technical portfolio and resource pool.
Distinguish solutions from competitors
Explore innovative and novel approaches
Leverage assets created during projects
Repeat success by creating reference architectures
Encourage cross-selling / up-selling
Selling Application Services into ITS opportunities (for example)
Promote long-term relationships with out customers
Not just a collection of hammers all in search of a nail.
I like this definition because it identifies the importance of quality attributes and architecture’s role in addressing these attributes. It gives short shrift to structure.
This definition focuses on components and their relationships and integrates in the idea that architecture goes beyond simple structures.
SEI software architecture courses are based on this book.
This definition is similar to the previous one it includes the idea that we are only interested in the externally visible properties of components. None of these definitions goes quite far enough. The fact is that Software Architecture is difficult to define in a sentence or two.
Is what an architect does.
Accidental or unintentional
Some decisions we want to delay. Architecture is about making the fundamental decisions that can’t or shouldn’t be delayed.
By creating a software architecture we make it easier to select team members. Selecting team members is driven by skill requirements and skill requirements result from architectural choices.
The technical documentation for a project is organized at the highest level by the architecture documentation.
The architectural elements (layers, components, partitions (vertical slices of functionality) can be used to organize the development team as well as the plan and schedule.
All architecture is design just as all horses are mammals.
The term "technical debt" was coined by Ward Cunningham to describe the obligation that a software organization incurs
when it chooses a design or construction approach that's expedient in the short term but that increases complexity and is
more costly in the long term.
The first kind of technical debt is the kind that is incurred unintentionally. For example, a design approach just turns out to
be error-prone or a junior programmer just writes bad code. This technical debt is the non-strategic result of doing a poor
job. In some cases, this kind of debt can be incurred unknowingly, for example, your company might acquire a company
that has accumulated significant technical debt that you don't identify until after the acquisition. Sometimes, ironically, this
debt can be created when a team stumbles in its efforts to rewrite a debt-laden platform and inadvertently creates more
debt. We'll call this general category of debt Type I.
The second kind of technical debt is the kind that is incurred intentionally. This commonly occurs when an organization
makes a conscious decision to optimize for the present rather than for the future. "If we don't get this release done on time,
there won't be a next release" is a common refrain—and often a compelling one. This leads to decisions like, "We don't
have time to reconcile these two databases, so we'll write some glue code that keeps them synchronized for now and
reconcile them after we ship." Or "We have some code written by a contractor that doesn't follow our coding standards;
we'll clean that up later." Or "We didn't have time to write all the unit tests for the code we wrote the last 2 months of the
project. We'll right those tests after the release." (We'll call this Type II.)
Software Architecture in Practice, 2nd Edition
Software Architecture in Practice, 2nd Edition
Software Architecture in Practice, 2nd Edition
Software Architecture in Practice, 2nd Edition
Separation of concerns: Focus on some aspect of the architecture separately from others.
Communication with stakeholder groups: Satisfies a group of stakeholders by focusing on those aspects of particular interest to them using appropriate language and terminology.
Management of complexity: A large system can be effectively decomposed and understood.
Improved developer focus: The architecture is the foundation for system design. Separate views allows developers to focus on different aspects of the system thereby ensuring that the right system gets built.
Inconsistency: Views are interrelated, but sometimes it’s difficult to make sure that you have consistency between the views.
Selection of the wrong set of views: It can be difficult to know which views should be created. The different audiences and their needs, the complexity of the system, and the time available are all factors that need to be taken into consideration.
Fragmentation: Too many views increase opportunities for inconsistencies and require additional effort. Too few views can result in combining views and creating something that is difficult to understand.
I often will identify “Partitions” which are groups of functionality.
Evangelist
Zealot for architecture and SDP
Requirements may be Lord over all, but people tend to think first in terms of a solution. One of the things that an architect can do is use technical options to help the customer understand what their requirements actually are. I often will present a continuum to the customer when the customer seems unsure of what their requirement is / should be (or if I think they are just plain wrong). I will offer two divergent possibilities and use the natural tendency to think about solution to find out the underlying requirement. Recently there was a system that is going to import data from a flat file into a database. There may be errors or issues with the importation process. I presented the customer with the two options, one option would deliver an email whenever there was a problem with a file import. The other option was to provide a dashboard that the user could navigate to see any issues that may have occurred. We discussed the idea that they are not mutually exclusive. Thinking in terms of a solution helped the customer identify their requirement.