El siguiente esquema se proporciona como una descripción general y una guía temática sobre ingeniería de software:
Ingeniería de software : aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software ; es decir, la aplicación de la ingeniería al software . [1]
El sistema de clasificación informática ACM es una ontología polijerárquica que organiza los temas del campo y se puede utilizar en aplicaciones web semánticas y como un sistema de clasificación estándar de facto para el campo. La sección principal "Software y su ingeniería" proporciona un esquema y una ontología para la ingeniería de software.
Aplicaciones de software
Los ingenieros de software crean software ( aplicaciones , sistemas operativos , software de sistema ) que la gente utiliza.
Las aplicaciones influyen en la ingeniería de software al presionar a los desarrolladores para que resuelvan los problemas de nuevas maneras. Por ejemplo, el software de consumo hace hincapié en el bajo coste, el software médico hace hincapié en la alta calidad y el software de comercio electrónico hace hincapié en el desarrollo rápido.
- Software empresarial
- Analítica
- La minería de datos está estrechamente relacionada con la base de datos.
- Sistemas de apoyo a la toma de decisiones
- Reservas de aerolíneas
- Bancario
- Cajeros automáticos
- Procesamiento de cheques
- Tarjetas de crédito
- Comercio
- Comercio
- Subastas (por ejemplo, eBay)
- Subastas inversas (adquisiciones)
- Lectores de códigos de barras
- Compiladores
- Comunicación
- Correo electrónico
- Mensajeros instantáneos
- Voz sobre IP
- Calendarios : programación y coordinación
- Gestores de contactos
- Gráficos de computadora
- Animación
- Efectos especiales para vídeo y cine.
- Edición
- Posprocesamiento
- Criptografía
- Bases de datos , soporte para casi todos los campos
- Sistemas integrados Tanto los ingenieros de software como los ingenieros tradicionales escriben sistemas de control de software para productos integrados.
- Software para automoción
- Software de aviónica
- Software de calefacción, ventilación y aire acondicionado ( HVAC )
- Software de dispositivos médicos
- Telefonía
- Telemetría
- Ingeniería Todas las ramas tradicionales de la ingeniería utilizan software de forma extensiva. Los ingenieros utilizan hojas de cálculo, más de lo que alguna vez utilizaron calculadoras. Los ingenieros utilizan herramientas de software personalizadas para diseñar, analizar y simular sus propios proyectos, como puentes y líneas eléctricas. Estos proyectos se parecen al software en muchos aspectos, porque el trabajo existe como documentos electrónicos y pasa por fases de análisis, diseño , implementación y prueba. Las herramientas de software para ingenieros utilizan los principios de la informática; así como los principios del cálculo, la física y la química.
- Archivo
- Finanzas
- Juegos
- Los sistemas de información dan soporte a casi todos los campos.
- Gestión de datos de laboratorio en LIS
- Gestión MIS de datos financieros y de personal
- Logística
- Fabricación
- Música
- Gestión de red
- Redes e Internet
- Suites de oficina
- Sistemas operativos
- Robótica
- Procesamiento de señales , codificación e interpretación de señales.
- Procesamiento de imágenes , codificación e interpretación de información visual.
- Procesamiento del habla
- Reconocimiento de texto
- Reconocimiento de escritura a mano
- Simulación , compatible con casi todos los campos.
- Ingeniería : Una simulación de software puede ser más barata de construir y más flexible para cambiar que un modelo de ingeniería físico.
- Ciencias
- Ciencias
- Control de tráfico
- Capacitación
- Perforar
- Simulación
- Pruebas
- Visualización , compatible con casi todos los campos.
- Votación
- World Wide Web
Temas de ingeniería de software
Paradigma de programación, basado en una tecnología de lenguaje de programación
- Programación orientada a objetos
- Programación orientada a aspectos
- Descomposición funcional
- Programación estructurada
- Programación basada en reglas
Bases de datos
Interfaces gráficas de usuario
Herramientas de programación
- Gestión de configuración y gestión de código fuente
- CVS
- Subversión
- Git
- Mercurial
- RCS
- Arquitectura GNU
- Sincronizador de LibreSource
- Servidor de Team Foundation
- Servicios de equipo de Visual Studio
- Herramientas de construcción
- Hacer
- Rastrillo
- Cábala
- Hormiga
- CADETES
- Nante
- Experto
- Constructor final
- Gradual
- Servidor de Team Foundation
- Servicios de equipo de Visual Studio
- Visual Build Pro
- Editores
- Herramientas de creación de analizadores
- Herramientas de análisis de código estático
Bibliotecas
Lenguajes de diseño
Patrones, documentan muchas técnicas comunes de programación y gestión de proyectos.
Procesos y metodologías
- Ágil
- De peso pesado
- Sala limpia
- ISO/IEC 12207 : procesos del ciclo de vida del software
- ISO 9000 y ISO 9001
- Modelos de procesos
- Metamodelos
Plataformas
Una plataforma combina hardware informático y un sistema operativo. A medida que las plataformas se vuelven más potentes y menos costosas, las aplicaciones y herramientas se vuelven más ampliamente disponibles.
- ELABORAR CERVEZA
- Supercomputadoras Cray
- Minicomputadoras DEC
- Mainframes de IBM
- PC con Linux
- PC con sistema operativo Mac OS y macOS clásico
- Microsoft .NET
- PDA Palm
- Sistema operativo Sun Microsystems Solaris
- PC con Windows ( Wintel )
- Sistema operativo Symbian
Otras prácticas
- Comunicación
- Ingeniería de métodos
- Programación en pareja
- Ingeniería de rendimiento
- Productividad de programación
- Refactorización
- Inspecciones de software / Revisiones de código
- Reutilización de software
- Integración de sistemas
- Trabajo en equipo
Otras herramientas
Temas de informática
Los ingenieros de software expertos conocen mucho de informática , incluido lo que es posible e imposible y lo que es fácil y difícil para el software.
- Algoritmos , métodos bien definidos para resolver problemas específicos.
- Teoría del compilador
- Estructuras de datos , métodos bien definidos para almacenar y recuperar datos.
- Computabilidad , algunos problemas no se pueden resolver en absoluto
- Complejidad , algunos problemas son solucionables en principio, pero irresolubles en la práctica.
- Métodos formales
- Sistemas adaptativos
Temas de matemáticas
Las matemáticas discretas son una base clave de la ingeniería de software .
- Representación numérica
- Conjunto (informática)
- Bolsas
- Gráficos
- Lógica
- Inducción
- Combinatoria
Otro
Fases del ciclo de vida
- Fase del ciclo de vida del desarrollo
- Recopilación y análisis de requisitos
- Arquitectura de software
- Programación de computadoras
- Prueba , detecta errores
- Garantía de calidad , asegura el cumplimiento del proceso.
- Fase del ciclo de vida del producto y ciclo de vida del proyecto
- Comienzo
- Primer desarrollo
- Lanzamiento importante
- Lanzamiento menor
- Versión de corrección de errores
- Mantenimiento
- Obsolescencia
- Etapa de desarrollo de lanzamiento , cerca del final de un ciclo de lanzamiento.
- Ciclo de vida del desarrollo de software
Entregables
Para muchos proyectos de ingeniería de software es necesario desarrollar entregables. Los ingenieros de software rara vez elaboran todos estos entregables por sí mismos. Por lo general, cooperan con los escritores, capacitadores, instaladores, vendedores, personal de soporte técnico y otros que elaboran muchos de estos entregables.
- Software de aplicación: el software
- Base de datos : esquemas y datos.
- Documentación , en línea y/o impresa, preguntas frecuentes , Léame , notas de la versión , ayuda , para cada función
- Política de Administración y Mantenimiento , qué se debe respaldar, revisar, configurar, ...
- Instaladores
- Migración
- Actualización desde instalaciones anteriores
- Actualización de instalaciones de la competencia
- Materiales de formación , para cada rol
- Información de soporte para grupos de soporte informático.
- Materiales
de marketing y ventas
- Libros blancos , explican las tecnologías utilizadas en las aplicaciones.
Roles empresariales
- Operaciones
- Usuarios
- Administradores
- Gerentes
- Compradores
- Desarrollo
- Negocio
- Consultoría - personalización e instalación de aplicaciones
- Ventas
- Marketing
- Legal : contratos, derechos de propiedad intelectual
- Privacidad e ingeniería de privacidad
- Soporte : ayudamos a los clientes a utilizar las aplicaciones
- Personal : contratación y capacitación de personal calificado
- Finanzas : financiación de nuevos desarrollos
- Academia
Temas de gestión
- Liderazgo
- Entrenamiento
- Comunicación
- Escuchando
- Motivación
- Visión , los SE son buenos en esto
- Ejemplo, todo el mundo sigue mejor un buen ejemplo.
- Gestión de recursos humanos
- Contratación , incorporación de personas a una organización.
- Capacitación
- Evaluación
- Gestión de proyectos
- Establecimiento de metas
- Interacción con el cliente (Replanteamiento)
- Estimación
- Gestión de riesgos
- Gestión del cambio
- Gestión de procesos
Temas de negocios
- Programas de calidad
Profesión de ingeniería de software
- Demografía de la ingeniería de software
- Economía de la ingeniería de software
- Certificado de aptitud física y mental
- Historia de la ingeniería de software
- Profesionalismo en ingeniería de software
- Legal
Historia de la ingeniería de software
Historia de la ingeniería de software
Pioneros
Muchas personas hicieron contribuciones importantes a las tecnologías, prácticas o aplicaciones de SE.
- John Backus : Fortran , primer compilador optimizador, BNF
- Victor Basili : Fábrica de experiencias.
- FL Bauer : Principio de pila , popularizó el término Ingeniería de software
- Kent Beck : Refactorización , programación extrema , programación en pares , desarrollo basado en pruebas .
- Tim Berners-Lee : La red mundial
- Barry Boehm : Economía SE , COCOMO , Modelo espiral .
- Grady Booch : Diseño orientado a objetos , UML .
- Fred Brooks : Managed System 360 y OS 360. Escribió The Mythical Man-Month y No Silver Bullet .
- Larry Constantine : Diseño estructurado , acoplamiento , cohesión
- Edsger Dijkstra : escribió Notas sobre programación estructurada , una disciplina de programación y Go To Statement considerado dañino , algoritmos , métodos formales , pedagogía .
- Michael Fagan : Inspección de software .
- Tom Gilb : Métricas de software , Inspección de software , Entrega evolutiva ("Evo") .
- Adele Goldstine : escribió el Manual del operador de ENIAC , la primera computadora digital electrónica, y entrenó a algunas de las primeras computadoras humanas.
- Lois Haibt : FORTRAN , escribió el primer analizador
- Margaret Hamilton : acuñó el término "ingeniería de software" y desarrolló el lenguaje de sistemas universal.
- Mary Jean Harrold : Pruebas de regresión , localización de fallas
- Grace Hopper : El primer compilador (Mark 1), COBOL , Nanoseconds .
- Watts Humphrey : Modelo de madurez de capacidad , proceso de software personal , miembro del Instituto de Ingeniería de Software .
- Jean Ichbiah : Ada
- Michael A. Jackson : Programación estructurada de Jackson , Desarrollo de sistemas de Jackson
- Bill Joy : Berkeley Unix , vi , Java .
- Alan Kay : Charla informal
- Brian Kernighan : C y Unix.
- Donald Knuth : escribió El arte de la programación informática , TeX , algoritmos , programación alfabetizada
- Nancy Leveson : Seguridad del sistema
- Bertrand Meyer : Diseño por contrato , lenguaje de programación Eiffel .
- Peter G. Neumann : Resumen de RIESGOS , ACM Sigsoft.
- David Parnas : Diseño de módulos, responsabilidad social, profesionalismo.
- Jef Raskin : desarrolló la GUI original de Macintosh y fue autor de The Humane Interface.
- Dennis Ritchie : C y Unix .
- Winston W. Royce : Modelo de cascada .
- Mary Shaw : Arquitectura de software .
- Richard Stallman : Fundador de la Free Software Foundation
- Linus Torvalds : kernel Linux , desarrollo de software libre / código abierto .
- Will Tracz: Reutilización, Notas de ingeniería de software de ACM.
- Gerald Weinberg : escribió La psicología de la programación informática .
- Elaine Weyuker : Pruebas de software
- Jeannette Wing : Especificaciones formales .
- Ed Yourdon : Programación estructurada , escribió La decadencia y caída del programador estadounidense .
Véase también
Publicaciones destacadas
- About Face: The Essentials of User Interface Design de Alan Cooper , sobre el diseño de interfaces de usuario. ISBN 0-7645-2641-3
- El modelo de madurez de capacidades de Watts Humphrey . Escrito para el Instituto de Ingeniería de Software , con énfasis en la gestión y el proceso. (Véase Managing the Software Process ISBN 0-201-18095-2 )
- La Catedral y el Bazar de Eric Raymond sobre el desarrollo de código abierto.
- La decadencia y caída del programador estadounidense de Ed Yourdon predice el fin del desarrollo de software en los EE. UU. ISBN 0-13-191958-X
- Patrones de diseño de Erich Gamma , Richard Helm , Ralph Johnson y John Vlissides . ISBN 0-201-63361-2
- Explicación de la programación extrema por Kent Beck ISBN 0-321-27865-8
- "Ir a la declaración considerada perjudicial" de Edsger Dijkstra .
- "Internet, innovación y código abierto: actores en la red" — Artículo del primer lunes de Ilkka Tuomi (2000) fuente
- El mítico mes del hombre , de Fred Brooks , sobre gestión de proyectos. ISBN 0-201-83595-9
- Análisis y diseño orientado a objetos de Grady Booch . ISBN 0-8053-5340-2
- Peopleware de Tom DeMarco y Tim Lister. ISBN 0-932633-43-9
- El ingeniero pragmático versus el diseñador científico por EW Dijkstra [1]
- Principios de gestión de ingeniería de software de Tom Gilb sobre procesos evolutivos. ISBN 0-201-19246-2
- La psicología de la programación informática, de Gerald Weinberg . Escrito como consultor independiente, en parte sobre sus años en IBM. ISBN 0-932633-42-0
- Refactorización: mejora del diseño del código existente , de Martin Fowler , Kent Beck , John Brant, William Opdyke y Don Roberts. ISBN 0-201-48567-2
- El programador pragmático: de oficial a maestro , de Andrew Hunt y David Thomas . ISBN 0-201-61622-X
- Conjunto de conocimientos sobre ingeniería de software (SWEBOK) ISO/IEC TR 19759
Campos relacionados
- Ciencias de la Computación
- Ingeniería de la información
- Tecnologías de la información
- Ingeniería tradicional
- Ingeniería de software
- Artes y Ciencias
- Software de aplicación
- Programación
- Ingeniería de sistemas
Véase también
- Índice de artículos sobre ingeniería de software
- Ingeniería de software basada en búsquedas
- SWEBOK Cuerpo de conocimientos de ingeniería de software
- Plan de estudios de CCSE Computing para ingeniería de software
- Términos informáticos etimología , los orígenes de los términos informáticos
- Complejidad o escalabilidad
- Síndrome del segundo sistema
- mejoramiento
- Depósito de código fuente
- Problema de interacción de características
- Certificación (ingeniería de software)
- Desastres de ingeniería#Fallo debido al software
- Esquema del desarrollo de software
- Lista de filosofías de desarrollo de software
Referencias
- ^ Bourque, Pierre; Dupuis, Robert, eds. (2004). Guía del conjunto de conocimientos de ingeniería de software - Versión 2004. IEEE Computer Society . p. 1. ISBN 0-7695-2330-7.
Enlaces externos
- Sistema de clasificación informática de ACM
- Guía del cuerpo de conocimientos de ingeniería de software (SWEBOK)
- Organizaciones profesionales
- Sociedad Británica de Computación
- Asociación de Maquinaria Computacional
- Sociedad de Computación IEEE
- Profesionalismo
- Código de ética de SE
- Licencias profesionales en Texas
- Educación
- Plan de estudios de pregrado del CCSE
- Normas
- Normas de ingeniería de software del IEEE
- Grupo de trabajo de ingeniería de Internet
- YO ASI
- Organizaciones gubernamentales
- Instituto Europeo del Software
- Instituto de Ingeniería de Software
- Ágil
- Organización para promover el desarrollo de software ágil
- Desarrollo basado en pruebas
- Programación extrema
- Otras organizaciones
- Comunidad en línea para ingenieros de software
- Sociedad de ingeniería de software
- Demografía
- Oficina de Estadísticas Laborales de EE. UU. sobre SE
- Encuestas
- Página de David Redmiles del sitio de la Universidad de California
- Otro
- Texto completo en PDF de la conferencia de la OTAN en Garmisch
- Riesgos informáticos La columna de riesgos de Peter G. Neumann .