Está en la página 1de 37

Ingeniería de software es 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
mantenerlos. Se conoce también
como Desarrollo de Software o
Producción de Software ( Bohem,
1976).
 Siguiendo una metodología en el
desarrollo de software se busca de
una manera sistemática, realizar,
gestionar y administrar un proyecto
de forma tal que se tengan altas
probabilidades de éxito.
• Planificación: planeamiento
detallado que guíe la gestión del
proyecto, temporal y
económicamente.
• Implementación: conjunto de
actividades que componen la
realización del producto.
• Puesta en producción: etapa de
definición, el proyecto es presentado
al cliente con los requerimientos
 Inicio: Se definen los objetivos del
proyecto y los recursos necesarios para su
implementación. El inicio define hacia
donde queremos ir, no como queremos ir.

 Control en producción: control del


producto, analizando como el producto
difiere o no de los requerimientos
originales e iniciando de ser necesario las
correcciones respectivas.
• Expresión de necesidades: se reflejan los requerimientos y funcionalidades que ofrecerá el sistema
al usuario
• Especificaciones: se trata de la formalización de los requerimientos.
• Análisis: se tiene una descripción clara del producto a construir, que funcionalidades aportara y que
comportamiento tendrá.
• Diseño: definir relaciones y entidades de las bases de datos y seleccionar el lenguaje de
programación a utilizar.
• Implementación: se empiezan a codificar algoritmos y estructuras de datos en el lenguaje antes
definido. En el caso de modelo de ciclo de vida Code&Fix, se empieza meramente por esta etapa,
saltándose las etapas de especificaciones, análisis y diseño con la siguiente perdida de control sobre
la gestión del proyecto.
• Debugging: garantizar que el programa no contenga errores de diseño o codificación.
• Validación: tiene como objetivo la verificación de que el sistema desarrollado cumple con los
requerimientos.
• Evolución: se le asigna el agregado de nuevas funcionalidades (evolución) y la corrección de errores
que surgen (mantenimiento).
• Metodología estructurada: cada función a realizar por
el sistema se descompone en pequeños módulos
individuales.
• Metodología orientada a objetos: arma módulos
basados en componentes, es decir, cada componente
es independiente del otro. Esto nos permite que el
código sea reutilizable
 Describe el desarrollo de software,
desde la fase inicial hasta la fase
final.
 Su propósito es definir las distintas
fases intermedias que se requieren
para validar el desarrollo de la
aplicación, es decir, para garantizar
que el software cumpla los requisitos
para la aplicación y verificación de
los procedimientos de desarrollo.
 Ciclo de vida lineal.
 Es el más sencillo de todos los modelos.
 Consiste en descomponer la actividad global del proyecto en
etapas separadas que son realizadas de manera lineal.
 Las actividades de cada una de las etapas mencionadas
deben ser independientes entre sí.
 Tiene como desventaja que es muy costoso retomar una
etapa anterior al detectar una falla.
 Es válido tomar este ciclo de vida cuando algún sector
pequeño de una empresa necesita llevar un registro de datos
acumulativos, sin necesidad de realizar procesos
complicados.
 Es un ciclo de vida que admite iteraciones.
 Después de cada etapa se realiza una o varias
revisiones para comprobar si se puede pasar a la
siguiente.
 Es un modelo rígido, poco flexible, y con muchas
restricciones.
 Provee un producto con un elevado grado de calidad
sin necesidad de un personal altamente calificado.
 Entre los inconvenientes se pueden considerar: la
necesidad de contar con todos los requerimientos (o
la mayoría) al comienzo del proyecto, y, si se han
cometido errores es costoso y difícil volver atrás para
realizar la corrección.
 Es un modelo puramente teórico, ya que el usuario
rara vez mantiene los requerimientos iniciales.
 Hoy en día, solo se le cita como ejemplo bibliográfico.
 Contiene las mismas etapas que el ciclo de vida
en cascada puro. A diferencia de aquél, a éste se
le agregaron dos sub etapas de
retroalimentación entre las etapas de análisis y
mantenimiento, y entre las de diseño y
debugging.
 Las ventajas y desventajas de este modelo son
las mismas del ciclo anterior, con el agregado de
los controles cruzados entre etapas para lograr
una mayor corrección.
 Podemos utilizar este modelo de ciclo de vida en
aplicaciones, que si bien son simples, necesitan
una confiabilidad muy alta. Un ejemplo claro en
 Variación del ciclo
de vida en cascada
puro
 Las diferentes
etapas pueden ser
solapadas
 Retroalimentación
entre etapas
aumenta
eficiencia.
VENTAJAS DESVENTAJAS

 Ganancia de calidad  Dificultad de


en el producto final identificar el inicio y el
 No hace necesario fin de cada etapa
una documentación  En caso de
detallada para cada presentarse
etapa, ya que se problemas de
comparten partes de comunicación estos
la documentación. van a generar
inconsistencias.
• Las cascadas se
dividen en subetapas
independientes que
pueden ser
desarrolladas en
paralelo.
• Es ventajoso en el
sentido de que
permite que más
gente este trabajando
al mismo tiempo
• Si surgen
dependencias entre
distintas etapas
podría tener que
 Basado en el ciclo de
vida en cascada puro
 Tiene como fin evitar
que el producto final
no sea lo que el
cliente solicitó.
 Se realizan
iteraciones de varios
ciclos de vida en
cascada, entregando
una versión
mejorada, o
ampliada, luego de
 El cliente evalúa corrige, o propone
mejoras.
 Se itera hasta que el producto final
sea el requerido.
 Ideal para utilizar en situaciones de
incertidumbre sobre los
requerimientos.
 Uso de los prototipos para validar los
requerimientos en cualquier ciclo de
vida.
 Cuando los requerimientos no han
sido detallados, entendidos o
clarificados con exactitud, se realiza
primero un prototipo con
especificaciones iniciales,
obteniendo así un producto parcial y
provisional.
• Se hace un producto
intermedio
• Se analizan como
responderán las
funcionalidades
previstas para el
producto final.
• Se debe evaluar la
inversión y el esfuerzo
de hacerlo
• Se utiliza cuando no se
conoce con exactitud
los resultados posibles,
o el comportamiento de
mismo
• Es sumamente costoso
y la administración es
complicada.
Los requerimientos pueden cambiar en
cualquier momento.
Afronta este problema mediante una
iteración de ciclos requerimientos-
desarrollo-evaluación.
Útil cuando desconocemos la mayoría de
los requerimientos iniciales, o estos
requerimientos no están completos.
Ejemplo: Sistema
centralizado de
stock-ventas-
facturación.
Se basa en la filosofía de construir
incrementando las funcionalidades
del programa.
Se realiza construyendo por módulos
que cumplen diferentes funciones
del sistema. Esto permite ir
aumentando gradualmente las
capacidades del software
 Menos riesgoso que construir un
sistema más grande.
 Más fácil relevar los requerimientos
del usuario.
 Si de detecta un error grave, solo se
desecha la última iteración.
 Filosofía de divide & conqueror.
Este modelo de ciclo de vida no esta
pensado para cierto tipo de
aplicaciones, sino que esta orientado
a cierto tipo de usuario o cliente
Se basa en una serie de ciclos
repetitivos para ir ganando madurez
en el proyecto final.
Concepto de riesgo que aparece
debido a las incertidumbres e
ignorancias.
En este modelo hay cuatro
actividades que envuelven a las
etapas:

 Planificación.
 Análisis de riesgo.
 Implementación.
 El cliente evalúa el prototipo.
Desarrollo de software es que puede
comenzarse el proyecto con un alto
grado de incertidumbre.
Bajo riesgo de retraso en caso de
detección de errores.
Algunas de las desventajas son: el
costo temporal y la dificultad para
evaluar los riesgos.
Modelo adecuado para grandes
proyectos internos de una empresa.

Ejemplo: Programa
que administre
reclamos, pedidos e
incidentes.
 En esa metodología cada
funcionalidad, o requerimiento
solicitado por el usuario, es
considerado un objeto.
 Abstracción de los requerimientos de
usuario.
 Fichas CRC
 No necesariamente se usa con un
lenguaje orientado a objetos.
 Ejemplo: Programas de
monitoreo de procesos, grandes
sistemas de transacciones sobre
base de datos, procesamiento
por lotes.
 Empresa: EvolutionSoft
 Profesional entrevistado: Salomé
Brenes.
 Puesto: Directora de Proyectos.
• Brevemente, ¿Qué es e-volutionSoft?
EvolutionSoft es una empresa
consolidada que se encarga del
desarrollo de software para
aplicaciones de manufactura, entre
las que se pueden mencionar:
administración de compras, control
de inventarios, proceso productivo y
trabajo en planta con costeo de
estos; sistemas de mantenimiento
preventivo y correctivo de flotillas;
• ¿Hace cuantos años están al servicio
de la clientela costarricense?
• 12 años.
• ¿Bajo qué objetivo fue creada la
empresa?
• El principal objetivo de la empresa
fue desarrollar software para
aplicaciones meramente enfocadas a
la manufactura.
• En términos generales, ¿cómo es el proceso que utilizan
(ciclo de vida) del desarrollo de software a la medida? ¿Cuál
es la duración promedio de los proyectos? ¿Cómo se
establece el precio?

• El ciclo de vida que utilizan a la hora de vender un


servicio se resume en los siguientes pasos:
• Se hace análisis y establecimiento de requerimientos del
cliente acompañado y asesorado por uno de los ingenieros
industriales de la compañía.
• Se efectúa una estimación del tiempo de realización del
proyecto por parte de un programador.
• Se calcula el precio final y se consulta con el cliente.
• Se incurre en una primera implementación y capacitación
del programa.
• Se espera la aprobación del cliente.
• Se da la implementación final del programa en la compañía.

• La duración de un proyecto depende mucho en los


requerimientos del cliente y los recursos que este posea.
• El precio del desarrollo de un servicio se obtiene con
base a hora de consultoría, la cual varía entre ingeniero
industrial y programador.
• ¿Cómo describiría usted el mercado
costarricense para este servicio? ¿Existen
diferencias con respecto al mercado del
resto de América Latina?

• Se está presentando una tendencia a la


adquisición de programas de software
estándares, no tanto al desarrollo de
software a la medida, pues se busca
disminuir los contratiempos de trabajar con
requerimientos de los clientes que no saben
en especifico que es lo que necesitan y el
controlar cambios presenta un gran
problema.
• Se ahorran gran cantidad de costos a la
hora de renovar el software con nuevas
versiones por medio del servicio de soporte.
• Entre los casos particulares se encuentre
• A la hora de adquirir el servicio, ¿el cliente
adquiere solamente el software, o también
adquiere capacitación y mantenimiento del
mismo?

• El cliente obtiene la implementación,


seguimiento y capacitación inicial del software.
Existe la opción de adquirir el servicio de
soporte, la cual se basa en el derecho de recibir
las nuevas versiones del software conforme
vayan saliendo al mercado.

• ¿De quién es la propiedad intelectual del


software y el código fuente? ¿Qué otras cosas
adquiere el cliente?

• La propiedad intelectual es de EvolutionSoft, sin


embargo el cliente recibe el código fuente.
Además de esto el cliente recibe: la
documentación completa, los diagramas, las

También podría gustarte