You are on page 1of 51

1.

1 CONCEPTOS BSICOS DE INGENIERA


DE SOFTWARE
Qu es software?
Qu es la Ingeniera de Software?
Cul es la diferencia entre Ingeniera de Software e Ingeniera
de Sistemas?
Qu es un proceso de software?
Qu es un modelo de proceso de software?
Qu son los mtodos de Ingeniera de Software?
Qu es CASE?
Cules son los atributos del software de calidad?
QU ES SOFTWARE?
Programas de cmputo y su documentacin asociada:
requerimientos, modelos de diseo y manuales de usuario
El software puede ser desarrollado para un cliente en particular o para un mercado
general
El software puede ser:
Genrico: desarrollado para venderse a mltiples clientes (Excel,Word, etc.)
A la medida: desarrollado bajo demanda del cliente a un desarrollador especfico
El software nuevo puede ser creado desarrollando nuevos programas, configurando
sistemas de software genrico o reutilizando software existente

QU ES LA INGENIERA DE
SOFTWARE?
Una disciplina de la Ingeniera que concierne a todos los aspectos de la
produccin de software
Los Ingenieros de Software deben:
Adoptar un enfoque sistemtico para llevar a cabo su trabajo
Utilizar las herramientas y tcnicas apropiadas para resolver el problema
planteado, de acuerdo a las restricciones de desarrollo y a los recursos
disponibles

CUL ES LA DIFERENCIA ENTRE INGENIERA DE
SOFTWARE E
INGENIERA DE SISTEMAS?

La Ingeniera de Sistemas concierne a todos los aspectos del desarrollo de sistemas
basados en cmputo incluyendo hardware, software y la ingeniera de procesos.
La Ingeniera de Software es una parte de este proceso que comprende el desarrollo
de software, control, aplicaciones y bases de datos del sistema
Los ingenieros de software son los encargados de la especificacin del sistema, del
diseo de la arquitectura, la integracin y la puesta en marcha.

QU ES UN PROCESO DE
SOFTWARE?
Un conjunto estructurado de actividades cuya meta es el desarrollo o evolucin de un
software
Algunas actividades genricas en todos los procesos de software son:

Especificacin, qu debe hacer el software y cules son sus especificaciones de desarrollo
Desarrollo, produccin del sistema de software
Validacin, verificar que el software cumple con lo solicitado por el cliente
Evolucin, cambiar/adaptar el software a las nuevas demandas
Estas actividades varan dependiendo de la organizacin y del tipo de sistema a
desarrollarse

QU ES UN MODELO DE PROCESO
DE SOFTWARE?
Representacin formal y simplificada de un proceso de software, presentada desde una perspectiva
especfica

Ejemplos de perspectivas del proceso de software:
Flujo de trabajo, secuencia de actividades
Flujo de datos, flujo de la informacin
Rol/accin, quin realiza qu
Modelos Genricos:
Cascada, separar en distintas fases de especificacin y desarrollo
Desarrollo Iterativo, la especificacin, desarrollo y validacin estn
interrelacionados
Prototipado, un modelo sirve de prototipo para la construccin del
sistema final
Basado en componentes, asume que partes del sistema ya existen y se enfoca a su integracin
QU SON LOS MTODOS DE
INGENIERA DE SOFTWARE?
Enfoques estructurados para el desarrollo de software que incluye:

Descripciones del modelo, descripciones de modelos grficos que deben ser producidos
Reglas, restricciones aplicadas a los modelos de sistemas
Recomendaciones, para realizar un diseo efectivo
Administracin del proceso, que actividades deben realizarse y en qu orden
QU ES CASE?
CASE es Computer-Aided Software Engineering
Programas que son usados para dar soporte automatizado a las actividades del proceso de
software:
Anlisis de requerimientos, modelado del sistema, pruebas y depuracin (debugging)
Las herramientas CASE son comnmente usadas para dar soporte a los mtodos de
software
Editores para la notacin del mtodo
Mdulos de anlisis que verifican que las reglas del mtodo se cumplan
Generadores de reportes que facilitan la creacin de la documentacin del sistema
Generadores de cdigo a partir del modelo del sistema
CULES SON LOS ATRIBUTOS DEL
SOFTWARE DE CALIDAD?
El software debe proveer la funcionalidad y desempeo requeridos por el usuario y debe
ser mantenible, confiable y aceptable
Mantenible, el software debe poder evolucionar para continuar cumpliendo con las
especificaciones
Confiable, el software no debe causar daos fsicos o econmicos en el caso de que falle
Eficiente, el software no debe desperdiciar los recursos del sistema
Aceptable, el software debe ser aceptado por los usuarios para los que fue diseado. Debe
ser entendible, utilizable y compatible con otros sistemas
1.2 EL PROCESO EVOLUTIVO
DEL SOFTWARE
1.2 EL PROCESO EVOLUTIVO DEL
SOFTWARE
El trmino Ingeniera del software apareci por primera vez en a finales de la dcada de 1950.
La Ingeniera de software fue estimulada por la crisis del software de las dcadas de entre 1960
y 1980. La Ingeniera del software viene a ayudar a identificar y corregir mediante principios y
metodologas los procesos de desarrollo y mantenimiento de sistemas de software. Muchos
proyectos sobrepasaron los presupuestos y tiempo estimados.

La crisis del software se caracteriz principalmente por:
Imprecisin en la planificacin del proyecto y estimacin de los costos.
Baja calidad del Software.
Dificultad de mantenimiento de programas con un diseo poco estructurado, etc.
El papel del software de computadora ha experimentado un cambio significativo en un periodo
un poco mayor a 50 aos. La mejoras sustanciales en el desempeo del hardware, los
cambios profundos en las arquitecturas de cmputo, los enormes incrementos en las
capacidades de memoria y almacenamiento, y la amplia variedad de opciones de entrada y
salida han propiciado el surgimiento de sistemas ms elaborados y complejos basados en
computadoras.
Actualmente se ha propuesto el dividir la evolucin de la ingeniera del software en 5
eras, de acuerdo a los periodos en los que se lograron avances importante en el
campo de estudio.
PRIMERA ERA (1950 / 1965)


Se trabajaba con la idea de Codificar y Corregir.

No exista un planteamiento previo.

No exista documentacin de ningn tipo.

Existencia de pocos mtodos formales y pocos
creyentes en ellos.

Desarrollado a base de prueba y error.
SEGUNDA ERA (1965 1972)


Se busca simplificar cdigo

Aparicin de Multiprogramacin y Sistemas Multiusuarios.

Sistemas de tiempo real apoyan la toma de decisiones.

Aparicin de software como producto.

Se buscan procedimientos para el desarrollo del software.
TERCERA ERA (1972 1985)


Nuevo concepto: Sistemas Distribuidos.

Mayor complejidad en los sistemas de informacin.

Aparecen: Redes de rea local y global, y comunicadores
digitales.

Uso de microprocesadores.
CUARTA ERA (1985 1995)

Impacto Colectivo de software:

Aparecen: Las redes de informacin, tecnologas
orientadas a objetos , redes neuronales, sistemas
expertos y software de inteligencia artificial.

La informacin como valor preponderante dentro de las
organizaciones.
QUINTA ERA (1995 20XX)


Utiliza algunos requisitos de las eras anteriores solo que aumenta la omnipresencia de la
web, la reutilizacin de informacin y componentes de software.


Codificar: Transformar mediante las reglas de un cdigo la formulacin de un mensaje.

Hardware: Componente fsico de la computadora. Por ejemplo: el monitor, la impresora
o el disco rgido. El hardware por s mismo no hace que una mquina funcione.

Multiprogramacin: Se denomina multiprogramacin a la tcnica que permite que dos
o ms procesos ocupen la misma unidad de memoria principal y que sean ejecutados
al "mismo tiempo.
1.3 etapas del desarrollo del
software
Las etapas de desarrollo del software son 7 las cuales son:
1.- Anlisis de requerimientos
2.-Diseo
3.-Desarrollo
4.-Pruebas
5.-Implementacion
6.-Mantenimiento
7.- Fin del ciclo

Anlisis de requerimientos
Definicin: Es el conjunto de tcnicas y procedimientos que nos
permiten conocer los elementos necesarios para definir un
proyecto de software.
Es la etapa ms crucial del desarrollo de un proyecto de software.
La IEEE los divide en funcionales y no funcionales:
Funcionales: Condicin o capacidad de un sistema requerida por el
usuario para resolver un problema o alcanzar un objetivo.
No Funcionales: Condicin o capacidad que debe poseer un
sistema par satisfacer un contrato, un estndar, una especificacin
u otro documento formalmente impuesto.

El anlisis de requerimientos es la tarea que plantea la asignacin de
software a nivel de sistema y el diseo de programas (Figura 1). El anlisis
de requerimientos facilita al ingeniero de sistemas especificar la funcin y
comportamiento de los programas, indicar la interfaz con otros elementos
del sistema y establecer las ligaduras de diseo que debe cumplir el
programa.

Tareas del Anlisis
El anlisis de requerimientos puede dividirse en cuatro reas:
1.- Reconocimiento del problema
2.- Evaluacin y sntesis
3.- Especificacin
4.- Revisin.
Inicialmente, el analista estudia la especificacin del sistema (si existe) y el
plan de proyecto.
A continuacin, debe establecerse la comunicacin necesaria para el
anlisis, de forma que se asegure el reconocimiento del problema.




Diseo
Esta etapa se define como el proceso de utilizar la informacin recolectada en el anlisis para
disear el software a realizar.
La principal tarea de la etapa de diseo es desarrollar un modelo o las especificaciones para el
producto a Componentes del sistema
Qu es?

El diseo crea una representacin o modelo del software, pero, a diferencia
del modelo de los requerimientos (que se centra en describir los datos que
se necesitan, la funcin y el comportamiento), el modelo de diseo
proporciona detalles sobre arquitectura del software, estructuras de datos,
interfaces y componentes que se necesitan para implementar el sistema.
Por qu es importante?

El diseo permite modelar el sistema o producto que se va a construir. Este
modelo se evala respecto de la calidad y su mejora antes de generar cdigo;
despus, se efectan pruebas y se involucra a muchos usuarios finales. El
diseo es el lugar en el que se establece la calidad del software.
Desarrollo
Una vez concluida la etapa de el diseo se procede a realizar el desarrollo
Del software, en esta etapa se lleva a cabo regularmente la programacin construyendo con
cientos de lneas de cdigo el prototipo del diseo que fue planteado con anterioridad. Es
importante asegurar la consistencia del software hacindolo lo mas funcional, practico y
seguro posible.
En anlisis debe ser conducido independientemente del paradigma de ingeniera de software
aplicado. Sin embargo, la forma que ese anlisis tomara puede variar.
PASO 1. Evaluar la peticin del software y determinar si el programa a desarrollar es un buen
candidato para construir un prototipo.
PASO 2. Dado un proyecto candidato aceptable, el analista desarrolla una representacin
abreviada de los requerimientos.
PASO 3. Despus de que se haya revisado la representacin de los requerimientos, se crea un
conjunto de especificaciones de diseo abreviadas para el prototipo.

Pruebas
PASO 4. El software del prototipo se crea, prueba y refina
Se deben de realizar todas las pruebas pertinentes para verificar que el software funcione de
manera adecuada y en caso de encontrarse fallas encontrar la causa de su presencia para
poder optimizar el software.
Por qu es importante?
Con frecuencia, la prueba requiere ms esfuerzo que cualquiera otra accin de ingeniera del
software. Si se realiza sin orden, se desperdicia tiempo, se emplea esfuerzo innecesario y,
todava peor, es posible que algunos errores pasen desapercibidos. Por tanto, parecera
razonable establecer una estrategia sistemtica para probar el software.
Cules son los pasos?
La prueba comienza por lo pequeo y avanza hacia lo grande. Es decir que las primeras
etapas de prueba se enfocan sobre un solo componente o un pequeo grupo de componentes
relacionados
y se aplican pruebas para descubrir errores en los datos y en la lgica de procesamiento que
se encapsularon en los componentes. Despus de probar stos, deben integrarse hasta que se
construya el sistema completo.
Cul es el producto final?

Una Especificacin pruebas documenta la forma en la que el equipo de
software prepara la prueba al definir un plan que describe una estrategia
global y un procedimiento con pasos de prueba especficos y los tipos de
pruebas que se realizarn.

Implementacin
PASO 5. Una vez que el prototipo ha sido probado, se presenta al cliente, el cual "conduce la
prueba" de la aplicacin y sugiere modificaciones.
Este paso es el ncleo del mtodo de construccin de prototipo. Es aqu donde el cliente
puede examinar una representacin implementada de los requerimientos del programa,
sugerir modificaciones que harn al programa cumplir mejor las necesidades reales.
PASO 6. Los pasos 4 y 5 se repiten iterativamente hasta que todos los requerimientos estn
formalizados o hasta que el prototipo haya evolucionado hacia un sistema de produccin.


Mantenimiento
Despus de que el software a sido aprobado y utilizado por el cliente suelen
encontrarse fallas que no se haban detectado con anterioridad por lo cual es
necesario corregirlas dando mantenimiento al software, tambin se puede dar
en el caso de que se desee agregar nuevas mejoras al programa.
Quin lo hace?
En el nivel de la organizacin, el mantenimiento lo realiza el personal de apoyo
que es parte de la organizacin de ingeniera de software. La reingeniera la
realizan especialistas en negocios (con frecuencia compaas consultoras). En
el nivel de software, la reingeniera la realizan ingenieros de software.
Por qu es importante?
las demandas sobre las funciones empresariales y la tecnologa de la
informacin que las apoyan cambian a un paso que pone enorme presin
competitiva sobre toda organizacin comercial. Por esto, el software debe
mantenerse continuamente y, en el momento adecuado, someterse a
reingeniera para sostener el paso.

Cules son los pasos?
El mantenimiento corrige los defectos, adapta el software para satisfacer un
entorno cambiante y mejorar la funcionalidad a fin de cubrir las necesidades
evolutivas de los clientes.

Cul es el producto final?
Se producen varios productos operativos de mantenimiento y reingeniera
(por ejemplo, casos de uso, modelos de anlisis y diseo, procedimientos de
prueba). El resultado final es actualizacin de software.
Fin del ciclo
El fin del ciclo se refiere al fin de la vida til del producto consiste en realizar
todas las tareas necesarias para asegurar que los clientes y los empleados
estn consientes de que el producto ya no ser vendido ni soportado y es
necesario adquirir una nueva versin o un nuevo producto.
1.4 CLASIFICACION DE LA TECNOLOGIA
EN EL DESARROLLO DEL SOFTWARE

Tecnologa estructurada

Programacin Estructurada es una tcnica en la cual la estructura de un
programa, esto es, la interpelacin de sus partes realiza tan claramente como es
posible mediante el uso de tres estructuras lgicas de control:
Secuencia: Sucesin simple de dos o mas operaciones.
Seleccin: bifurcacin condicional de una o mas operaciones.
Interaccin: Repeticin de una operacin mientras se cumple una condicin.

Estos tres tipos de estructuras lgicas de control pueden ser combinados para
producir programas que manejen cualquier tarea de procesamiento de
informacin.

Tecnologa orientada a objetos

Hoy en da la tecnologa orientada a objetos ya no se aplica solamente a los
lenguajes de programacin, adems se viene aplicando en el anlisis y diseo
con mucho xito, al igual que en las bases de datos. Es que para hacer una
buena programacin orientada a objetos hay que desarrollar todo el sistema
aplicando esta tecnologa, de ah la importancia del anlisis y el diseo
orientado a objetos.

1.5 DEFINICION E HISTORIA DE LAS
HERRAMIENTAS CASE
Qu son las Herramientas CASE?

Se puede definir a las Herramientas CASE como un conjunto de programas y ayudas que
dan asistencia a los analistas, ingenieros de software y desarrolladores, durante todos los
pasos del Ciclo de Vida de desarrollo de un Software. Como es sabido, los estados en el
Ciclo de Vida de desarrollo de un Software son: Investigacin Preliminar, Anlisis, Diseo,
Implementacin e Instalacin.
Historia de las Herramientas CASE

Las Herramientas CASE tienen su inicio con el simple procesador de palabras que fue usado para crear y
manipular documentacin. Los setentas vieron la introduccin de tcnicas grficas y diagramas de flujo de
estructuras de datos. Sobre este punto, el diseo y especificaciones en forma pictrica han sido
extremadamente complejos y consuman mucho tiempo para realizar cambios.

La introduccin de las herramientas CASE para ayudar en este proceso ha permitido que los diagramas
puedan ser fcilmente creados y modificados, mejorando la calidad de los diseos de software. Los
diccionarios de datos, un documento muy usado que mantiene los detalles de cada tipo de dato y los
procesos dentro de un sistema, son el resultado directo de la llegada del diseo de flujo de datos y anlisis
estructural, hecho posible a travs de las mejoras en las Herramientas CASE.

Como un paso final, la verificacin de errores y generadores de casos de pruebas fueron incluidos para
validar el diseo del software. Todos estos procesos pueden saberse integrados en una simple herramienta
CASE que soporta todo el ciclo de desarrollo.
Objetivos

*Mejorar la productividad en el desarrollo y mantenimiento del software.

*Aumentar la calidad del software.

*Reducir el tiempo y costo de desarrollo y mantenimiento de los sistemas informticos.

*Mejorar la planificacin de un proyecto.

*Aumentar la biblioteca de conocimiento informtico de una empresa ayudando a la bsqueda de soluciones para los
requisitos.

*Automatizar el desarrollo del software, la documentacin, la generacin de cdigo, las pruebas de errores y la gestin
del proyecto.

*Ayuda a la reutilizacin del software, portabilidad y estandarizacin de la documentacin.

*Gestin global en todas las fases de desarrollo de software con una misma herramienta.

*Facilitar el uso de las distintas metodologas propias de la ingeniera del software.
EJEMPLOS:

ERwin EasyCase
Oracle Designer Microsoft Project
Jdeveloper
1.6 CLASIFICACIN DE LAS HERRAMIENTAS
CASE

No existe una nica clasificacin de herramientas CASE y, en ocasiones, es
difcil incluirlas en una clase determinada. Podran clasificarse atendiendo
a:

Las plataformas que soportan.

Las fases del ciclo de vida del desarrollo de sistemas que cubren.

La arquitectura de las aplicaciones que producen. Su funcionalidad.
Las herramientas CASE, en funcin de las fases del ciclo de vida abarcadas, se pueden agrupar de la
forma siguiente:

1. Herramientas integradas, I-CASE (Integrated CASE, CASE integrado): abarcan todas las fases del ciclo de vida
del desarrollo de sistemas. Son llamadas tambin CASE workbench.

2. Herramientas de alto nivel, U-CASE (Upper CASE - CASE superior) o front-end, orientadas a la
automatizacin y soporte de las actividades desarrolladas durante las primeras fases del desarrollo: anlisis y
diseo.

3. Herramientas de bajo nivel, L-CASE (Lower CASE - CASE inferior) o back-end, dirigidas a las ltimas fases del
desarrollo: construccin e implantacin.

4. Juegos de herramientas o Tools-Case, son el tipo ms simple de herramientas CASE. Automatizan una fase
dentro del ciclo de vida. Dentro de este grupo se encontraran las herramientas de reingeniera, orientadas a la
fase de mantenimiento.

Herramientas de anlisis y diseo. Permiten al desarrollador crear un modelo del sistema que se
va a construir y tambin la evaluacin de la validez y consistencia de este modelo. Proporcionan
un grado de confianza en la representacin del anlisis y ayudan a eliminar errores con
anticipacin. Se tienen:
Herramientas de anlisis y diseo (Modelamiento).
Herramientas de creacin de prototipos y de simulacin.
Herramientas para el diseo y desarrollo de interfaces. Mquinas de anlisis y diseo.
(Modelamiento).

Herramientas de programacin. Se engloban aqu los compiladores, los editores y los
depuradores de los lenguajes de programacin convencionales. Ejemplos de estas herramientas
son:
Herramientas de codificacin convencionales.
Herramientas de codificacin de cuarta generacin.
Herramientas de programacin orientadas a los objetos.


Herramientas de soporte. Se engloban en esta categora las herramientas que
recogen las actividades aplicables en todo el proceso de desarrollo, como las que
se relacionan a continuacin:
Herramientas de documentacin.
Herramientas para software de sistemas.
Herramientas de control de calidad.
Herramientas de bases de datos.

GRACIAS POR SU TIEMPO.

You might also like