You are on page 1of 52

| |

  

  

|
|  

   
 

ë  
ë 


x  
 
  
Ingenieria de software: Fco Javier Flores
1
A.
› 
 


Vs la aplicación práctica del


conocimiento científico en el diseño y
construcción de programas de
computadora y la documentación
asociada requerida para desarrollar,
operar (funcionar) y mantenerlos.

Ingenieria de software: Fco Javier Flores


2
A.
‰ ue es?
Vl software de computadora es el producto que
diseñan y construyen los ingenieros de software.
Vsto abarca programas que se ejecutan dentro de
una computadora de cualquier tamaño y
arquitectura, documentos y comprenden
formularios varios virtuales e impresos y datos
que combinan números y texto, también incluyen
representaciones de información de audio, video e
imágenes.

Ingenieria de software: Fco Javier Flores


3
A.
Ingenieria de software: Fco Javier Flores
x
A.
] A principios de los ¶80s: ³Software: motor del futuro´.
(algo importante)
] A mediados del los ¶80s ³Una brecha creciente en el software´.
(lamento)
] A fines de los µ80s ³La tranpa del software´. Automatizar o que.
] A inicio de los ¶90s ³‰nos podemos fiar del software?´.
³La creación de un nuevo software era una tarea angustiosa´

Presagio de una nueva forma de comprender la importancia del


software. (oportunidades que ofrece y peligros que plantea)
Ingenieria de software: Fco Javier Flores
5
A.
„    
 „ 

Actualmente, el software ha superado al hardware


como la clave del éxito de muchos sistemas basados en
computadoras. Tanto si se utiliza la computadora para
llevar un negocio, controlar un producto o capacitar un
sistema, 2 2 2 2 
2  
22 . Lo que diferencia a una compañía de su
competidora es la suficiencia y oportunidad de la
información dada por el software.

Ingenieria de software: Fco Javier Flores


6
A.
  
 „ 

›urante las tres primeras décadas de la informática, el principal desafío era el


desarrollo del hardware de las computadoras, de forma que se redujera el coste de
procesamiento y almacenamiento de datos. Hoy, el problema es diferente, el
principal desafío es mejorar la calidad y reducir costo, de las soluciones basadas
en computadora, soluciones que se implementan con el software.

   
 „ 

›urante los primeros años de desarrollo de las computadoras, el hardware sufrió


continuos cambios, mientras que el software se contemplaba simplemente como
un añadido. Vl desarrollo del software se realizaba sin ninguna planificación hasta
que los planes comenzaron a descalabrarse y los costos a crecer. ›urante este
periodo se utilizaba en la mayoría de los sistemas una orientación por lotes.

›ebido a este entorno personalizado del software, el diseño era un proceso


implícito, realizado en la mente de alguien, y la documentación normalmente no
existía. Ingenieria de software: Fco Javier Flores
7
A.
Los primeros años (1950-196x)
Orientación por lotes, distribución limitada, software a medida
La segunda era (1963-197x)
Multiusuario, tiempo real, base de datos, software como producto
La tercera era (1973-1989)
Sistemas distribuidos, incorporación de inteligencia, hardware de
bajo costo, impacto en el consumo
La cuarta era (1985-2001)
Tecnología orientadas a los objetos, sistemas expertos, redes
neuronales, computación paralela.
Ingenieria de software: Fco Javier Flores
8
A.
La 
  se caracterizo también por el establecimiento del software como
producto y la llegada de las ³   ´. Vl software ya se desarrollaba
para tener una amplia distribución en un mercado multidisciplinar.

La   en la evolución de la computadora comenzó a mediados de los ¶70s


y llega hasta los µ90s. Vl procesamiento distribuido múltiples computadoras, cada
una ejecutando funciones concurrentemente y comunicándose con alguna otra,
incremento notablemente la complejidad de los sistemas informáticos. Vsta también
se caracteriza por la llegada y el amplio uso de los microprocesadores y las
computadoras personales.

La    del software de computadora esta empezando ahora. Las tecnologías
orientadas a los objetos están desplazando rápidamente a enfoques de desarrollo de
software mas convencionales en muchas áreas de aplicación. Por fin, los sistemas
expertos y el software de inteligencia artificial se han trasladado del laboratorio a
las aplicaciones practicas, para un amplio rango de problemas del mundo real. Vl
software de redes neuronales artificiales
ha abierto excitantes posibilidades para el reconocimiento de formas y habilidades
de procesamiento de información al estilo de cómo lo hacen los humano.
Ingenieria de software: Fco Javier Flores
9
A.
 „  
„

Hoy, la distribución de costos en el desarrollo de


sistemas informáticos ha cambiado drásticamente.
Vl software, en lugar del hardware, es normalmente el
elemento principal del costo. Vn las pasadas décadas
los ejecutivos y muchos aprendices técnicos se habían
hecho las siguientes preguntas:

Ingenieria de software: Fco Javier Flores


10
A.
]‰ Por qué lleva tanto tiempo terminar los programas?

] ‰ Por qué es tan elevado el costo de desarrollo del


software?

] ‰Por qué es imposible encontrar todos los errores


antes de entregar el software a nuestros clientes?

] ‰Por qué se gasta tanto tiempo y esfuerzo en el


mantenimiento de los programas existentes?

] ‰Por qué nos resulta difícil constatar el progreso


conforme se desarrolla el software?
Ingenieria de software: Fco Javier Flores
11
A.
] V    
 
   


   

  

 
      



      

  
  


Ingenieria de software: Fco Javier Flores


12
A.
 
 „   

Tanto en las grandes empresas como en las pequeñas, lo


que tenemos es una ³fabrica de software´ que envejece,
hay cientos de aplicaciones basadas en software en una
situación critica y necesitan ser renovadas urgentemente:

Ingenieria de software: Fco Javier Flores


13
A.
Las aplicaciones de sistemas de información
escritas, hace algunas décadas han que han
sufrido cuarenta generaciones de cambios y que
ahora son virtualmente imposibles de mantener.
Incluso la mas pequeña modificación puede
hacer que falle todo el sistema.

Ingenieria de software: Fco Javier Flores


1x
A.
Las aplicaciones de ingeniería que se utilizan para
generar datos críticos de diseño y que, sin embargo,
a pesar de su edad y estado de conservación,
realmente no se entienden.

Sistemas empotrados (usados para controlar trafico


aéreo y fabricas, entre sus cientos de aplicaciones)
que parecen extraños y a veces tienen un
comportamiento inexplicable, pero que no se pueden
poner fuera de servicio por que no hay nada
disponible para reemplazarlas.

Ingenieria de software: Fco Javier Flores


15
A.
Yo será suficiente ³reparar´ lo que esta mal y dar
una imagen moderna a estas aplicaciones. Muchos
componentes de la fabrica de software requieren
una reingeniería o reestructuración importante o, de
lo contrario, no serán competitivos durante los años
siguientes años. ›esafortunadamente, muchos
directores de empresas parecen poco dispuestos a
comprometer los recursos necesarios para
emprender este esfuerzo de reestructuración. ³Las
aplicaciones todavía funcionan´, dicen, ³y no es
económico comprometer recursos para mejorarlos´.

Ingenieria de software: Fco Javier Flores


16
A.
 „ 

Vn 1970, al menos el uno por ciento de la gente podía describir de


forma inteligente lo que significaba el ³Software de
Computadora´.
Hoy, la mayoría de los profesionales y muchas personas en
general creen que entienden el software. Pero, ‰realmente lo
entienden?.

„„
 „ 

Vl 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:

Ingenieria de software: Fco Javier Flores


17
A.
1.- Vl software se desarrolla, no se fabrica en un sentido
clásico.

Los costos del software se encuentran en la ingeniería.


Vsto significa que los proyectos de software no se
pueden gestionar como si fueran proyectos de
fabricación. Vs importante tener en cuenta que este
termino no implica que la fabricación del hardware y el
desarrollo del software sean equivalentes.

Ingenieria de software: Fco Javier Flores


18
A.
2.- Vl software no se estropea.

Vl software no es susceptible a los males del entorno


que hacen que el hardware se estropee. Los defectos no
detectados harán que falle el programa durante las
primeras etapas de su vida. Cada fallo en el software
indica un error en el diseño o en el proceso mediante el
que se tradujo el diseño a código maquina ejecutable.
Por tanto, el mantenimiento del software tiene una
complejidad considerablemente mayor que la del
mantenimiento del hardware.

Ingenieria de software: Fco Javier Flores


19
A.
3.- La mayoría del software se construye a medida,
en vez de ensamblar componentes existentes.

Se puede comprar software ya desarrollado,


pero solo como unidad completa, no como
componentes que pueden reensamblarse en
nuevos programas.

Ingenieria de software: Fco Javier Flores


20
A.
COMPOYVYTVS ›VL SOFTWARV

Los componentes de software se crean mediante una serie de


traducciones que hacen corresponder los requisitos del cliente
con un código ejecutable en la maquina. Se traduce un
modelo (prototipo) de requisitos a un diseño. Se traduce el
diseño del software a una forma en un lenguaje que especifica
las estructuras de datos, los atributos procedimentales y los
requisitos que atañen al software. La forma en lenguaje es
procesada por un traductor que las convierte en instrucciones
ejecutables en una maquina.

Ingenieria de software: Fco Javier Flores


21
A.
La reusabilidad es una característica importante por un
componente de software de alta calidad. Hoy en día,
hemos extendido nuestra visión de reusabilidad para
abarcar no solo los algoritmos, sino también estructuras
de datos.

Los componentes de software se construyen mediante un


lenguaje de programación que tiene un vocabulario
limitado, una gramática definida explícitamente y reglas
bien formadas de sintaxis y semántica. Vstos atributos
son esenciales para la traducción por la maquina. Las
clases de lenguaje que se utilizan actualmente son:
Ingenieria de software: Fco Javier Flores
22
A.
] Los lenguajes maquina.- Vstos son una represen ±
tación simbólica del conjunto de las instrucciones
del ³CPU´.
] Los lenguajes de alto nivel.- Permiten al programa ±
dor y al programa independizarse permiten al
programador y al programa independizarse de la
maquina.
] Los lenguajes no procedimentales.- Los lenguajes de
programación modernos (lenguajes que soportan
directamente las practicas modernas para el diseño
procedimental y de datos) tales como pascal, C y
Ada se utilizan ampliamente.
] Los lenguajes orientados a los objetos C++, Object,
Pascal, ›elphi, java y otros, están ganando cada vez mas
seguidores. Ingenieria de software: Fco Javier Flores
23
A.
  „
 „ 

Vl software puede aplicarse en cualquier situación en que se haya definido


previamente un conjunto especifico de pasos procedimentales (es decir, un
algoritmo). Para determinar la naturaleza de una aplicación de software, hay dos
factores importantes que se deben considerar: el contenido y el determinismo de la
información. Vl contenido se refiere al significado y a la forma de la información de
entrada y salida.
Las siguientes áreas del software indican la amplitud de las
posibilidades de aplicación.
] Software de Sistemas.
] Software de Tiempo Real.
] Software de Gestión.
] Software de Ingeniería y Científico.
] Software Vmpotrado.
] Software de Computadoras Personales.
]Software basado en Web
] Software de Inteligencia Artificial.
Ingenieria de software: Fco Javier Flores
2x
A.
„ 
 „   
V     

    

  


 


 
]   

] V

„ 



  




Ingenieria de software: Fco Javier Flores


25
A.
„ 
    
V   
 
   

   
 
  


!       
  

 

"  
 

Ingenieria de software: Fco Javier Flores


26
A.
„ 
 # 
V
  
 

   
  $
   
      

] % 
]    "
&  "
] ' 


Ingenieria de software: Fco Javier Flores


27
A.
„ 
 ' 
  
„ 


 
  ()   
%*
+
,   -
, 
 .   
,$   
   
$

"  
   

/ 0    
  
1,/2
„
    
Ingenieria de software: Fco Javier Flores
28
A.
„ 
V 
 
V   
   
    
 
 
 


       

  
     
V   -
] V 
     
  
 
] 3       1      

  2

Ingenieria de software: Fco Javier Flores


29
A.
„ 
   
 4
 
V
   
 4
  
  *  
â V
     5
â 6   
â #
$ 
  

â ) 
â #  "  
â ,   

â /   
  

Ingenieria de software: Fco Javier Flores


30
A.
„ 
"   7 "
8  $  7 ""  
 5 


 
 

 
  
  
V   -
â 6)8
â 9
â 6
 5
â :
  
   

Ingenieria de software: Fco Javier Flores


31
A.
„ 
 '  ,

',V  
  
  




"           



$  
 
„V    "        

      
 1$   2

  
 
  

Ingenieria de software: Fco Javier Flores


32
A.

   ! "

Ingenieria de software: Fco Javier Flores


33
A.
Muchos observadores de la industria han caracterizado los
problemas asociados con el desarrollo del software como una
³Crisis´ (etapa decisivo o crucial ). Sin embargo, lo que
realmente tenemos puede ser algo diferente.

Yosotros ya hemos alcanzado la etapa de crisis en el software


de computadoras. Lo que realmente tenemos es una aflicción
crónica (algo que causa pena o desastre).

Vl termino ³crisis´ alude a un conjunto de problemas que


aparecen en el desarrollo del software de computadoras.

Ingenieria de software: Fco Javier Flores


3x
A.
PROBLVMAS.

] Los problemas que afligen al desarrollo del software se


pueden caracterizar bajo muchas perspectivas diferentes,
pero los responsables de los desarrollos del software se
centran sobre los aspectos de ³fondo´:
1.- La planificación y estimación de costos son frecuentemente
muy imprecisas;
2.- La ³productividad´ de la comunidad del software no
corresponde con la demanda de sus servicios y;

*. 8  


  
   " 

Ingenieria de software: Fco Javier Flores


35
A.
Tales problemas son solo las manifestaciones mas visibles de
otras dificultades del software:

] Yo tenemos tiempo de recoger datos sobre el proceso de


desarrollo del software.
] La insatisfacción del cliente con el sistema ³terminado´ es
muy frecuente.
] La calidad del software es normalmente cuestionable.
] Vl software existente puede ser muy difícil de mantener.

Ingenieria de software: Fco Javier Flores


36
A.


] 8 
      


    

     

 4


     

   
   ÿ  ÿ  V  
      

   

  
      
   


" 

 

     
  
   
] 8
 "    

   
 
               

 „ "
 

  
   
    1

2 5
  

"      

 "  
 

    
    "
   
   " 

  4       
   
   


Ingenieria de software: Fco Javier Flores
37
A.
Ô # 

Muchas de las causas de la crisis del software se pueden


encontrar en una mitología que surge durante los primeros años
del desarrollo del software, los mitos del software propagaron
información errónea y confusión estos tienen varios atributos
que los hacen insidiosos.

Hoy, la mayoría de los profesionales competentes consideran a


los mitos como actitudes y hábitos erróneos que han causado
serios problemas, y son difíciles de modificar, tanto a los
gestores como a los técnicos.

Ingenieria de software: Fco Javier Flores


38
A.
GVSTORVS

Son los profesionales encargados de gestionar el dinero, es


decir, toman las decisiones de comprar este o aquel producto
financiero por mandato de su cliente. La relación con los
gestores se formaliza mediante un contrato. Un caso distinto
es el del ahorro colectivo donde los gestores de fondos, por
una comisión conocida e igual para todos, mueven los
capitales en los mercados en busca de la mayor ganancia
posible para sus clientes

Ingenieria de software: Fco Javier Flores


39
A.
Ô #$ %

] 8 
 
 " "
 
  
 
  
       $

  " 
   

   

 

 
    

  ,
     

    
 
   
 
 

     

 1  
  
  2

MITO: Tener un libro que esta lleno de estándares


y procedimientos para construir un software, ‰se
proporciona todo lo que necesita saber?

Ingenieria de software: Fco Javier Flores


x0
A.
V,8'/,/-
V "   5  "

; 
 <;    
"
 
5  <;
  
 
 
   

   
<
;     ;  0  

 

     
 
 
      <V
  
  %=

Ingenieria de software: Fco Javier Flores


x1
A.
] )'=-)      

   
 

   
$    
     
    
 $ 
 
 

RVALI›A›: Se necesita mucho mas que el último


modelo de la PC para hacer desarrollo de software de
gran calidad. Las herramientas de ingeniería del
software asistida por computadora (CASV) son más
importantes que el hardware para conseguir buena
calidad y productividad, aunque la mayoría de los
desarrolladores no las utilizan eficazmente.
Ingenieria de software: Fco Javier Flores
x2
A.
] Ô › 
!       

  

     
 
 V     

     5   "
  

 "    

"


 "     





8      
   
  5   
         

 



Ingenieria de software: Fco Javier Flores


x3
A.
MITO:
Una declaración general de los objetivos es suficiente para
comenzar a escribir los programas ± podemos dar lo
detalles más adelante -

RVALI›A›;
Una mala definición inicial es la principal causa del trabajo
baldío en software. Vs esencial una descripción formal y
detallada del ámbito de la información, funciones,
comportamiento, rendimiento, interfaces y criterios de
validación. Se obtienen después de una exhaustiva
comunicación entre el cliente y el análisis

Ingenieria de software: Fco Javier Flores


xx
A.
MITO:
Los requisitos del proyecto cambian continuamente, pero los
cambios pueden acomodarse fácilmente ya que el software es
flexible.

RVALI›A›:
Vs verdad que los requisitos del software
cambian, pero el impacto del cambio varía
según el momento en que se introduzca.

Ingenieria de software: Fco Javier Flores


x5
A.
Costo del
cambio

›espués de la
definición ›esarrollo
entrega

Ingenieria de software: Fco Javier Flores


x6
A.
Ô # # #

8      
 
 


     
 >?
0  
 
$ /
 


    

   
 


     
  8   
  

  



MITO: Una vez que escribimos el programa y


hacemos que funcione, nuestro trabajo ha
terminado.

Ingenieria de software: Fco Javier Flores


x7
A.
RVALI›A›:
³Cuando más pronto se comience a escribir código, más
se tardará en terminarlo´

Los estudios estadísticos indican que entre el 60 y el 80 %


de todo el esfuerzo dedicado a un programa se realizará
después de que se le haya entregado al cliente por primera
vez.

Consejo:
Trabaja muy duro para entender lo que tienes que
hacer antes de empezar y toma el menor riesgo
posible
Ingenieria de software: Fco Javier Flores
x8
A.
) -8 *    


 

    

  

Realidad.
Un programa que funciona es sólo una parte de la
configuración del software que incluye muchos
elementos. La documentación proporciona el
fundamento para un buen desarrollo y, lo que es
mas importante, proporciona guías para la tarea de
mantenimiento del software .

Ingenieria de software: Fco Javier Flores


x9
A.
PARA›IGMAS ›V LA IYGVYIVRÍA ›VL SOFTWARV

Vl mal que ha infectado el desarrollo del software no va


a desaparecer de la noche a la mañana. Reconocer los
problemas y sus causas y demoler los mitos del software
son los primeros pasos hacia las soluciones. Pero las
propias soluciones tienen que proporcionar asistencia
práctica a la persona que desarrolla software, mejorar la
calidad del software y, por ultimo, permitir al mundo del
software mantenerse en paz con el mundo del hardware.

Ingenieria de software: Fco Javier Flores


50
A.
 
 „  
 

Una de las primeras definiciones de la ingeniería del software fue la propuesta por
Fritz Bauer:

³Vl establecimiento y uso de principios de ingeniería robustos, orientados a


obtener software económico que sea fiable y funcione de manera eficiente
sobre maquinas reales.´

Aunque se han propuesto muchas mas definiciones generales, todas refuerzan la


importancia de una disciplina de ingeniería para el desarrollo del software.

La ingeniería del software surge de la ingeniería de sistemas y


de hardware. Abarca un conjunto de tres elementos clave;
& ' ( 
 ) *  
 que facilitan al
gestor controlar el proceso del desarrollo del software y
suministrar a los que practiquen dicha ingeniería las bases para
construir software de alta calidad de una forma productiva.
Ingenieria de software: Fco Javier Flores
51
A.
Los MÉTO›OS de la ingeniería del software indican
³como´ construir técnicamente el software: planificación,
análisis, diseño, ...

Las HVRRAMIVYTAS de la Ingeniería Software


Suministran un soporte automático o semiautomático
para los métodos.

8 4=V/')'V%=„ '„      


    

  


 

 
 
   
 
  


Ingenieria de software: Fco Javier Flores


52
A.