
Software Essentials Design and Construction
Adair Dingle
- Editorial
- CRC Press
- Año
- 2014
- Páginas
- ~436
- Nivel
- Básico
De qué trata
Obra galardonada con el premio Alpha Sigma Nu Book Award 2015 en la que Adair Dingle disecciona los fundamentos conceptuales de la construcción y el diseño de software para explicar cómo las decisiones a bajo nivel determinan la mantenibilidad de un sistema a largo plazo. Está concebida para desarrolladores principiantes en fase de transición hacia un nivel intermedio, así como para estudiantes universitarios que ya saben programar en lenguajes estructurados u orientados a objetos pero necesitan entender qué hace que un código sea duradero, modular y extensible. Es necesario contar con conocimientos básicos de sintaxis en C++ o C#.
El temario prescinde de dependencias efímeras de librerías para centrarse en los cimientos del software: flujo de control, gestión de memoria (distinción entre pila y montón, semántica de punteros y referencias, prevención de fugas de memoria y costo del recolector de basura), diseño de tipos abstractos de datos (ADTs), encapsulamiento y modelado de comportamiento dinámico. Profundiza en el diseño orientado a objetos (OOD) analizando sus costos y beneficios, comparando minuciosamente mecanismos clave como composición versus herencia, polimorfismo, sobrecarga y reemplazo de operadores y métodos, así como estrategias para desacoplar partes mutables de componentes estables y predecibles.
Organizado en cuatro secciones temáticas (construcción, fundamentos, diseño y durabilidad del software), el texto ejercita el pensamiento crítico mediante análisis comparativo de fragmentos de código en C++ y C#, preguntas de evaluación conceptual y un glosario de referencia con más de doscientos términos clave de la disciplina. Lo más valioso es su capacidad para advertir los riesgos ocultos del diseño apresurado y enseñar a sopesar compensaciones técnicas (trade-offs) entre eficiencia y legibilidad; no pretende ser un tutorial para crear aplicaciones completas de uso inmediato ni aborda tecnologías web, sino que se perfila como un estudio profundo sobre artesanía y longevidad del software.
- Construcción de software
- Gestión de memoria
- Tipos abstractos de datos (ADTs)
- Diseño orientado a objetos (OOD)
- Composición vs. Herencia
- Polimorfismo
- C++
- C#
- Mantenibilidad de software
- Durabilidad y corrección de software
¿Cómo enseña?
Teoría + práctica
- ✓ Incluye ejercicios
- ✗ Sin proyectos

