Ingeniería de software

Ingeniería de software

15 Jul 2020 in

La Ingeniería de Software Es una de las ramas de las ciencias de la computación que estudia la creación de software confiable y de calidad, basándose en métodos y técnicas de ingeniería. Brindando soporte operacional y de mantenimiento, el campo de estudio de la ingeniería de software. ​Integra,y lasen las cuales se halla apoyada la.

Se citan las definiciones más reconocidas, elaboradas por reputados autores:

  • Ingeniería de softwarees el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software(Zelkovitz, mil novecientos setenta y ocho).
  • Ingeniería de softwarees la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y sostenerlos. Se conoce también como desarrollo de softwareo producción de software(Bohem, mil novecientos setenta y seis).
  • La ingeniería de softwaretrata del establecimiento de los principios y métodos de la ingeniería a fin de conseguir softwarede modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972).
  • La ingeniería de softwarees la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación, y mantenimiento del software.

En 2004, la O bien. S. Bureau of Labor Statistics (Oficina de Estadísticas del Trabajo de Estados Unidos) contó 760 840 ingenieros de softwarede computadora. [ ]

El término "ingeniero de software", no obstante, se usa de forma genérica en el entorno empresarial, y no todos los que se desempeñan en el puesto de ingeniero de softwareposeen realmente títulos de ingeniería de universidades reconocidas.

Algunos autores consideran que "desarrollo de software" es un término más apropiado que "ingeniería de software" para el proceso de crear software. Personas como Pete McBreen (autor de Software Craftmanship) cree que el término IS implica niveles de rigor y prueba de procesos que no son apropiados para todo tipo de desarrollo de software.

Indistintamente se usan los términos "ingeniería de software" o bien "ingeniería del software"; si bien menos común también se suele referenciar como "ingeniería en software". ​En Hispanoamérica los términos más comúnmente utilizados son los dos primeros.

La creación del softwarees un proceso intrínsecamentey la ingeniería del softwaretrata de sistematizar este proceso con el fin de acotar elen la consecución del objetivo, por medio de distintas técnicas que se han demostrado convenientes sobre la base de la experiencia previa.

La ingeniería de softwarese puede considerar como la ingeniería aplicada al software, esto es, por medios sistematizados y con herramientas preestablecidas, la aplicación de ellos de la manera más eficaz para la obtención de resultados óptimos; objetivos que siempre y en todo momento busca la ingeniería. No es solo de la, sino más bien teniendo presente las distintas soluciones, elegir la más apropiada.

La producción de softwareutiliza criterios y normas de la ingeniería de software, lo que permite convertirlo en un producto industrial usando bases de la ingeniería como métodos, técnicas y herramientas para desarrollar un producto innovador regido por metodologías y las buenas prácticas. Dicho producto es un medio que interviene en las funciones de sus usuarios para obtener un proceso productivo más eficiente y eficiente; el día de hoy en día las compañías no podrían funcionar sin softwareporque este es un producto de empleo masivo; por lo cual, el nivel de una compañía está determinado por la calidad de su infraestructura tecnológica y los productos desarrollados o adquiridos de acuerdo a sus necesidades.

Cuando aparecieron las primeras computadoras digitales en la década de 1940, ​ el desarrollo de softwareera algo tan nuevo que era casi imposible hacer predicciones de las datas estimadas de finalización del proyecto y muchos de ellos excedían los presupuestos y tiempo estimados.. Los desarrolladores tenían que regresar a escribir todos sus programas para correr en máquinas nuevas que salían cada uno de ellos o dos años, haciendo obsoletas las ya existentes.

El término ingeniería del softwareapareció por primera vez a finales de la década de mil novecientos cincuenta. La ingeniería de software fue estimulada por lade las décadas de entre mil novecientos sesenta y mil novecientos ochenta. La ingeniería del softwareviene a ayudar a identificar y corregir a través de principios y metodologías los procesos de desarrollo y mantenimiento de sistemas de software.

Aparte de la crisis del softwarede las décadas de entre mil novecientos sesenta y 1980, la ingeniería de softwarese ve afectada por accidentes que conllevaron a la muerte de tres personas; esto sucedió cuando la máquina de radioterapiaemite una sobredosis masiva de radiación y cariño contra la vida de estas personas. ​Esto remarca los riesgos de control por software, ​ afectando directamente al nombre de la ingeniería de software.

A principios de los 1980, ​ la ingeniería del softwareya había surgido como una genuina profesión, para estar al lado de lasy la ingeniería tradicional. Antes de esto, las labores eran corridas poniendo tarjetas perforadas como entrada en el lector de tarjetas de la máquina y se aguardaban los resultados devueltos por la impresora.

Debido a la necesidad de traducir a menudo el softwareviejo para atender las necesidades de las nuevas máquinas, se desarrollaron lenguajes de orden superior. Conforme apareció el softwarelibre, las organizaciones de usuarios comúnmente lo liberaban.

Durante un buen tiempo, solucionar la crisis del softwarefue de máxima importancia para estudiosos y empresas que se dedicaban a generar herramientas de software.

Para la década de 1980, el costo de propiedad y mantenimiento del softwarefue un par de veces más costoso que el propio desarrollo del software, y durante la década de mil novecientos noventa, el costo de propiedad y mantenimiento aumentó 30  por ciento con respecto a la década anterior. En 1995, muchos de los proyectos de desarrollo estaban operacionales, mas no eran considerados exitosos. El proyecto de softwaremedio sobrepasaba en un 50  por ciento la estimación de tiempo previamente efectuada, además, el 75  por cien de todos y cada uno de los grandes productos de softwareque eran entregados al cliente del servicio tenían fallas tan graves, que no eran utilizados en lo absoluto o bien simplemente no cumplían con los requerimientos del usuario.

Algunos especialistas argumentaron que la crisis del softwareera debido a la falta de disciplina de los programadores.

Cada nueva tecnología y práctica de la década de mil novecientos setenta a la de mil novecientos noventa fue pregonada como la única solución a todos y cada uno de los problemas y el caos que llevó a la crisis del software. La verdad es que la búsqueda de una única clave para el éxito nunca funcionó. El campo de la ingeniería de softwareparece un campo demasiado complejo y extenso para una única solución que sirva para progresar la mayoría de los problemas, y cada inconveniente representa solo una pequeña porción de todos los inconvenientes de software.

El auge del uso delllevó a un vertiginoso crecimiento en la demanda de sistemas internacionales de despliegue de información en la World Wide Web. Los desarrolladores se vieron en la labor de manejar ilustraciones, mapas, fotografías y animaciones, a un ritmo jamás antes visto, con prácticamente ningún método para optimizar la visualización y almacenamiento de imágenes. También fueron necesarios sistemas para traducir el flujo de información en múltiples idiomas extranjeros a lenguaje natural humano, con muchos sistemas de softwarediseñados para uso multilenguaje, basado en traductores humanos.

La ingeniería de softwarecontribuyó alrededor de 90 000 millones de dólares por año, ya que entró en juego el Internet. Esto hace que los desarrolladores tuvieran que manejar imágenes mapas y animaciones para optimizar la visualización/almacenamiento de imágenes (como el empleo de imágenes en miniatura). El uso de los navegadores y utilización de lenguajeL cambia drásticamente la visión y recepción de la información.

Las amplias conexiones de red causaron la proliferación dey basura o spamen los correos electrónicos (). Esta situación puso en una carrera contra el tiempo a los desarrolladores con el objetivo de crear nuevos sistemas de bloqueo o seguridad de dichas anomalías en la informática, puesto que se volvían sumamente tediosas y difíciles de reparar

Después de una fuerte y creciente demanda surge la necesidad de crear soluciones de software a bajo costo, lo que acarrea al uso de metodologías más simples y rápidas que desarrollan softwarefuncional. Cabe señalar que los sistemas más pequeños tenían un enfoque más simple y rápido para poder dirigir el desarrollo de cálculos y algoritmos de software.

La ingeniería de softwareaplica diferentes normas y métodos que dejan obtener mejores resultados, en lo que se refiere al desarrollo y uso del software, a través de la aplicación correcta de estos procedimientos se puede llegar a cumplir de forma satisfactoria con los objetivos esenciales de la ingeniería de software.

Entre los objetivos de la ingeniería de softwareestán:

  • Mejorar el diseño de aplicaciones o bien softwarede tal modo que se adapten de mejor forma a las necesidades de las organizaciones o finalidades para las que fueron creadas.
  • Promover mayor calidad al desarrollar aplicaciones complejas.
  • Brindar mayor precisión en los costos de proyectos y tiempo de desarrollo de exactamente los mismos.
  • Aumentar la eficiencia de los sistemas al introducir procesos que permitan medir mediante reglas específicas, la calidad del softwaredesarrollado, buscando siempre y en toda circunstancia la mejor calidad posible según las necesidades y resultados que se quieren producir.
  • Una mejor organización de equipos de trabajo, en el área de desarrollo y mantenimiento de software.
  • Detectar a través de pruebas, posibles mejoras para un mejor funcionamiento del softwaredesarrollado.

1) Recursos humanos

Son todas aquellas personas que intervienen en la planificación de cualquier instancias de software(por ejemplo: gestor, ingeniero de softwareexperimentado, etcétera), El número de personas requerido para un proyecto de softwaresolo puede ser determinado después de hacer una estimación del esfuerzo de desarrollo...

2) Recursos de entorno

Es el entorno de las aplicaciones ( softwarey hardware) el hardwareproporciona el medio físico para desarrollar las aplicaciones ( software), este recurso es indispensable.

Back to top

1) Implicaciones socioeconómicas

1.1) Económicamente

En los U.S.A., el softwarecontribuyó a una octava una parte de todo el aumento del PIB durante la década de 1990 (en torno a 90 000 millones de dólares por año), y un noveno de todo el crecimiento de productividad durante los últimos años de la década (en torno a 33.000 millones de dólares estadounidenses por año). La ingeniería de softwarecontribuyó a US dólares americanos 1 billón de desarrollo económico y productividad en esa década. Alrededor del globo, el contribuye al crecimiento económico de maneras afines, si bien es difícil de hallar estadísticas fiables. [ ]

Además, con laestá hallando cada vez más campos de aplicación a escala global.

La ingeniería de softwarecambia ladel planeta debido al extendido empleo de la computadora. El(e mail), lay lapermiten a la gente interactuar de nuevas maneras. El software baja el costo y mejora la calidad de los servicios de salud, los departamentos de bomberos, las dependencias gubernativos y otros servicios sociales. Los proyectos exitosos donde se han usado métodos de ingeniería de softwareincluyen a, el softwaredel, losy muchos otros.

1.2) LUM (lenguaje unificado de modelado) o UML

Es un lenguaje de modelado muy reconocido y usado actualmente que se usa para describir o bien especificar métodos. También es aplicable en el.

Las iniciales UML significan lenguaje unificado de modelado esto desea decir que no pretende delimitar un modelo estándar de desarrollo, sino más bien únicamente un lenguaje de modelado.

Un lenguaje de modelado consta de vistas, elementos de modelo y un conjunto de reglas sintácticas, semánticas y pragmáticas que indican cómo utilizar los elementos.

En esta materia nos hallamos con varios diagramas que se pueden emplear tales como:,,,, etc.

1.3) BPMN (notación para el modelado de procesos de negocios)

El objetivo de la notación para el modelado de procesos de negocios es administrar de una forma fácil de acotar y examinar los procesos de negocios públicos y privados simulando un.La notación ha sido diseñada específicamente para coordinar la secuencia de los procesos y los mensajes que fluyen entre los participantes del mismo, con un conjunto de actividades relacionadas.Características básicas de los elementos de BPMN

  • Objetos de flujo: eventos, actividades, rombos de control de flujo (gateways).
  • Objetos de conexión: flujo de secuencia, flujo de mensaje, asociación.
  • Swimlanes (carriles de piscina): pool, lane.
  • Artefactos: objetos de datos, grupo, anotación.

1.4) Diagrama de flujo de datos (DFD)

Unpermite representar el movimiento de datos a través de un sistema por medio de modelos que describen los flujos de datos, los procesos que tranforman o cambian los datos, los destinos de datos y los almacenamientos de datos a la cual tiene acceso el sistema.

Su inventor fue, basado en el modelo de computación de Martin y Estrin: flujo gráfico de datos. Con los diagramas de flujo de datos determina la manera en que cualquier sistema puede desarrollarse, ayuda en la identificación de los datos de la transacción en el modelo de datos y da al usuario una idea física de cómo resultarán los datos a última instancia.

Back to top

2) Herramienta CASE

Lasson herramientas computacionales ( software) que están destinadas a acudir en los procesos de ciclo vital de un software, facilitan la producción del software, múltiples se basan eminentemente en la idea de un modelo gráfico.

Back to top

3) Metodología

Un objetivo de décadas ha sido el encontrar procesos y, que sean sistemáticas, predecibles y repetibles, a fin de prosperar la productividad en el desarrollo y la calidad del producto software, en pocas palabras, determina los pasos a continuar y como realizarlos finalmente una labor.

3.1) Etapas del proceso

La ingeniería de softwarerequiere llevar a cabo numerosas tareas agrupadas en etapas, al conjunto de estas etapas se le llama. Las etapas comunes a casi todos los modelos de ciclo vital son las siguientes:

3.1.1) Obtención de los requisitos

Se debe identificar sobre qué se está trabajando, esto es, el tema principal que motiva el principio del estudio y creación del nuevo softwareo modificación de uno ya existente. Por su parte identificar los recursos que se tienen, en esto entra el conocer los recursos humanos y materiales que participan en el desarrollo de las actividades. Es esencial entender el contexto del negocio para identificar adecuadamente los requisitos.

Se tiene que tener dominio de la información de un problema, lo que incluye los datos fuera del software(usuarios finales, otros sistemas o dispositivos externos), los datos que salen del sistema (por la interfaz de usuario, interfaces de red, reportes, gráficas y otros medios) y los almacenamientos de datos que recaban y organizan objetos persistentes de datos (por servirnos de un ejemplo, aquellos que se conservan de forma permanente).

También hay que ver los puntos críticos, lo que significa tener de una manera clara los aspectos que entorpecen y limitan el buen funcionamiento de los procedimientos actuales, los inconvenientes más comunes y relevantes que se presentan, los motivos que crean insatisfacción y aquellos que han de ser cubiertos a plenitud. Por ejemplo: ¿El contenido de los reportes generados, satisface verdaderamente las necesidades del usuario? ¿Los tiempos de contestación ofrecidos, son oportunos?, etc.

Hay que delimitar las funciones que realizará el softwareya que estas asisten al usuario final y al funcionamiento del mismo programa.

Se debe tener en consideración cómo será el comportamiento del softwareante situaciones inesperadas tal como lo son por poner un ejemplo una gran cantidad de usuarios usando el softwareo un sinnúmero de datos entre otros.

3.1.2) Análisis de requisitos

El análisis de requisitos puede parecer una tarea fácil, pero no lo se debe a que muy frecuentemente los clientes del servicio piensan que saben todo lo que el softwarenecesita para su buen funcionamiento, sin embargo se requiere la habilidad y experiencia de algún especialista para reconocer requisitos incompletos, equívocos o contradictorios. Estos requisitos se determinan tomando en cuenta las necesidades del usuario final, introduciendo técnicas que nos dejen mejorar la calidad de los sistemas sobre los que se trabaja.​

El resultado del análisis de requisitos con el usuario se plasma en el documento ERS (especificación de requisitos del sistema), cuya estructura puede venir definida por varios estándares, como. Asimismo, se define un, en el que se plasman las principales entidades que participarán en el desarrollo del software.

La atrapa, análisis y especificación de requisitos (aun 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 metódicos de trabajo para estos fines. Si bien aún no está formalizada, ya se habla de la.

La IEEE Std. normaliza la creación de las especificaciones de requisitos de software(Software Requirements Specification).

Finalidades del análisis de requisitos:

  • Brindar al usuario todo lo necesario para que pueda trabajar en conjunto con el softwaredesarrollado consiguiendo los mejores resultados posibles.
  • Tener un control más completo en la etapa creación del software, en lo que se refiere a tiempo de desarrollo y costos.
  • Utilización de métodos más eficientes que dejen el mejor aprovechamiento del softwaresegún sea la finalidad de uso del mismo.
  • Aumentar la calidad del softwaredesarrollado al reducir los peligros de mal funcionamiento.​

No siempre y en toda circunstancia en la etapa de "análisis de requisitos" las diferentes metodologías de desarrollo llevan asociado un estudio de aptitud y/o estimación de costes. El más conocido de los modelos de estimación de costo del softwarees el modelo

3.1.3) Limitaciones

Los softwaretienen la capacidad de imitar inteligencia creando un modelo de ciertas características de la inteligencia humana mas solo posee funciones predefinidas que abarcan un conjunto de soluciones que en ciertos campos llega a ser limitado. Aun cuando tiene la capacidad de imitar determinados comportamientos humanos no es capaz de emular el pensamiento humano porque actúa bajo condiciones.

Otro aspecto limitante de los software procede del proceso absolutamente mecánico que precisa de un mayor esmero y tiempos elevados de ejecución lo que lleva a tener que incorporar el softwareen una máquina de mayor capacidad.

3.1.4) Especificación

La especificación de requisitos describe el comportamiento aguardado en el softwareuna vez desarrollado.Gran una parte del éxito de un proyecto de softwareradicará en la identificación de las necesidades del negocio (definidas por la alta dirección), así como la interacción con los usuarios funcionales para la recolección, clasificación, identificación, priorización y especificación de los requisitos del software.

Entre las técnicas utilizadas para la especificación de requisitos se encuentran:

Siendo los primeros más estrictas y formales, los segundas más ágiles e informales.

3.1.5) Arquitectura

La integración de infraestructura, desarrollo de aplicaciones, bases de datos y herramientas gerenciales, requieren de capacidad y liderazgo para poder ser conceptualizados y proyectados a futuro, solucionando los inconvenientes de el día de hoy. El rol en el cual se delegan todas estas actividades es el del Arquitecto técnico.

El arquitecto de softwarees la persona que añade valor a los procesos de negocios gracias a su valioso aporte de soluciones tecnológicas.

La arquitectura de sistemas normalmente, es una actividad de planeación, ya sea a nivel de infraestructura de red y hardware, o bien de software.

Lo principal en este punto es poner en claro los aspectos lógicos y físicos de las salidas, modelos de organización y representación de datos, entradas y procesos que componen el sistema, considerando las bondades y restricciones de los recursos libres en la satisfacción de las pacificaciones brindadas para el análisis.

Hay que tener en consideración la arquitectura del sistema en la que se trabajará, elaborar un plan de trabajo viendo la prioridad de tiempo y recursos disponibles.En los diseños de salidas entra los que es la interpretación de requerimientos lo que es el dominio de información del problema, las funciones visibles para el usuario, el comportamiento del sistema y un conjunto de clases de requerimientos que reúne los objetos del negocio con los métodos que les dan servicio.

La arquitectura de softwareconsiste en el diseño de componentes de una aplicación (entidades del negocio), por norma general usando patrones de arquitectura. El diseño arquitectónico debe permitir visualizar la interacción entre las entidades del negocio y además poder ser validado, por servirnos de un ejemplo por medio de diagramas de secuencia.Un diseño arquitectónico describe generalmente el cómose construirá una aplicación de software. Para ello se documenta utilizando diagramas, por ejemplo:

Los diagramas de clases y de base de datos son los mínimos necesarios para describir la arquitectura de un proyecto que iniciará a ser codificado.Dependiendo del alcance del proyecto, dificultad y necesidades, el arquitecto elegirá cuales de los diagramas se requiere elaborar.

Las herramientas para el diseño y modelado de softwarese denominan( Computer Aided Software Engineering) entre las que se encuentran:

  • Enterprise Architect
  • Microsoft Visio for Enterprise Architects

3.1.6) Programación

Implementar un diseño en código puede ser la parte más obvia del trabajo de ingeniería de software, mas no necesariamente es la que demanda mayor trabajo y ni la más complicada.La dificultad y la duración de esta etapa está íntimamente relacionada al o a losutilizados, así como al diseño previamente efectuado.

3.1.7) Desarrollo de la aplicación

Para el desarrollo de la aplicación es necesario estimar 5 fases para tener una aplicación o programa eficiente, estas son:

  • Desarrollo de la infraestructura:Esta fase deja el desarrollo y la organización de los elementos que formaran la infraestructura de la aplicación, con el propósito de concluir la aplicación eficientemente.
  • Adaptación del paquete:El objetivo principal de esta fase es entender de una manera detallada el funcionamiento del bulto, esto tiene como finalidad garantizar que el bulto pueda ser utilizado en su máximo rendimiento, tanto para negocios o recursos. Todos los elementos que componen el bulto son inspeccionados de forma detallada para evitar errores y entender mejor todas las características del paquete.
  • Desarrollo de unidades de diseño de interactivas:En esta fase se realizan los procedimientos que se ejecutan por un diálogo usuario-sistema. Los procedimientos de esta fase tienen como objetivo principal:
  1. Establecer específicamente las acciones que debe realizar la unidad de diseño.
  2. La creación de componentes para sus procedimientos.
  3. Ejecutar pruebas unitarias y de integración en la unidad de diseño.
  • Desarrollo de unidades de diseño batch:En esta fase se usan una serie de combinación de técnicas, como, diagramas de estructuras, tablas de resoluciones, etc. Cualquiera a utilizar será ventajoso para plasmar de forma clara y objetiva las especificaciones y que así el programador tenga mayor comprensión a la hora de programar y probar los programas que le tocan.
  • Desarrollo de unidades de diseño manuales:En esta fase la meta central es proyectar todos y cada uno de los procedimientos administrativos que desarrollarán en torno a la utilización de los componentes computarizados.

3.1.8) Pruebas desoftware

Consiste en revisar que el softwarerealice adecuadamente las tareas indicadas en la especificación del problema. Una técnica es probar por separado cada módulo del software(), y luego probarlo de manera integral (), para así llegar al objetivo.Se considera una buena práctica el que las pruebas sean efectuadas por alguien distinto al desarrollador que la programó, idealmente un área de pruebas; sin perjuicio de lo precedente el programador debe hacer sus propias pruebas.En general hay 2 grandes maneras de organizar un área de pruebas, la primera es que esté compuesta por personal inexperto y que ignore el tema de pruebas, de este modo se evalúa que la documentación entregada sea de calidad, que los procesos descritos son tan claros que cualquiera puede comprenderlos y el softwarehace las cosas tal como están descritas. El segundo enfoque es tener un área de pruebas formada por programadores con experiencia, personas que saben sin mayores indicaciones en qué condiciones puede fallar una aplicación y que pueden poner atención en detalles que personal inexperto no consideraría.

De pacto con, el proceso de pruebas se centra en los procesos lógicos internos del software, asegurando que todas y cada una de las sentencias se han comprobado, y en los procesos externos funcionales, o sea, la realización de pruebas para la detección de errores. Se requiere poder probar el softwarecon sujetos reales que puedan evaluar el comportamiento del softwarecon el fin de diera los desarrolladores. Es esencial que durante el proceso de desarrollo del softwareno se pierda contacto con los interesados o solicitantes del desarrollo de software, así los objetivos del proyecto se mantendrán vigentes y se tendrá una idea clara de los aspectos que deben probarse a lo largo del período de pruebas.

3.1.9) Implementación

Una implementación es la realización de una especificación técnica o bien algoritmos con un programa, componente software, u otro sistema de cómputo. Muchas especificaciones son dadas según a su especificación o bien un estándar. Las especificaciones recomendadas según el, y las herramientas de desarrollo del softwarecontienen implementaciones de lenguajes de programación.El modelo de implementación es una colección de componentes y los subsistemas que contienen. Componentes semejantes como: archivos ejecutables, ficheros de código fuente y todo otro tipo de archivos que sean necesarios para la implementación y despliegue del sistema.

La etapa de implementación del diseño de softwarees el proceso de convertir una especificación del sistema en un sistema ejecutable. Siempre implica los procesos de diseño y programación de software, pero, si se emplea un enfoque evolutivo de desarrollo, también puede implicar un refinamiento de la especificación del software. Esta etapa es una descripción de la estructura del softwareque se marcha a incorporar, los datos que son parte del sistema, las interfaces entre los componentes del sistema, y en ocasiones los algoritmos empleados.

3.1.10) Documentación

Es todo lo referente a la documentación del propio desarrollo del softwarey de la gestión del proyecto, pasando por modelaciones (), diagramas de casos de uso, pruebas, manuales de usuario, manuales técnicos, etcétera todo con el propósito de eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones al sistema.

3.1.11) Mantenimiento

Fase dedicada a mantener y mejorar el softwarepara corregir errores descubiertos y también incorporar nuevos requisitos. Esto puede llevar más tiempo incluso que el desarrollo del softwareinicial. En torno a 2/3 del tiempo de ciclo de vida de un proyecto ​ está dedicado a su mantenimiento. Una pequeña una parte de este trabajo consiste eliminar errores (bugs); siendo que la mayor parte radica en extender el sistema para incorporarle nuevas funcionalidades y hacer frente a su.

3.1.12) Desde el punto de vista de gestión

  • Facilitar la labor de seguimiento del proyecto
  • Optimizar el empleo de recursos
  • Facilitar la comunicación entre usuarios y desarrolladores
  • Facilitar la evaluación de resultados y cumplimiento de objetivos

3.1.13) Desde el punto de vista de los ingenieros desoftware

  • Ayudar a comprender el problema
  • Permitir la reutilización
  • Facilitar el mantenimiento del producto final
  • Optimizar el conjunto y cada una de las fases del proceso de desarrollo

3.1.14) Desde el punto de vista de cliente del servicio o bien usuario final

  • Garantizar el nivel de calidad del producto final
  • Obtener el ciclo vital adecuado para el proyecto
  • Confianza en los plazos del tiempo mostrados en la definición del proyecto
Back to top

4) Modelos y ciclos vitales del desarrollo desoftware

La ingeniería de software, con el fin de ordenar el caos que era anteriormente el desarrollo de software, dispone de múltiples modelos, paradigmas y, estos los conocemos primordialmente como modelos o bien, esto incluye el proceso que se sigue para construir, entregar y hacer evolucionar el software, desde la concepción de una idea hasta la entrega y el retiro del sistema y representa todas y cada una de las actividades y artefactos (productos intermedios) necesarios para desarrollar una aplicación.

El ciclo vital de un softwarecontiene los próximos procedimientos:

  • Definición de objetivos: delimitar el resultado del proyecto y su papel en la estrategia global.
  • Análisis de los requisitos y su viabilidad: compendiar, examinar y elaborar los requisitos del usuario y examinar cualquier restricción que se pueda aplicar.
  • Diseño general: requisitos generales de la arquitectura de la aplicación.
  • Diseño en detalle: definición precisa de cada subconjunto de la aplicación.
  • Programación(programación e implementación): es la implementación de un lenguaje de programación para crear las funciones definidas durante la etapa de diseño.
  • Prueba de unidad: prueba individual de cada subconjunto de la aplicación para garantizar que se implementaron conforme con las especificaciones.
  • Integración: para asegurar que los diferentes módulos se integren con la aplicación. Este es el propósito de la prueba de integraciónque está cuidadosamente documentada.
  • Prueba beta(o bien validación), para asegurar que el softwarecumple con las especificaciones originales.
  • Documentación: sirve para documentar información necesaria para los usuarios del softwarey para desarrollos futuros.
  • Implementación
  • Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las actualizaciones secundarias del software(mantenimiento continuo).

4.1) Modelo en cascada o clásico

En ingeniería de softwareel modelo en catarata ―también llamado desarrollo en catarata o bien ciclo vital clásico― se fundamenta en un enfoque metodológico que ordena estrictamente las etapas del ciclo de vida del software, esto sugiere una aproximación sistemática secuencial hacia el proceso de desarrollo del software, que se inicia con la especificación de requisitos del cliente y continúa con la planificación, el modelado, la construcción y el despliegue para culminar en el soporte del softwareterminado.

4.2) Modelo de prototipos

En ingeniería de software, el modelo de prototipos pertenece a los modelos de desarrollo evolutivo. Este deja que todo el sistema, o ciertos de sus partes, se construyan rápidamente para entender con sencillez y aclarar determinados aspectos en los que se aseguren que el desarrollador, el usuario, el cliente estén conforme en lo que se necesita así como también la solución que se propone para dicha necesidad y así minimizar el riesgo y la inseguridad en el desarrollo, este modelo se hace cargo del desarrollo de diseños para que estos sean analizados y prescindir de ellos conforme se adhieran nuevas especificaciones, es ideal para medir el alcance del producto, pero no se asegura su uso real.

Este modelo eminentemente se aplica en el momento en que un cliente define un conjunto de objetivos generales para el softwarea desarrollarse sin definir detalladamente los requisitos de entrada procesamiento y salida, esto es cuando el responsable no está seguro de la eficacia de un algoritmo, de la adaptabilidad del sistema o bien de la manera en que interactúa el hombre y la máquina.

Este modelo se encarga eminentemente de asistir al ingeniero de sistemas y al cliente a comprender de mejor forma cuál será el resultado de la construcción cuando los requisitos estén satisfechos.

4.3) Modelo en espiral

El modelo en espiral, que Barry Boehm planteó originalmente en mil novecientos ochenta y seis, es un modelo de proceso de softwareevolutivo que conjuga la naturaleza iterativa de la construcción de prototipos con los aspectos controlados y sistemáticos del modelo en cascada, o sea, cuando se aplica este modelo, el softwarese desarrolla en una serie de entregas evolutivas (ciclos o bien iteraciones), cada una de estas entregando prototipos más completas que el precedente, todo esto en función del análisis de riesgo y las necesidades del cliente del servicio.Aunque el modelo espiral representa ventajas por sobre el desarrollo lineal, el cálculo de los peligros puede ser realmente complicado y por lo cual su uso en el ámbito real es muy escaso.

4.4) Modelo de desarrollo por etapas

Es un modelo en el que el softwarese muestra al cliente del servicio en etapas refinadas consecutivamente. Con esta metodología se desarrollan las capacidades más esenciales reduciendo el tiempo necesario para la construcción de un producto; el modelo de entrega por etapas es útil para el desarrollo de la herramienta debido a que su empleo se aconseja para problemas que pueden ser tratados descomponiéndolos en inconvenientes más pequeños y se caracteriza primordialmente en que las especificaciones no son conocidas en detalle al comienzo del proyecto y por consiguiente se van desarrollando simultáneamente con las diferentes versiones del código.

En este modelo pueden distinguirse las próximas fases:

  • Especificación conceptual.
  • Análisis de requisitos.
  • Diseño inicial.
  • Diseño detallado (codificación, depuración, prueba y liberación).

Cuando es por etapas, en el diseño global estas fases pueden repetirse según la cantidad de etapas que sean requeridas.

Entre sus ventajas tenemos:

  • Detección de problemas ya antes y no hasta la única entrega final del proyecto.
  • Eliminación del tiempo en informes debido a que cada versión es un avance.
  • Estimación de tiempo por versión, eludiendo fallos en la estimación del proyecto general.
  • Cumplimiento a la data por los desarrolladores.

4.5) Modelo incremental o iterativo

Desarrollo iterativo y creciente (o incremental) es un proceso de desarrollo de software, creado en contestación a las debilidades del modelo tradicional de catarata, esto es, este modelo aplica secuencias lineales como el modelo en catarata, pero de una forma iterativa o bien escalada según como avance el proceso de desarrollo y con cada una de estas secuencias lineales se generan incrementos (mejoras) del software.

Se debe tomar en consideración que el flujo del proceso de cualquier incremento puede añadir el paradigma de construcción de prototipos, puesto que como se mencionó previamente, este tipo de modelo es iterativo por naturaleza, no obstante se diferencia en que este busca la entrega de un producto operacional con cada incremento que se le realice al software.

Este desarrollo incremental es útil principalmente cuando el personal necesario para una implementación completa no está libre.

4.5.1) Modelo estructurado

Este modelo ―como su nombre lo indica― utiliza las técnicas delo de lapara su desarrollo, también se usa en la creación de los algoritmos del programa. Este formato facilita la comprensión de la estructura de datos y su control. ​Entre las principales características de este modelo se hallan las siguientes:

  • Generalmente se puede diferenciar de una forma más clara los procesos y las estructuras de datos.
  • Existen métodos que se enfocan primordialmente en determinados datos.
  • La abstracción del programa es de un nivel considerablemente mayor.
  • Los procesos y estructuras de datos son representados jerárquicamente.

Este modelo también presenta sus desventajas entre las cuales podemos mentar algunas:

  • Se podía encontrar datos repetidos en diferentes partes del programa.
  • Cuando el código se hace muy extenso o grande su manejo se dificulta demasiado.

En el modelo estructurado las técnicas que comúnmente se emplean son:

4.5.2) Modelo orientado a objetos

Estos modelos tienen sus raíces en lay como consecuencia de ella gira entorno al término de clase, también lo hacen el análisis de requisitos y el diseño. Esto además de introducir nuevas técnicas, también aprovecha las técnicas y conceptos del desarrollo estructurado, como diagramas de estado y transiciones.El modelo orientado a objetos tiene 2 características primordiales, las cuales ha favorecido su expansión:

  • Permite la reutilización de softwareen un grado significativo.
  • Su simplicidad facilita el desarrollo de herramientas informáticas de ayuda al desarrollo, el cual es fácilmente incorporada en una notación orientada a objetos llamado.

El RAD ( rapid application development:‘desarrollo rápido de aplicaciones’), es un modelo de proceso de softwareincremental, desarrollado en un inicio por James Maslow en mil novecientos ochenta, que destaca eminentemente un ciclo corto de desarrollo.

Esta es una metodología que permite la construcción de sistemas computacionales que combinen técnicas y utilidades, la construcción de prototipos centrados en el usuario y el seguimiento lineal y sistemático de objetivos, acrecentando la velocidad con la que se producen los sistemas a través de la utilización de un enfoque de desarrollo basado en componentes.

Si se comprenden bien los requisitos y se limita el ámbito del proyecto, el proceso RAD deja que un equipo de desarrollo cree un producto completamente funcional en un periodo muy limitado de tiempo sin reducir en lo más mínimo la calidad del mismo.

4.6) Modelo de desarrollo concurrente

El modelo de desarrollo concurrente es un modelo de género de red donde todas las personas actúan simultáneamente o bien al tiempo. Este tipo de modelo se puede representar a manera de esquema como una serie de actividades técnicas importantes, tareas y estados asociados a ellas.

El modelo de proceso concurrente define una serie de sucesos que dispararan transiciones de estado a estado para cada una de las actividades de la ingeniería del software. Por ejemplo, durante las primeras etapas del diseño, no se contempla una inconsistencia del modelo de análisis. Esto produce la corrección del modelo de análisis de acontencimientos, que disparara la actividad de análisis del estado hecho al estado cambios en espera.Este modelo de desarrollo se utiliza de forma frecuente como el paradigma de desarrollo de aplicaciones cliente/servidor. Un sistema cliente/servidor se compone de un conjunto de componentes funcionales. Cuando se aplica a cliente/servidor, el modelo de proceso concurrente define actividades en 2 dimensiones: una división de sistemas y una división de componentes. Los aspectos del nivel de sistemas se encaran a través de dos actividades: diseño y realización.

La concurrencia se logra de dos maneras:

  • Las actividades del sistema y de componente ocurren simultáneamente y pueden modelarse con el enfoque orientado a objetos descrito anteriormente;
  • Una aplicación cliente/servidor típica se incorpora con muchos componentes, cada uno de ellos de los que se pueden diseñar y efectuar concurrentemente.

En realidad, el modelo de desarrollo concurrente es aplicable a todo tipo de desarrollo de softwarey da una imagen exacta del estado actual de un proyecto. En lugar de confinar actividades de ingeniería de softwarea una secuencia de sucesos, define una red de actividades, todas y cada una de las actividades de la red existen simultáneamente con otras. Los sucesos generados dentro de una actividad dada o algún otro lado de la red de actividad comienza las transiciones entre los estados de una actividad.

4.7) Proceso unificado del desarrollo desoftware

El proceso unificado es un proceso de softwaregenérico que puede ser usado para una gran cantidad de géneros de sistemas de software, para diferentes áreas de aplicación, diferentes géneros de organizaciones, niveles diferentes de competencia y diferentes tamaños de proyectos.

Provee un enfoque disciplinado en la asignación de labores y responsabilidades en una organización de desarrollo. Su meta es asegurar la producción de softwarede altísima calidad que satisfaga las necesidades de los usuarios finales, dentro de un calendario y presupuesto predecible.

El proceso unificado tiene dos dimensiones:

  • Un eje horizontal que representa el tiempo y muestra los aspectos del ciclo de vida del proceso a lo largo de su desenvolvimiento
  • Un eje vertical que representa las disciplinas, las que agrupan actividades de una manera lógica de acuerdo a su naturaleza.

La primera dimensión representa el aspecto dinámico del proceso conforme se va desarrollando, se expresa en términos de fases, iteraciones y también hitos (milestones).

La segunda dimensión representa el aspecto estático del proceso: cómo es descrito en términos de componentes del proceso, disciplinas, actividades, flujos de trabajo, instrumentos y roles.

El refinamiento más conocido y documentado del proceso unificado es el RUP (proceso unificado racional).

El proceso unificado no es sencillamente un proceso, sino más bien un marco de trabajo extensible que puede ser adaptado a organizaciones o proyectos específicos. Del mismo modo, el proceso unificado de rational, también es un marco de trabajo extensible, con lo que muy frecuentemente resulta imposible decir si un refinamiento particular del proceso ha sido derivado del proceso unificado o del RUP. Por dicho motivo, los dos nombres acostumbran a usarse para referirse a un mismo concepto.

El softwarese ha convertido en algo muy necesario en nuestra sociedad actual, es la máquina que conduce a la toma de decisiones comerciales, sirve para la investigación científica moderna, es un factor clave que diferencia productos y servicios modernos. Esto se da porque el softwareestá inmerso en sistemas de todo tipo alrededor de nosotros.

El softwarede computadora es el producto que diseñan y edifican los ingenieros de software. Esto abarca programas que se ejecutan dentro de una computadora de cualquier tamaño y arquitectura, después de estar construido prácticamente cualquier persona en el mundo industrializado, así sea directa o bien de forma indirecta.

Los productos se pueden clasificar en:

  • Productos genéricos: Son los producidos por una organización para ser vendidos al mercado.
  • Productos hechos a medida: Sistemas que son desarrollados bajo pedido a un desarrollador específico.

Estos productos deben cumplir varias características siendo entregados, estas son:

  • Mantenibles: El softwaredebe poder evolucionar mientras cumple con sus funciones.
  • Confiabilidad: No debe generar daños en caso de errores.
  • Eficiencia: El softwareno debe desaprovechar los recursos.
  • Utilización adecuada: Debe contar con una interfaz de usuario conveniente y su documentación.

Lo que constituye el producto final es diferente para el ingeniero y los usuarios, para el ingeniero son los programas, datos y documentos que configuran el softwarepero para el usuario el producto final es la información que de determinado modo soluciona el inconveniente planteado por el usuario.

Back to top

5) Naturaleza de la ingeniería desoftware

La ingeniería de softwarees una disciplina que está orientada a aplicar conceptos y métodos de ingeniería al desarrollo de softwarede calidad.

5.1) Matemáticas

Los programas tienen muchas propiedades matemáticas. Por ejemplo la corrección y lade muchos algoritmos son conceptos matemáticos que pueden ser rigurosamente probados. El empleo de matemáticas en la IS es llamado métodos formales.

Los programas son construidos en una secuencia de pasos. El hecho de delimitar propiamente y hacer estos pasos, como en una línea de ensamblaje, es preciso para progresar la productividad de los desarrolladores y la calidad final de los programas. Este punto de vista inspira los diferentes procesos y metodologías que se hallan en la IS.

5.2) Gestión de Proyecto

El desarrollo de softwarede gran porte requiere una adecuada gestión del proyecto. Hay presupuestos, establecimiento de tiempos de entrega, un equipo de profesionales que liderar. Recursos (espacio de oficina, insumos, equipamiento) por adquirir. Para su administración se debe tener una clara visión y capacitación en gestión de proyectos.

Back to top

6) Participantes y papeles

Para el desarrollo de un sistema de softwarees necesaria la colaboración de muchas personas con distintas competencias, capacidades e intereses. Al conjunto de personas implicadas en el proyecto se les conoce como participantes.

Al conjunto de funciones y responsabilidades que hay en el proyecto o bien sistema se le conoce como papeles o papeles. Los roles están asociados a las labores que son asignadas a los participantes, en consecuencia, una persona puede desempeñar uno o bien múltiples papeles, así también un mismo rol puede ser representado por un equipo.

Es frecuente el uso de los términos "usuarios", "usuarios finales" y "clientes" como sinónimos, lo que puede provocar confusión; estrictamente, el cliente del servicio (persona, empresa o bien organización) es quién detalla losdel sistema, ​ en la medida en que el usuario es quien utiliza u opera por último el producto software, pudiendo ser o bien no el cliente.

6.1) Desarrolladores

Esta clase de participantes están relacionados con todas las facetas del. Su trabajo incluye la investigación, diseño, implementación, pruebas y depuración del software.

En el contexto de ingeniería de software, el gestor de desarrollo de softwarees un partícipe, que reporta al director de la empresa que presta el servicio de desarrollo. Es responsable del manejo y coordinación de los recursos y procesos para la adecuada entrega de productos de software, mientras que participa en la definición de la estrategia para el equipo de desarrolladores, dando ideas que fomenten la visión de la empresa.

6.2) Usuarios finales

El usuario final es quien interactúa con el producto de softwareuna vez es entregado. ​ Generalmente son los usuarios los que conocen el problema, en tanto que día a día operan los sistemas.

6.3) Código ético de un ingeniero desoftware

Un ingeniero de softwaredebe tener un código donde asegura, en la medida posible, que los esfuerzos efectuados se utilizarán para realizar el bien y deben comprometerse a fin de que la ingeniería de softwaresea una profesión benéfica y respetada. Para el cumplimiento de esta norma, se toman en cuenta ocho principios relacionados con la conducta y las resoluciones tomadas por el ingeniero; donde estos principios identifican las relaciones éticamente responsables de los individuos, grupos y organizaciones donde participen. Los principios a los que deben sujetarse son sobre la sociedad, cliente del servicio y empresario, producto, juicio, administración, profesión, colegas y por último el personal.

  • Sociedad: Los ingenieros de softwaredeben actuar de manera congruente con el interés social, aceptando la responsabilidad total de su trabajo, moderando los intereses con el bienestar social, aprobando el softwaresolamente si se tiene una creencia bien fundamentada, colaborando en los esfuerzos para solucionar asuntos importantes de interés social, ser justo y veraz en todas y cada una de las afirmaciones relativas al softwareo documentos asociados.
  • Cliente y empresario: Se debe actuar de forma tal que se llegue a conciliar los mejores intereses de los clientes del servicio y empresarios, congruentemente con el interés social. Estos deberán prestar servicios en sus áreas de competencia, siendo sinceros y francos sobre las restricciones, no usar un softwareque se obtenga ilegalmente o bien sin ética, usar la propiedad de los clientes del servicio o empresarios de forma autorizada, mantener secreto cualquier documento de información confidencial.
  • Producto: Hay que asegurarse que los productos y sus modificaciones cumplan con los estándares profesionales más altos posibles, procurando la alta calidad, costos aceptables y una agenda razonable asegurando que los costos y beneficios sean claros y admitidos por el empresario y el usuario. Asegurar que las metas y objetivos de cualquier proyecto sean adecuados y alcanzables.
  • Juicio: Se debe sostener una integridad e independencia en el juicio profesional, moderando todo juicio técnico por la necesidad de respaldar y sostener los valores humanos, mantener la objetividad profesional respecto a cualquier softwareo documento relacionado, no involucrarse en prácticas financieras fraudulentas.
  • Administración: Se deberá asegurar una buena administración para cualquier proyecto en el cual se trabaje, usando procedimientos efectivos para fomentar la calidad y reducir peligros, asegurándose también que se conozcan las políticas y procedimientos del empresario para resguardar contraseñas, archivos y también información confidencial.
  • Profesión: Se debe acrecentar la integridad y reputación de la profesión en conjunto con el interés social, ayudando al desarrollo de un entorno organizacional conveniente para actuar, promoviendo el conocimiento público de la ingeniería de software, propagando el conocimiento de la ingeniería de softwarepor medio de participaciones en organizaciones, reuniones y publicaciones profesionales.
  • Colegas: Cada ingeniero deberá respaldar y ser justos con los colegas, motivando a sus colegas sujetándose al código, ayudando también a su desarrollo profesional, reconocer los trabajos de otros y abstenerse a atribuirse de méritos indebidos, comprobar los trabajos de manera objetiva, sincera y propiamente documentada.
  • Personal: Los ingenieros de softwareparticiparan toda su vida en el aprendizaje con la práctica y promoverán un enfoque ético de la profesión, mejorando su conocimiento de los avances en el análisis, especificación, diseño, desarrollo, mantenimiento, pruebas del softwarey documentos relacionados en conjunto con administración del proceso de desarrollo.
Back to top

7) Educación ética

7.1) Organizaciones

Back to top

8) Véase también

Back to top

9) Referencias

Back to top

10) Bibliografía

Back to top

11) Enlaces externos

Back to top
Share icon

ESTOS EXCLUSIVOS INFORMES GRATUITO REVELAN

7 SECRETOS DE EXPERTOS SEO QUE TE LLEVÁN AL 1#
7 SECRETOS DE EXPERTOS SEO QUE TE LLEVÁN AL 1# EN GOOGLE PARA GANAR 10.000s DE TRÁFICO DE CALIDAD GRATUITO - EN SÓLO 2 MESES
 

Los 7 pasos más poderosos para disparar tu ranking orgánico para ALCANZAR Y MANTENER un impresionante tráfico orgánico es TUYO.

Consigue gratis lo que el 1% de los expertos en SEO venden por miles de euros... y el otro 99% ni siquiera sabe que existe.


OBTEN MI INFORME GRATUITO
5 errores que debes evitar en tu sitio web de Drupal
Ebook - 5 errores que debes evitar en tu sitio web de Drupal (¡podrían costarte miles de euros!)
 

Este Ebook cubre 5 terribles errores que probablemente estés cometiendo ahora mismo con tu sitio web de Drupal.

¡Nº3 TE SORPRENDERÁ! Esta lectura de 10 minutos te ahorrará miles de euros.



OBTEN MI INFORME GRATUITO