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. [1] [2] La tendencia hacia métodos ágiles en la ingeniería de software es notable, [3] sin embargo, la necesidad de mejorar los estudios sobre el tema también es primordial. [4] [5] 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 los métodos de diseño de software no es nueva ni está en curso. [6] [7] [8] [9]
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 prácticas y pepitas de sabiduría (extracto de Gestión de lo inmanejable: reglas, herramientas y conocimientos para la gestión de personas y equipos de software [10] 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 ++ [11] (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)
Otro
- Davis 201 Principios de desarrollo de software [12]
- Don't Make Me Think (Principios de navegación intuitiva y diseño de información) [13]
- 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 [14]
- ¿Dónde está la teoría de la ingeniería de software? [15]
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) [16]
- 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 software y sistemas - Desarrollo de información para usuarios en un entorno ágil [17]
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.
- ^ 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.
- ^ 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 .
- ^ Dyba, 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.
- ^ 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.