Lista de filosofías de desarrollo de software - List of software development philosophies
Desarrollo de software |
---|
Esta es una lista de enfoques, estilos, metodologías, filosofías en el desarrollo y la ingeniería de software. También contiene paradigmas de programación , metodologías de desarrollo de software , procesos de desarrollo de software , y las prácticas individuales, principios y leyes.
Algunos de los métodos mencionados son más relevantes para un campo específico que otro, como la automoción o la aeroespacial. La tendencia hacia métodos ágiles en la ingeniería de software es notable, sin embargo, la necesidad de mejorar los estudios sobre el tema también es primordial. También tenga en cuenta que algunos de los métodos enumerados pueden ser más nuevos o más antiguos o aún en uso o desactualizados, y la investigación sobre métodos de diseño de software no es nueva ni está en curso.
Metodologías, lineamientos, estrategias de desarrollo de software
Estilos de programación a gran escala
- Desarrollo impulsado por el comportamiento
- Desarrollo impulsado por el diseño
- Diseño impulsado por dominios
- Seguro por diseño
- Desarrollo impulsado por pruebas
- Desarrollo impulsado por datos
- Diseño orientado a datos
Sistemas integrales
Reglas generales, leyes, pautas y principios
- 300 reglas generales y pepitas de sabiduría (extracto de Manejo de lo inmanejable: reglas, herramientas y conocimientos para administrar personas y equipos de software por Mickey W. Mantle, Ron Lichty)
- La 42 última pregunta de Karpov sobre programación, refactorización y todo
- Gran bola de barro
- Pautas básicas de C ++ (Stroustrup / Sutter) P1 - P13 Reglas de filosofía
- Separación entre comandos y consultas (CQS)
- Codificación de vaquero
- Haz lo que quiero decir (DWIM)
- No te repitas (SECO)
- Programación sin ego
- Fallar rapido
- Ley de gall
- Si no está roto, no lo arregles
- Principio KISS
- Ley de Deméter , también conocida como el principio de conocimiento mínimo.
- Ley de conservación de la complejidad , también conocida como Ley de Tesler.
- Leyes de Lehman de la evolución del software
- Minimalismo (informática)
- Regla del noventa y noventa
- Principio abierto-cerrado
- Principio de Pareto
- Ley de Parkinson
- Principio del menor asombro (POLA)
- Libertad anticipada, la liberación a menudo
- Principio de robustez , también conocido como ley de Postel.
- Regla de menor poder
- Separación de mecanismo y política
- Principio de acoplamiento suelto de servicio
- Fuente única de verdad (SSOT)
- Versión única de la verdad (SVOT)
- SOLID (diseño orientado a objetos)
- Hay más de una forma de hacerlo
- Principio de acceso uniforme
- Filosofía Unix
- Lo peor es mejor
- No lo vas a necesitar (YAGNI)
- Patrones de software de asignación de responsabilidad general (GRASP)
Otro
- Davis 201 Principios de desarrollo de software
- Don't Make Me Think (Principios de navegación intuitiva y diseño de información)
- El arte de la programación informática (obra maestra de la informática general de Donald E. Knuth )
- The Cathedral and the Bazaar : libro que compara el software de código abierto de arriba hacia abajo y el de abajo hacia arriba
- La filosofía de la informática
- ¿Dónde está la teoría de la ingeniería de software?
Paradigmas de programación
- Programación orientada a agentes
- Programación orientada a aspectos (AOP)
- Convención sobre configuración
- Ingeniería de software basada en componentes
- Programación funcional (FP)
- Diseño jerárquico orientado a objetos (HOOD)
- Programación alfabetizada
- Programación lógica
- Programación modular
- Programación orientada a objetos (OOP)
- Programación procedimental
- Programación reactiva
Metodologías de desarrollo de software
- Proceso unificado ágil (AUP)
- Metodología de diseño construccionista (MDL)
- Método de desarrollo de sistemas dinámicos (DSDM)
- Programación extrema (XP)
- Desarrollo iterativo e incremental
- Kanban
- Desarrollo de software esbelto
- Ingeniería de sistemas basada en modelos (MBSE)
- Proceso unificado abierto
- Programación en pareja
- Desarrollo rápido de aplicaciones (RAD)
- Proceso unificado racional (RUP)
- Melé
- Método de diseño y análisis de sistemas estructurados (SSADM)
- Proceso unificado (ARRIBA)
Procesos de desarrollo de software
- Desarrollo impulsado por Active-Admin (AADD)
- Desarrollo impulsado por el comportamiento (BDD)
- Desarrollo impulsado por errores (BgDD)
- Desarrollo impulsado por la configuración (CDD)
- Desarrollo impulsado por el diseño (D3)
- Diseño controlado por dominio (DDD)
- Desarrollo basado en funciones (FDD)
- Desarrollo impulsado por pruebas (TDD)
- Diseño centrado en el usuario (UCD) ( Desarrollo impulsado por el usuario (UDD))
- Diseño impulsado por el valor (VDD)
- Revisión de software
- Aseguramiento de la calidad del software
Ver también
- Anti-patrón
- Convenciones de codificación
- Patrón de diseño
- Paradigma de programación
- Metodología de desarrollo de software
- Proceso de desarrollo de software
- Esquema de la informática
- Esquema de la ingeniería de software
- Esquema de la ingeniería informática
- Esquema de la programación informática
- Categoría: Principios de programación
Otras lecturas
- ISO / IEC / IEEE 26515: 2018 (E) - Norma internacional ISO / IEC / IEEE - Ingeniería de sistemas y software - Desarrollo de información para usuarios en un entorno ágil
Otros materiales, libros, artículos, etc.
- Don't Make Me Think (libro de Steve Krug sobre la interacción humana con la computadora y la usabilidad web )
Referencias
- ^ Gruszczynski, B. (mayo de 2006). "Una descripción general del estado actual de la ingeniería de software en la electrónica automotriz integrada" . Conferencia internacional IEEE de 2006 sobre tecnología electrónica y de la información : 377–381. doi : 10.1109 / EIT.2006.252190 . ISBN 0-7803-9592-1. S2CID 34164454 .
- ^ Patel, BK; Litchfield, V .; Tamanaha, D .; Davis, A. (febrero de 1991). "Metodologías de sistemas / software en tiempo real para grandes sistemas aeroespaciales" . Compendio de la conferencia de aplicaciones aeroespaciales de IEEE de 1991 : 2 / 1–2 / 9. doi : 10.1109 / AERO.1991.154537 . ISBN 0-87942-686-1. S2CID 151614328 .
- ^ Yau, Stephen S; Jia, Xiaoping; Bae, Doo-Hwan (1 de mayo de 1992). "Métodos de diseño de software para sistemas informáticos distribuidos" . Comunicaciones informáticas . Aspectos de software de las tendencias futuras en sistemas distribuidos. 15 (4): 213–224. doi : 10.1016 / 0140-3664 (92) 90104-M . ISSN 0140-3664 .
- ↑ Stavru, Stavros (1 de agosto de 2014). "Un examen crítico de encuestas industriales recientes sobre el uso de métodos ágiles" . Revista de sistemas y software . 94 : 87–97. doi : 10.1016 / j.jss.2014.03.041 . ISSN 0164-1212 .
- ^ Dybå, Tore; Dingsøyr, Torgeir (1 de agosto de 2008). "Estudios empíricos de desarrollo de software ágil: una revisión sistemática" . Tecnología de la información y el software . 50 (9): 833–859. doi : 10.1016 / j.infsof.2008.01.006 . ISSN 0950-5849 .
- ^ Taylor, P. (noviembre de 2011). "Pensamiento de diseñador: lo que la metodología de software puede aprender de la teoría del diseño" . Proceedings International Conference on Software Methods and Tools. SMT 2000 : 107-116. doi : 10.1109 / SWMT.2000.890426 . ISBN 978-0-7695-0903-7. S2CID 110041968 .
- ^ Yau, Stephen S; Jia, Xiaoping; Bae, Doo-Hwan (1 de mayo de 1992). "Métodos de diseño de software para sistemas informáticos distribuidos" . Comunicaciones informáticas . Aspectos de software de las tendencias futuras en sistemas distribuidos. 15 (4): 213–224. doi : 10.1016 / 0140-3664 (92) 90104-M . ISSN 0140-3664 .
- ↑ Gomaa, Hassan (1 de mayo de 1994). "Métodos de diseño de software para el diseño de sistemas en tiempo real a gran escala" . Revista de sistemas y software . 25 (2): 127-146. doi : 10.1016 / 0164-1212 (94) 90002-7 . ISSN 0164-1212 .
- ^ Budgen, David (julio de 1995). " ' Diseñar modelos' a partir de métodos de diseño de software" . Estudios de diseño . 16 (3): 293–325. doi : 10.1016 / 0142-694X (95) 00001-8 . ISSN 0142-694X .
- ^ Manto, Mickey W. (2020). Gestionar lo inmanejable: reglas, herramientas y conocimientos para gestionar personas y equipos de software . Ron Lichty (2ª ed.). Bostón. ISBN 978-0-13-566763-7. OCLC 1137802633 .
- ^ "Directrices básicas de C ++" . isocpp.github.io . Consultado el 11 de abril de 2021 .
- ^ Davis, Alan Mark. (1995). 201 principios de desarrollo de software . Nueva York: McGraw-Hill. ISBN 0-07-015840-1. OCLC 31814837 .
- ^ Krug, Steve (2014). No me hagas pensar, revisado: un enfoque de sentido común para la usabilidad web . Bayle, Elisabeth ,, Straiger, Aren ,, Matcho, Mark (Tercera ed.). [San Francisco, California]. ISBN 978-0-321-96551-6. OCLC 859556499 .
- ^ Turner, Raymond; Angius, Nicola (2020), "The Philosophy of Computer Science" , en Zalta, Edward N. (ed.), The Stanford Encyclopedia of Philosophy (edición de primavera de 2020), Metaphysics Research Lab, Stanford University , consultado el 2020-09- 01
- ^ Johnson, Pontus; Ekstedt, Mathias; Jacobson, Ivar (2012). "¿Dónde está la teoría de la ingeniería de software?". Software IEEE . 29 (5): 96. doi : 10.1109 / MS.2012.127 . ISSN 0740-7459 . S2CID 38239662 .
- ^ Aslett, MJ (diciembre de 1991). "Una descripción general del método HOOD" . Coloquio de la IEE de 1991 sobre una introducción a las metodologías de diseño de software (Ref. No: 1991/181) : 5 / 1–5 / 4.
- ^ Norma internacional ISO / IEC / IEEE - Ingeniería de sistemas y software - Desarrollo de información para usuarios en un entorno ágil . Iso / Iec / IEEE 26515: 2018 (E) . Diciembre de 2018. págs. 1–32. doi : 10.1109 / IEEESTD.2018.8584455 . ISBN 978-1-5044-5297-7.