Desarrollo de software

Revisión del 10:24 30 sep 2019 de JESUS ARARO626 (discusión | contribuciones) (Desarrollo del Software)
Desarrollo de Software
Información sobre la plantilla
Dsoftware1.jpg
Concepto:Desarrollar un software significa construirlo simplemente mediante su descripción.

Desarrollo de software. Desarrollar un software significa construirlo simplemente mediante su descripción. Esta es una muy buena razón para considerar la actividad de desarrollo de software como una ingeniería. En un nivel más general, la relación existente entre un software y su entorno es clara ya que el software es introducido en el mundo de modo de provocar ciertos efectos en el mismo.

Aquellas partes del mundo que afectarán al software y que serán afectadas por él será el Dominio de Aplicación. Es allí donde los usuarios o clientes observarán si el desarrollo del software ha cumplido su propósito.

Una de las mayores deficiencias en la práctica de construcción de software es la poca atención que se presta a la discusión del problema. En general los desarrolladores se centran en la solución dejando el problema inexplorado. El problema a resolver debe ser deducido a partir de su solución.

Esta aproximación orientada a la solución puede funcionar en campos donde todos los problemas son bien conocidos, clasificados e investigados, donde la innovación se ve en la detección de nuevas soluciones a viejos problemas.

Pero el desarrollo de software no es un campo con tales características. La versatilidad de las computadoras y su rápida evolución hace que exista un repertorio de problemas en constante cambio y cuya solución software sea de enorme importancia.

Desarrollo del Software

Cuando se va desarrollar un software intervienen muchas personas como lo es el cliente que es el que tiene el problema en su empresa y desea que sea solucionado, para esto existe el Analista de Sistema que es el encargado de hacerle llegar todos los requerimientos y necesidades que tiene el cliente a los programadores que son las personas encargadas de realizar lo que es la codificación y diseño del sistema para después probarlo y lo instalan al cliente. Es así como intervienen varias personas ya que una sola persona no podría determinar todo lo necesario lo más seguro que le haga falta algún requerimiento o alguna parte del nuevo sistema y entre más estén involucradas mejor para cubrir con todos los requerimientos del sistema.

Fases del proceso de desarrollo de software

Análisis de requisitos
Esquema desarrollo software.jpg

Extraer los requisitos de un producto de software es la primera etapa para crearlo. Mientras que los clientes piensan que ellos saben lo que el software tiene que hacer, se requiere de habilidad y experiencia en la ingeniería de software para reconocer requisitos incompletos, ambiguos o contradictorios. El resultado del análisis de requisitos con el cliente se plasma en el documento ERS, Especificación de Requerimientos del Sistema, cuya estructura puede venir definida por varios estándares, tales como CMM-I. Asimismo, se define un diagrama de Entidad/Relación, en el que se plasman las principales entidades que participarán en el desarrollo del software. La captura, análisis y especificación de requisitos (incluso pruebas de ellos), es una parte crucial; de esta etapa depende en gran medida el logro de los objetivos finales. Se han ideado modelos y diversos procesos de trabajo para estos fines. Aunque aún no está formalizada, ya se habla de la Ingeniería de Requisitos. La IEEE Std. 830-1998 normaliza la creación de las Especificaciones de Requisitos Software (Software Requirements Specification).

Diseño y arquitectura

Se refiere a determinar cómo funcionará de forma general sin entrar en detalles. Consiste en incorporar consideraciones de la implementación tecnológica, como el hardware, la red, etc. Se definen los casos de uso para cubrir las funciones que realizará el sistema, y se transforman las entidades definidas en el análisis de requisitos en clases de diseño, obteniendo un modelo soy hacker xdxdxdxdxddxd

Programación

Reducir un diseño a código puede ser la parte más obvia del trabajo de ingeniería de software, pero no es necesariamente la porción más larga. La complejidad y la duración de esta etapa está íntimamente ligada al o a los lenguajes de programación utilizados.

Prue

En este modelo se entrelazan las actividades de especificación, desarrollo y validación. Inicialmente, se desarrolla rápidamente un sistema inicial a partir de una especificación muy abstracta. El sistema se va refinando con la información que van suministrando los clientes y/o usuarios hasta que se obtiene un sistema final que satisfaga todas las necesidades previstas. El sistema final obtenido puede rediseñarse para producir otro más robusto y más fácil de mantener. En la figura 2 se esquematiza este modelo.

Pds1.JPG

                                                                            Figura 2: Modelo evolutivo.

Existen dos tipos de procesos de desarrollo evolutivos:
Exploratorio: Su objetivo es trabajar con el cliente para identificar y construir el sistema final a partir de una especificación informal. El resultado del proceso es el sistema final.
Prototipado desechable: Su objetivo es entender los requisitos del cliente. El resultado del proceso es la especificación del sistema (el prototipo se deshecha).
Los principales problemas de este modelo son: escasa visibilidad; los continuos cambios que hacen que los sistemas desarrollados estén deficientemente estructurados; y la necesidad de disponer, en muchos casos, de un equipo de desarrollo altamente calificado. Estos problemas hacen que la aplicación de este modelo se suela limitar a sistemas interactivos de tamaño pequeño o mediano. La deficiente estructura dificulta las tareas de mantenimiento de ahí que se suela aplicar a sistemas con una vida corta y a partes de grandes sistemas, especialmente a sistemas de inteligencia artificial y a interfaces de usuario.

Modelo transformacional

Se basa en disponer de una especificación formal del sistema y en transformar, con métodos matemáticos, esta especificación en una implementación. Si las transformaciones que se aplican son correctas es posible asegurar que el sistema construido satisface la especificación, es decir, es posible obtener programas correctos por construcción.

Pds2.JPG

                                                                       Figura 3: Modelo transformacional.

Otra de sus ventajas es la posibilidad de realizar el mantenimiento a nivel de especificación. Por lo que es necesario disponer de una especificación inicial correcta y de diseñadores altamente calificados. Además no existe apenas experiencia en la aplicación de este modelo a grandes proyectos.
Modelo basado en reutilización: En este modelo se supone que alguno de los componentes del sistema final ya existe. El proceso de desarrollo se centra en integrar las partes ya existentes más que en construir todo el sistema desde el principio.
Las ventajas que desde un punto de vista económico puede producir este modelo actualmente empiezan a ser estudiadas en profundidad. Prácticamente no existe experiencia sobre el empleo de este modelo, si bien, se están haciendo numerosos estudios e investigaciones para posibilitar su uso.

Modelo en espiral

Desarrollado por Boehm en el año 1988 con el objetivo de reunir las ventajas de los modelos de proceso software en cascada y de prototipado. Se incluye el análisis de riesgo como una parte importante del proceso de desarrollo software.
El modelo tiene la forma de una espiral en la que cada vuelta representa cada una de las fases en las que se estructura el proceso software y está organizada en cuatro sectores:
1. Definición de objetivos, alternativas y restricciones de cada fase del proyecto.
2. Evaluación de alternativas y análisis de riesgos.
3. Desarrollo y validación. Se elige el modelo de proceso de desarrollo que se considere más adecuado.
4. Planificación de las siguientes fases del proyecto.

Bibliografía

ARTUR BORONAT, J. I., JOSÉ Á. CARSÍ, ISIDRO RAMOS, ABEL GÓMEZ. Del método formal a la aplicación industrial en Gestión de Modelos: Maude aplicado a Eclipse Modeling Framework1, 2003.

  • Bernd Bruegge & Allen H.Dutoit. Object-Oriented Software Engineering, Prentice Hall, Pag. 11.
  • Castro, Díaz-Balart, Fidel: CIENCIA, INNOVACIÓN Y FUTURO. Ediciones especiales. Instituto Cubano del Libro, La Habana. 2001.
  • Campderrich Falgueras, Benet (2002): Ingeniería de software. Barcelona: Editorial UOC, 2002. 320 páginas.
  • Franquet, R.: COMUNICAR EN LA SOCIEDAD DE LA INFORMACIÓN. Universidad Autónoma de Barcelona. 2005
  • Ingeniería de Software Código de Ética y Práctica Profesional. SEERI, East Tennessee State University. 1999.
  • Ingeniería de software (sexta edición), Ian Sommerville. Addison Wesley. Sitio en Inglés
  • Ojalvo, V. y otros: LA COMUNICACIÓN EDUCATIVA. Universidad de la Habana. En formato digital.
  • ONET Code Connector - Software Developers, Systems Software - 15-1133.00. Onetcodeconnector.org.
  • Pasquali, A.: COMPRENDER LA COMUNICACIÓN. Caracas: Monte Ávila Editores. 1979.
  • Proceso unificado del desarrollo de software, artículo en el sitio web Yaqui.
  • Presman, Roger, 2002. Ingeniería de Software: un enfoque práctico, Sexta edición, McGraw.Hill/Interamericana de España, 824 páginas. pág. 39, 53-54, 67-72.
  • Software Development Manager Position Description. interfacing.com.
  • Urribarri, R.: “EL USO DE INTERNET Y LA TEORÍA DE LA COMUNICACIÓN”. Universidad de Zulia, Venezuela. 10-O3-1999.
  • What is Rapid Application Development?