Esquema de la ingeniería de software

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Panorama general y guía tópica de la ingeniería de software

El siguiente esquema se proporciona como una descripción general y una guía temática de la 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; esa es la aplicación de la ingeniería al software.

El sistema de clasificación informática ACM es una ontología polijerárquica que organiza los temas del campo y puede usarse 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 enfatiza el bajo costo, el software médico enfatiza la alta calidad y el software de comercio por Internet enfatiza el rápido desarrollo.

  • Software de negocios
    • Software de contabilidad
  • Análisis
    • Minería de datos estrechamente relacionada con la base de datos
    • Sistemas de apoyo a las decisiones
  • Reservas aéreas
  • Banca
    • Máquinas de cajero automático
    • Procesamiento de Cheque
    • Tarjetas de crédito
  • Comercio
    • Comercio
    • Auctions (e.g. eBay)
    • subastas inversas (procuración)
    • Escáneres de código de barras
  • Compiladores
    • Parsers
    • Optimización de compilador
    • Interpreters
    • Linkers
    • Cargadores
  • Comunicación
    • E-mail
    • Mensajeros instantáneos
    • VOIP
    • Calendarios: programación y coordinación
    • Administradores de contactos
  • Gráficos informáticos
    • Animación
    • Efectos especiales para vídeo y película
    • Edición
    • Puestos de procesamiento
  • Cryptography
  • Bases de datos, soporte casi todos los campos
  • Sistemas integrados Tanto los ingenieros de software como los ingenieros tradicionales escriben sistemas de control de software para productos embebidos.
    • Software automotriz
    • Software Avionics
    • Calefacción de ventilación y aire acondicionado (HVAC) software
    • Software de dispositivos médicos
    • Telefonía
    • Telemetría
  • Ingeniería Todas las ramas de ingeniería tradicionales usan software extensamente. Los ingenieros usan hojas de cálculo, más de lo que han utilizado calculadoras. Los ingenieros utilizan herramientas de software personalizadas para diseñar, analizar y simular sus propios proyectos, como puentes y líneas de energía. Estos proyectos se asemejan al software en muchos aspectos, porque el trabajo existe como documentos electrónicos y pasa por fases de análisis, diseño, ejecución y pruebas. Las herramientas de software para los ingenieros utilizan los principios de la informática, así como los principios de cálculo, física y química.
    • Diseño asistido por computadora (CAD)
    • Automatización electrónica de diseño (EDA)
    • Análisis numérico
    • Simulación
  • Archivo
    • FTP
    • Intercambio de archivos
    • Sincronización de archivos
  • Finanzas
    • Mercado de bonos
    • Futures market
    • Mercado de valores
  • Juegos
    • Poker
    • Multiuser Dungeons
    • Videojuegos
  • Sistemas de información, apoyo casi todos los campos
    • LIS Gestión de datos de laboratorio
    • MIS Gestión de datos financieros y de personal
  • Logística
    • Gestión de la cadena de suministro
  • Fabricación
    • Computer Aided Manufacturing (CAM)
    • Distributed Control Systems (DCS)
  • Música
    • Secuenciadores de música
    • Efectos de sonido
    • síntesis musical
  • Network Management
    • Sistema de gestión de redes
    • Element Management System
    • Sistema de Apoyo a las Operaciones
    • Business Support Systems
  • Redes e Internet
    • Sistema de nombres de dominio
    • Protocolos
    • Routers
  • Suites de oficina
    • Procesadores de palabras
    • Hojas de cálculo
    • Presentaciones
  • Sistemas operativos
    • Embedded
    • Gráficos
    • Multitarea
    • Hora real
  • Robot
  • 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 de voz
    • Reconocimiento de textos
    • Reconocimiento de escritura
  • Simulación, soporta casi todos los campos.
    • Ingeniería, Una simulación de software puede ser más barato para construir y más flexible para cambiar que un modelo de ingeniería física.
    • Ciencias
  • Ciencias
    • Genómica
  • Control de tráfico
    • Control del tráfico aéreo
    • Control de tráfico de buques
    • Control de tráfico por carretera
  • Capacitación
    • Drill
    • Simulación
    • Pruebas
  • Visualización, soporta casi todos los campos
    • Arquitectura
    • Ingeniería
    • Ciencias
  • Voto
  • World Wide Web
    • Navegadores
    • Servidores

Temas de ingeniería de software

Idiomas de programación
AdaAPLB
COBOLPascalCC++
C#ClojureLisp comúnD
ColdFusionDelphiDylanEiffel
ErlangFortranF#Groovy
JavaLassoMLOCaml
PerlPHPPL/SQLProlog
Vamos.RustSwiftJavaScript
HaskellPythonRubyScala
PlanSmalltalkTclT-SQL
VerilogVHDLVisual BasicVisual Basic.NET
Lenguaje de la Asamblea • • Lenguaje de la Escritura • Lista de lenguajes de programación

Paradigma de programación, basado en una tecnología de lenguaje de programación

  • Programación orientada hacia los objetos
  • Programación orientada al respeto
  • Descomposición funcional
  • Programación estructurada
  • Programación basada en las normas

Bases de datos

  • Hierarchical
  • Objeto
  • Relación
  • SQL/XML
  • SQL
  • MYSQL
  • NoSQL

Interfaces gráficas de usuario

  • GTK+ GIMP Toolkit
  • wxWidgets
  • Ultimate++
  • Qt toolkit
  • FLTK

Herramientas de programación

  • Gestión de configuración y gestión de código fuente
    • CVS
    • Subversion
    • Git
    • Mercurial
    • RCS
    • GNU Arch
    • Sincronizador LibreSource
    • Team Foundation Server
    • Servicios Visual Studio Team
  • Herramientas de construcción
    • Hacer
    • Rake
    • Cabal
    • Ant
    • CADES
    • Nant
    • Maven
    • Constructor final
    • Gradle
    • Team Foundation Server
    • Servicios Visual Studio Team
    • Visual Build Pro
  • Editores
    • Ambientes de desarrollo integrados (IDEs)
    • Editores de texto
    • Procesadores de palabras
  • Herramientas de creación de pares
    • Yacc/Bison
  • Herramientas de análisis de códigos estáticos

Bibliotecas

  • Ingeniería de software basada en componentes

Lenguajes de diseño

  • Lenguaje de modelado unificado (UML)

Patrones, documentan muchas técnicas comunes de programación y gestión de proyectos

  • Antipatterns
  • Patrones

Procesos y metodologías

  • Agile
    • Desarrollo de software ágil
    • Programación extrema
    • Desarrollo de software magra
    • Desarrollo rápido de aplicaciones (RAD)
    • Proceso unificado racional
    • Scrum
  • Peso pesado
    • Limpieza
    • ISO/IEC 12207 - procesos de ciclo de vida del software
    • ISO 9000 e ISO 9001
  • Modelos de proceso
    • CMM y CMMI/SCAMPI
    • ISO 15504 (SPICE)
  • Metamodelos
    • ISO/IEC 24744
    • SPEM

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 aumentan su disponibilidad.

  • BREW
  • Supercomputadores locos
  • Minicomputadoras DEC
  • IBM mainframes
  • PCs Linux
  • Sistema operativo Mac clásico y PC macOS
  • Microsoft.NET
  • Palm PDAs
  • Microsistemas solares Solaris
  • Windows PCs (Wintel)
  • Symbian OS

Otras prácticas

  • Comunicación
  • Ingeniería de métodos
  • Programación de pares
  • Performance Engineering
  • Productividad de programación
  • Refactoring
  • Inspecciones de software/Exámenes de código
  • Reutilización del software
  • Integración de sistemas
  • Trabajos en equipo

Otras herramientas

  • Mesas de decisión
  • Característica
  • Historias de usuario
  • Casos de uso

Temas de informática

Los ingenieros de software cualificados saben 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.
    • Búsqueda
    • Clasificación
    • Parsing
    • Análisis numérico
  • Teoría del compilador
    • Yacc/Bison
  • Estructuras de datos, métodos bien definidos para almacenar y recuperar datos.
    • Listas
    • Árboles
    • Mesas de baño
  • Computabilidad, algunos problemas no se pueden resolver en absoluto
    • Lista de problemas no resueltos en la ciencia informática
    • Problema de suspensión
  • Complejidad, algunos problemas son solvables en principio, pero insolvables en la práctica
    • NP completeness
    • Teoría de complejidad computacional
  • Métodos formales
    • Prueba de corrección
    • Síntesis del programa
  • Adaptive Systems
    • Redes neuronales
    • Algoritmos evolutivos

Temas de matemáticas

Las matemáticas discretas son una base clave de la ingeniería de software.

  • Número de representación
  • Conjunto (ciencia de ordenador)
  • Bolsas
  • Gráficos
    • Secuencias
    • Árboles
    • Gráfico (estructura de datos)
  • Logic
    • Deducción
    • Lógica de primer orden
    • Lógica de orden superior
    • Lógica combinada
  • Inducción
  • Combinatoria

Otro

  • Conocimiento de dominio
  • Estadísticas
  • Teoría de la decisión
  • Tipo teoría

Fases del ciclo de vida

  • Etapa del ciclo de vida para el desarrollo
    • Requisitos de reunión / análisis
    • Arquitectura de software
    • Programación informática
    • Probando, detecta errores
      • Pruebas de caja negra
      • Pruebas de caja blanca
    • Garantía de calidad, asegura el cumplimiento del proceso.
  • ciclo de vida del producto y ciclo de vida del proyecto
    • Inception
    • Primer desarrollo
    • Mayor liberación
    • Liberación menor
    • Corrección de errores
    • Mantenimiento
    • Obsolescencia
  • Etapa de desarrollo de la liberación, cerca del final de un ciclo de liberación
    • Alfa
    • Beta
    • Maestro de oro
    • 1.0; 2.0
  • Ciclo de vida para el desarrollo del software
    • Modelo de cascada — Programación estructurada y refinamiento del paso a paso
    • SSADM
    • Modelo espiral - Desarrollo iterativo
    • V-model
    • Desarrollo de software ágil
    • DSDM
    • Modelo de caos - Estrategia de caos

Entregables

Se deben desarrollar entregables para muchos proyectos de SE. Los ingenieros de software rara vez elaboran todos estos resultados por sí mismos. Por lo general, cooperan con los redactores, formadores, instaladores, comercializadores, personal de soporte técnico y otras personas que elaboran muchos de estos productos.

  • Software de aplicaciones — el software
  • Base de datos: esquemas y datos.
  • Documentación, en línea y/o impresión, FAQ, Readme, notas de lanzamiento, Ayuda, para cada rol
    • Usuario
    • Administrador
    • Manager
    • Comprador
  • Política de administración y mantenimiento, lo que debe ser respaldado, comprobado, configurado,...
  • Installers
  • Migración
    • Actualización de instalaciones anteriores
    • Actualización de las instalaciones del competidor
  • Materiales de capacitación para cada función
    • Usuario
    • Administrador
    • Manager
    • Comprador
  • Información de soporte para grupos de soporte informático.
  • Material de comercialización y ventas
    • Documentos blancos, explican las tecnologías utilizadas en las aplicaciones

Roles comerciales

  • Operaciones
    • Usuarios
    • Administradores
    • Managers
    • Compradores
  • Desarrollo
    • Analistas
    • Programadores
    • Testers
    • Managers
  • Negocios
    • Consultoría — personalización e instalación de aplicaciones
    • Ventas
    • Marketing
    • Legal —contratos, derechos de propiedad intelectual
    • Privacidad e ingeniería de privacidad
    • Soporte – ayudar a los clientes a utilizar aplicaciones
    • Personal: contratación y capacitación de personal calificado
    • Finanzas - financiación del nuevo desarrollo
  • Academe
    • Educadores
    • Researchers

Temas de gestión

  • Liderazgo
    • Coaching
    • Comunicación
    • Escuchando
    • Motivación
    • Vision, SEs son buenos en esto
    • Ejemplo, todos siguen un buen ejemplo mejor
  • Gestión de los recursos humanos
    • Contratando a la gente en una organización
    • Capacitación
    • Evaluación
  • Gestión de proyectos
    • Establecimiento de objetivos
    • Interacción del cliente (Repensar)
    • Estimación
    • Gestión de riesgos
    • Gestión del cambio
  • Gestión de procesos
    • Procesos de desarrollo de software
    • Metrices

Temas de negocios

  • Programas de calidad
    • Malcolm Baldrige Calidad Nacional Premio
    • Seis sigma
    • Total Quality Management (TQM)

Profesión de ingeniería de software

  • Demografías de ingeniería de software
  • Economía de ingeniería de software
  • CCSE
  • Historia de la ingeniería de software
  • Profesionalidad de ingeniería de software
    • Ética
    • Licencias
  • Legal
    • Propiedad intelectual
    • Protección del consumidor

Historia de la ingeniería de software

Historia de la ingeniería de software

Pioneros

Muchas personas hicieron importantes contribuciones a las tecnologías, prácticas o aplicaciones de SE.

  • John Backus: Fortran, primer compilador optimizador, BNF
  • Victor Basili: Una fábrica de experiencia.
  • F.L. Bauer: principio Stack, popularizó el término Ingeniería de software
  • Kent Beck: Refactorización, programación extrema, programación de pares, desarrollo impulsado por pruebas.
  • Tim Berners-Lee: World Wide Web
  • Barry Boehm: SE economics, COCOMO, Spiral model.
  • Grady Booch: Diseño orientado a objetos, UML.
  • Fred Brooks: Managed System 360 y OS 360. Wrote El Hombre-Mes Místico y No hay balas de plata.
  • Larry Constantine: Diseño estructurado, acoplamiento, cohesión
  • Edsger Dijkstra: Wrote Notas sobre programación estructurada, Una disciplina de programación y Ir a la declaración considerado Harmful, 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 de Operadores para el ENIAC, el primer ordenador digital electrónico, y entrenó algunos de los primeros ordenadores humanos
  • Lois Haibt: FORTRAN, escribió el primer parser
  • Margaret Hamilton: Coined the term "software engineering", developed Universal Systems Language
  • Mary Jean Harrold: Pruebas de regresión, localización de fallas
  • Grace Hopper: El primer compilador (Marcos 1), COBOL, Nanoseconds.
  • Watts Humphrey: Capability Maturity Model, Personal Software Process, becario del Instituto de Ingeniería de Software.
  • Jean Ichbiah: Ada
  • Michael A. Jackson: Jackson Estructurado Programación, Jackson System Development
  • Bill Joy: Berkeley Unix, vi, Java.
  • Alan Kay: Smalltalk
  • Brian Kernighan: C y Unix.
  • Donald Knuth: Wrote 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: RISKS Digest, ACM Sigsoft.
  • David Parnas: Diseño de módulos, responsabilidad social, profesionalidad.
  • Jef Raskin: Desarrolló el GUI original de Macintosh, autorizó 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: Linux kernel, software libre / desarrollo de código abierto.
  • Will Tracz: Reuse, ACM Notas de ingeniería de software.
  • Gerald Weinberg: Wrote La Psicología de la Programación Informática.
  • Elaine Weyuker: Pruebas de software
  • Jeannette Wing: especificaciones formales.
  • Ed Yourdon: Programación estructurada, escrito El declive y caída del programador americano.

Ver también

  • Lista de programadores
  • Lista de científicos informáticos

Publicaciones destacadas

  • Acerca de Face: Los fundamentos del diseño de interfaz de usuario por Alan Cooper, sobre el diseño de interfaz de usuario. ISBN 0-7645-2641-3
  • El modelo de madurez de la capacidad por Watts Humphrey. Escrito para el Instituto de Ingeniería de Software, enfatizando la gestión y el proceso. (Véase Gestión del Proceso de Software ISBN 0-201-18095-2)
  • La Catedral y el Bazar por Eric Raymond acerca del desarrollo de código abierto.
  • El declive y caída del programador americano por Ed Yourdon predice el final del desarrollo de software en el ISBN 0-13-191958-X
  • Patrones de diseño por Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides. ISBN 0-201-63361-2
  • Explicación de Programación Explicada por Kent Beck ISBN 0-321-27865-8
  • "Go To Statement Considered Harmful" de Edsger Dijkstra.
  • "Internet, Innovación y Fuente Abierta:Actores en la Red" — Primer lunes artículo de Ilkka Tuomi (2000) fuente
  • El Hombre-Mes Místico por Fred Brooks, sobre gestión de proyectos. ISBN 0-201-83595-9
  • Análisis y diseño orientados a objetos por Grady Booch. ISBN 0-8053-5340-2
  • Peopleware por Tom DeMarco y Tim Lister. ISBN 0-932633-43-9
  • El ingeniero pragmático contra el diseñador científico por E. W. Dijkstra [1]
  • Principios de Gestión de Ingeniería de Software por Tom Gilb sobre procesos evolutivos. ISBN 0-201-19246-2
  • La Psicología de la Programación Informática por Gerald Weinberg. Escrito como consultor independiente, en parte sobre sus años en IBM. ISBN 0-932633-42-0
  • Refactoring: Mejora del diseño del código existente por Martin Fowler, Kent Beck, John Brant, William Opdyke y Don Roberts. ISBN 0-201-48567-2
  • El Programador Pragmático: de viajero a maestro por Andrew Hunt, y David Thomas. ISBN 0-201-61622-X
  • Software Engineering Body of Knowledge (SWEBOK) ISO/IEC TR 19759

Ver también:

  • Publicaciones importantes en ingeniería de software en CS.

Campos relacionados

  • Computer Science
  • Ingeniería de la información
  • Tecnología de la información
  • Ingeniería tradicional
    • Ingeniería informática
    • Ingeniería eléctrica
  • Ingeniería de software
    • Ingeniería del dominio
    • Ingeniería de la tecnología de la información
    • Ingeniería de conocimientos
    • Ingeniería de interfaz de usuario
    • Ingeniería web
  • Artes y ciencias
    • Matemáticas
    • Ciencias informáticas
    • Ciencias de la información
  • Software de aplicaciones
    • Sistemas de información
  • Programación
  • Ingeniería de sistemas

Contenido relacionado

Central eléctrica del lado del banco

Bankside Power Station es una central generadora de electricidad fuera de servicio ubicada en la orilla sur del río Támesis, en el área de Bankside del...

F Sharp (lenguaje de programación)

F# es un lenguaje de programación funcional primero, de propósito general, fuertemente tipado y multiparadigma que abarca funcionalidad, imperativo y...

Alternador pulsado compensado

Un alternador pulsado compensado, también conocido por el acrónimo compulsator, es una forma de fuente de...
Más resultados...
Tamaño del texto: