You are on page 1of 12

INGENIERIA DE SOFTWARE

La ingeniera de software es una disciplina formada por un conjunto de mtodos,


herramientas y tcnicas que se utilizan en el desarrollo de los programas
informticos (software).
Esta disciplina trasciende la actividad de programacin, que es el pilar fundamental a la
hora de crear una aplicacin. El ingeniero de software se encarga de toda la gestin del
proyecto para que ste se pueda desarrollar en un plazo determinado y con el
presupuesto previsto.
La ingeniera de software, por lo tanto, incluye el anlisis previo de la situacin, el diseo
del proyecto, el desarrollo del software, las pruebas necesarias para confirmar su correcto
funcionamiento y la implementacin del sistema.

Importancia
La ingeniera de software es muy importante ya que con ella se puede analizar, disear,
programar y aplicar un software de manera correcta y organizada, cumpliendo con todas
las especificaciones del cliente y el usuario final.

PROCESO
El proceso es un dilogo en el que se rene el conocimiento y se incluye en el software.
El proceso proporciona una interaccin entre los usuarios y los diseadores, entre los
usuarios y las herramientas de desarrollo, y entre los diseadores y las herramientas de
desarrollo [tecnologa]. Es un proceso interactivo donde la herramienta de desarrollo se
usa como medio de comunicacin, con cada iteracin del dilogo se obtiene mayor
conocimiento de las personas involucradas.
Cuando se trabaja para construir un producto o un sistema, es importante seguir una serie
de pasos predecibles, un mapa de carreteras que le ayude a obtener el resultado
oportuno de calidad. El mapa de carreteras a seguir es llamado proceso del software.
Lo construyen los ingenieros del software y sus gestores adaptan el proceso a sus
necesidades y entonces lo siguen. Adems las personas que han solicitado el software
tienen un papel a desempear en el proceso del software. Es importante porque
proporciona estabilidad, control y organizacin a una actividad que puede, si no se
controla, volverse catica.

Los pasos son a un nivel detallado, el proceso que adoptemos depende del software que
estamos construyendo. Un proceso puede ser apropiado para crear software de
un sistema de aviacin, mientras que un proceso diferente por completo puede ser
adecuado para la creacin de un sitio web.

Caractersticas del proceso

El software se desarrolla o construye; no se manufactura en el sentido clsico.

A pesar de que existen similitudes entre el desarrollo del software y la manufactura del
hardware, las dos actividades serian diferentes en lo fundamental. En ambas la alta
calidad se alcanza por medio del buen diseo, la fase de manufactura del hardware puede
incluir problemas de calidad existentes en el software.

El software no se desgasta.

El software es inmune a los males ambientales que desgasten el hardware. Por lo tanto la
curva de tasas de fallas para el software debera tener la forma de la curva idealizada.
Los defectos sin descubrir causan tasas de fallas altas en las primeras etapas de vida de
un programa. Sin embargo, los errores se corrigen y la curva se aplana: el software no se
desgasta, pero si se deteriora.

A pesar de que la industria tiene una tendencia hacia la construccin por


componentes, la mayora del software aun se construye a la medida.

Un componente de software se debe disear e implementar de forma que puede utilizarse


en muchos programas diferentes.
Los componentes reutilizables modernos encapsulan tanto los datos como el proceso se
aplican a estos, lo que permite al ingeniero de software crear nuevas aplicaciones nuevas
a partir de partes reutilizables.

PRODUCTO
La expresin ingeniera de producto se refiere al proceso de diseo y desarrollo de un
equipo, sistema o aparato de forma tal que se obtiene un elemento apto para su
comercializacin mediante algn proceso de fabricacin. Por lo general la ingeniera de
producto comprende actividades relacionadas con optimizar el costo de produccin, su
facilidad de fabricacin, su calidad, funcionalidad, confiabilidad y otras caractersticas
importantes para el usuario. Por lo general se busca obtener un producto con estas
caractersticas de manera que el producto resulte ms atractivo y competitivo en
el segmento del mercado que tiene por objetivo. De esta forma se aumentan las
posibilidades de xito del negocio que posee el fabricante de dicho producto.

Caractersticas

Comprensin: Este requiere claridad y declaracin de la naturaleza explicita de la


definicin del proceso.

Visibilidad: Se refiere a la capacidad de observar la salida de arias actividades del


proceso, de manera que se mida el proceso del progreso.

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 introducir errores.

Facilidad de verificacin: Un proceso es verificable si sus propiedades pueden ser


fcilmente verificadas.

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 aceptacin: Se refiere a la capacidad del proceso a ser aceptado y


usado por el equipo de ingenieros.
Facilidad de adaptacin: Se refiere a la capacidad del proceso a ser modificado para
satisfacer las necesidades de cambio en el ambiente de desarrollo.

Despus de haber discutido las caractersticas del proceso de desarrollo de software, se


presenta a continuacin las diferentes fases del proceso de desarrollo de software.

Fase de definicin: Esta fase se concentra principalmente en que tiene que ser
completado por el proceso de software.

Fase de desarrollo: Esta fase enfoca en el cmo los requerimientos de un sistema y


el software sern completados.

Fase de mantenimiento: Esta fase se enfoca en cambio, el mantenimiento incluye la


correccin de errores y la adaptacin, conforme evoluciona el entorno del software.

MODELO DE PROCESOS DEL DESARROLLO DE SOFTWARE


Modelo en Cascada: Tambin llamado Lineal secuencial, es el enfoque metodolgico
que ordena rigurosamente las etapas del proceso para el desarrollo de software, de tal
forma que el inicio de cada etapa debe esperar a la finalizacin de la etapa anterior.
Anlisis de requisitos: En esta fase se analizan las necesidades de los usuarios finales
del software para determinar qu objetivos debe cubrir. De esta fase surge una memoria
llamada SRD (documento de especificacin de requisitos), que contiene la especificacin
completa de lo que debe hacer el sistema sin entrar en detalles internos. Es importante
sealar que en esta etapa se debe consensuar todo lo que se requiere del sistema y ser
aquello lo que seguir en las siguientes etapas, no pudindose requerir nuevos resultados
a mitad del proceso de elaboracin del software.
Diseo del Sistema: Se descompone y organiza el sistema en elementos que puedan
elaborarse por separado, aprovechando las ventajas del desarrollo en equipo. Como
resultado surge el SDD (Documento de Diseo del Software), que contiene la descripcin
de la estructura relacional global del sistema y la especificacin de lo que debe hacer
cada una de sus partes, as como la manera en que se combinan unas con otras. Es
conveniente distinguir entre diseo de alto nivel o arquitectnico y diseo detallado. El
primero de ellos tiene como objetivo definir la estructura de la solucin (una vez que la
fase de anlisis ha descrito el problema) identificando grandes mdulos (conjuntos de
funciones que van a estar asociadas) y sus relaciones. Con ello se define la arquitectura
de la solucin elegida. El segundo define los algoritmos empleados y la organizacin del
cdigo para comenzar la implementacin.
Diseo del Programa: Es la fase en donde se realizan los algoritmos necesarios para el
cumplimiento de los requerimientos del usuario as como tambin los anlisis necesarios
para saber que herramientas usar en la etapa de Codificacin.
Codificacin: Es la fase en donde se implementa el cdigo fuente, haciendo uso de
prototipos as como de pruebas y ensayos para corregir errores. Dependiendo del
lenguaje de programacin y su versin se crean las bibliotecas y componentes
reutilizables dentro del mismo proyecto para hacer que la programacin sea un proceso
mucho ms rpido.
Pruebas: Los elementos, ya programados, se ensamblan para componer el sistema y se
comprueba que funciona correctamente y que cumple con los requisitos, antes de ser
entregado al usuario final.
Verificacin: Es la fase en donde el usuario final ejecuta el sistema, para ello el o los
programadores ya realizaron exhaustivas pruebas para comprobar que el sistema no falle.

Mantenimiento: Una de las etapas ms crticas, ya que se destina un 75% de los


recursos, es el mantenimiento del Software ya que al utilizarlo como usuario final puede
ser que no cumpla con todas nuestras expectativas.
Ventajas:

Modelo y planificacin fcil y sencillos.


Sus fases son conocidas por los desarrolladores.
Los usuarios lo pueden comprender fcilmente.

Desventajas:

En la vida real, un proyecto rara vez sigue una secuencia lineal, esto crea una mala
implementacin del modelo, lo cual hace que lo lleve al fracaso.
El proceso de creacin del software tarda mucho tiempo ya que debe pasar por el
proceso de prueba y hasta que el software no est completo no se opera. Esto es la
base para que funcione bien.
Cualquier error de diseo detectado en la etapa de prueba conduce necesariamente al
rediseo y nueva programacin del cdigo afectado, aumentando los costos del
desarrollo.

Modelo de prototipos: Pertenece a los modelos de desarrollo evolutivo. El prototipo


debe ser construido en poco tiempo, usando los programas adecuados y no se debe
utilizar muchos recursos.
El diseo rpido se centra en una representacin de aquellos aspectos del software que
sern visibles para el cliente o el usuario final. Este diseo conduce a la construccin de
un prototipo, el cual es evaluado por el cliente para una retroalimentacin; gracias a sta
se refinan los requisitos del software que se desarrollar. La interaccin ocurre cuando el
prototipo se ajusta para satisfacer las necesidades del cliente. Esto permite que al mismo
tiempo el desarrollador entienda mejor lo que se debe hacer y el cliente vea resultados a
corto plazo.
Etapas:

Recoleccin y refinamiento de requisitos


Modelado, diseo rpido
Construccin del Prototipo
Desarrollo, evaluacin del prototipo por el cliente
Refinamiento del prototipo
Producto de Ingeniera

Cmo se lleva a cabo:


Se comienza elaborando un prototipo del producto final: qu aspecto tendr, cmo
funcionar. Para muchas interfaces de usuario, este modelo puede resultar tan simple
como unos dibujos con lpiz y papel o tan complejo como el propio cdigo operativo final.
Para interfaces de hardware o estaciones de trabajo, el modelo puede consistir en
maquetas de espuma, caucho, cartn o cartulina. Cuanto ms prximo se encuentre el
prototipo al producto real, mejor ser la evaluacin, si bien se pueden obtener magnficos
resultados con prototipos de baja fidelidad.

Ventajas:

No modifica el flujo del ciclo de vida


Reduce el riesgo de construir productos que no satisfagan las necesidades de los
usuarios
Reduce costo y aumenta la probabilidad de xito
Exige disponer de las herramientas adecuadas
Este modelo es til cuando el cliente conoce los objetivos generales para el software,
pero no identifica los requisitos detallados de entrada, procesamiento o salida.
Tambin ofrece un mejor enfoque cuando el responsable del desarrollo del software
est inseguro de la eficacia de un algoritmo, de la adaptabilidad de un sistema
operativo o de la forma que debera tomar la interaccin humano-mquina.

Desventajas:

Debido a que el usuario ve que el prototipo funciona piensa que este es el producto
terminado y no entienden que recin se va a desarrollar el software.
El desarrollador puede caer en la tentacin de ampliar el prototipo para construir
el sistema final sin tener en cuenta los compromisos de calidad y mantenimiento que
tiene con el cliente

Modelo de espiral: Propuesto originalmente por Boehm, es un modelo de proceso de


software evolutivo que conjuga la naturaleza iterativa de construccin de prototipos con
los aspectos controlados y sistemticos del modelo lineal secuencial. Proporciona el
potencial para el desarrollo rpido de versiones incrementales del software.

Funcionamiento del Modelo:


En el modelo espiral, el software se desarrolla en una serie de versiones incrementales.
Durante las primeras iteraciones, la versin incremental podra ser un modelo en papel o
un prototipo. Durante las ltimas iteraciones, se producen versiones cada vez ms
completas del sistema diseado.

Ventajas:

Puede adaptarse y aplicarse a lo largo de la vida del software de computadora.


Es un enfoque realista del desarrollo de sistemas y de software a gran escala.
Como el software evoluciona, a medida que progresa el proceso el desarrollador y el
cliente comprenden y reaccionan mejor ante riesgos en cada uno de los niveles
evolutivos.
Utiliza la construccin de prototipos como mecanismo de reduccin de riesgos.
Permite a quien lo desarrolla aplicar el enfoque de construccin de prototipos en
cualquier etapa de evolucin del producto.
Mantiene el enfoque sistemtico de los pasos sugeridos por el ciclo de vida clsico,
pero lo incorpora al marco de trabajo iterativo que refleja de forma ms realista el
mundo real.
Demanda una consideracin directa de los riesgos tcnicos en todas las etapas del
proyecto, y, si se aplica adecuadamente, debe reducir los riesgos antes de que se
conviertan en problemticos.

Desventajas:

Puede resultar difcil convencer a grandes clientes (particularmente en situaciones


bajo contrato) de que el enfoque evolutivo es controlable.
Requiere una considerable habilidad para la evaluacin del riesgo.
No se ha utilizado tanto como los paradigmas lineales secuenciales o de construccin
de prototipos.

Desarrollo por etapas: El modelo de desarrollo de software por etapas es similar al


Modelo de prototipos ya que se muestra al cliente el software en diferentes estados
sucesivos de desarrollo, se diferencia en que las especificaciones no son conocidas en
detalle al inicio del proyecto y por tanto se van desarrollando simultneamente con las
diferentes versiones del cdigo.
Este modelo estipula que el software ser desarrollado en sucesivas etapas:

1. Plan operativo Etapa donde se define el problema a resolver, las metas del proyecto,
las metas de calidad y se identifica cualquier restriccin aplicable al proyecto.
2. Especificacin de requisitos Permite entregar una visin de alto nivel sobre el
proyecto, poniendo nfasis en la descripcin del problema desde el punto de vista de los
clientes y desarrolladores. Tambin se considera la posibilidad de una planificacin de los
recursos sobre una escala de tiempos.
3. Especificacin funcional Especifica la informacin sobre la cual el software a
desarrollar trabajar.

4. Diseo Permite describir como el sistema va a satisfacer los requisitos. Esta etapa a
menudo tiene diferentes niveles de detalle. Los niveles ms altos de detalle generalmente
describen los componentes o mdulos que formarn el software a ser producido. Los
niveles ms bajos, describen, con mucho detalle, cada mdulo que contendr el sistema.
5. Implementacin Aqu es donde el software a ser desarrollado se codifica.
Dependiendo del tamao del proyecto, la programacin puede ser distribuida entre
distintos programadores o grupos de programadores. Cada uno se concentrar en la
construccin y prueba de una parte del software, a menudo un subsistema. Las pruebas,
en general, tiene por objetivo asegurar que todas las funciones estn correctamente
implementadas dentro del sistema.
6. Integracin Es la fase donde todos los subsistemas codificados independientemente
se juntan. Cada seccin es enlazada con otra y, entonces, probada. Este proceso se
repite hasta que se han agregado todos los mdulos y el sistema se prueba como un
todo.
7. Validacin y verificacin Una vez que el sistema ha sido integrado, comienza esta
etapa. Es donde es probado para verificar que el sistema es consistente con la definicin
de requisitos y la especificacin funcional. Por otro lado, la verificacin consiste en una
serie de actividades que aseguran que el software implementa correctamente una funcin
especfica. Al finalizar esta etapa, el sistema ya puede ser instalado en ambiente de
explotacin.
8. Mantenimiento El mantenimiento ocurre cuando existe algn problema dentro de un
sistema existente, e involucrara la correccin de errores que no fueron descubiertos en
las fases de prueba, mejoras en la implementacin de las unidades del sistema y cambios
para que responda a los nuevos requisitos. Las mantenciones se puede clasificar en:
correctiva, adaptativa, perfectiva y preventiva.
Desarrollo iterativo y creciente: Es un proceso de desarrollo de software, creado en
respuesta a las debilidades del modelo tradicional de cascada. La idea principal detrs de
mejoramiento iterativo es desarrollar un sistema de programas de manera incremental,
permitindole al desarrollador sacar ventaja de lo que se ha aprendido a lo largo del
desarrollo anterior, incrementando, versiones entregables del sistema. El aprendizaje
viene de dos vertientes: el desarrollo del sistema, y su uso (mientras sea posible). Los
pasos claves en el proceso son comenzar con una implementacin simple de los
requerimientos del sistema, e iterativamente mejorar la secuencia evolutiva de versiones
hasta que el sistema completo est implementado. En cada iteracin, se realizan cambios
en el diseo y se agregan nuevas funcionalidades y capacidades al sistema. El proceso
consiste en:

Etapa de inicializacin:
Se crea una versin del sistema. La meta de esta etapa es crear un producto con el que el
usuario pueda interactuar, y por ende retroalimentar el proceso. Debe ofrecer una muestra
de los aspectos claves del problema y proveer una solucin lo suficientemente simple
para ser comprendida e implementada fcilmente. Para guiar el proceso de iteracin se
crea una lista de control de proyecto, que contiene un historial de todas las tareas que
necesitan ser realizadas. Incluye cosas como nuevas funcionalidades para ser
implementadas, y reas de rediseo de la solucin ya existente. Esta lista de control se
revisa peridica y constantemente como resultado de la fase de anlisis.
Etapa de iteracin:
Esta etapa involucra el rediseo e implementacin de una tarea de la lista de control de
proyecto, y el anlisis de la versin ms reciente del sistema. La meta del diseo e
implementacin de cualquier iteracin es ser simple, directa y modular, para poder
soportar el rediseo de la etapa o como una tarea aadida a la lista de control de
proyecto. El cdigo puede, en ciertos casos, representar la mayor fuente de
documentacin del sistema. El anlisis de una iteracin se basa en la retroalimentacin
del usuario y en el anlisis de las funcionalidades disponibles del programa. Involucra el
anlisis de la estructura, modularidad, usabilidad, confiabilidad, eficiencia y eficacia
(alcanzar las metas). La lista de control del proyecto se modifica bajo la luz de los
resultados del anlisis.
Desventajas:

Requiere de un cliente involucrado durante todo el curso del proyecto. Hay clientes
que simplemente no estarn dispuestos a invertir el tiempo necesario.
Infunde responsabilidad en el equipo de desarrollo al trabajar directamente con el
cliente, requiriendo de profesionales sobre el promedio.
Sufre fuertes penalizaciones en proyectos en los cuales los requerimientos estn
previamente definidos, o para proyectos "todo/nada" en los cuales se requiere que se
completen en un 100% el producto para ser implementado (por ejemplo,
licitaciones)otro punto muy importante es asegurarnos de que el trabajo se pueda
cumplir tomando en cuenta los costos que podamos usar en nuestros propios recursos

Modelo DRA: (Desarrollo Rpido de Aplicaciones), Modelo de proceso del desarrollo del
software lineal secuencial que enfatiza un ciclo de desarrollo extremadamente corto. Es
una adaptacin a Alta velocidad en el que se logra el desarrollo rpido utilizando un
enfoque de construccin basado en componentes. Si se comprenden bien los requisitos y
se limita el mbito del proyecto, el proceso DRA permite al equipo de desarrollo crear un
sistema completamente funcional dentro de periodos cortos de tiempo.

Ventajas del Modelo DRA:

Es muy rpido.
Permite trabajar en l a varias personas a la vez

Desventajas del Modelo DRA:

Para proyectos grandes aunque por escalas, el DRA requiere recursos humanos
suficientes como para crear el nmero correcto de equipos DRA.
Requiere clientes y desarrolladores comprometidos en las rpidas actividades
necesarias para completar un sistema en un marco de tiempo abreviado. Si no hay
compromiso, por ninguna de las partes constituyentes, los proyectos DRA
fracasaran.
No todos los tipos de aplicaciones son apropiados para DRA. Si un sistema no se
puede modular adecuadamente. La construccin de los componentes necesarios
para DRA ser problemtico. Si est en juego el alto rendimiento, y se va a
conseguir el rendimiento convirtiendo interfaces en componentes de sistema, el
enfoque DRA puede que no funcione.
No es adecuado cuando los riesgos tcnicos son altos. Esto ocurre cuando una
nueva aplicacin hace uso de tecnologas nuevas, o cuando el nuevo software
requiere un alto grado de interoperabilidad con programas de computadora ya
existentes.
Enfatiza el desarrollo de componentes de programas reutilizables. La reutilizacin
es la piedra angular de las tecnologas de objetos, y se encuentra en el modelo de
proceso de ensamblaje.

Modelo de desarrollo concurrente: Conocido adems como Ingeniera Concurrente


dado por Davis Sitaram, se puede representar en forma de esquema como una serie de
actividades tcnicas importantes, tareas y estados asociados a ellas.
Este modelo se utiliza a menudo como el paradigma de desarrollo de aplicaciones
cliente/servidor.
Provee una meta-descripcin del proceso del software. El modelo concurrente tiene la
capacidad de describir las mltiples actividades del software ocurriendo simultneamente.
La mayora de los modelos de procesos de desarrollo del software son dirigidos por el
tiempo; cuanto ms tarde sea, ms atrs se encontrar en el proceso de desarrollo. Un
modelo de proceso concurrente est dirigido por las necesidades del usuario, las
decisiones de la gestin y los resultados de las revisiones.
El modelo de proceso concurrente define una serie de acontecimientos que dispararn
transiciones de estado a estado para cada una de las actividades de la ingeniera del
software. Durante las primeras etapas del diseo, no se contempla una inconsistencia del
modelo de anlisis. Esto genera la correccin del modelo de anlisis de sucesos, que
disparar la actividad de anlisis del estado hecho al estado cambios en espera.

Esto genera la correccin del modelo de anlisis de sucesos, que disparar la actividad
de anlisis del estado hecho al estado cambios en espera. Es un modelo de tipo de red
donde todas las personas actan simultneamente o al mismo tiempo.
Ventajas
Excelente para proyectos en los que se conforman grupos de trabajo independientes.
Proporciona una imagen exacta del estado actual de un proyecto.
Desventajas
Si no se dan las condiciones sealadas no es aplicable.
Si no existen grupos de trabajo no se puede trabajar en este mtodo

MINISTERIO DEL PODER POPULAR PARA LA EDUCACIN


UNIVERSIDAD ALEJANDRO DE HUMBOLDT

Ingeniera del Software

Elaborado por:
Miguel Artigas. C.I 24.553.549

You might also like