chase13 - a study of architectural decision practicestlatoza/talks/chase13 - a study of...

1
Architecture driven by technology decisions impose important constraints have Achilles heels revisited at great cost existing resources help learn technology, not evaluate adoption (books, forums, tutorials, Q&A sites) technology websites makes case for Developers learned technologies after adopting them many architectural decisions revisited through two complete rewrites of codebase • discovered Achilles heel of technologies - use case it could not support A Study of Architectural Decision Practices Thomas D. LaToza, Evelina Shabani, André van der Hoek University of California, Irvine What are the social dynamics of architectural decision making in practice? So5ware Design and Collabora;on Laboratory SDCL 11 semi-structured interviews (26 - 44 mins) 5 developers at small health information technology company 6 developers at small telecom startup focused on architecture, important decisions, knowledge sharing practices, code reviews Method Results Making Architectural Decisions Communicating Architectural Decisions Revisiting Architectural Decisions Design Implications Factor Scalability Extensibility Popularity Personal bias Corporate bias API usability Learnability Expected longevity Reduce coupling Simplicity Deployment “It is easier to scale Tomcat out vertically than JBoss.” “It is easier to plugin open source tools” NoSQL databases are the “hot thing”. Preference to put logic in the database Corporate requirement for in-house frameworks SQL provides more abstraction than NoSQL Preference for middleware that looks learnable Preference for technologies that endure JSON supports optional params that can be ignored J2EE “bloated” because much of it is not needed. Operations experience supporting MySQL deployment Example Factors developers reported considering in making technology choices data analysis: affinity diagramming of transcripts "Everyone gets involved, it's not just one person making the decision." • meetings build consensus , but architecture is primarily a product of the senior developer "I think by choosing something like [Apache] Wicket, it kind of enforces a pattern on you." technology decisions were reported to be the key architectural decisions technology decisions imposed architectural styles process driven less by requirements and more by a range of factors "Only 10% of the design decisions and constraints made it to the Wiki, because who has time to write into the wiki" time significant barrier rapidly changing code made explanations out of date felt that small teams made verbal communication particularly important Code reviews ensured compliance and communicated architecture to new developers important when past habits conflicted e.g., batch oriented styles rather than project's event- driven style J2EE version 1 SQL databases Annotation-based AOP Unnormalized database In-memory state persistence Entities stored as a database row are stored as a CORBA object, which has much unnecessary data Cannot scale to billions of rows Cannot insert calls in all cases Schema changes require changes to all consumers When deployment node goes down, state lost Technology or Pattern Technologies and patterns developers reported revisiting Achilles Heel What if developers could make a technology adoption decision by visiting a website? • browse competing technologies • compare ratings of adoption factors see Achilles heels learn potential workarounds read technology developer responses report their own experiences

Upload: others

Post on 07-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CHASE13 - A study of architectural decision practicestlatoza/talks/CHASE13 - A study of architectural... · Architecture driven by technology decisions ... not support A Study of

Architecture driven by technology decisions• impose important constraints• have Achilles heels• revisited at great cost

existing resources help learn technology, not evaluate adoption (books, forums, tutorials, Q&A sites)technology websites makes case for

Developers learned technologies after adopting them• many architectural decisions

revisited through two complete rewrites of codebase

• discovered Achilles heel of technologies - use case it could not support

A Study of Architectural Decision Practices Thomas D. LaToza, Evelina Shabani, André van der Hoek

University of California, Irvine

What are the social dynamics of architectural decision making in practice?

h"p://sdcl.ics.uci.edu/research/code1orb/33So5ware3Design3and3Collabora;on3Laboratory3SDCL3

11 semi-structured interviews (26 - 44 mins)• 5 developers at small health information technology company• 6 developers at small telecom startup

focused on architecture, important decisions, knowledge sharing practices, code reviews

Method

Results

Making Architectural Decisions

Communicating Architectural Decisions

Revisiting Architectural Decisions

Design Implications

Factor

ScalabilityExtensibilityPopularityPersonal biasCorporate biasAPI usabilityLearnabilityExpected longevityReduce couplingSimplicityDeployment

“It is easier to scale Tomcat out vertically than JBoss.”“It is easier to plugin open source tools”NoSQL databases are the “hot thing”.Preference to put logic in the databaseCorporate requirement for in-house frameworksSQL provides more abstraction than NoSQLPreference for middleware that looks learnablePreference for technologies that endureJSON supports optional params that can be ignoredJ2EE “bloated” because much of it is not needed.Operations experience supporting MySQL deployment

ExampleFactors developers reported considering in making technology choices

data analysis: affinity diagramming of transcripts

"Everyone gets involved, it's not just one person making the decision."

• meetings build consensus, but architecture is primarily a product of the senior developer

"I think by choosing something like [Apache] Wicket, it kind of enforces a pattern on you."• technology decisions were reported

to be the key architectural decisions• technology decisions imposed

architectural styles• process driven less by requirements

and more by a range of factors

"Only 10% of the design decisions and constraints made it to the Wiki, because who has time to write into the wiki"• time significant barrier• rapidly changing code made explanations out of date• felt that small teams made verbal communication

particularly important

Code reviews ensured compliance and communicated architecture to new developers• important when past habits conflicted• e.g., batch oriented styles rather than project's event-

driven style

J2EE version 1

SQL databasesAnnotation-based AOPUnnormalized databaseIn-memory state persistence

Entities stored as a database row are stored as aCORBA object, which has much unnecessary dataCannot scale to billions of rowsCannot insert calls in all casesSchema changes require changes to all consumersWhen deployment node goes down, state lost

Technology or PatternTechnologies and patterns developers reported revisiting

Achilles Heel

What if developers could make a technology adoption decision by visiting a website? • browse competing technologies• compare ratings of adoption factors• see Achilles heels• learn potential workarounds• read technology developer responses • report their own experiences