You are on page 1of 49

Carrera de Ingeniera de Sistemas

Ciclo: VIII

Ingeniera de Sofware

Semana N1

Mg Gautama Vargas Vargas


Introduccin a la Ingeniera de
Software
FAQ
1. Que es software?
2. Que es la Ingeniera de Software?
3. Cual es la diferencia entre Ingeniera de Software y Ciencias de la
Computacin?
4. Cual es la diferencia entre Ingeniera de Software e Ingeniera de
Sistemas?
5. Que es un proceso de software?
6. Que es un modelo de proceso de software?
7. Que son los mtodos de Ingeniera de Software?
Software (Pressman):

1. Instrucciones (programas de computadora) que cuando se


ejecutan proporcionan la funcin y el rendimiento
deseados.

2. Estructuras de datos que permiten a los programas


manipular adecuadamente la informacin.

3. Documentos que describen la construccin y uso de


programas
Caractersticas del Software (Pressman)

1. El software se desarrolla, no se fabrica


a. Los costes se centran en ingeniera, no en fabricacin
b. Los proyectos software no se pueden gestionar como
procesos de fabricacin

2. El software no se estropea: no es susceptible a males del


entorno.

3. El software se deteriora. Durante su vida sufre cambios


(mantenimiento), por lo que es posible de introducir nuevos
defectos
La Crisis del Software
Los productos de software:

1. No cumplen con los requisitos del


usuario.
2. Son susceptible frecuentemente a
romperse.
3. Es caro.
4. Es difcil de modificar, depurar y mejorar.
5. A menudo es entregado tarde.
6. Tiene a utilizar recursos no ptimos.
Factores que contribuyen a la Crisis del Software

1. Problemas cada vez ms grandes,


2. La falta de una formacin
adecuada en ingeniera de
software,
3. El aumento de la falta de
habilidades,
4. Baja productividad.
Programas vs Productos de Software
Programas Productos de Software
Usualmente pequeos en tamao Tamao grande
El autor es su nico usuario Gran nmero de usuarios
Un desarrollador Equipo de desarrolladores
Carece de interfaz de usuario Interfaz bien diseada
adecuada
Prdida de la documentacin Buena documentacin / Manuales
de usuario
Desarrollo Ad hoc Desarrollo sistemtico
Evolucin de la Ingeniera en el Tiempo

Ingeniera

Tecnologa

Profesin / trabajo
Experiencia
Esotrica Uso sistemtico de la
experiencia pasada y Bases
Cientficas
Uso no organizado
de la experiencia

Arte
Tiempo
Ingeniera de Software: Una actividad de
resolver problemas
Ingeniera de Software
Coleccin de tcnicas, metodologas y herramientas para ayudar con la
produccin de:

1. Un software de alta calidad


2. Con un presupuesto dado
3. Antes del plazo determinado
4. Mientras el cambio se produce
Ingeniera de Software: Una actividad de
resolver problemas
Ingeniera de Software: Una actividad de
resolver problemas
Ingeniera de Software

IEEE Standard Glossary of Software Engineering Terminology (Stad.


610.12-1990) ha desarrollado una definicin ms completa para ingeniera
del software:

La aplicacin de un enfoque sistemtico, disciplinado y cuantificable para el


desarrollo, operacin y mantenimiento del software.
Por qu estudiar Ingeniera de Software?

1. Adquirir habilidades para desarrollar


programas grandes.
2. El crecimiento exponencial del nivel de
complejidad y dificultad con el tamao.
3. El enfoque ad hoc se rompe cuando el
tamao del software incrementa

Una espina de experiencia es mejor que todo


un desierto de advertencia.
Ingeniera de Software: Una actividad de resolver
problemas
Para resolver un problema se usa:

1. Tcnicas (mtodos): Procedimientos formales para producir resultados


usando alguna notacin bien definida (ej. tcnicas de programacin)

2. Metodologas (Proceso y Modelos): Coleccin de tcnicas aplicadas a


travs del desarrollo de software y unificado bajo un enfoque filosfico
(Iterativo, incremental, RAD, RUP, XP, etc.)

3. Herramientas: instrumentos o sistemas automatizados para llevar a cabo


una tcnica
Ingeniera de Software: Una actividad de
resolver problemas

Capas de la Ingeniera de Software. Pressman


CIENCIA VS INGENIERA

Ciencias de la Computacin:

Demuestra teoremas sobre algoritmos, diseos de


lenguajes, define los esquemas de representacin del
conocimiento.

Tiene tiempo infinito ...


CIENCIA VS INGENIERA
Ciencias de la Computacin:
Supone que las tcnicas, metodologas y herramientas se van a
desarrollar.
Investigan en los diseos de cada una de estas componentes, y
demuestra teoremas que especifican que hacen lo que se pretende
hacer.
Tambin disean lenguajes que nos permiten expresar las tcnicas.

Para hacer todo esto, un cientfico de la computacin tiene a su disposicin


una cantidad infinita de tiempo.
CIENCIA VS INGENIERA
Ingeniera de Software
Desarrolla una solucin para un problema especfico de aplicacin para un
cliente. Utiliza computadores, lenguajes, herramientas, tcnicas y mtodos

Ingeniero de Software: Trabaja en mltiples dominios de aplicacin, tiene


slo 3 meses ...

... Mientras los cambios se producen en los requisitos y la tecnologa


disponible
CIENCIA VS INGENIERA
Ingeniera de Software

1. La nica duda para el ingeniero de software es: cmo estas herramientas,


tcnicas y metodologas se pueden utilizar para resolver el problema en
cuestin.

2. Lo que tienen que preocuparse es cmo hacerlo bajo la presin del


tiempo de una fecha lmite.

3. Adems tienen que preocuparse por un presupuesto que podra limitar la


solucin y, a menudo, el uso de herramientas.

4. Las buenas herramientas de ingeniera de software pueden costar muchos


dlares
CIENCIAS VS INGENIERA

COMPUTER
CUSTOMER
SCIENCE

Computer Problem
Theories
Functions

SOFTWARE
ENGINEERING

Tools and
Techniques to
Solve Problem
INGENIERA DE SOFTWARE VS INGENIERA DE
SISTEMAS
Ingeniera de Sistemas

Se ocupa de todos los aspectos del desarrollo de sistemas basados en


computadores, incluyendo el hardware, software y la ingeniera de
procesos.

La Ingeniera de Software es parte de este proceso, en trminos de


arquitectura, control, bases de datos en el sistema (Diseo, integracin y
despliegue)
CIENCIA VS INGENIERA
Modelado: Modelar los objetos es una
tarea difcil

El buen modelado de objetos implica el


dominio de conceptos complejos, la
terminologa y las convenciones.

Tambin requiere una experiencia


considerable y, a veces subjetiva en un
proceso fuertemente basado en la
experiencia.
CIENCIA VS INGENIERA
Modelado
Cuidado con la falsa creencia de que:

1. La tecnologa puede sustituir a la


habilidad y,

2. Esa habilidad es un reemplazo para el


pensamiento.
CIENCIA VS INGENIERA
Modelado
Muchas organizaciones se sienten frustrados con la falta de calidad
de sus sistemas.

Sin embargo, la causa de este problema es a menudo la falsa


creencia de que una herramienta puede ser un sustituto para el
conocimiento y la experiencia en la comprensin y el uso de
tcnicas de desarrollo.
CIENCIA VS INGENIERA

Tenga en cuenta

Ser capaz de utilizar una herramienta no significa que usted


entiende las tcnicas subyacentes, y la comprensin de las
tcnicas no significa que usted entiende el problema.
CIENCIA VS INGENIERA

Tenga en cuenta

En el anlisis final, las organizaciones y los profesionales


deben reconocer que las metodologas, herramientas y
tcnicas no representan los valores aadidos del proceso
de modelado de objetos.
CIENCIA VS INGENIERA

Tenga en cuenta

Por el contrario, el valor real que se agrega, es el


pensamiento y la idea de que slo el analista puede
proporcionar.
CIENCIA VS INGENIERA
Factores que afectan la Calidad del Software
Algunas deficiencias comunes en el desarrollo de software son:

1. Escasa o tarda validacin con el cliente.


2. Inadecuada gestin de los requisitos.
3. No existe medicin del proceso ni registro de datos histricos.
4. Estimaciones imprevistas de plazos y costos.
5. Excesiva e irracional presin en los plazos.
6. Escaso o deficiente control en el progreso del proceso de
desarrollo.
7. No se hace gestin de riesgos formalmente.
8. No se realiza un proceso formal de pruebas.
9. No se realizan revisiones tcnicas formales e inspecciones de
cdigo.
Factores que afectan la Calidad del Software

Complejidad
El sistema es tan complejo que ningn programador puede entenderlo.
La introduccin de una solo correccin de error puede hacer que otro se genere

Cambios
La "Entropa" de un sistema de software se incrementa con cada cambio: Cada cambio
implementado erosiona la estructura del sistema lo cual hace que el siguiente cambio
sea an ms costoso ("Segunda Ley de la Dinmica de Software").
Conforme pasa el tiempo, el costo de implementar un cambio ser demasiado alto, y
el sistema entonces no podr soportar la tarea prevista.
Por que el software es tan complejo

El dominio del problema es difcil


El dominio del problema es a veces difcil, simplemente porque no somos
expertos en ello.

1. Es decir, puede que no sea un desafo intelectual, sino porque usted no es


un experto en ella, hay que aprenderlo.

2. Si unimos esto con el aprendizaje de varios dominios de problemas, y eso es


lo que usted tendr que hacer como ingeniero de software, y el problema se
hace evidente.
Por que el software es tan complejo
El proceso de desarrollo es muy difcil de gestionar

Uno de los supuestos que los administradores han hecho en el pasado, es que el desarrollo
de software puede ser gestionado como un conjunto de pasos en forma lineal, por ejemplo:
Especificacin de Requisitos, seguido de Diseo de Sistemas seguido de Ejecucin seguido
de pruebas y de entrega.

En realidad esto no es tan fcil. Desarrollo de software no se sigue un proceso lineal. Es


altamente no lineal. Hay dependencias entre la forma en que se disea un sistema y la
funcionalidad. Por otra parte, y eso hace que sea muy difcil, algunas de estas dependencias
no se pueden formular a menos que pruebe el diseo.
Por que el software es tan complejo

El software ofrece una flexibilidad extrema

Podemos cambiar casi todo lo que hemos diseado en el


software.

Si bien es difcil de cambiar el diseo de una lavadora, es muy


fcil de cambiar el programa antes de ejecutarlo.
Por que el software es tan complejo

El software es un sistema discreto (formas particulares de codificacin)

Cuando usted est sentado en un avin en un asiento de la


ventana, y oprime un botn para llamar a la azafata para tomar
una bebida, no espera que el sistema de un giro y usted termine
en la tierra.
Por que el software es tan complejo
El software es un sistema discreto (formas particulares de codificacin)

Esto puede suceder con los sistemas digitales. Una de las razones:

1. Si bien se puede descomponer el sistema en subsistemas (Azafata,


Control de Vuelo), si usted no sigue las buenas reglas de diseo, que
podran haber utilizado alguna variable global para cada uno de estos
subsistemas.
2. Una de estas variables utilizadas por el subsistema de control de vuelo
podran haber sido sobrescritos por el mdulo de Azafata.
El proceso de software
Propsito: produccin eficaz y eficiente de un producto software
que rena los requisitos del cliente.

Este proceso es intensamente intelectual, afectado por la


creatividad y juicio de las personas involucradas.
El proceso de software
El proceso de software
El proceso de software no es nico. No existe un proceso de
software universal que sea efectivo para todos los contextos de
proyectos de desarrollo.

Debido a esta diversidad, es difcil automatizar todo un proceso de


desarrollo de software.
El proceso de software
A pesar de la variedad de propuestas de proceso de software, existe un conjunto de
actividades fundamentales que se encuentran presentes en todos ellos:

1. Especificacin de software: Se debe definir la funcionalidad y restricciones


operacionales que debe cumplir el software.

2. Diseo e Implementacin: Se disea y construye el software de acuerdo a la


especificacin.

3. Validacin: El software debe validarse, para asegurar que cumpla con lo que
quiere el cliente.

4. Evolucin: El software debe evolucionar, para adaptarse a las necesidades del


cliente.
El proceso de software
Adems de estas actividades fundamentales, Pressman menciona un
conjunto de actividades protectoras, que se aplican a lo largo de todo el
proceso del software. Ellas se sealan a continuacin:

1. Seguimiento y control de proyecto de software.


2. Revisiones tcnicas formales.
3. Garanta de calidad del software.
4. Gestin de configuracin del software.
5. Preparacin y produccin de documentos.
6. Gestin de reutilizacin.
7. Mediciones.
8. Gestin de riesgos.
El proceso de software
Pressman caracteriza un proceso de desarrollo de software con los siguientes
elementos:
El proceso de software
Pressman caracteriza un proceso de desarrollo de software con los siguientes elementos:

1. Un marco comn del proceso: actividades que son aplicables a todos los proyectos de
software, con independencia del tamao o complejidad.

2. Un conjunto de tareas: coleccin de tareas de ingeniera del software, hitos de


proyectos, entregas y productos de trabajo del software, y puntos de garanta de
calidad, que permiten que las actividades del marco de trabajo se adapten a las
caractersticas del proyecto de software y los requisitos del equipo del proyecto.

3. Las actividades de proteccin, tales como garanta de calidad del software, gestin de
configuracin del software y medicin, abarcan el modelo del proceso. Las actividades
de proteccin son independientes de cualquier actividad del marco de trabajo y
aparecen durante todo el proceso.
Modelos de proceso software
Sommerville define el modelo de proceso de software como:

Una representacin simplificada de un proceso de software,


representada desde una perspectiva especfica. Por su naturaleza los
modelos son simplificados, por lo tanto un modelo de procesos del software
es una abstraccin de un proceso real.

Los modelos genricos no son descripciones definitivas de procesos de


software; sin embargo, son abstracciones tiles que pueden ser utilizadas
para explicar diferentes enfoques del desarrollo de software.
Modelos de proceso software

Algunos modelos son:

1. Codificar y corregir
2. Modelo en cascada
3. Desarrollo evolutivo
4. Desarrollo formal de sistemas
5. Desarrollo basado en reutilizacin
6. Desarrollo incremental
7. Desarrollo en espiral
Mtodos de Ingeniera de software

Enfoques estructurados para el desarrollo de software que incluyen


modelos de sistema, notaciones, reglas, consejos de diseo y
orientacin de procesos.

1. Descripcin del Modelo


2. Reglas
3. Recomendaciones
4. Proceso de orientacin
Por su Atencin

You might also like