stringtranslate.com

Desarrollo de software

El desarrollo de software es el proceso utilizado para concebir, especificar, diseñar, programar , documentar , probar y corregir errores con el fin de crear y mantener aplicaciones , marcos u otros componentes de software . El desarrollo de software implica escribir y mantener el código fuente , pero en un sentido más amplio, incluye todos los procesos desde la concepción del software deseado hasta la manifestación final, generalmente en un proceso planificado y estructurado que a menudo se superpone con la ingeniería de software . El desarrollo de software también incluye investigación, nuevos desarrollos, creación de prototipos, modificación, reutilización, reingeniería, mantenimiento o cualquier otra actividad que dé como resultado productos de software. [1]

Metodologías

Una metodología de desarrollo de sistemas no es necesariamente adecuada para su uso en todos los proyectos. Cada una de las metodologías disponibles se adapta mejor a tipos específicos de proyectos, en función de diversas consideraciones técnicas, organizativas, de proyecto y de equipo. [2]

Actividades

Identificación de necesidad

Las fuentes de ideas para productos de software son abundantes. Estas ideas pueden surgir de una investigación de mercado que incluya la demografía de nuevos clientes potenciales, clientes existentes, prospectos de ventas que rechazaron el producto, otro personal interno de desarrollo de software o un tercero creativo. Las ideas para productos de software generalmente son evaluadas primero por el personal de marketing para determinar su viabilidad económica, su adecuación a los canales de distribución existentes, los posibles efectos en las líneas de productos existentes, las características requeridas y su adecuación a los objetivos de marketing de la empresa. En la fase de evaluación de marketing, se evalúan los supuestos de costo y tiempo. Al principio de la primera fase se llega a una decisión sobre si, basándose en la información más detallada generada por el personal de marketing y desarrollo, el proyecto debe continuar. [3]

En el libro "Grandes debates sobre software" , Alan M. Davis afirma en el capítulo "Requisitos" , subcapítulo "La pieza que falta en el desarrollo de software"

Los estudiantes de ingeniería aprenden ingeniería y rara vez están expuestos a las finanzas o el marketing. Los estudiantes de marketing aprenden marketing y rara vez están expuestos a las finanzas o la ingeniería. La mayoría de nosotros nos convertimos en especialistas en un solo área. Para complicar las cosas, pocos de nosotros conocemos personas interdisciplinarias en la fuerza laboral, por lo que hay pocos roles que imitar. Sin embargo, la planificación de productos de software es fundamental para el éxito del desarrollo y requiere absolutamente conocimientos de múltiples disciplinas. [4]

Proceso de planificación

Una tarea importante en la creación de software es el análisis de requisitos . Los clientes suelen tener una idea abstracta de lo que quieren como resultado final, pero no saben qué debe hacer el software . Los ingenieros de software capacitados y experimentados reconocen en este punto requisitos incompletos, ambiguos o incluso contradictorios. La demostración frecuente de código en vivo puede ayudar a reducir el riesgo de que los requisitos sean incorrectos.

"Aunque se pone mucho esfuerzo en la fase de requisitos para garantizar que los requisitos sean completos y consistentes, rara vez ese es el caso; dejando la fase de diseño de software como la más influyente cuando se trata de minimizar los efectos de requisitos nuevos o cambiantes. Volatilidad de requisitos Es un desafío porque impactan los esfuerzos de desarrollo futuros o ya en marcha". [5]

Personal

Un desarrollador de software es una persona o empresa que participa en un proceso de desarrollo de software , que incluye investigación, diseño, programación , pruebas y otras facetas de la creación de software . Otros títulos de trabajo para personas con significados similares incluyen programador , analista de software o ingeniero de software . Las empresas especializadas en software pueden denominarse casas de software. En una gran empresa puede haber empleados cuya única responsabilidad consista en una sola de las disciplinas. En entornos de desarrollo más pequeños, unas pocas personas o una sola persona pueden encargarse del proceso completo. Los entornos colaborativos, como el software de código abierto , pueden reunir a muchos desarrolladores.

Ver modelo

La matriz TEAF de opiniones y perspectivas

Un modelo de vista es un marco que proporciona los puntos de vista sobre el sistema y su entorno , para ser utilizado en el proceso de desarrollo de software . Es una representación gráfica de la semántica subyacente de una vista.

El propósito de los puntos de vista y las opiniones es permitir a los ingenieros humanos comprender sistemas muy complejos y organizar los elementos del problema en torno a dominios de especialización . En la ingeniería de sistemas físicamente intensivos, los puntos de vista a menudo corresponden a capacidades y responsabilidades dentro de la organización de ingeniería. [6]

Procesos de negocio y modelado de datos.

La representación gráfica del estado actual de la información proporciona un medio muy eficaz para presentar información tanto a los usuarios como a los desarrolladores de sistemas .

Ejemplo de interacción entre procesos de negocio y modelos de datos [7]

Por lo general, un modelo se crea después de realizar una entrevista, lo que se conoce como análisis de negocios . La entrevista consiste en que un facilitador hace una serie de preguntas diseñadas para extraer la información requerida que describe un proceso. Al entrevistador se le llama facilitador para enfatizar que son los participantes quienes brindan la información. El facilitador debe tener algún conocimiento del proceso de interés, pero esto no es tan importante como tener una metodología estructurada mediante la cual se hacen las preguntas al experto en el proceso. La metodología es importante porque normalmente un equipo de facilitadores recopila información en todo el establecimiento y los resultados de la información de todos los entrevistadores deben coincidir una vez completados. [7]

Los modelos se desarrollan definiendo el estado actual del proceso, en cuyo caso el producto final se denomina modelo instantáneo "tal cual", o una colección de ideas de lo que debería contener el proceso, lo que da como resultado un modelo de "qué se puede hacer". -be" modelo. La generación de modelos de procesos y datos se puede utilizar para determinar si los procesos y sistemas de información existentes son sólidos y sólo necesitan modificaciones o mejoras menores, o si se requiere reingeniería como acción correctiva. La creación de modelos de negocio es más que una forma de visualizar o automatizar su proceso de información. El análisis se puede utilizar para remodelar fundamentalmente la forma en que su empresa u organización lleva a cabo sus operaciones. [7]

CASO

La ingeniería de software asistida por computadora (CASE) es la aplicación científica de un conjunto de herramientas y métodos de software al desarrollo de software para ayudar a lograr productos de software de alta calidad, libres de defectos y mantenibles. [8] También se refiere a métodos para el desarrollo de sistemas de información junto con herramientas automatizadas que pueden ser utilizadas en el proceso de desarrollo de software. [9] El término "ingeniería de software asistida por computadora" (CASE) puede referirse al software utilizado para el desarrollo automatizado de software de sistemas , es decir, código informático. Las funciones de CASE incluyen análisis, diseño y programación. Las herramientas CASE automatizan métodos para diseñar, documentar y producir código informático estructurado en el lenguaje de programación deseado . [10]

Dos ideas clave de la ingeniería de sistemas de software asistida por computadora (CASE) son: [11]

Existen herramientas CASE típicas para gestión de configuración , modelado de datos , transformación de modelos , refactorización y generación de código fuente .

Anjuta , un IDE en C y C++ para el entorno GNOME

Lenguaje de modelado

Un lenguaje de modelado es cualquier lenguaje artificial que puede usarse para expresar información , conocimiento o sistemas en una estructura definida por un conjunto consistente de reglas. Las reglas se utilizan para interpretar el significado de los componentes de la estructura. Un lenguaje de modelado puede ser gráfico o textual. [12]

Paradigma de programación

Un paradigma de programación es un estilo fundamental de programación informática , que generalmente no está dictado por la metodología de gestión de proyectos (como cascada o ágil). Los paradigmas difieren en los conceptos y abstracciones utilizados para representar los elementos de un programa (como objetos, funciones, variables, restricciones) y los pasos que comprenden un cálculo (como asignaciones, evaluación, continuaciones, flujos de datos). A veces, los conceptos afirmados por el paradigma se utilizan de forma cooperativa en el diseño de arquitectura de sistemas de alto nivel; en otros casos, el alcance del paradigma de programación se limita a la estructura interna de un programa o módulo en particular. Ejemplo: diseño orientado a objetos (OOD) de Grady Booch , también conocido como análisis y diseño orientado a objetos (OOAD). El modelo de Booch incluye seis diagramas: clase, objeto, transición de estado, interacción, módulo y proceso. [13]

Ver también

Roles e industria

Referencias

  1. ^ Asociados de DRM (2002). "Glosario de desarrollo de nuevos productos". Archivado desde el original el 13 de julio de 2018 . Consultado el 29 de octubre de 2006 .
  2. ^ Metodologías de desarrollo de sistemas para negocios electrónicos basados ​​en la web: un marco de personalización Linda V. Knight (Universidad DePaul, EE. UU.), Theresa A. Steinbach (Universidad DePaul, EE. UU.) y Vince Kellen (Blue Wolf, EE. UU.)
  3. ^ José M. Morris (2001). Contabilidad de la industria del software . p.1.10
  4. ^ Alan M. Davis. Grandes debates sobre software (8 de octubre de 2004), páginas: 125-128 Wiley-IEEE Computer Society Press
  5. ^ Otero, Carlos. "Desafíos del diseño de software". Mejora del rendimiento de TI . Taylor & Francis LLC. Archivado desde el original el 28 de octubre de 2017 . Consultado el 19 de octubre de 2017 .
  6. ^ Edward J. Barkmeyer (2003). Conceptos para la integración de sistemas de automatización Archivado el 25 de enero de 2017 en Wayback Machine NIST 2003.
  7. ^ abcd Paul R. Smith y Richard Sarfaty (1993). Creación de un plan estratégico para la gestión de la configuración utilizando herramientas de Ingeniería de Software Asistida por Computadora (CASE). Documento para 1993 Grupo Nacional de Usuarios de CAD/CAE de Contratistas e Instalaciones.
  8. ^ Kuhn, DL (1989). "Seleccionar y utilizar eficazmente una herramienta de ingeniería de software asistida por ordenador". Simposio anual de informática de Westinghouse; 6 y 7 de noviembre de 1989; Pittsburgh, Pensilvania (EE.UU.); Proyecto DOE.
  9. ^ P. Loucopoulos y V. Karakostas (1995). Ingeniería de requisitos del sistema . McGraw-Hill.
  10. CASO Archivado el 18 de febrero de 2012 en la definición de Wayback Machine En: Telecom Glossary 2000 Archivado el 22 de noviembre de 2005 en Wayback Machine . Consultado el 26 de octubre de 2008.
  11. ^ K. Robinson (1992). Poniendo la Ingeniería de Software en CASE . Nueva York: John Wiley and Sons Inc.
  12. ^ Xiao él (2007). "Un metamodelo para la notación de lenguajes de modelado gráfico". En: Conferencia de Aplicaciones y Software Informático, 2007. COMPSAC 2007 – Vol. 1, núm. 1. 31.ª edición anual internacional , volumen 1, número, 24 a 27 de julio de 2007, págs. 219 a 224.
  13. ^ Merx, Georges G.; Norman, Ronald J. (2006). Ingeniería de Software Unificado con Java. Prentice-Hall, Inc. pág. 201.ISBN 0130473766.

Otras lecturas

enlaces externos