Está en la página 1de 102

Fundamentos de

Ingeniería de Software
Tema 1

Mtro. Armando Hernández Basilio

Fuente: Pressman, R. S. (2010). Ingeniería del Software – Un enfoque práctico (7 ed.). Madrid: Mc Graw Hill.
.
Competencias a desarrollar

• Identifica y comprende el entorno de aplicación de la


ingeniería de software.

Mtro. Armando Hernández Basilio


Contenido Temático

1.1. Conceptos básicos


1.2. Fases de la Ingeniería de software.
1.3 Metodologías de desarrollo de software
1.3.1 Clásicas
1.3.2 Agiles
1.3.3 Otras filosofías
1.4. Importancia de las herramientas CASE en la Ingeniería de
software.

Mtro. Armando Hernández Basilio


1.1 Conceptos Básicos

Mtro. Armando Hernández Basilio


Conceptos Básicos

El software de computadora se ha convertido en el alma mater. Es


la máquina que conduce a la toma de decisiones comerciales. Sirve
de base para la investigación científica moderna y de resolución de
problemas de ingeniería. Es el factor clave que diferencia los
productos y servicios modernos.

Mtro. Armando Hernández Basilio


Conceptos Básicos

El impacto del software en nuestra sociedad y en la cultura


continúa siendo profundo. Al mismo tiempo que crece su
importancia, la comunidad del software trata continuamente de
desarrollar tecnologías que hagan más sencillo, rápido y menos
costosa la construcción de programas de computadora de alta
calidad.

Mtro. Armando Hernández Basilio


Software

El software es:
1. instrucciones (programas de cómputo) que cuando se ejecutan
proporcionan las características, función y desempeño
buscados
2. estructuras de datos que permiten que los programas
manipulen en forma adecuada la información, y
3. información descriptiva tanto en papel como en formas
virtuales que describen la operación y uso de los programas.

Mtro. Armando Hernández Basilio


Software

La tecnología que comprende un proceso, un juego de métodos y un


conjunto de herramientas para el desarrollo de software se llama
ingeniería del software

Mtro. Armando Hernández Basilio


Software

Para poder comprender lo que es el software, es importante


examinar las características del software que lo diferencian de otras
cosas que los hombres pueden construir.

Mtro. Armando Hernández Basilio


Software

Cuando se construye hardware, el proceso creativo humano


(análisis, diseño, construcción, prueba) se traduce finalmente en
una forma física. Si se construye una nueva computadora, nuestro
boceto inicial, diagramas formales de diseño y prototipo de prueba,
evolucionan hacia un producto físico (chips, tarjetas de circuitos
impresos, fuentes de potencia, etc.).

Mtro. Armando Hernández Basilio


Características del Software

El software es un elemento del sistema que es


lógico, en lugar de físico. Por tanto el software
tiene unas características considerablemente
distintas a las del hardware:

Mtro. Armando Hernández Basilio


Características del Software

El software se desarrolla o modifica con intelecto; no se manufactura en el


sentido clásico.
• El software se desarrolla, no se fabrica.

El software no se “desgasta”.
• El software no se estropea, pero se deteriora

Aunque la industria se mueve hacia la construcción basada en componentes,


la mayor parte del software se construye para un uso individualizado.
• La mayoría del software se construye a medida.

Mtro. Armando Hernández Basilio


Aplicaciones del Software

El software puede aplicarse en cualquier situación en la que se haya


definido previamente un conjunto específico de pasos
procedimentales (es decir, un algoritmo), excepciones notables a
esta regla son el software de los sistemas expertos y de redes
neuronales.

Mtro. Armando Hernández Basilio


Aplicaciones del Software

Algunas veces es difícil establecer categorías genéricas para las


aplicaciones del software que sean significativas. Conforme
aumenta la complejidad del software, es más difícil establecer
compartimentos nítidamente separados. Las siguientes áreas del
software indican la amplitud de las aplicaciones potenciales:

Mtro. Armando Hernández Basilio


Aplicaciones del Software

Software de
Software de Software de Software de
ingeniería y
sistemas tiempo real gestión
científico

Software de Software Software de


Software
computadoras basado en inteligencia
empotrado
personales Web y Móvil artificial

Mtro. Armando Hernández Basilio


Software de sistemas

Es un conjunto de programas que han sido


escritos para servir a otros programas.
Algunos programas de sistemas
(compiladores, editores y utilidades de
gestión de archivos) procesan estructuras
de información complejas pero
determinadas.
Otras aplicaciones de sistemas (ciertos
componentes del sistema operativo,
utilidades de manejo de periféricos,
procesadores de telecomunicaciones)
procesan datos en gran medida
indeterminados.

Mtro. Armando Hernández Basilio


Software de tiempo real.

El software que coordina/ analiza/controla


sucesos del mundo real conforme ocurren,
se denomina de tiempo real. Entre los
elementos del software de tiempo real se
incluyen: un componente de adquisición de
datos que recolecta y da formato a la
información recibida del entorno externo,
un componente de análisis que transforma
la información según lo requiera la
aplicación, un componente de
control/salida que responda al entorno
externo, y un componente de
monitorización que coordina todos los
demás componentes, de forma que pueda
mantenerse la repuesta en tiempo real.
Mtro. Armando Hernández Basilio
Software de gestión.

El proceso de la información
comercial constituye la mayor de las
áreas de aplicación del software. Los
«sistemas» discretos (por ejemplo:
nóminas, cuentas de crédito/débito,
inventarios, etc.) han evolucionado
hacia el software de sistemas de
información de gestión (SIG) que
accede a una o más bases de datos
que contienen información comercial.
Mtro. Armando Hernández Basilio
Software de ingeniería y científico.

El software de ingeniería y científico


está caracterizado por los algoritmos
de «manejo de números». Las
aplicaciones van desde la astronomía
a la vulcanología, desde el análisis de
la presión de los automotores a la
dinámica orbital de las lanzaderas
espaciales y desde la biología
molecular a la fabricación
automática, pasando por el diseño
asistido por computadora (CAD).

Mtro. Armando Hernández Basilio


Software empotrado o incrustado

Los productos inteligentes se han


convertido en algo común en casi todos los
mercados de consumo e industriales. El
software empotrado reside en memoria de
sólo lectura y se utiliza para controlar
productos y sistemas de los mercados
industriales y de consumo.
Puede ejecutar funciones muy limitadas y
curiosas (el control de las teclas de un
horno de microondas) o suministrar una
función significativa y con capacidad de
control (funciones digitales en un
automóvil, tales como control de la
gasolina, indicadores en el salpicadero,
sistemas de frenado, etc.).
Mtro. Armando Hernández Basilio
Software de línea de productos

Es diseñado para proporcionar una


capacidad específica para uso de muchos
consumidores diferentes. El software de
línea de productos se centra en algún
mercado limitado y particular (control del
inventario de productos) o se dirige a
mercados masivos de consumidores
(procesamiento de textos, hojas de
cálculo, gráficas por computadora,
multimedios, entretenimiento,
administración de base de datos y
aplicaciones para finanzas personales o de
negocios).
Mtro. Armando Hernández Basilio
Software basado en Web

Las páginas Web buscadas por un


explorador son software que incorpora
instrucciones ejecutables (por ejemplo,
CGI, HTML, Perl, o Java), y datos (por
ejemplo, hipertexto y una variedad de
formatos de audio y visuales). En
esencia, la red viene a ser una gran
computadora que proporciona un
recurso software casi ilimitado que
puede ser accedido por cualquiera con
un modem.

Mtro. Armando Hernández Basilio


Software de inteligencia artificial

El software de inteligencia artificial (IA)


hace uso de algoritmos no numéricos para
resolver problemas complejos para los que
no son adecuados el cálculo o el análisis
directo. Los sistemas expertos, también
llamados sistemas basados en el
conocimiento, reconocimiento de patrones
(imágenes y voz), redes neuronales
artificiales, prueba de teoremas, y los
juegos son representativos de las
aplicaciones de esta categoría.
Mtro. Armando Hernández Basilio
Software heredado

Cientos de miles de programas de cómputo caen en uno de los siete


dominios amplios de aplicación. Algunos de ellos son software muy
nuevo, disponible para ciertos individuos, industria y gobierno. Pero
otros programas son más viejos, en ciertos casos muy viejos.
Si el software heredado satisface las necesidades de sus usuarios y
corre de manera confiable, entonces no falla ni necesita repararse.
Sin embargo, conforme pase el tiempo será frecuente que los
sistemas de software evolucionen por una o varias de las siguientes
razones:

Mtro. Armando Hernández Basilio


Software heredado

El software debe adaptarse para que cumpla las necesidades de los


nuevos ambientes del cómputo y de la tecnología.

El software debe ser mejorado para implementar nuevos requerimientos


del negocio.

El software debe ampliarse para que sea operable con otros sistemas o
bases de datos modernos.

La arquitectura del software debe rediseñarse para hacerla viable dentro


de un ambiente de redes.
Mtro. Armando Hernández Basilio
La naturaleza única de las webapps

Los sistemas y aplicaciones basados en web “involucran una mezcla


entre las publicaciones impresas y el desarrollo de software, entre
la mercadotecnia y la computación, entre las comunicaciones
internas y las relaciones exteriores, y entre el arte y la tecnología”.
La gran mayoría de webapps presenta los siguientes atributos:

Mtro. Armando Hernández Basilio


La naturaleza única de las webapps

Uso intensivo Carga


Concurrencia Rendimiento
de redes. impredecible

Orientadas a Contenido Evolución


Disponibilidad
los datos. sensible continua

Inmediatez. Seguridad Estética

Mtro. Armando Hernández Basilio


Ingeniería de Software

Con objeto de elaborar software listo para enfrentar los retos del
siglo XXI, el lector debe aceptar algunas realidades sencillas:

Mtro. Armando Hernández Basilio


Ingeniería de Software

Debe hacerse un esfuerzo concertado para entender el


problema antes de desarrollar una aplicación de software.
“Debe hacerse ingeniería
con el software en todas El diseño se ha vuelto una actividad crucial.
sus formas y a través de
todos sus dominios de El software debe tener alta calidad.
aplicación”
El software debe tener facilidad para recibir mantenimiento

Mtro. Armando Hernández Basilio


La propuesta por Fritz Bauer:

“La ingeniería de software es el establecimiento y uso de principios


fundamentales de la ingeniería con objeto de desarrollar en forma
económica software que sea confiable y que trabaje con eficiencia
en máquinas reales.”

Mtro. Armando Hernández Basilio


El IEEE define:

La ingeniería de software es:


1. La aplicación de un enfoque sistemático, disciplinado y
cuantificable al desarrollo, operación y mantenimiento de
software; es decir, la aplicación de la ingeniería al software.
2. El estudio de enfoques según el punto 1.

Mtro. Armando Hernández Basilio


Ingeniería de software

La ingeniería de software
es una tecnología con
varias capas.

Mtro. Armando Hernández Basilio


1.2. Fases de la Ingeniería de Software

Mtro. Armando Hernández Basilio


El proceso del software

Un proceso es un conjunto de
actividades, acciones y tareas
que se ejecutan cuando va a
crearse algún producto del
trabajo.

Mtro. Armando Hernández Basilio


Proceso

Una actividad busca lograr un objetivo amplio (por ejemplo, comunicación con los
participantes) y se desarrolla sin importar el dominio de la aplicación, tamaño del
proyecto, complejidad del esfuerzo o grado de rigor con el que se usará la ingeniería
de software.

Una acción (diseño de la arquitectura) es un conjunto de tareas que producen un


producto importante del trabajo (por ejemplo, un modelo del diseño de la
arquitectura).

Una tarea se centra en un objetivo pequeño pero bien definido (por ejemplo, realizar
una prueba unitaria) que produce un resultado tangible.
Mtro. Armando Hernández Basilio
Proceso del software

La estructura del proceso establece el fundamento para el proceso


completo de la ingeniería de software por medio de la
identificación de un número pequeño de actividades estructurales
que sean aplicables a todos los proyectos de software, sin importar
su tamaño o complejidad.
Además, la estructura del proceso incluye un conjunto de
actividades sombrilla que son aplicables a través de todo el proceso
del software. Una estructura de proceso general para la ingeniería
de software consta de cinco actividades:

Mtro. Armando Hernández Basilio


Proceso del software

Comunicación Planeación Modelado Construcción Despliegue

Mtro. Armando Hernández Basilio


Comunicación

Antes de que comience cualquier


trabajo técnico, tiene importancia
crítica comunicarse y colaborar con
el cliente (y con otros participantes).
Se busca entender los objetivos de
los participantes respecto del
proyecto, y reunir los requerimientos
que ayuden a definir las
características y funciones del
software.
Mtro. Armando Hernández Basilio
Planeación

Un proyecto de software es un viaje


difícil, y la actividad de planeación crea
un “mapa” que guía al equipo mientras
viaja. El mapa —llamado plan del
proyecto de software— define el trabajo
de ingeniería de software al describir las
tareas técnicas por realizar, los riesgos
probables, los recursos que se requieren,
los productos del trabajo que se
obtendrán y una programación de las
actividades.

Mtro. Armando Hernández Basilio


Modelado

Crea un “bosquejo” del objeto por


hacer a fin de entender el panorama
general —cómo se verá
arquitectónicamente, cómo ajustan
entre sí las partes constituyentes y
muchas características más—. Si se
requiere, refina el bosquejo con
más y más detalles en un esfuerzo
por comprender mejor el problema
y cómo resolverlo.
Mtro. Armando Hernández Basilio
Construcción

Esta actividad combina la


generación de código (ya sea
manual o automatizada) y las
pruebas que se requieren para
descubrir errores en éste.

Mtro. Armando Hernández Basilio


Despliegue

El software (como entidad


completa o como un incremento
parcialmente terminado) se
entrega al consumidor que lo
evalúa y que le da
retroalimentación, misma que
se basa en dicha evaluación.

Mtro. Armando Hernández Basilio


Proceso del Software

Para muchos proyectos de software, las actividades estructurales se


aplican en forma iterativa a medida que avanza el proyecto. Es
decir, la comunicación, la planeación, el modelado, la
construcción y el despliegue se ejecutan a través de cierto número
de repeticiones del proyecto. Cada iteración produce un incremento
del software que da a los participantes un subconjunto de
características y funcionalidad generales del software. Conforme se
produce cada incremento, el software se hace más y más completo.

Mtro. Armando Hernández Basilio


Proceso del Software

Las actividades estructurales del proceso de ingeniería de software


son complementadas por cierto número de actividades sombrilla. En
general, las actividades sombrilla se aplican a lo largo de un
proyecto de software y ayudan al equipo que lo lleva a cabo a
administrar y controlar el avance, la calidad, el cambio y el riesgo.
Es común que las actividades sombrilla sean las siguientes:.

Mtro. Armando Hernández Basilio


Actividades sombrillas

Seguimiento y
Aseguramiento
control del Administración Revisiones
de la calidad
proyecto de del riesgo técnicas
del software
software

Administración Preparación y
Administración
de la producción del
Medición de la
configuración producto del
reutilización
del software trabajo

Mtro. Armando Hernández Basilio


Proceso de Software

El proceso de ingeniería de software no es una prescripción rígida


que deba seguir en forma dogmática el equipo que lo crea. Al
contrario, debe ser ágil y adaptable (al problema, al proyecto, al
equipo y a la cultura organizacional). Por tanto, un proceso
adoptado para un proyecto puede ser significativamente distinto de
otro adoptado para otro proyecto.

Mtro. Armando Hernández Basilio


Cómo comienza todo

Alguna necesidad de negocios

• Corregir un defecto en una aplicación existente


• Adaptar un “sistema heredado” a un ambiente de negocios
cambiante
• Ampliar las funciones y características de una aplicación ya
existente
• Crear un producto, servicio o sistema nuevo
Mtro. Armando Hernández Basilio
1.3 Metodologías de desarrollo de software

Mtro. Armando Hernández Basilio


Modelo general de proceso

Un proceso es la colección de actividades de trabajo, acciones y


tareas que se realizan cuando va a crearse algún producto
terminado. Cada una de las actividades, acciones y tareas se
encuentra dentro de una estructura o modelo que define su relación
tanto con el proceso como entre sí.

Mtro. Armando Hernández Basilio


Modelo general de proceso

Una estructura general para la ingeniería de software define cinco


actividades estructurales: comunicación, planeación, modelado,
construcción y despliegue. Además, a lo largo de todo el proceso se
aplica un conjunto de actividades sombrilla: seguimiento y control
del proyecto, administración de riesgos, aseguramiento de la
calidad, administración de la configuración, revisiones técnicas,
entre otras.

Mtro. Armando Hernández Basilio


Mtro. Armando Hernández Basilio
Flujo de Proceso

Describe la manera en que están


organizadas las actividades
estructurales y las acciones y
tareas que ocurren dentro de Lineal Iterativo
cada una con respecto de la
secuencia y el tiempo.

Evolutivo Paralelo

Mtro. Armando Hernández Basilio


Mtro. Armando Hernández Basilio
Mtro. Armando Hernández Basilio
Actividad. Foro de Metodologías de Desarrollo

• Integrarse en binas
• Seleccionar la metodología a
investigar
• Realiza un video donde
presente la información de las
metodología seleccionada.
• Presenta el video en el Foro de
Metodologías

Mtro. Armando Hernández Basilio


Metodologías clásicas

Mtro. Armando Hernández Basilio


Metodologías clásicas

• Las metodologías o modelos de desarrollo de software fueron


propuestos originalmente para poner orden en el caos del
desarrollo de software. La historia indica que estos modelos
tradicionales han dado cierta estructura útil al trabajo de
ingeniería de software y que constituyen un mapa razonablemente
eficaz para los equipos de software.
• Sin embargo, el trabajo de ingeniería de software y el producto
que genera siguen “al borde del caos”.

Mtro. Armando Hernández Basilio


Metodologías clásicas

• Si los modelos de proceso tradicionales buscan generar estructura


y orden, ¿son inapropiados para el mundo del software, que se
basa en el cambio? Pero si se rechazan los modelos de proceso
tradicional (y el orden que implican) y se reemplazan con algo
menos estructurado, ¿se hace imposible la coordinación y
coherencia en el trabajo de software?

Mtro. Armando Hernández Basilio


Metodologías clásicas

• Todos los modelos del proceso del software pueden incluir las
actividades estructurales generales, pero cada una pone distinto
énfasis en ellas y define en forma diferente el flujo de proceso
que invoca cada actividad estructural (así como acciones y tareas
de ingeniería de software).

Mtro. Armando Hernández Basilio


Metodologías clásicas

Cascada Incremental Espiral

Desarrollo
Métodos
Prototipos basado en
Formales
componentes
Mtro. Armando Hernández Basilio
Modelo en cascada

• Hay veces en las que los requerimientos para cierto problema se


comprenden bien: cuando el trabajo desde la comunicación hasta
el despliegue fluye en forma razonablemente lineal.
• Esta situación se encuentra en ocasiones cuando deben hacerse
adaptaciones o mejoras bien definidas a un sistema ya existente.
• También ocurre en cierto número limitado de nuevos esfuerzos de
desarrollo, pero sólo cuando los requerimientos están bien
definidos y tienen una estabilidad razonable.

Mtro. Armando Hernández Basilio


Modelo en cascada

• El modelo de la cascada, a veces llamado ciclo de vida clásico,


sugiere un enfoque sistemático y secuencial para el desarrollo del
software, que comienza con la especificación de los
requerimientos por parte del cliente y avanza a través de
planeación, modelado, construcción y despliegue, para concluir
con el apoyo del software terminado.

Mtro. Armando Hernández Basilio


Modelo en cascada

• El modelo de la cascada es el paradigma más antiguo de la


ingeniería de software. Sin embargo, en las últimas tres décadas,
las críticas hechas al modelo han ocasionado que incluso sus
defensores más obstinados cuestionen su eficacia. Entre los
problemas que en ocasiones surgen al aplicar el modelo de la
cascada se encuentran los siguientes:

Mtro. Armando Hernández Basilio


Modelo en cascada

1. Es raro que los proyectos reales sigan el flujo secuencial propuesto por el
modelo.
• Aunque el modelo lineal acepta repeticiones, lo hace en forma indirecta. Como resultado, los
cambios generan confusión conforme el equipo del proyecto avanza.

2. A menudo, es difícil para el cliente enunciar en forma explícita todos los


requerimientos.
• El modelo de la cascada necesita que se haga y tiene dificultades para aceptar la incertidumbre
natural que existe al principio de muchos proyectos.

3. El cliente debe tener paciencia. No se dispondrá de una versión funcional


del(de los) programa(s) hasta que el proyecto esté muy avanzado.
• Un error grande sería desastroso si se detectara hasta revisar el programa en funcionamiento.
Mtro. Armando Hernández Basilio
Modelo en cascada

• La naturaleza lineal del ciclo de vida clásico llega a “estados de


bloqueo” en los que ciertos miembros del equipo de proyecto
deben esperar a otros a fin de terminar tareas interdependientes.

Mtro. Armando Hernández Basilio


Modelo en cascada

• Hoy en día, el trabajo de software es acelerado y está sujeto a


una corriente sin fin de cambios (en las características, funciones
y contenido de información). El modelo de la cascada suele ser
inapropiado para ese tipo de labor. No obstante, sirve como un
modelo de proceso útil en situaciones en las que los
requerimientos son fijos y el trabajo avanza en forma lineal hacia
el final.

Mtro. Armando Hernández Basilio


Otras metodologías

Mtro. Armando Hernández Basilio


Metodologías de desarrollo

Ganar – Proceso Ingeniería


Ganar unificado web

Metodologías Metodologías Otras


ágiles emergentes metodologías
Mtro. Armando Hernández Basilio
Metodologías Ágiles

• La ingeniería de software ágil combina una filosofía con un


conjunto de lineamientos de desarrollo. La filosofía pone el
énfasis en: la satisfacción del cliente y en la entrega rápida de
software incremental, los equipos pequeños y muy motivados para
efectuar el proyecto, los métodos informales, los productos del
trabajo con mínima ingeniería de software y la sencillez general
en el desarrollo.

Mtro. Armando Hernández Basilio


Metodologías Ágiles

• Los lineamientos de desarrollo enfatizan la entrega sobre el


análisis y el diseño (aunque estas actividades no se desalientan) y
la comunicación activa y continua entre desarrolladores y clientes.

Mtro. Armando Hernández Basilio


Metodologías Ágiles

• El ambiente moderno de negocios que genera sistemas basados en


computadora y productos de software evoluciona rápida y
constantemente. La ingeniería de software ágil representa una
alternativa razonable a la ingeniería de software convencional
para ciertas clases de software y en algunos tipos de proyectos.

Mtro. Armando Hernández Basilio


¿Qué es un proceso ágil?

• Cualquier proceso del software ágil se caracteriza por la forma en


la que aborda cierto número de suposiciones clave acerca de la
mayoría de proyectos de software:

Mtro. Armando Hernández Basilio


¿Qué es un proceso ágil?

1. Es difícil predecir qué requerimientos de software persistirán y cuáles


cambiarán.
• También es difícil pronosticar cómo cambiarán las prioridades del cliente a medida que avanza el
proyecto.

2. Para muchos tipos de software, el diseño y la construcción están


imbricados.
• Es decir, ambas actividades deben ejecutarse en forma simultánea, de modo que los modelos de
diseño se prueben a medida que se crean. Es difícil predecir cuánto diseño se necesita antes de
que se use la construcción para probar el diseño.

3. El análisis, el diseño, la construcción y las pruebas no son tan predecibles


como nos gustaría (desde un punto de vista de planeación).
Mtro. Armando Hernández Basilio
Principios de la Agilidad

1. La prioridad más alta es satisfacer al cliente a través de la entrega pronta y continua de


software valioso.

2. Son bienvenidos los requerimientos cambiantes, aun en una etapa avanzada del
desarrollo. Los procesos ágiles dominan el cambio para provecho de la ventaja competitiva
del cliente.

3. Entregar con frecuencia software que funcione, de dos semanas a un par de meses, de
preferencia lo más pronto que se pueda.

4. Las personas de negocios y los desarrolladores deben trabajar juntos, a diario y durante
todo el proyecto.

Mtro. Armando Hernández Basilio


Principios de la Agilidad

5. Hay que desarrollar los proyectos con individuos motivados. Debe darse a éstos el
ambiente y el apoyo que necesiten, y confiar en que harán el trabajo.

6. El método más eficiente y eficaz para transmitir información a los integrantes de un


equipo de desarrollo, y entre éstos, es la conversación cara a cara.

7. La medida principal de avance es el software que funciona.

8. Los procesos ágiles promueven el desarrollo sostenible. Los patrocinadores,


desarrolladores y usuarios deben poder mantener un ritmo constante en forma indefinida.

Mtro. Armando Hernández Basilio


Principios de la Agilidad

5. Hay que desarrollar los proyectos con individuos motivados. Debe darse a éstos el
ambiente y el apoyo que necesiten, y confiar en que harán el trabajo.

6. El método más eficiente y eficaz para transmitir información a los integrantes de un


equipo de desarrollo, y entre éstos, es la conversación cara a cara.

7. La medida principal de avance es el software que funciona.

8. Los procesos ágiles promueven el desarrollo sostenible. Los patrocinadores,


desarrolladores y usuarios deben poder mantener un ritmo constante en forma
indefinida.

Mtro. Armando Hernández Basilio


Principios de la Agilidad

9. La atención continua a la excelencia técnica y el buen diseño mejora la


agilidad.

10. Es esencial la simplicidad: el arte de maximizar la cantidad de trabajo


no realizado.

11. Las mejores arquitecturas, requerimientos y diseños surgen de los


equipos con organización propia.

12. El equipo reflexiona a intervalos regulares sobre cómo ser más eficaz,
para después afinar y ajustar su comportamiento en consecuencia.

Mtro. Armando Hernández Basilio


Factores humanos

Habilidad para
Competencia Enfoque común Colaboración tomar
decisiones

Capacidad para
resolver Confianza y Organización
problemas respeto mutuos propia
difusos

Mtro. Armando Hernández Basilio


Metodologías ágiles

Método de
Desarrollo
Programación desarrollo de
adaptativo de Scrum
extrema (XP) sistemas
software (DAS)
dinámicos (MDSD)

Desarrollo
impulsado por las Desarrollo esbelto Modelado ágil
Cristal
características de software (DES) (MA)
(DIC)

El proceso
unificado ágil
(PUA)
Mtro. Armando Hernández Basilio
1.4. Importancia de las herramientas CASE en la Ingeniería de software.
Kendall, K. E., & Kendall, J. E. (2011). Análisis y Diseño de Sistemas (8 ed.). México: Pearson
Educación.

Mtro. Armando Hernández Basilio


Tecnología del proceso

El equipo del software debe adaptar uno o más de los modelos del
proceso. Para ello, se han desarrollado herramientas de tecnología
del proceso que ayudan a las organizaciones de software a analizar
su proceso actual, organizar las tareas de trabajo, controlar y
vigilar el avance, y administrar la calidad técnica.

Mtro. Armando Hernández Basilio


Tecnología del proceso

Las herramientas de tecnología del proceso permiten que una


organización de software construya un modelo automatizado de la
estructura del proceso, conjuntos de tareas y actividades sombrilla.
El modelo, que normalmente se representa como una red, se
analiza para determinar el flujo de trabajo normal y se examinan
estructuras alternativas del proceso que podrían llevar a disminuir
el tiempo o costo del desarrollo.

Mtro. Armando Hernández Basilio


Tecnología del proceso

Una vez creado un proceso aceptable, se emplean otras


herramientas de tecnología para asignar, vigilar e incluso controlar
todas las actividades, acciones y tareas de la ingeniería de software
definidas como parte del modelo del proceso. Cada miembro de un
equipo de software utiliza dichas herramientas para desarrollar una
lista de verificación de las tareas de trabajo que deben realizarse.
La herramienta de tecnología del proceso también se usa para
coordinar el empleo de otras herramientas de la ingeniería de
software que sean apropiadas para una tarea particular del trabajo.

Mtro. Armando Hernández Basilio


Tecnología del proceso

Igrafx Process Tools: herramientas que permiten que un equipo


mapee, mida y modele el proceso del software
(www.micrografx.com)
Adeptia BPM Server: diseñado para administrar, automatizar y
optimizar procesos de negocios (www.adptia.com)
SpeedDev Suite: conjunto de seis herramientas con mucho énfasis
en las actividades de administración de la comunicación y modelado
(www.speedev.com)

Mtro. Armando Hernández Basilio


Tecnología del proceso

• OnTime, desarrollada por Axosoft (www.axosoft.com), presta


apoyo a la administración de un proceso ágil para distintas
actividades técnicas dentro del proceso.
• Ideogramic UML, desarrollada por Ideogramic
(www.ideogramic.com), es un conjunto de herramientas UML
desarrolladas específicamente para usarlas dentro de un proceso
ágil.
• Together Tool Set, distribuido por Borland (www.borland.com),
proporciona un grupo de herramientas para apoyar muchas
actividades técnicas dentro de XP y otros procesos ágiles.

Mtro. Armando Hernández Basilio


Herramientas CASE

Las herramientas de desarrollo del software (llamadas en ocasiones


herramientas de Ingeniería de Software Asistido por Computadora o
CASE, por las siglas de Computer-Aided Software Engineering) son
programas usados para apoyar las actividades del proceso de la
ingeniería de software. En consecuencia, estas herramientas
incluyen editores de diseño, diccionarios de datos, compiladores,
depuradores (debuggers), herramientas de construcción de sistema,
etcétera.

Mtro. Armando Hernández Basilio


Herramientas CASE

Las herramientas de software ofrecen apoyo de proceso al


automatizar algunas actividades del proceso y brindar información
sobre el software que se desarrolla. Los ejemplos de actividades
susceptibles de automatizarse son:

Mtro. Armando Hernández Basilio


Herramientas CASE

Desarrollo de modelos de sistemas gráficos, como parte de la especificación de


requerimientos o del diseño del software.

Generación de código a partir de dichos modelos de sistemas gráficos.

Producción de interfaces de usuario a partir de una descripción de interfaz gráfica,


creada por el usuario de manera interactiva.

Depuración del programa mediante el suministro de información sobre un programa que


se ejecuta.

Traducción automatizada de programas escritos, usando una versión anterior de un


lenguaje de programación para tener una versión más reciente.
Mtro. Armando Hernández Basilio
Herramientas CASE

Las herramientas pueden combinarse en un marco llamado


ambiente de desarrollo interactivo o IDE (por las siglas de
Interactive Development Environment). Esto ofrece un conjunto
común de facilidades, que usan las herramientas para comunicarse
y operar con mayor destreza en una forma integrada.

Mtro. Armando Hernández Basilio


Herramientas CASE

Los ingenieros del software a menudo se benefician de las


herramientas de productividad, conocidas como herramientas de
Ingeniería de Software Asistida por Computadora (CASE), las cuales
se crearon de manera explícita para mejorar el trabajo rutinario a
través del uso del soporte automatizado.
Estas herramientas CASE se emplean para aumentar la
productividad, comunicarse con los usuarios de una manera más
efectiva e integrar el trabajo que realizan en el sistema, desde el
inicio hasta el fin del ciclo de vida.

Mtro. Armando Hernández Basilio


Herramientas CASE

Son diversas Aplicaciones informáticas destinadas a aumentar la


productividad en el Desarrollo de software reduciendo el costo de
las mismas en términos de tiempo y de dinero. Estas herramientas
pueden ayudar en todos los aspectos del ciclo de vida de desarrollo
del software en tareas como el diseño de proyectos, cálculo de
costos, implementación de parte del código automáticamente con
el diseño dado, compilación automática, documentación o
detección de errores entre otras.

Mtro. Armando Hernández Basilio


Herramientas CASE

Ofrecen un medio de comunicación relacionado con el sistema


durante su conceptualización. Mediante el uso de soporte
automatizado que incluye resultados en pantalla, los clientes
pueden ver de inmediato la forma en que fluyen los datos y cómo se
representan otros conceptos del sistema, para así poder solicitar
correcciones o modificaciones que hubieran requerido de mucho
más tiempo si se utilizaran herramientas anteriores.

Mtro. Armando Hernández Basilio


Herramientas CASE

Algunos analistas marcan la diferencia entre las herramientas CASE


superiores e inferiores. Una herramienta CASE superior permite al
analista crear y modificar el diseño del sistema.
Toda la información sobre el proyecto se almacena en una
enciclopedia conocida como repositorio CASE, una extensa colección
de registros, elementos, diagramas, pantallas, informes y demás
información relacionada. Es posible producir informes del análisis
mediante el uso de la información del repositorio para mostrar en
qué partes está incompleto el diseño o dónde hay errores.

Mtro. Armando Hernández Basilio


Herramientas CASE superiores

Ayudan a sustentar el modelado de los requerimientos funcionales


de una organización, auxiliar a los analistas y usuarios para dibujar
los límites de un proyecto dado y ayudarlos a visualizar la forma en
que el proyecto encaja con otras partes de la organización.

Mtro. Armando Hernández Basilio


Herramientas CASE inferiores

Se utilizan para generar código fuente de computadora, con lo cual


se elimina la necesidad de programar el sistema. La generación de
código ofrece varias ventajas:
1) el sistema se puede producir con más rapidez que si se
escribieran programas computacionales;
2) la cantidad de tiempo invertido en el mantenimiento se reduce
con la generación de código;

Mtro. Armando Hernández Basilio


Herramientas CASE inferiores

3) se puede generar código en más de un lenguaje computacional,


por lo que es más sencillo migrar los sistemas de una plataforma
a otra;
4) la generación de código provee una manera efectiva en costo de
personalizar los sistemas que se compran a terceros
distribuidores para ajustarlos a las necesidades de la
organización,
5) el código generado está libre de los errores típicos de los
programas computacionales.

Mtro. Armando Hernández Basilio


Herramientas CASE

La tecnología CASE supone la automatización del desarrollo del


software, contribuyendo a mejorar la calidad y la productividad en
el desarrollo de sistemas de información

Mtro. Armando Hernández Basilio


Objetivos

Permitir la aplicación práctica de metodologías estructuradas, las cuales


al ser realizadas con una herramienta se consigue agilizar el trabajo.

Facilitar la realización de prototipos y el desarrollo conjunto de


aplicaciones.

Simplificar el mantenimiento de los programas.

Mejorar y estandarizar la documentación.

Mtro. Armando Hernández Basilio


Objetivos

Aumentar la portabilidad de las aplicaciones.

Facilitar la reutilización de componentes software.

Permitir un desarrollo y un refinamiento visual de las aplicaciones,


mediante la utilización de gráficos.

Mejorar la calidad del software e incrementar la productividad en el


proceso de desarrollo del mismo
Mtro. Armando Hernández Basilio
Herramientas CASE

Automatizar Permitir
• El desarrollo del software • La reutilización del software
• La documentación • La portabilidad del software
• La generación del código • La estandarización de la
• El chequeo de errores documentación
• La gestión del proyecto

Mtro. Armando Hernández Basilio


Componentes

Repositorio Donde se almacenan los elementos definidos o creados por la herramienta, y cuya gestión se
(Diccionario). realiza mediante el apoyo de un Sistema de Gestión de Base de Datos (SGBD) o de un sistema
de gestión de ficheros.

Meta modelo Constituye el marco para la definición de las técnicas y metodologías soportadas por la
herramienta.
Permiten cargar el repertorio de la herramienta CASE con datos provenientes de otros
Carga o descarga sistemas, o bien generar a partir de la propia herramienta esquemas de base de datos,
de datos programas, etc. que pueden, a su vez, alimentar otros sistemas. Este elemento proporciona
así un medio de comunicación con otras herramientas.

Comprobación
de errores Permiten llevar a cabo un análisis de la exactitud, integridad y consistencia de los esquemas
generados por la herramienta.

Interfaz
Mtro. Armando Hernández Basilio de Consta de editores de texto y herramientas de diseño gráfico que permitan, mediante la
usuario. utilización de un sistema de ventanas, iconos y menús, con la ayuda del ratón, definir los
diagramas, matrices, etc. que incluyen las distintas metodologías.
Evaluación

Actividad %
Actividades de la IS 20
Comparativo de Metodologías / Foro Video 30
Herramientas CASE 10
Examen Teórico 40
Total 100

Mtro. Armando Hernández Basilio

También podría gustarte