Iniciar prueba gratuita
Searching...
SoBrief
Español
EnglishEnglish
EspañolSpanish
简体中文Chinese
繁體中文Chinese (Traditional)
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Arquitectura de software en la práctica

Arquitectura de software en la práctica

por Len Bass 2021 464 páginas
3.85
500+ valoraciones
Escuchar
Prueba el acceso completo por 3 días
¡Desbloquea la escucha y mucho más!
Continuar

Ideas clave

1. La arquitectura de software es la base para la calidad y el éxito del sistema

La arquitectura es el portador de las decisiones de diseño más tempranas, y por tanto las más fundamentales y difíciles de cambiar.

Definiendo la arquitectura. La arquitectura de software se refiere a las estructuras de alto nivel de un sistema de software, a la disciplina de crear dichas estructuras y a la documentación que las describe. Incluye el conjunto de decisiones significativas sobre la organización del sistema, tales como:

  • La selección de elementos estructurales y sus interfaces
  • El comportamiento especificado en las colaboraciones entre esos elementos
  • La composición de estos elementos en subsistemas mayores
  • El estilo arquitectónico que guía esta organización

Importancia de la arquitectura. Una arquitectura bien diseñada es crucial para:

  • Cumplir con los requisitos de atributos de calidad (rendimiento, seguridad, modificabilidad, etc.)
  • Razonar y gestionar el cambio a medida que el sistema evoluciona
  • Facilitar la comunicación entre las partes interesadas
  • Proveer una base para la reutilización y el desarrollo de líneas de productos
  • Permitir la estimación de costos y plazos

2. Los atributos de calidad impulsan las decisiones y compensaciones arquitectónicas

La capacidad de un sistema para cumplir con sus atributos de calidad deseados (o requeridos) está determinada en gran medida por su arquitectura.

Atributos de calidad clave. Los atributos más importantes que los arquitectos deben considerar incluyen:

  • Rendimiento
  • Escalabilidad
  • Disponibilidad
  • Seguridad
  • Modificabilidad
  • Testabilidad
  • Usabilidad

Tácticas arquitectónicas. Los arquitectos emplean tácticas específicas para alcanzar los atributos de calidad deseados. Por ejemplo:

  • Rendimiento: gestionar recursos, controlar la demanda de recursos
  • Disponibilidad: detectar fallos, recuperarse de fallos, prevenir fallos
  • Seguridad: resistir ataques, detectar ataques, reaccionar ante ataques
  • Modificabilidad: localizar cambios, prevenir efectos en cascada

Compensaciones. Lograr un atributo de calidad suele afectar a otros. Los arquitectos deben equilibrar cuidadosamente compensaciones, tales como:

  • Rendimiento vs. modificabilidad
  • Seguridad vs. usabilidad
  • Disponibilidad vs. costo

3. La modificabilidad y la testabilidad son críticas para la salud a largo plazo del sistema

Cerca del 80 por ciento del costo total típico de un sistema de software ocurre después de su despliegue inicial.

Diseñar para el cambio. Las tácticas de modificabilidad ayudan a gestionar el costo y la complejidad de cambios futuros:

  • Encapsulamiento y ocultamiento de información
  • Uso de interfaces e intermediarios
  • Separación de responsabilidades
  • Diferir el momento de enlace de decisiones de diseño

Consideraciones sobre testabilidad. Las arquitecturas testables reducen el costo y mejoran la efectividad de las pruebas:

  • Proveer mecanismos para controlar y observar el estado del sistema
  • Diseñar para la automatización de pruebas
  • Aislar dependencias para pruebas unitarias
  • Apoyar pruebas de integración y a nivel de sistema

Acto de equilibrio. Los arquitectos deben balancear las necesidades funcionales inmediatas con la mantenibilidad a largo plazo:

  • Invertir en modificabilidad y testabilidad desde el inicio
  • Usar patrones y tácticas que soporten cambios futuros
  • Documentar decisiones de diseño y su justificación para equipos futuros

4. El rendimiento y la escalabilidad requieren una planificación arquitectónica cuidadosa

El rendimiento suele estar ligado a la escalabilidad, es decir, aumentar la capacidad de trabajo del sistema manteniendo un buen desempeño.

Tácticas de rendimiento. Las estrategias clave para lograr un buen rendimiento incluyen:

  • Gestión de recursos: planificación, concurrencia, caché
  • Control de la demanda de recursos: reducir la sobrecarga computacional, gestionar tasas de muestreo
  • Algoritmos y estructuras de datos eficientes

Enfoques de escalabilidad. Los arquitectos deben planificar el crecimiento en el uso del sistema:

  • Escalado horizontal (añadir más instancias)
  • Escalado vertical (aumentar la capacidad de recursos)
  • Balanceo y distribución de carga
  • Caché y redes de entrega de contenido (CDNs)

Medición y ajuste. La monitorización y optimización continua del rendimiento son cruciales:

  • Establecer puntos de referencia y acuerdos de nivel de servicio (SLAs)
  • Usar herramientas de perfilado y monitoreo
  • Identificar y resolver cuellos de botella
  • Considerar compensaciones con otros atributos de calidad (por ejemplo, seguridad, modificabilidad)

5. La seguridad y la seguridad operacional deben diseñarse en la arquitectura desde el inicio

La seguridad mide la capacidad del sistema para proteger datos e información contra accesos no autorizados, mientras permite el acceso a personas y sistemas autorizados.

Tácticas de seguridad. Estrategias clave para construir sistemas seguros:

  • Autenticar y autorizar usuarios
  • Encriptar datos sensibles
  • Implementar protocolos de comunicación seguros
  • Detectar y responder a ataques
  • Aislar y compartimentar componentes del sistema

Consideraciones de seguridad operacional. Para sistemas donde la falla puede causar daño:

  • Realizar análisis exhaustivos de riesgos
  • Implementar mecanismos de detección y recuperación de fallos
  • Diseñar para degradación controlada
  • Usar redundancia y diversidad en componentes críticos
  • Validar y verificar funciones críticas para la seguridad

Enfoque integral. La seguridad y la seguridad operacional requieren atención en todos los niveles:

  • Arquitectura y diseño
  • Implementación y prácticas de codificación
  • Procedimientos operativos y monitoreo
  • Auditorías regulares y pruebas de penetración

6. La computación en la nube y distribuida introduce nuevos desafíos arquitectónicos

Un sistema distribuido es aquel en el que la falla de una computadora que ni siquiera sabías que existía puede inutilizar tu propia computadora.

Patrones de arquitectura en la nube. Aprovechar patrones nativos de la nube para escalabilidad y resiliencia:

  • Arquitectura de microservicios
  • Contenerización y orquestación (por ejemplo, Kubernetes)
  • Computación sin servidor (serverless)
  • Arquitecturas orientadas a eventos

Desafíos de sistemas distribuidos. Abordar problemas clave en entornos distribuidos:

  • Consistencia y consistencia eventual
  • Tolerancia a particiones
  • Latencia y fallos de red
  • Transacciones distribuidas
  • Descubrimiento de servicios y balanceo de carga

Consideraciones específicas de la nube. Adaptar decisiones arquitectónicas a entornos en la nube:

  • Multi-inquilino y compartición de recursos
  • Elasticidad y autoescalado
  • Estrategias de almacenamiento y caché de datos
  • Optimización de costos y gestión de recursos
  • Cumplimiento normativo y soberanía de datos

7. Interfaces efectivas y documentación son esenciales para la integración del sistema

Todos los elementos tienen interfaces. Todos los elementos interactúan con algunos actores; de lo contrario, ¿cuál es el sentido de la existencia del elemento?

Principios de diseño de interfaces. Crear interfaces claras y efectivas:

  • Seguir el principio de la menor sorpresa
  • Diseñar interfaces pequeñas y cohesivas
  • Usar convenciones de nombres consistentes
  • Proveer manejo claro de errores y retroalimentación

Buenas prácticas de documentación. Asegurar documentación completa y útil:

  • Documentar interfaces, componentes y sus interacciones
  • Usar múltiples vistas (por ejemplo, lógica, procesos, despliegue)
  • Incluir la justificación de decisiones clave de diseño
  • Mantener la documentación actualizada con el sistema

Estrategias de integración. Planificar una integración fluida de componentes:

  • Usar protocolos de comunicación estandarizados
  • Implementar acoplamiento débil entre componentes
  • Diseñar para interoperabilidad y extensibilidad
  • Emplear pruebas de integración y prácticas de integración continua

8. El despliegue continuo y las prácticas DevOps moldean las arquitecturas modernas

DevOps es un conjunto de prácticas destinadas a reducir el tiempo entre la realización de un cambio en un sistema y su puesta en producción, asegurando alta calidad.

Pipeline de despliegue continuo. Diseñar arquitecturas que soporten lanzamientos rápidos y frecuentes:

  • Automatizar procesos de construcción, prueba y despliegue
  • Implementar conmutadores de funciones y lanzamientos canarios
  • Usar infraestructura como código para entornos consistentes
  • Diseñar para monitoreo y observabilidad

Consideraciones DevOps. Alinear la arquitectura con los principios DevOps:

  • Diseñar para testabilidad y automatización
  • Soportar fácil reversión y recuperación
  • Implementar registro y monitoreo desde el inicio
  • Facilitar la gestión de configuración

Cambio cultural. Reconocer el impacto en la estructura y procesos del equipo:

  • Fomentar la colaboración entre desarrollo y operaciones
  • Enfatizar la responsabilidad compartida por la calidad del sistema
  • Promover la experimentación y el aprendizaje de errores
  • Alinear decisiones arquitectónicas con objetivos y métricas de negocio

9. La evaluación arquitectónica y la gestión de deuda aseguran la viabilidad a largo plazo

La evaluación arquitectónica es una actividad para reducir riesgos.

Métodos de evaluación. Evaluar regularmente las decisiones arquitectónicas:

  • Método de Análisis de Compensaciones Arquitectónicas (ATAM)
  • Método de Análisis de Costos y Beneficios (CBAM)
  • Revisiones activas para diseños intermedios
  • Técnicas de evaluación basadas en escenarios

Gestión de deuda técnica. Abordar proactivamente las deficiencias arquitectónicas:

  • Identificar y rastrear fuentes de deuda técnica
  • Priorizar el pago de deuda según impacto en el negocio
  • Refactorizar y modernizar la arquitectura de forma incremental
  • Equilibrar el desarrollo de nuevas funcionalidades con la reducción de deuda

Mejora continua. Tratar la arquitectura como un artefacto vivo:

  • Revisar y actualizar regularmente la documentación arquitectónica
  • Realizar análisis post-mortem de fallos y casi fallos
  • Mantenerse informado sobre nuevas tecnologías y patrones
  • Fomentar una cultura de pensamiento arquitectónico en toda la organización

Última actualización:

Report Issue

Resumen de reseñas

3.85 de 5
Promedio de 500+ valoraciones de Goodreads y Amazon.

Arquitectura de Software en la Práctica recibe opiniones encontradas, con una calificación promedio de 3.86 sobre 5. Los lectores valoran su cobertura exhaustiva de los conceptos de arquitectura de software, atributos de calidad y técnicas prácticas. Muchos lo consideran útil para comprender las responsabilidades del arquitecto y el diseño de sistemas. Sin embargo, algunos critican su extensión, repetitividad y enfoque teórico. El libro es elogiado por conectar la teoría con la práctica, aunque algunos opinan que está desactualizado o se centra demasiado en sistemas a gran escala. En conjunto, se considera una referencia sólida para arquitectos de software y estudiantes, aunque puede resultar abrumador para principiantes.

Your rating:
4.39
228 valoraciones
Want to read the full book?

Preguntas frecuentes

What's Software Architecture in Practice about?

  • Comprehensive Overview: Software Architecture in Practice by Len Bass provides a detailed exploration of software architecture, emphasizing its critical role in software development.
  • Quality Attributes Focus: It discusses how architecture influences quality attributes like performance, security, and modifiability, linking them to business goals.
  • Practical Methods: The book introduces methods such as the Attribute-Driven Design (ADD) and Architecture Tradeoff Analysis Method (ATAM) to guide architects in designing and evaluating architectures.

Why should I read Software Architecture in Practice?

  • Essential Knowledge: Understanding software architecture is crucial for software engineers, as it directly impacts project success.
  • Real-World Applications: The book offers practical advice and case studies, making it relevant for both students and professionals.
  • Industry Insights: Authors provide insights based on extensive experience, aligning with current industry practices and challenges.

What are the key takeaways of Software Architecture in Practice?

  • Architecture's Importance: The book emphasizes that architecture is vital for achieving quality attributes and managing change effectively.
  • Quality Attribute Scenarios: It introduces scenarios to specify and analyze quality requirements, aiding in informed design decisions.
  • Tactics and Patterns: A catalog of tactics and patterns is provided to enhance system performance, security, and modifiability.

What is the definition of software architecture according to Software Architecture in Practice?

  • Set of Structures: Software architecture is defined as "the set of structures needed to reason about the system," focusing on relationships and properties.
  • Reasoning Tool: It serves as a tool for reasoning about functionality and quality attributes, encompassing ongoing design considerations.
  • Abstraction: Architecture is an abstraction, emphasizing public interfaces and relationships while managing complexity.

What is the Attribute-Driven Design (ADD) method in Software Architecture in Practice?

  • Systematic Approach: ADD guides architects through the design process, focusing on achieving specific quality attributes.
  • Iterative Steps: It involves steps like reviewing inputs, selecting design concepts, and defining interfaces, ensuring alignment with requirements.
  • Quality Focus: The method prioritizes quality attributes, helping architects create effective and efficient designs.

How does Software Architecture in Practice define quality attributes?

  • Non-Functional Requirements: Quality attributes are non-functional requirements like performance, security, and usability, crucial for system success.
  • Scenarios for Clarity: Quality attribute scenarios illustrate how attributes will be measured and achieved, aiding in design understanding.
  • Balancing Trade-offs: The book discusses trade-offs between attributes, emphasizing careful balancing to meet stakeholder needs.

What is the Architecture Tradeoff Analysis Method (ATAM) in Software Architecture in Practice?

  • Evaluation Framework: ATAM evaluates architectures based on quality attribute scenarios, identifying risks and trade-offs.
  • Collaborative Process: It involves presenting the architecture, identifying goals, and analyzing scenarios with stakeholder engagement.
  • Valuable Outputs: The method produces insights like risks and recommendations, guiding informed architectural decisions.

How does Software Architecture in Practice address the concept of modifiability?

  • Ease of Change: Modifiability is the "ease with which changes can be made," crucial for reducing costs and risks.
  • Enhancing Tactics: Tactics like increasing cohesion and reducing coupling are provided to design adaptable systems.
  • Trade-offs Consideration: Achieving modifiability involves trade-offs with other attributes, requiring careful design decisions.

What are some tactics for achieving availability in software systems according to Software Architecture in Practice?

  • Fault Detection: Tactics include monitoring system health and implementing heartbeat checks to identify faults early.
  • Fault Recovery: Strategies like using redundant spares and rollback mechanisms maintain availability during failures.
  • Preventing Faults: Proactive measures, such as removing components from service, enhance overall system availability.

How does Software Architecture in Practice suggest handling long tail latency in cloud systems?

  • Understanding the Phenomenon: Long tail latency refers to requests taking longer than average, impacting performance.
  • Hedged Requests: Issuing multiple requests and canceling unnecessary ones ensures timely processing.
  • Alternative Requests: Additional requests for slow responses help maintain performance in unpredictable conditions.

What are the best quotes from Software Architecture in Practice and what do they mean?

  • "Architecture is a means to an end.": Highlights that architecture's purpose is to deliver stakeholder value by meeting needs.
  • "Design is hard.": Reflects the complexity of creating effective architectures, navigating trade-offs and uncertainties.
  • "Documentation is a love letter you write to your future self.": Emphasizes thorough documentation for understanding and maintenance.

How does Software Architecture in Practice suggest managing architecture debt?

  • Identifying Hotspots: Use design structure matrices to find architecture debt hotspots that increase maintenance costs.
  • Quantifying Debt: Analyze revision history and issue tracking to quantify debt, justifying refactoring efforts.
  • Refactoring Strategies: Implement specific strategies to address debt, improving architecture quality and reducing costs.

Sobre el autor

Len Bass es un experto reconocido en arquitectura de software y coautor del libro "Arquitectura de Software en la Práctica". A lo largo de su carrera, se ha dedicado a investigar, enseñar y promover el campo de la arquitectura de software. Bass cuenta con una amplia experiencia colaborando con el Instituto de Ingeniería de Software (SEI) de la Universidad Carnegie Mellon, donde aportó de manera significativa al desarrollo de metodologías y prácticas en arquitectura de software. Su trabajo se centra en mejorar la calidad, el rendimiento y la mantenibilidad del software mediante un diseño arquitectónico eficaz. Bass goza de gran respeto en la comunidad de ingeniería de software por sus contribuciones a la disciplina y su capacidad para conectar conceptos teóricos con aplicaciones prácticas en el desarrollo de software.

Follow
Escuchar
Now playing
Arquitectura de software en la práctica
0:00
-0:00
Now playing
Arquitectura de software en la práctica
0:00
-0:00
1x
Queue
Home
Swipe
Library
Get App
Try Full Access for 3 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
Read unlimited summaries. Free users get 3 per month
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 4
📜 Unlimited History
Free users are limited to 4
📥 Unlimited Downloads
Free users are limited to 1
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 26,000+ books. That's 12,000+ hours of audio!
Day 2: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 3: Your subscription begins
You'll be charged on Jun 6,
cancel anytime before.
Consume 2.8× More Books
2.8× more books Listening Reading
Our users love us
600,000+ readers
Trustpilot Rating
TrustPilot
4.6 Excellent
This site is a total game-changer. I've been flying through book summaries like never before. Highly, highly recommend.
— Dave G
Worth my money and time, and really well made. I've never seen this quality of summaries on other websites. Very helpful!
— Em
Highly recommended!! Fantastic service. Perfect for those that want a little more than a teaser but not all the intricate details of a full audio book.
— Greg M
Save 62%
Yearly
$119.88 $44.99/year/yr
$3.75/mo
Monthly
$9.99/mo
Start a 3-Day Free Trial
3 days free, then $44.99/year. Cancel anytime.
Unlock a world of fiction & nonfiction books
26,000+ books for the price of 2 books
Read any book in 10 minutes
Discover new books like Tinder
Request any book if it's not summarized
Read more books than anyone you know
#1 app for book lovers
Lifelike & immersive summaries
30-day money-back guarantee
Download summaries in EPUBs or PDFs
Cancel anytime in a few clicks
Scanner
Find a barcode to scan

We have a special gift for you
Open
38% OFF
DISCOUNT FOR YOU
$79.99
$49.99/year
only $4.16 per month
Continue
2 taps to start, super easy to cancel
Settings
General
Widget
Loading...
We have a special gift for you
Open
38% OFF
DISCOUNT FOR YOU
$79.99
$49.99/year
only $4.16 per month
Continue
2 taps to start, super easy to cancel