Software Architecture Quotes

We've searched our database for all the quotes and captions related to Software Architecture. Here they are! All 100 of them:

The ideal architect should be a man of letters, a skillful draftsman, a mathematician, familiar with historical studies, a diligent student of philosophy, acquainted with music, not ignorant of medicine, learned in the responses of jurisconsults, familiar with astronomy and astronomical calculations.
Vitruvius
Almost everything we know about good software architecture has to do with making software easy to change
Mary Poppendieck (Implementing Lean Software Development: From Concept to Cash)
I'm a programmer. I like programming. And the best way I've found to have a positive impact on code is to write it.
Robert C. Martin (Clean Architecture)
Cloud first software architecture is critical to designing efficient systems. All the hardware need to be capable of the most sophisticated things and then we can focus our attention on improving software capabilities.
Hendrith Vanlon Smith Jr.
All race conditions, deadlock conditions, and concurrent update problems are due to mutable variables.
Robert C. Martin (Clean Architecture)
Science does not work by proving statements true, but rather by proving statements false.
Robert C. Martin (Clean Architecture: A Craftsman's Guide to Software Structure and Design)
A basic principle of data processing teaches the folly of trying to maintain independent files in synchonism.
Frederick P. Brooks Jr. (The Mythical Man-Month: Essays on Software Engineering)
Dijkstra once said, “Testing shows the presence, not the absence, of bugs.” In other words, a program can be proven incorrect by a test, but it cannot be proven correct. All that tests can do, after sufficient testing effort, is allow us to deem a program to be correct enough for our purposes.
Robert C. Martin (Clean Architecture: A Craftsman's Guide to Software Structure and Design)
The first value of software—behavior—is urgent but not always particularly important. The second value of software—architecture—is important but never particularly urgent.
Robert C. Martin (Clean Architecture: A Craftsman's Guide to Software Structure and Design)
Just as the Hare was overconfident in its speed, so the developers are overconfident in their ability to remain productive.
Robert C. Martin (Clean Architecture: A Craftsman's Guide to Software Structure and Design)
The perfect kind of architecture decision is the one which never has to be made
Robert C. Martin
This is the monstrosity in love, lady, that the will is infinite, and the execution confined; that the desire is boundless, and the act a slave to limit. —William Shakespeare
Robert C. Martin (Clean Architecture: A Craftsman's Guide to Software Structure and Design)
If change is the only constant in the universe, then software change is not only constant but ubiquitous.
Len Bass (Software Architecture in Practice)
thinking of software architecture as a standalone concept that can be designed in isolation and then implemented by any group of teams is fundamentally wrong.
Matthew Skelton (Team Topologies: Organizing Business and Technology Teams for Fast Flow)
The goal of software architecture is to minimize the human resources required to build and maintain the required system.
Robert C. Martin (Clean Architecture)
1. “First make it work.” You are out of business if it doesn’t work. 2. “Then make it right.” Refactor the code so that you and others can understand it and evolve it as needs change or are better understood. 3. “Then make it fast.” Refactor the code for “needed” performance.
Robert C. Martin (Clean Architecture: A Craftsman's Guide to Software Structure and Design)
The main lesson here is that not every problem can be solved at the level of abstraction where it manifests.
Michael T. Nygard (Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers))
Conway’s law: Organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations.
Mark Richards (Fundamentals of Software Architecture: An Engineering Approach)
The problem that Dijkstra recognized, early on, was that programming is hard, and that programmers don’t do it very well.
Robert C. Martin (Clean Architecture: A Craftsman's Guide to Software Structure and Design)
Architecting for the enterprise, when all you really need is a cute little desktop tool, is a recipe for failure.
Robert C. Martin (Clean Architecture: A Craftsman's Guide to Software Structure and Design)
When a child has learned this architecture, he can tell time as easily from a wristwatch as from a church tower.
Frederick P. Brooks Jr. (The Mythical Man-Month: Essays on Software Engineering)
If you think good architecture is expensive, try bad architecture. —Brian Foote and Joseph Yoder
Robert C. Martin (Clean Architecture: A Craftsman's Guide to Software Structure and Design)
Just by making the architect role explicit, a team can effectively resolve many technical conflicts.
Yegor Bugayenko (Code Ahead)
The Dependency Inversion Principle (DIP) tells us that the most flexible systems are those in which source code dependencies refer only to abstractions, not to concretions.
Robert C. Martin (Clean Architecture: A Craftsman's Guide to Software Structure and Design)
Quality is not an act, it is a habit. —Aristotle
Len Bass (Software Architecture in Practice)
An architecture that is not documented, and not communicated, may still be a good architecture, but the risks surrounding it are enormous. —RK
Len Bass (Software Architecture in Practice)
Architecture must be carefully distinguished from implementation. As Blaauw has said, "Where architecture tells what happens, implementation tells how it is made to happen.
Frederick P. Brooks Jr. (The Mythical Man-Month: Essays on Software Engineering)
Software has two types of value: the value of its behavior and the value of its structure. The second of these is the greater of the two because it is this value that makes software soft.
Robert C. Martin (Clean Architecture)
The way you keep software soft is to leave as many options open as possible, for as long as possible. What are the options that we need to leave open? They are the details that don’t matter.
Robert C. Martin (Clean Architecture)
Consider thinking of architectural decisions as investments and take into account the associated rate of return, it is a useful approach for finding out how pragmatic or fit for purpose every option on the table is.
Richard Monson-Haefel (97 Things Every Software Architect Should Know)
In 1966, Derrida delivered a paper entitled “Structure Sign and Play in the Discourse of the Human Sciences” (which is a wonderful paper, right up there with the original DynamoDB paper and the Page Rank algorithm paper).
Eben Hewitt (Technology Strategy Patterns: Architecture as Strategy)
The primary cost of maintenance is in spelunking and risk. Spelunking is the cost of digging through the existing software, trying to determine the best place and the best strategy to add a new feature or to repair a defect.
Robert C. Martin (Clean Architecture)
Where technology acquisition was once the province of the CIO, today it’s the practitioner leading that process, because by the time a CIO typically hears about a project today, a majority of the technology and architectural decisions have already been made.
Stephen O’Grady (The Software Paradox: The Rise and Fall of the Commercial Software Market)
Good software systems begin with clean code. On the one hand, if the bricks aren’t well made, the architecture of the building doesn’t matter much. On the other hand, you can make a substantial mess with well-made bricks. This is where the SOLID principles come in.
Robert C. Martin (Clean Architecture)
Twenty minutes later, Three Body’s Von Neumann architecture human-formation computer had begun full operations under the Qin 1.0 operating system. “Run solar orbit computation software ‘Three Body 1.0’!” Newton screamed at the top of his lungs. “Start the master computing module! Load the differential calculus module! Load the finite element analysis module! Load the spectral method module! Enter initial condition parameters … and begin calculation!” The motherboard sparkled as the display formation flashed with indicators in every color. The human-formation computer began the long computation.
Liu Cixin (The Three-Body Problem (Remembrance of Earth’s Past, #1))
Connascence, in the context of software engineering, refers to the degree of coupling between software components. (Connascence.io hosts a handy reference to the various types of connascence.) Software components are connascent if a change in one would require the other(s) to be modified in order to maintain the overall correctness of the system.
Piethein Strengholt (Data Management at Scale: Best Practices for Enterprise Architecture)
It is important to note that the design of an entire brain region is simpler than the design of a single neuron. As discussed earlier, models often get simpler at a higher level—consider an analogy with a computer. We do need to understand the detailed physics ofsemiconductors to model a transistor, and the equations underlying a single real transistor are complex. A digital circuit that multiples two numbers requires hundreds of them. Yet we can model this multiplication circuit very simply with one or two formulas. An entire computer with billions of transistors can be modeled through its instruction set and register description, which can be described on a handful of written pages of text and formulas. The software programs for an operating system, language compilers, and assemblers are reasonably complex, but modeling a particular program—for example, a speech recognition programbased on hierarchical hidden Markov modeling—may likewise be described in only a few pages of equations. Nowhere in such a description would be found the details ofsemiconductor physics or even of computer architecture. A similar observation holds true for the brain. A particular neocortical pattern recognizer that detects a particular invariant visualfeature (such as a face) or that performs a bandpass filtering (restricting input to a specific frequency range) on sound or that evaluates the temporal proximity of two events can be described with far fewer specific details than the actual physics and chemicalrelations controlling the neurotransmitters, ion channels, and other synaptic and dendritic variables involved in the neural processes. Although all of this complexity needs to be carefully considered before advancing to the next higher conceptual level, much of it can be simplified as the operating principles of the brain are revealed.
Ray Kurzweil (How to Create a Mind: The Secret of Human Thought Revealed)
The label “jack-of-all-trades but master of none” is normally meant to be derogatory, implying that the labelee lacks the focus to really dive into a subject and master it. But, when your online shopping application is on the fritz and you’re losing orders by the hundreds as each hour passes, it’s the jack-of-all-trades who not only knows how the application’s code works but can also do low-level UNIX debugging of your web server processes, analyze your RDBMS’s configuration for potential performance bottlenecks, and check your network’s router configuration for hard-to-find problems. And, more important, after finding the problem, the jack-of-all-trades can quickly make architecture and design decisions, implement code fixes, and deploy a new fixed system to production. In this scenario, the manufacturing scenario seems quaint at best and critically flawed at worst.
Chad Fowler (The Passionate Programmer: Creating a Remarkable Career in Software Development (Pragmatic Life))
There is something new: A globe about the size of a grapefruit, a perfectly detailed rendition of Planet Earth, hanging in space at arm's length in front of his eyes. Hiro has heard about this but never seen it. It is a piece of CIC software called, simply, Earth. It is the user interface that CIC uses to keep track of every bit of spatial information that it owns—all the maps, weather data, architectural plans, and satellite surveillance stuff.
Neal Stephenson (Snow Crash)
The architecture of a software system is the shape given to that system by those who build it. The form of that shape is in the division of that system into components, the arrangement of those components, and the ways in which those components communicate with each other. The purpose of that shape is to facilitate the development, deployment, operation, and maintenance of the software system contained within it. The strategy behind that facilitation is to leave as many options open as possible, for as long as possible
Robert C. Martin (Clean Architecture)
We wrote our software to know the detailed structure of the disk. It knew that the disk had 200 cylinders and 10 heads, and that each cylinder had several dozen sectors per head. It knew which cylinders held the Agents, Employers, and Members. All this was hard-wired into the code. ... One day a more experienced programmer joined our ranks. When he saw what we had done, the blood drained from his face, and he stared aghast at us, as if we were aliens of some kind. Then he gently advised us to change our addressing scheme to use relative addresses.
Robert C. Martin (Clean Architecture)
Jobs’s reluctance to make the Mac compatible with the architecture of the Lisa was motivated by more than rivalry or revenge. There was a philosophical component, one that was related to his penchant for control. He believed that for a computer to be truly great, its hardware and its software had to be tightly linked. When a computer was open to running software that also worked on other computers, it would end up sacrificing some functionality. The best products, he believed, were “whole widgets” that were designed end-to-end, with the software closely tailored to the hardware and vice versa. This is what would distinguish the Macintosh, which had an operating system that worked only on its own hardware, from the environment that Microsoft was creating, in which its operating system could be used on hardware made by many different companies.
Walter Isaacson (Steve Jobs)
The physical structure of the Internet presents a suggestive story about the concentration of power - it contains "backbones" and "hubs" - but power on the Internet is not spatial but informational; power inheres in protocol. The techno-libertarian utopianism associated with the Internet, in the gee-whiz articulations of the Wired crowd, is grounded in an assumption that the novelty of governance by computer protocols precludes control by corporation or state. But those entities merely needed to understand the residence of power in protocol and to craft political and technical strategies to exert it. In 2006, U.S. telecommunications providers sought to impose differential pricing on the provision of Internet services. The coalition of diverse political interests that formed in opposition - to preserve "Net Neutrality" - demonstrated a widespread awareness that control over the Net's architecture is control of its politics.
Samir Chopra (Decoding Liberation: The Promise of Free and Open Source Software (Routledge Studies in New Media and Cyberculture))
By the architecture of a system, I mean the complete and detailed specification of the user interface. For a computer this is the programming manual. For a compiler it is the language manual. For a control program it is the manuals for the language or languages used to invoke its functions. For the entire system it is the union of the manuals the user must consult to do his entire job. The architect of a system, like the architect of a building, is the user's agent. It is his job to bring professional and technical knowledge to bear in the unalloyed interest of the user, as opposed to the interests of the salesman, the fabricator, etc.[2] Architecture must be carefully distinguished from implementation. As Blaauw has said, "Where architecture tells what happens, implementation tells how it is made to happen."[3] He gives as a simple example a clock, whose architecture consists of the face, the hands, and the winding knob. When a child has learned this architecture, he can tell time as easily from a wristwatch as from a church tower. The implementation, however, and its realization, describe what goes on inside the case—powering by any of many mechanisms and accuracy control by any of many.
Frederick P. Brooks Jr. (The Mythical Man-Month: Essays on Software Engineering)
2006 interview by Jim Gray, Amazon CTO Werner Vogels recalled another watershed moment: We went through a period of serious introspection and concluded that a service-oriented architecture would give us the level of isolation that would allow us to build many software components rapidly and independently. By the way, this was way before service-oriented was a buzzword. For us service orientation means encapsulating the data with the business logic that operates on the data, with the only access through a published service interface. No direct database access is allowed from outside the service, and there’s no data sharing among the services.3 That’s a lot to unpack for non–software engineers, but the basic idea is this: If multiple teams have direct access to a shared block of software code or some part of a database, they slow each other down. Whether they’re allowed to change the way the code works, change how the data are organized, or merely build something that uses the shared code or data, everybody is at risk if anybody makes a change. Managing that risk requires a lot of time spent in coordination. The solution is to encapsulate, that is, assign ownership of a given block of code or part of a database to one team. Anyone else who wants something from that walled-off area must make a well-documented service request via an API.
Colin Bryar (Working Backwards: Insights, Stories, and Secrets from Inside Amazon)
The moral here is that nature and nurture should not be opposed. Pure learning, in the absence of any innate constraints, simply does not exist. Any learning algorithm contains, in one way or another, a set of assumptions about the domain to be learned. Rather than trying to learn everything from scratch, it is much more effective to rely on prior assumptions that clearly delineate the basic laws of the domain that must be explored, and integrate these laws into the very architecture of the system. The more innate assumptions there are, the faster learning is (provided, of course, that these assumptions are correct!). This is universally true. It would be wrong, for example, to think that the AlphaGo Zero software, which trained itself in Go by playing against itself, started from nothing: its initial representation included, among other things, knowledge of the topography and symmetries of the game, which divided the search space by a factor of eight. Our brain too is molded with assumptions of all kinds. Shortly, we will see that, at birth, babies' brains are already organized and knowledgeable. They know, implicitly, that the world is made of things that move only when pushed, without ever interpenetrating each other (solid objects)—and also that it contains much stranger entities that speak and move by themselves (people). No need to learn these laws: since they are true everywhere humans live, our genome hardwires them into the brain, thus constraining and speeding up learning. Babies do not have to learn everything about the world: their brains are full of innate constraints, and only the specific parameters that vary unpredictably (such as face shape, eye color, tone of voice, and individual tastes of the people around them) remain to be acquired.
Stanislas Dehaene (How We Learn: Why Brains Learn Better Than Any Machine . . . for Now)
Stanford University’s John Koza, who pioneered genetic programming in 1986, has used genetic algorithms to invent an antenna for NASA, create computer programs for identifying proteins, and invent general purpose electrical controllers. Twenty-three times Koza’s genetic algorithms have independently invented electronic components already patented by humans, simply by targeting the engineering specifications of the finished devices—the “fitness” criteria. For example, Koza’s algorithms invented a voltage-current conversion circuit (a device used for testing electronic equipment) that worked more accurately than the human-invented circuit designed to meet the same specs. Mysteriously, however, no one can describe how it works better—it appears to have redundant and even superfluous parts. But that’s the curious thing about genetic programming (and “evolutionary programming,” the programming family it belongs to). The code is inscrutable. The program “evolves” solutions that computer scientists cannot readily reproduce. What’s more, they can’t understand the process genetic programming followed to achieve a finished solution. A computational tool in which you understand the input and the output but not the underlying procedure is called a “black box” system. And their unknowability is a big downside for any system that uses evolutionary components. Every step toward inscrutability is a step away from accountability, or fond hopes like programming in friendliness toward humans. That doesn’t mean scientists routinely lose control of black box systems. But if cognitive architectures use them in achieving AGI, as they almost certainly will, then layers of unknowability will be at the heart of the system. Unknowability might be an unavoidable consequence of self-aware, self-improving software.
James Barrat (Our Final Invention: Artificial Intelligence and the End of the Human Era)
What is WordPress? WordPress is an online, open source website creation tool written in PHP. But in non-geek speak, it’s probably the easiest and most powerful blogging and website content management system (or CMS) in existence today. Many famous blogs, news outlets, music sites, Fortune 500 companies and celebrities are using WordPress. WordPress is web software you can use to create a beautiful website, blog, or app. We like to say that WordPress is both free and priceless at the same time. There are thousands of plugins and themes available to transform your site into almost anything you can imagine. WordPress started in 2003 with a single bit of code to enhance the typography of everyday writing and with fewer users than you can count on your fingers and toes. Since then it has grown to be the largest self-hosted blogging tool in the world, used on millions of sites and seen by tens of millions of people every day. You can download and install a software script called WordPress from wordpress.org. To do this you need a web host who meets the minimum requirements and a little time. WordPress is completely customizable and can be used for almost anything. There is also a servicecalled WordPress.com. WordPress users may install and switch between different themes. Themes allow users to change the look and functionality of a WordPress website and they can be installed without altering the content or health of the site. Every WordPress website requires at least one theme to be present and every theme should be designed using WordPress standards with structured PHP, valid HTML and Cascading Style Sheets (CSS). Themes: WordPress is definitely the world’s most popular CMS. The script is in its roots more of a blog than a typical CMS. For a while now it’s been modernized and it got thousands of plugins, what made it more CMS-like. WordPress does not require PHP nor HTML knowledge unlinke Drupal, Joomla or Typo3. A preinstalled plugin and template function allows them to be installed very easily. All you need to do is to choose a plugin or a template and click on it to install. It’s good choice for beginners. Plugins: WordPress’s plugin architecture allows users to extend the features and functionality of a website or blog. WordPress has over 40,501 plugins available. Each of which offers custom functions and features enabling users to tailor their sites to their specific needs. WordPress menu management has extended functionalities that can be modified to include categories, pages, etc. If you like this post then please share and like this post. To learn more About website design in wordpress You can visit @ tririd.com Call us @ 8980010210
ellen crichton
cohesion and coupling are concerns regarding modular software, and what is microservice architecture other than modules that communicate via networks and can be independently deployed
Sam Newman (Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith)
If you create software that is packaged and shipped to customers who then operate it themselves, microservices may well be a bad choice... The reality is that you cannot expect your customers to have the skills or platforms available to manage microservice architectures. Even if they do, they may not have the same skills or platform that you require.
Sam Newman (Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith)
Discussions around architecture often focus on tools and technologies. Should the organization adopt microservices or serverless architectures? Should they use Kubernetes or Mesos? Which CI server, language, or framework should they standardize on? Our research shows that these are wrong questions to focus on. What tools or technologies you use is irrelevant if the people who must use them hate using them, or if they don’t achieve the outcomes and enable the behaviors we care about. What is important is enabling teams to make changes to their products or services without depending on other teams or systems. Architects should collaborate closely with their users—the engineers who build and operate the systems through which the organization achieves its mission—to help them achieve better outcomes and provide them the tools and technologies that will enable these outcomes.
Nicole Forsgren (Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations)
Orchestration-Driven Service-Oriented Architecture Architecture styles, like art movements, must be understood in the context of the era in which they evolved, and this architecture exemplifies this rule more than any other. The combination of external forces that often influence architecture decisions, combined with a logical but ultimately disastrous organizational philosophy, doomed this architecture to irrelevance. However, it provides a great example of how a particular organizational idea can make logical sense yet hinder most important parts of the development process.
Mark Richards (Fundamentals of Software Architecture: An Engineering Approach)
Each service is meant to represent a domain or subdomain; in many ways, microservices is the physical embodiment of the logical concepts in domain-driven design.
Mark Richards (Fundamentals of Software Architecture: An Engineering Approach)
5 Thumb Rules to Follow for Outsourcing 3D Character. Outsourcing has become one of the basic requirements of the digital industry. Be it software, websites, architecture rendering or 3D character modelling, companies look forward to outsource these tasks to reliable names. Reason is simple. When it comes to value for money, 3D Art Outsourcing Service stands to be the most viable option as setting up in-house production often isn’t considered a wise ROI choice. But, this necessity has also given rise to possible frauds. There are countless companies waiting to gulp your money in the blink of an eye. There are many more who are ready to lure you with lucrative offers when it comes to 3D character modelling concept. Since not everyone is familiar with the technicalities of this field, companies can easily get trapped with fake promises of giving top notch services well within their reach, only to find out that the whole thing was neither worth their time nor money. However, all the sham can be avoided if companies follow the six thumb rules while Game outsourcing character modelling tasks to animation studios as these will lead them to the right names. 1) Take a Tour of the Website Although you will find expert comments on not to judge a company by its cover, there is no denying the fact that website plays a decisive role in company’s credibility, especially when it comes to art and animation studios. A studio that claims to offer you state-of-art results must first focus on its own. A clean, crisp website with appropriate content can actually say a lot about the studio’s work. A poor design and inappropriate content often indicate the following things: - Outdated and poorly maintained - Negligence towards its virtual presentation - Unprofessionalism - Poor marketing A sincere design and animation studio will indeed feature a vibrant website with all its details properly included. 2) Location Matters Location has a huge impact on hiring charges as it largely decides the price range one can expect. If you are looking forward to countries like India, you expect the range to be well within your budget chiefly because such countries have immense talent, but because of the increasing demand and competition in the field of outsourcing, hiring charges are relatively cheaper than countries like UK or USA. This means that once can get desired expertise without spending a fortune. 3) Know Your Team Inside Out Since you will be spending your hard earned money, you have every right to know the ins and outs of your team. Getting to know the team can assist you in your decision. Do your part of homework and be ready with your queries. Starting from their names to their works, check everything you can, and if need be, go for one-to-one conversation. This will not only help you to know them better, but will also give you an idea of their communication, their knowledge about their work and their sincerity. A dedicated one will always answer you up to the point while a confused one with fidget with words or beat around the bush. 4) Don’t Miss Out on the Portfolio While the website of a studio is its virtual representative, it’s the portfolio which speaks about its execution. Reputed names of 3D modelling and design companies house excellent projects ranging from simple to complex ones. A solid portfolio indicates: - commitment of the studio towards its projects - competency of its team - execution and precision - status of its expertise Apart from the portfolio, some animation studios even feature case studies and white papers in their websites which indicate their level of transparency. Make sure to go through all of them.
Game Yan
Given our skills, constraints, cultural and engineering maturity, desired software architecture, and business goals, which team topology will help us deliver results faster and safer?
Matthew Skelton (Team Topologies: Organizing Business and Technology Teams for Fast Flow)
the fact that oo languages provide safe and convenient polymorphism means that any source code dependency, no matter where it is, can be inverted
Robert C. Martin (Clean Architecture)
The Ponzi scheme is a specific and easily identifiably structure that isn’t applicable to Bitcoin but could be to some phony cryptoassets. While a truly innovative cryptoasset and its associated architecture requires a heroic coding effort from talented developers, because the software is open source, it can be downloaded and duplicated. From there, a new cryptoasset can be issued wrapped in slick marketing.
Chris Burniske (Cryptoassets: The Innovative Investor's Guide to Bitcoin and Beyond)
By 2006, they had created an international exemplar of interconnectedness. Estonian software engineers had not only created Skype; they were helping to build a new society, where the only rituals requiring you to show up in person and present a document were marriage, divorce, and buying property. Everything else was online—government, banking, finance, insurance, communications, broadcast and print media, the balloting for elections. Wi-Fi was strong, ever present, and free. People began to call their homeland e-Estonia. They had created the first country whose political and social architectures were framed by an internet infrastructure—and perhaps the most technologically sophisticated nation on earth. In April 2007, the authorities in Tallinn decided to move the Bronze Soldier from its pedestal to a military cemetery. Estonian patriots found it offensive, Russian nationalists came to Estonia to rally around it, and the statue became a flash point of confrontation. Russia’s foreign affairs minister, Sergey Lavrov, called the decision disgusting; he warned of serious consequences for Estonia. An angry mob of Russians ran riot in the capital. In Moscow, young thugs laid siege to the Estonian embassy and forced it to shut down. And then Putin waged political warfare in a way that made Estonia’s strength its weakness.
Tim Weiner (The Folly and the Glory: America, Russia, and Political Warfare 1945–2020)
Jonny Leroy of ThoughtWorks is the Inverse Conway Maneuver, which suggests evolving team and organizational structure together to promote the desired architecture.
Mark Richards (Fundamentals of Software Architecture: An Engineering Approach)
In the end, all vendor products and application architectures are constrained by the same fundamental principles of distributed computing and underlying physics: applications, and the products they use, run as processes on computers of limited capacity, communicating with one another via protocol stacks and links of nonzero latency. Therefore people need to appreciate that application architecture is the primary determinant of application performance and scalability.
Richard Monson-Haefel (97 Things Every Software Architect Should Know: Collective Wisdom from the Experts)
A common anti-pattern in architecture entails trying to design a generic architecture, one that supports all the architecture characteristics.
Mark Richards (Fundamentals of Software Architecture: An Engineering Approach)
Domain concern Architecture characteristics Mergers and acquisitions Interoperability, scalability, adaptability, extensibility Time to market Agility, testability, deployability User satisfaction Performance, availability, fault tolerance, testability, deployability, agility, security Competitive advantage Agility, testability, deployability, scalability, availability, fault tolerance Time and budget Simplicity, feasibility
Mark Richards (Fundamentals of Software Architecture: An Engineering Approach)
The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both.
Len Bass (Software Architecture in Practice)
anyone who makes decisions about the shape and placement of engineering teams is strongly influencing the software systems architecture.
Matthew Skelton (Team Topologies: Organizing Business and Technology Teams for Fast Flow)
Defining the user set. The larger and more amorphous the user set, the more necessary it is to define it explicitly if one is to achieve conceptual integrity. Each member of the design team will surely have an implicit mental image of the users, and each designer's image will be different. Since an architect's image of the user consciously or subconsciously affects every architectural decision, it is essential for a design team to arrive at a single shared image. And that requires writing down the attributes of the expected user set, including: • Who they are • What they need • What they think they need • What they want
Frederick P. Brooks Jr. (The Mythical Man-Month: Essays on Software Engineering)
Tiers concern themselves with the physical location of the functionality and components. A three-tiered architecture with presentation, business, and data tiers implies that those three tiers have been physically deployed to three separate machines and are each running on those separate machines.
Joseph Ingeno (Software Architect’s Handbook: Become a successful software architect by implementing effective architecture concepts)
The idea of dividing our work into smaller units isn’t new. You’ve probably heard this advice a hundred times: if you’re stuck on a task, break it down into smaller steps. Every profession and creative medium has its own version of “intermediate steps” on the way to full-fledged final works. For example: “Modules” in software development “Betas” tested by start-ups “Sketches” in architecture “Pilots” for television series “Prototypes” made by engineers “Concept cars” in auto design “Demos” in music recording
Tiago Forte (Building a Second Brain: A Proven Method to Organise Your Digital Life and Unlock Your Creative Potential)
Read replicas This technique follows a master-slave architecture. Here, database tables are distributed across different sets of nodes, of which some are known as slaves and one as master. Master node handles write queries while read queries are routed to slave nodes. The model works best if data changes are limited but read queries are large. To handle an unexpected scenario like a master failure, one of the slave nodes can be elevated to the master node. The pattern works well to scale out read queries
Harsh Kumar Ramchandani (Hands-On System Design: Learn System Design, Scaling Applications, Software Development Design Patterns with Real Use-Cases (English Edition))
This key architectural property enables teams to easily test and deploy individual components or services even as the organization and the number of systems it operates grow—that is, it allows organizations to increase their productivity as they scale.
Nicole Forsgren (Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations)
All architectures become iterative because of unknown unknowns, Agile just recognizes this and does it sooner.
Mark Richards (Fundamentals of Software Architecture: An Engineering Approach)
Instead of choosing between a monolithic architecture or a microservices architecture, design the software to fit the maximum team cognitive load. Only then can we hope to achieve sustainable, safe, rapid software delivery. This team-first approach to software boundaries leads to favoring certain styles of software architecture, such as small, decoupled services.
Matthew Skelton (Team Topologies: Organizing Business and Technology Teams for Fast Flow)
there is no technology that can promise that any authorized software that wants to receive and interpret an event — or at least its metadata — can do so at will.
James Urquhart (Flow Architectures: The Future of Streaming and Event-Driven Integration)
I think you get the point. If you can develop the high-level policy without committing to the details that surround it, you can delay and defer decisions about those details for a long time. And the longer you wait to make those decisions, the more information you have with which to make them properly. This also leaves you the option to try different experiments. If you have a portion of the high-level policy working, and it is agnostic about the database, you could try connecting it to several different databases to check applicability and performance. The same is true with web systems, web frameworks, or even the web itself. The longer you leave options open, the more experiments you can run, the more things you can try, and the more information you will have when you reach the point at which those decisions can no longer be deferred.
Robert C. Martin (Clean Architecture: A Craftsman's Guide to Software Structure and Design)
Well, if you think of your own mind as a computer, which it is, then your basic architecture is different from most of the other computers around you. You’re wired differently, you connect differently, and you run different software on a different operating system. You’re like the lone Mac,” he’d concluded, “in an office of PCs. They’re all running Windows, and you’re running OS X.
Susanna Kearsley (A Desperate Fortune)
Evolving a widely reused resource also requires coordination because changes must be compatible with all existing systems or users. Such coordination can slow down innovation... Some digital companies have even begun to explicitly favor duplication because their business environment rewards economies of speed.
Gregor Hohpe (The Software Architect Elevator: Redefining the Architect's Role in the Digital Enterprise)
For example, maybe you like Spring. Spring is a good dependency injection framework. Maybe you use Spring to auto-wire your dependencies. That’s fine, but you should not sprinkle @autowired annotations all throughout your business objects. Your business objects should not know about Spring. Instead, you can use Spring to inject dependencies into your Main component. It’s OK for Main to know about Spring since Main is the dirtiest, lowest-level component in the architecture.
Robert C. Martin (Clean Architecture: A Craftsman's Guide to Software Structure and Design)
Writing a document that a reader finds easy to use will help tilt the economics of documentation in our favor,
Paul Clements (Documenting Software Architectures: Views and Beyond)
In software, Dr. Melvin Conway independently observed that any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization’s communication structure. The larger an organization is, the less flexibility it has and the more pronounced the phenomenon. What Conway observed was that once an organization’s social circuitry (Layer 3) is set, it will dictate the architecture of the technical systems (Layer 1).
Gene Kim (Wiring the Winning Organization: Liberating Our Collective Greatness through Slowification, Simplification, and Amplification)
software development is a learning process; working code is a side effect. A software project’s success depends on the effectiveness of knowledge sharing between domain experts and software engineers. We have to understand the problem in order to solve it.
Vladik Khononov (Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy)
No foreign architect of stature, such as I. M. Pei, resides in Japan. Foreign architects come to Japan on short-term contracts, erect a skyscraper or a museum, and then leave. But subtle and sophisticated approaches to services and design—the core elements of modern building technology—cannot be transmitted in this way. Japan is left with the empty shells of architectural ideas, the hardware without the software.
Alex Kerr (Dogs and Demons: Tales from the Dark Side of Japan)
The most important driver of user satisfaction is usefulness, which is largely reflected in the interaction design. The interaction design has to be incorporated at the deepest level of the software architecture and it is often the most expensive to change late in the process.
Arnie Lund (User Experience Management: Essential Skills for Leading Effective UX Teams)
s s i o n o f R a t i o n a l S o f t w a r e C o r p o r a t i o n i s t o e n s u r e t h e s u c c e s s o f c u s t o m e r s c o n s t r u c t i n g t h e s o f t w a r e s y s t e m s t h a t t h e y d e p e n d o n . We enable our customers to achieve their business objectives by turning software into a source of competitive advantage, speeding time-to-market, reducing the risk of failure, and improving software quality. We fulfill our mission with the Rational ApproachTM, a comprehensive softwareengineering solution consisting of three elements: • A configurable set of processes and techniques for the development of software, based on iterative development, object modeling, and an architectural approach to software reuse. • An integrated family of application construction tools that automate the Rational Approach throughout the software lifecycle. • Technical consulting services delivered by our worldwide field organization of software engineers and technical sales professionals. Our customers include businesses in the Asia/Pacific region, Europe, and North America that are leaders in leveraging semiconductor, communications, and software technologies to achieve their business objectives. We serve customers in a diverse range of industries, such as telecommunications
Anonymous
o n o f R a t i o n a l S o f t w a r e C o r p o r a t i o n i s t o e n s u r e t h e s u c c e s s o f c u s t o m e r s c o n s t r u c t i n g t h e s o f t w a r e s y s t e m s t h a t t h e y d e p e n d o n . We enable our customers to achieve their business objectives by turning software into a source of competitive advantage, speeding time-to-market, reducing the risk of failure, and improving software quality. We fulfill our mission with the Rational ApproachTM, a comprehensive softwareengineering solution consisting of three elements: • A configurable set of processes and techniques for the development of software, based on iterative development, object modeling, and an architectural approach to software reuse. • An integrated family of application construction tools that automate the Rational Approach throughout the software lifecycle. • Technical consulting services delivered by our worldwide field organization of software engineers and technical sales professionals. Our customers include businesses in the Asia/Pacific region, Europe, and North America that are leaders in leveraging semiconductor, communications, and software technologies to achieve their business objectives. We serve customers in a diverse range of industries, such as telecommunications, banking and financial services, manufacturing, transportation, aerospace, and defense.They construct software applications for a wide range of platforms, from microprocessors embedded in telephone switching systems to enterprisewide information systems running on company-specific intranets. Rational Software Corporation is traded on the NASDAQ system under the symbol RATL.1
Anonymous
Software architecture plays a pivotal role in the delivery of successful software yet it’s frustratingly neglected by many teams.
Simon Brown (Software Architecture for Developers: Volume 1 - Technical leadership and the balance with agility)
Non-functional requirements” not sounding cool isn’t a reason to neglect them.
Simon Brown (Software Architecture for Developers: Volume 1 - Technical leadership and the balance with agility)
organisations often tend to see software architecture as a rank rather than a role too
Simon Brown (Software Architecture for Developers: Volume 1 - Technical leadership and the balance with agility)
As a noun then, architecture can be summarised as being about structure. It’s about the decomposition of a product into a collection of components/modules and interactions.
Simon Brown (Software Architecture for Developers: Volume 1 - Technical leadership and the balance with agility)
As a verb, architecture (i.e. the process, architecting) is about understanding what you need to build, creating a vision for building it and making the appropriate design decisions. All of this needs to be based upon requirements because requirements drive architecture.
Simon Brown (Software Architecture for Developers: Volume 1 - Technical leadership and the balance with agility)
a software architect who codes is a more effective and happier architect
Simon Brown (Software Architecture for Developers: Volume 1 - Technical leadership and the balance with agility)
You don’t need to be the best coder on the team
Simon Brown (Software Architecture for Developers: Volume 1 - Technical leadership and the balance with agility)
developers are likely to ignore your coding experience if you’re not programming on the project
Simon Brown (Software Architecture for Developers: Volume 1 - Technical leadership and the balance with agility)
Unlike the medieval building industry though, the software development industry lacks an explicit way for people to progress from being junior developers through to software architects. We don’t have a common apprenticeship model.
Simon Brown (Software Architecture for Developers: Volume 1 - Technical leadership and the balance with agility)
The rules of software are the same today as they were in 1946, when Alan Turing wrote the very first code that would execute in an electronic computer.
Robert C. Martin (Clean Architecture: A Craftsman's Guide to Software Structure and Design)
Indeed the most prevalent set of metaphors seems to be that of code as structure: platforms, architectures, objects, portals, gateways. This serves to both depersonify software, diluting the notion of software agency (buildings are passive; it’s the architects, engineers, and users who act), and reifying code as an objective construct, like a building, that exists in the world.
Ed Finn (What Algorithms Want: Imagination in the Age of Computing)
The success of the scaling-up process depends upon the fact that the conceptual integrity of each piece has been radically improved—that the number of minds determining the design has been divided by seven. So it is possible to put 200 people on a problem and face the problem of coordinating only 20 minds, those of the surgeons. For that coordination problem, however, separate techniques must be used, and these are discussed in succeeding chapters. Let it suffice here to say that the entire system also must have conceptual integrity, and that requires a system architect to design it all, from the top down. To make that job manageable, a sharp distinction must be made between architecture and implementation, and the system architect must confine himself scrupulously to architecture.
Frederick P. Brooks Jr. (The Mythical Man-Month: Essays on Software Engineering)
Conceptual integrity does require that a system reflect a single philosophy and that the specification as seen by the user flow from a few minds. Because of the real division of labor into architecture, implementation, and realization, however, this does not imply that a system so designed will take longer to build. Experience shows the opposite, that the integral system goes together faster and takes less time to test. In effect, a widespread horizontal division of labor has been sharply reduced by a vertical division of labor, and the result is radically simplified communications and improved conceptual integrity.
Frederick P. Brooks Jr. (The Mythical Man-Month: Essays on Software Engineering)
For it to be successful, the architect must • remember that the builder has the inventive and creative responsibility for the implementation; so the architect suggests, not dictates; • always be prepared to suggest a way of implementing anything he specifies, and be prepared to accept any other way that meets the objectives as well; • deal quietly and privately in such suggestions; • be ready to forego credit for suggested improvements. Normally the builder will counter by suggesting changes to the architecture. Often he is right—some minor feature may have unexpectedly large costs when the implementation is worked out.
Frederick P. Brooks Jr. (The Mythical Man-Month: Essays on Software Engineering)
In summary, there’s absolutely no guarantee that we’ll manage to build human-level AGI in our lifetime—or ever. But there’s also no watertight argument that we won’t. There’s no longer a strong argument that we lack enough hardware firepower or that it will be too expensive. We don’t know how far we are from the finish line in terms of architectures, algorithms and software, but current progress is swift and the challenges are being tackled by a rapidly growing global community of talented AI researchers. In other words, we can’t dismiss the possibility that AGI will eventually reach human levels and beyond.
Max Tegmark (Life 3.0: Being Human in the Age of Artificial Intelligence)
We will actively manage this technical debt by ensuring that we invest at least 20% of all Development and Operations cycles on refactoring, investing in automation work and architecture and non-functional requirements (NFRs, sometimes referred to as the “ilities”), such as maintainability, manageability, scalability, reliability, testability, deployability, and security. Figure 11: Invest 20% of cycles on those that create positive, user-invisible value (Source: “Machine Learning and Technical Debt with D. Sculley,” Software Engineering Daily podcast, November 17, 2015,
Gene Kim (The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations)
unlike the building industry, the software development industry lacks a standard, consistent way to think about, describe and visually communicate software architecture
Simon Brown (Software Architecture for Developers: Volume 2 - Visualise, document and explore your software architecture)