Martin Fowler (ingeniero de software)

Desarrollador de software, autor y orador público estadounidense.

Martín Fowler
Fowler en 2015
Nacido( 18 de diciembre de 1963 )18 de diciembre de 1963 (60 años)
Walsall , Inglaterra, Reino Unido
EducaciónUniversidad College de Londres ( licenciatura , 1986) [1]
Ocupación(es)Desarrollador de software, autor, orador público.
EmpleadorPensamiento Funciona
Sitio webmartinfowler.com

Martin Fowler (18 de diciembre de 1963) es un desarrollador de software británico , [2] autor y orador público internacional sobre desarrollo de software, especializado en análisis y diseño orientado a objetos , UML , patrones y metodologías de desarrollo de software ágil , incluida la programación extrema .

Su libro Refactoring de 1999 popularizó la práctica de la refactorización de código . [3] En 2004 introdujo un nuevo patrón arquitectónico , llamado Presentation Model (PM). [4]

Biografía

Fowler nació y creció en Walsall , Inglaterra, donde asistió a la Queen Mary's Grammar School para su educación secundaria. Se graduó en el University College de Londres en 1986. En 1994, se mudó a los Estados Unidos, donde vive cerca de Boston , Massachusetts , en el suburbio de Melrose . [1]

Fowler comenzó a trabajar con software a principios de los años 1980. Después de graduarse de la universidad en 1986, comenzó a trabajar en el desarrollo de software para Coopers & Lybrand hasta 1991. [5] En 2000 se unió a ThoughtWorks , una empresa de consultoría e integración de sistemas, [1] donde fue científico jefe. [6]

Fowler ha escrito nueve libros sobre el tema del desarrollo de software. Es miembro de la Agile Alliance y ayudó a crear el Manifiesto para el Desarrollo Ágil de Software en 2001, junto con otros 16 signatarios. [7] Mantiene un bliki , una mezcla de blog y wiki . Popularizó el término Inyección de Dependencia como una forma de Inversión de Control . [8] [9]

Publicaciones

  • 1996. Patrones de análisis: modelos de objetos reutilizables . Addison-Wesley. ISBN  0-201-89542-0 .
  • 1997. UML Distilled: Una breve guía para el lenguaje de modelado de objetos estándar . Addison-Wesley. ISBN 978-0-201-32563-8 . 
  • 1999. Refactorización: mejora del diseño del código existente , con Kent Beck , John Brant, William Opdyke y Don Roberts (junio de 1999). Addison-Wesley. ISBN 0-201-48567-2 . 
  • 2000. Planificación de programación extrema . Con Kent Beck . Addison-Wesley. ISBN 0-201-71091-9 . 
  • 2002. Patrones de arquitectura de aplicaciones empresariales . Con David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee y Randy Stafford. Addison-Wesley. ISBN 0-321-12742-0 . 
  • 2010. Lenguajes específicos de dominio . Con Rebecca Parsons. Addison-Wesley. ISBN 978-0-321-71294-3 . 
  • 2012. NoSQL Distilled: Una breve guía para el mundo emergente de la persistencia políglota . Con Pramod Sadalage. Addison-Wesley. ISBN 978-0-321-82662-6 . 
  • 2013. Refactorización: Edición Ruby . Con Kent Beck , Shane Harvie y Jay Fields. Addison-Wesley. ISBN 978-0-321-98413-5 . 
  • 2018. Refactorización: mejora del diseño del código existente, segunda edición . Kent Beck y Martin Fowler. Addison-Wesley. ISBN 978-0-134-75759-9 . 

Lenguajes específicos de dominio

En su libro, Domain-specific language , Fowler analiza los lenguajes específicos de dominio , DSL. Se dice que los DSL se definen por ser lenguajes de programación componibles, con su enfoque en un dominio individual y con una expresividad limitada. [10] : 27  Se argumenta que los DSL pueden aumentar la productividad al eliminar el requisito de que el programador comprenda un lenguaje de programación completo, proporcionar un medio de comunicación con expertos en el dominio y separar la forma de ejecución de una tarea de la definición de una tarea en sí. [10] : 33  Estos beneficios se contrastan con el costo de aprender un nuevo lenguaje y construir las herramientas para este lenguaje, lo que aísla los resultados para diferentes lenguajes y las abstracciones utilizadas en los DSL no son adecuadas para una tarea. [10] : 39 

Fowler introduce el concepto de DSL interno (o incrustado ) y externo , siendo un DSL interno un DSL que es un subconjunto de otro lenguaje y puede ser ejecutado por las herramientas para este lenguaje externo. Ruby y Lisp se dan como ejemplos de lenguajes donde los DSL internos son comunes. También introduce la idea del Modelo Semántico que define la ejecución de un DSL. [10] : 14  Se presentan varios ejemplos de DSL, incluyendo graphviz , un lenguaje para especificar gráficos a ser renderizados; JMock, un framework de simulación de Java; CSS , un lenguaje para especificar elementos estilísticos de un sitio web; HQL , un mapeador relacional de objetos en Java ; XAML , un lenguaje usado para especificar y cambiar interfaces gráficas de usuario ; FIT, un lenguaje para expresar escenarios de prueba; y make , una herramienta para construir software [10] : 147 

El libro analiza la implementación de un DSL externo utilizando herramientas como analizadores sintácticos , analizadores léxicos , árboles de sintaxis abstracta y generación de código, lo que se conoce como "traducción basada en sintaxis" [10] : 219.  Esto contrasta con la "traducción basada en delimitadores", que se dice que es más simple pero menos poderosa. Aquí el lenguaje es lo suficientemente simple como para ser interpretado dividiéndolo en delimitadores y cambiando la lógica en función de las entradas individuales. [10] : 201 

Se discuten formas de implementar DSL internos, con atención a las llamadas de funciones anidadas, [10] : 357  secuencias de llamadas de funciones, [10] : 351  o encadenamiento de métodos [10] : 373  entre otros métodos.

Referencias

  1. ^ abc Martin Fowler en martinfowler.com. Consultado el 15 de noviembre de 2012.
  2. ^ "Acerca de Martin Fowler". martinfowler.com . Consultado el 1 de mayo de 2021 .
  3. ^ Stephane Faroult; Pascal L'Hermite (2008). Refactorización de aplicaciones SQL. O'Reilly Media. pág. 8. ISBN 978-0-596-55177-3 . 
  4. ^ Stephen Chin; Dean Iverson; Oswald Campesato; Paul Trani (2011). Pro Android Flash . Apress. pág. 300. ISBN 978-1-4302-3232-2 . 
  5. ^ James A. Highsmith (2002). Ecosistemas de desarrollo de software ágil . Addison-Wesley Professional. pág. 133. ISBN 978-0-201-76043-9 . 
  6. ^ Martin Fowler | ThoughtWorks. Consultado el 30 de marzo de 2015.
  7. ^ Manifiesto para el desarrollo ágil de software. Consultado el 10 de diciembre de 2012.
  8. ^ Kamil Piętak; Marek Kisiel-Dorohinicki (2013). "Marco basado en agentes que facilita la implementación basada en componentes de sistemas de inteligencia computacional distribuida". En Ngoc-Thanh Nguyen; Joanna Kołodziej; Tadeusz Burczyński et al. Transacciones sobre Inteligencia Colectiva Computacional X. Saltador. pag. 38. ISBN 978-3-642-38496-7 . 
  9. ^ Martin Fowler (2004) "Contenedores de inversión de control y el patrón de inyección de dependencia". Consultado el 15 de noviembre de 2012.
  10. ^ abcdefghij Fowler, Martin (2011). Lenguajes de dominio específico. Upper Saddle River, NJ: Addison-Wesley. ISBN 978-0-13-210754-9.OCLC 686709295  .
  • Sitio web oficial
  • Venners, Bill (9 de diciembre de 2002). "Una conversación con Martin Fowler". Artima . En seis partes.
Obtenido de "https://es.wikipedia.org/w/index.php?title=Martin_Fowler_(ingeniero_de_software)&oldid=1237127707"