Fundamentos de Análisis y Diseño (Ingeniería del Software).

in #spanish6 years ago (edited)


Fuente

La importancia de la ingeniería de software está en fomentar un enfoque sistemático para el desarrollo, la implementación y el mantenimiento del software a través del ciclo de la vida del sistema de software. Es muy diferente escribir programas pequeños y eficientes que desarrollar sistemas de software. Las técnicas utilizadas para su desarrollo al realizar programas, no parecen adecuadas cuando se aplican al desarrollo de sistemas grandes. Cuando se utilizan metodologías de desarrollo inapropiados, los proyectos tienden a presentar un aumento significativo de los costos y un consumo extra de tiempo.

La ingeniería de software apunta a proveer metodologías y técnicas que ayuden a desarrollar sistemas de software a tiempo, y a su vez, que aseguren que el desarrollador cumpla con las expectativas de calidad y permanezca dentro del presupuesto.


Fuente

divisoria.png

Características del software.

Un producto de software, al igual que el proceso de desarrollo de software no se puede comparar, ni evaluar utilizando los mismos criterios que se usan para otros productos y procesos de manufactura.

  • El producto debe ser confiable y realizar sólo las tareas especificadas en los requerimientos.
  • El producto debe ser robusto.
  • El producto de software debe ser lo más reutilizable posible.
  • El producto de software debe ser eficiente en el uso de los recursos del sistema.
  • El producto de software debe ser mantenible.
  • Se requiere desarrollar el software en una manera que lo haga evolutivo.
  • El producto de software debe cumplir con los requerimientos de rendimiento especificados, es decir, debe cumplir algunas de las restricciones relacionadas al rendimiento.
  • El producto de software tendrá un valor mayor si es portable. Es decir que puede trabajar bajo diferentes plataformas y ambientes (hardware, sistemas operativos, etc.)
  • El producto de software debe ser utilizable.

Mitos que prevalecen en la industria del software.

Como resultado, hasta hace muy poco, nunca se tuvo ningún componente de software reutilizable que hiciera más fácil el desarrollo de software. Esta es una de las razones principales por las que el crecimiento de la industria del software ha sido lento y pesado comparado con la industria de hardware.

Los proyectos de software se exceden en los costos. Muchos proyectos de software tienden a retrasarse en los cronogramas. El software es un producto que usualmente no otorga ningún tipo de garantía. La calidad es también una materia de preocupación.

El desarrollo de software es una actividad dependiente del diseñador y el programador, el factor humano también debe ser tomado en cuenta. Existen algunas creencias incorrectas, comunes en la mayoría de programadores, que retrasan el crecimiento de la industria.

  • Tener un buen programador para construir un software de calidad.
  • Seguir un conjunto de procesos y metodologías que tiende a disminuir el “instinto creativo” de los desarrolladores.
  • La disciplina de desarrollar software es un “arte” y no una disciplina de “ingeniería”.
  • Cuando se enfrenta a presiones de entrega, todo lo qué se necesita es añadir más programadores.
  • Ni el cliente puede proveer todos los requerimientos, ni son necesarios todos los requerimientos, Siempre se puede acomodar requerimientos adicionales.
  • Para el cliente el único entregable importante es un conjunto de programas que funcionen de manera razonable.
  • La calidad del software no puede ser evaluada hasta que esté completamente construido.
  • El software debe ser desarrollado con un enfoque de ingeniería.

Tipos de aplicaciones de software.

Las aplicaciones de software varían desde aplicaciones de negocio, aplicaciones de ingeniería hasta aplicaciones de entretenimiento y otros. Tenemos los siguientes:

Software de aplicaciones de sistema: Las aplicaciones de sistema de software son usualmente programas que interactúan principalmente con el hardware.

Software de aplicaciones en tiempo real: Este software requiere de salidas que deben proporcionarse en tiempo real.

Software para aplicaciones de negocio: Estas aplicaciones involucran el manejo de entradas muy grandes, reglas específicas de proceso del negocio y requerimiento de salidas específicos.

Software para ingeniería y aplicaciones científicas: Estas aplicaciones involucran cálculos complejos.

Software para aplicaciones incorporadas: Tales aplicaciones residen en la Memoria de Sólo Lectura (Read Only Memory ROM), usualmente son de tamaño compacto y especificas a los dispositivos con los que trabaja.

Software para computadores personales y aplicaciones para individuos: Estos varían desde lo simple hasta lo complejo, pero se pueden ejecutar en computadoras personales y pueden usarla personas con diversas habilidades para manejar la computadora.


Fuente

Procesos de software.

Un proceso de define como una serie de operaciones usadas en la creación de un producto. Se definen así:

Un proceso de software define el conjunto de tareas, que tienen que ser realizadas para producir un producto de software de alta calidad.

Es el proceso que se sigue para construir el producto de software desde la concepción de una idea, has la entrega y el retiro final del sistema.

Las características de un proceso de software se resumen de esta forma:

Comprensión: Este requiere claridad y declaración de la naturaleza explicita de la definición de proceso.

Visibilidad: Se refiere a la capacidad de observar la salida de varias actividades del proceso, de manera que se mida el progreso de proceso.

Confiabilidad: Se refiere a la capacidad del proceso para evadir errores o detectar errores y manejarlos antes de que estos avancen en el producto.

Robustez: Se refiere a la capacidad del proceso de no detenerse a pesar de problemas inesperados.

Facilidad de mantenimiento: Se refiere a la cantidad de modificaciones que pueden hacerse al sistema de software sin producir errores.

Facilidad de verificación: Un proceso es verificable si sus propiedades pueden ser fácilmente verificables.

Rapidez: Se refiere a la agilidad y rapidez del proceso para ser capaz de entregar un producto final a partir de las especificaciones.

Facilidad de soporte: Se refiere a la posibilidad de que las actividades del proceso sean soportadas por un conjunto de herramientas automatizadas.

Facilidad de aceptación: Se refiere a la capacidad del proceso a ser aceptado y usado por el equipo de ingenieros.

Facilidad de adaptación: Se refiere a la capacidad del proceso a ser modificado para satisfacer las necesidades de cambio en el ambiente de desarrollo.

Fases del proceso de desarrollo de software.

Se dividen en 3 fases y estas son:

Fase de definición: Esta fase se concentra principalmente en que tiene que ser completado por el proceso de software. Las tareas principales que se toman en cuenta durante esta fase son: Ingeniería de información, planeamiento del proyecto de software y análisis de requerimiento.

Fase de desarrollo: Esta fase se enfoca en el “como” los requerimientos de un sistema y el software será completados. Se lleva a cabo la prueba del diseño y las tareas principales son: Diseño de software, codificación y prueba.

Fase de mantenimiento: Esta fase se enfoca en el cambio, corrección de errores y adaptación.

La necesidad de modelos de procesos de software.

En los primeros tiempos de la computación, el desarrollo del software era principalmente un esfuerzo individual. No había diferencia entre el programador y el usuario final de la aplicación. El usuario final desarrollaba la aplicación como una función de soporte para su propia actividad. Esto consistía en sólo modificar y codificar el lenguaje requerido y representa sólo la fase final de desarrollo.

divisoria.png

Categorías de modelos de procesos de software.

  • Modelo secuencial lineal.
  • Modelos de creación de un prototipo.
  • Modelo evolutivo.
  • Modelo de métodos formales.
  • Sistema ensamblado a partir de componentes reutilizables.

Modelo secuencial, en cascada.

Este modelo procede de una manera lineal ordenada, con transiciones de entregables bien definidos en cada etapa.


Fuente

Modelo de creación de un prototipo.

El proceso procede en la forma de iteraciones. En cada iteración, se crea un prototipo basado en los requerimientos iniciales del cliente.


Fuente

Modelo evolutivo.

Este modelo se usa cuando los objetivos generales y las entradas y salidas se conocen.


Fuente

Modelo de métodos formales.

Este usa algunos métodos matemáticos para derivar un programa de computadora de un conjunto de especificaciones del sistema.


Fuente

Sistema ensamblado a partir de componentes reutilizables

Un sistema consiste en un conjunto de partes que interactúan.


Fuente

divisoria.png

¡Espero les haya gustado mi post, gracias por sus comentarios y apoyo!

@franzo

Sort:  

Este tema es muy interesante para mi personalmente porque tengo en mente algunos pequeños proyectos en mente. Gracias por compartir.

Excelente, estudialo y toma la parte que prefieras para tu desarrollo.

Felicidades, has sido seleccionado/a para la votación diaria de nuestra comunidad de curación para contenido de calidad @proapoyo.


20180425_204715_0001.png
Te invitamos a seguir nuestro trail de curación mediante: https://steem.place/en/user/register

Así como a unirte a nuestro canal de Discord:
https://discord.gg/Pw4GE6q

Feliz día.

@franzo, Una cálida bienvenida a Steemit. Esta es una gran comunidad y sé que la pasarás genial aquí.

Quiero invitarlo a unirse al canal del discurso #steemschools https://discord.gg/eTZqQvk y le enseñaremos y apoyaremos para que crezca en Steemit, para elegir el tema adecuado para atraer a los lectores, usar las etiquetas correctas para obtener más visibilidad, cómo hacer publicaciones de calidad y comentarios sobre Steemit y obtener muchos seguidores.
images (22).jpeg

Siempre he admirado este tipo de ingeniería!

Así es, este es mi verdadero tema de estudio, por mi carrera, vendrán más post de informática. Saludos amiga

Interesante tema para los amantes de la tecnología.

Así es cariño, la tecnología consta de tipos de desarrollo constante y este tema de la Ingeniería del Software es bastante complejo!! gracias, un abrazo.

Un tema bastante complejo, pero de gran importancia hoy día. Gracias amigo @franzo por compartirlo.

Shalom...

Gracias por tu apoyo amigo, y si es un tema bastante complejo!! saludos

Congratulations! This post has been upvoted from the communal account, @minnowsupport, by franzo from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, theprophet0, someguy123, neoxian, followbtcnews, and netuoso. The goal is to help Steemit grow by supporting Minnows. Please find us at the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.

If you would like to delegate to the Minnow Support Project you can do so by clicking on the following links: 50SP, 100SP, 250SP, 500SP, 1000SP, 5000SP.
Be sure to leave at least 50SP undelegated on your account.

Coin Marketplace

STEEM 0.19
TRX 0.13
JST 0.028
BTC 66373.20
ETH 3291.44
USDT 1.00
SBD 2.69