ANÁLISIS
Es la distinción y separación completa de las
partes de un todo hasta llegar a conocer sus
principios o elementos, sus características
representativas, así como sus
interrelaciones.
SISTEMAS
Un sistema es un conjunto de elementos
interrelacionados o componentes
entrelazados entre si para lograr un objetivo
común entre los elementos del sistema.
ANÁLISIS DE SISTEMAS
Es una etapa de la construcción de un
sistema informático, que consiste en relevar
la información actual y proponer los rasgos
generales de la solución futura.
Es la etapa posterior a la obtención de
requerimientos; y, anterior al diseño del
sistema.
Es una fase de la Ingeniería del Software.
Forma parte del ciclo de vida del software.
LO QUE NO ES EL ANÁLISIS DE SISTEMAS
Efectuar diseños que no cumplan con los requisitos de los
análisis de sistema como:
Observar un sistema sin tener en cuenta todas sus partes o
componentes.
Considerar el análisis sin evaluar todos los procedimientos.
Evaluar conceptos sin tener en consideración la uniformidad
de los procesos y no establecer su viabilidad.
Olvidarse de realizar un análisis técnico y económico.
No establecer restricciones de presupuestos y planificación
temporal o definitiva.
Divagar en una definición del sistema que no forme el
fundamento de todo el trabajo de Ingeniería.
INGENIERÍA DEL SOFTWARE (I.S.)
Bauer (1972): “Ingeniería de software trata
del establecimiento de los principios y
métodos de la ingeniería a fin de obtener
software de modo rentable, que sea fiable y
trabaje en máquinas reales”.
Zelkovitz (1978): “Ingeniería de software es
el estudio de los principios y metodologías
para el desarrollo y mantenimiento de
sistemas software”.
INGENIERÍA DEL SOFTWARE (I.S.)
Bohem (1976): “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”.
DEFINICIÓN DE LA I.S.
“Ingeniería de Software es la aplicación de
un enfoque sistemático, disciplinado y
cuantificable al desarrollo, operación y
mantenimiento de software, y el estudio de
estos enfoques”
ETAPAS DEL PROCESO DE LA I.S.
La ingeniería de software requiere llevar a
cabo numerosas tareas agrupadas en
etapas. Al conjunto de estas etapas se le
denomina ciclo de vida.
Las etapas comunes a casi todos los
modelos de ciclo de vida son las siguientes:
1. Planificación.
2. Implementación, pruebas y documentación.
3. Despliegue y mantenimiento.
ETAPAS DEL PROCESO DE LA I.S.
(1) Análisis de requisitos
(1) Especificación
(1) Arquitectura
(2) Programación
(2) Prueba
(2) Documentación
(3) Mantenimiento
MODELOS DE DESARROLLO DE SOFTWARE
La I.S. dispone de varios modelos, paradigmas y
filosofías de desarrollo, en los cuales se apoya para la
construcción del software, entre ellos se puede citar:
Modelo en cascada
Modelo de prototipos
Modelo en espiral
Desarrollo por etapas
Desarrollo iterativo y creciente o Iterativo e
Incremental
RAD (Rapid Application Development)
RUP (Proceso Unificado de Rational)
MODELO EN CASCADA
Es el enfoque
metodológico 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 finalización de la
etapa anterior.
MODELO EN CASCADA: DESVENTAJAS
Cualquier error de diseño detectado en la
etapa de prueba conduce necesariamente al
rediseño y nueva programación del código
afectado, aumentando los costos del
desarrollo.
El modelo en cascada sugiere el esfuerzo
necesario para introducir un cambio en las
fases más avanzadas de un proyecto.
MODELO EN CASCADA: DESVENTAJAS
Un proyecto rara vez sigue una secuencia
lineal, esto crea una mala implementación
del modelo, lo cual hace que lo lleve al
fracaso.
El proceso de creación 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.
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 diseño rápido se centra en una
representación de aquellos aspectos del
software que serán visibles para el cliente o el
usuario final. Este diseño conduce a la
construcción de un prototipo, el cual es
evaluado por el cliente para una
retroalimentación; gracias a ésta se refinan los
requisitos del software que se desarrollará.
MODELO DE PROTOTIPOS
La interacción 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.
MODELO DE PROTOTIPOS: VENTAJAS
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.
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 debería tomar la interacción
humano-máquina.
MODELO DE PROTOTIPOS: DESVENTAJAS
El usuario tiende a crearse unas
expectativas cuando ve el prototipo de cara
al sistema final.
A causa de la intención de crear un prototipo
de forma rápida, se suelen desatender
aspectos importantes, tales como la calidad
y el mantenimiento a largo plazo, lo que
obliga en la mayor parte de los casos a
reconstruirlo una vez que el prototipo ha
cumplido su función.
MODELO DE PROTOTIPOS: DESVENTAJAS
En aras de desarrollar rápidamente el
prototipo, el desarrollador suele tomar
algunas decisiones de implementación poco
convenientes (por ejemplo, elegir un
lenguaje de programación incorrecto porque
proporcione un desarrollo más rápido).
DESARROLLO EN ESPIRAL
Las actividades de este modelo se conforman
en una espiral, en la que cada bucle o
iteración representa un conjunto de
actividades.
Las actividades no están fijadas a ninguna
prioridad, sino que las siguientes se eligen en
función del análisis de riesgo, comenzando
por el bucle interior.
DESARROLLO EN ESPIRAL: VENTAJAS
El análisis del riesgo se hace de forma
explícita y clara:
Reduce riesgos del proyecto.
Incorpora objetivos de calidad.
Integra el desarrollo con el
mantenimiento, etc.
Además es posible tener en cuenta mejoras y
nuevos requerimientos sin romper con la
metodología, ya que este ciclo de vida no es
rígido ni estático.
DESARROLLO EN ESPIRAL: DESVENTAJAS
Genera mucho tiempo en el desarrollo del
sistema.
Modelo costoso.
Requiere experiencia en la identificación de
riesgos.
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 simultáneamente con las
diferentes versiones del código.
DESARROLLO POR ETAPAS
Pueden distinguirse las siguientes fases:
Especificación conceptual
Análisis de requisitos
Diseño inicial
Diseño detallado, codificación, depuración y
liberación
Estas diferentes fases se van repitiendo en
cada etapa del diseño.
DESARROLLO ITERATIVO Y CRECIENTE
Es un proceso de desarrollo de software,
creado en respuesta a las debilidades del
modelo tradicional de cascada.
El desarrollo incremental e iterativo es
también una parte esencial de un tipo de
programación conocido como eXtreme
Programming (XP) y los demás frameworks
de desarrollo rápido de software.
DESARROLLO ITERATIVO Y CRECIENTE
La idea principal detrás de mejoramiento
iterativo, es desarrollar un sistema de
programas de manera incremental,
permitiéndole al desarrollador sacar ventaja de
lo que se ha aprendido a lo largo del desarrollo
anterior, incrementando versiones entregables
del sistema.
Los pasos claves en el proceso son comenzar
con una implementación simple de los
requerimientos del sistema, e iterativamente
mejorar la secuencia evolutiva de versiones
hasta que el sistema completo esté
implementado.
DESARROLLO ITERATIVO Y CRECIENTE
En cada iteración, se realizan cambios en el
diseño y se agregan nuevas funcionalidades y
capacidades al sistema.
El proceso en sí mismo consiste de:
Etapa de inicialización.
Etapa de iteración.
Lista de control de proyecto.
DESARROLLO ITERATIVO Y CRECIENTE: DESVENTAJAS
Requiere de un cliente involucrado durante
todo el curso del proyecto. Hay clientes que
simplemente no estarán dispuestos a invertir
el tiempo necesario.
Infunde responsabilidad en el equipo de
desarrollo al trabajar directamente con el
cliente, requiriendo de personal
profesionales capacitado.
DESARROLLO ITERATIVO Y CRECIENTE: DESVENTAJAS
Sufre fuertes penalizaciones en proyectos en
los cuales los requerimientos están
previamente definidos, o para proyectos
"todo/nada" en los cuales se requiere que se
completen en un 100% el producto para ser
implementado.
Los costos pueden ser superiores a los que
podamos usar en nuestros propios recursos
DESARROLLO RÁPIDO DE APLICACIONES (RAD)
Es un proceso de desarrollo de software,
desarrollado inicialmente por James Maslow
en 1980.
El método RAD comprende el desarrollo
interactivo, la construcción de prototipos y el
uso de utilidades CASE (Computer Aided
Software Engineering o Ingeniería de
Software Asistido por Computadora).
DESARROLLO RÁPIDO DE APLICACIONES (RAD)
Hoy en día se suele utilizar para referirnos al
desarrollo rápido de interfaces gráficas de
usuario, o entornos de desarrollo integrado
completos.
Algunas de las plataformas más conocidas
son Visual Studio, Delphi, FoxPro, entre
otros.
DESARROLLO UNIFICADO RACIONAL (RUP)
Es un proceso de desarrollo de software
desarrollado por la empresa Rational
Software, actualmente propiedad de IBM.
Junto con el Lenguaje Unificado de
Modelado (UML), constituye la metodología
estándar más utilizada para el análisis,
diseño, implementación y documentación de
sistemas orientados a objetos.
DESARROLLO UNIFICADO RACIONAL (RUP)
El RUP no es un
sistema con pasos
firmemente
establecidos, sino
un conjunto de
metodologías
adaptables al
contexto y
necesidades de
cada
organización.
DESARROLLO UNIFICADO RACIONAL (RUP):
PRINCIPALES CARACTERÍSTICAS
Forma disciplinada de asignar tareas y
responsabilidades (quién hace qué, cuándo y cómo).
Pretende implementar las mejores prácticas en
Ingeniería de Software.
Desarrollo iterativo.
Administración de requisitos.
Uso de arquitectura basada en componentes.
Control de cambios.
Modelado visual del software.
Verificación de la calidad del software.
DESARROLLO UNIFICADO RACIONAL (RUP):
PRINCIPIOS
Comprende tres principios claves:
Dirigido por los Casos de Uso: los
requerimientos están enfocado a dar valor al
cliente y que el proceso debe garantizar que
todo el desarrollo, pruebas, planeación,
documentación, etc., está orientado a cubrir
estas expectativas del cliente y asegurar que
los requerimientos de valor se ponen en
producción.
DESARROLLO UNIFICADO RACIONAL (RUP):
PRINCIPIOS
Centrado en la Arquitectura: hay un
énfasis a diseñar una arquitectura de
calidad, y es la arquitectura también la que
guía la forma cómo se debe planear y hacer
el desarrollo.
Iterativo e Incremental: el proyecto se
divide en varios ciclos de vida (llamadas
iteraciones) que deben dar como resultado
un ejecutable.
DESARROLLO ÁGIL DE SOFTWARE
Son métodos de ingeniería del software
basados en el desarrollo iterativo e
incremental, donde los requerimientos y
soluciones evolucionan mediante la
colaboración de grupos auto organizados y
multidisciplinarios.
Existen muchos métodos de desarrollo ágil;
la mayoría minimiza riesgos desarrollando
software en lapsos cortos.
DESARROLLO ÁGIL DE SOFTWARE
El software
desarrollado en
una unidad de
tiempo es llamado
una iteración, la
cual debe durar de
una a cuatro
semanas.
DESARROLLO ÁGIL DE SOFTWARE
Algunos métodos ágiles de desarrollo de software:
Adaptive Software Development (ASD).
Agile Unified Process (AUP).
Crystal_Clear.
Essential Unified Process (EssUP).
Feature Driven Development (FDD).
Lean Software Development (LSD).
Kanban.
Open Unified Process (OpenUP).
Programación Extrema (XP).
Método de desarrollo de sistemas dinámicos (DSDM).
Scrum.
G300.