Diferencia entre revisiones de «Usuario:ManuelRomero/isConceptoBasicos»

De WikiEducator
Saltar a: navegación, buscar
 
(23 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
 +
{{TEP}}
 +
{{:Usuario:ManuelRomero/CursoJavaUml/IS/nav}}
 
{{#widget:Slides}}  
 
{{#widget:Slides}}  
{{MiTitulo| Introducción a la ingeniería del sofwtware}}
+
{{MiTitulo| Introducción a la Ingeniería del Software}}
<nowiki>div class="slides layout-regular template-default"></nowiki>
+
<div class="slides layout-regular template-default">
 +
<div class="slide">
 
= CONCEPTOS GENERALES PARA EL DESARROLLO DEL SOFTWARE =
 
= CONCEPTOS GENERALES PARA EL DESARROLLO DEL SOFTWARE =
== Definiciones ==
+
=== Definiciones ===
=== Software (Pressman): ===
+
;Software (Pressman)
* '''Instrucciones''' que cuando se ejecutan proporcionan la función y el comportamiento deseado.
+
: '''Instrucciones''' que cuando se ejecutan proporcionan la función y el comportamiento deseado.
* '''Estructuras de datos''' que facilitan a los programas manipular adecuadamente la información
+
: '''Estructuras de datos''' que facilitan a los programas manipular adecuadamente la información
* '''Documentos''' que describen la operación y el uso de los programas
+
: '''Documentos''' que describen la operación y el uso de los programas
 +
*Una definición más enfocada a un software estructurado que orientado a objetos
 +
*Nos da una idea de la naturaleza lógica del software
 +
*Nos recalca la importancia de la '''documentación''' aparentemente no necesaria para que el software funcione
 +
{{Actividad| Por qué crees que es importante la documentación en el software}}
 +
</div>
  
Una definición más enfocada a un software estructurado que orientado a objetos
+
<div class="slide">
 +
=== Tipos de software ===
 +
*El software automatiza tareas de diferente naturaleza.
 +
Es muy intuitivo pensar que no requerirá las mismas necesidades un software que hace que salte un airbag de un coche donde es tiempo de respuesta debe de ser  instantáneo (un segundo puede ser vital), que un software que se encarga de imprimir una nóminas donde ese requisito temporal carece de importancia (no importa que tarde 2 segundos en responder el sistema).
 +
{{Actividad| Indica ejemplos de tipo de software}}
 +
;SOFTWARE DE SISTEMAS
 +
[[Archivo:soft_sistemas.png]]
 +
: Sirven de herramienta para otros software
 +
: Ej.: S.O., Compiladores, Interpretes, CASE, Editores complejos …)
  
Nos da una idea de la naturaleza lógica del software
+
;SOFTWARE DE TIEMPO REAL
 +
[[Archivo:soft_tiempo_real.png]]
 +
:Tienen una fuerte interacción con el hard del ordenador
 +
:Conjunto de programas que mide analiza y controla sucesos del mundo real a medida que ocurren.
 +
:Ej. Aplicaciones de control de maquinaria
 +
</div>
  
No recalca la importancia de la '''documentación''' aparentemente no necesaria para que el software funcione
+
<div class="slide">
  
Actividad Por qué crees que es importante la documentación en el software
+
;SOFTWARE DE INGENIERÍA Y CIENTÍFICO
 +
[[Archivo:soft_cientifico.png]]
 +
: Utilizan algoritmos de manejo de números.
 +
: Muy pesados en cuanto a cálculos
 +
: Aplicaciones en Astronomía Meteorología, Biología molecular.
 +
: Toma características de Tiempo Real.
  
== Tipos de software ==
+
;SOFTWARE EMPOTRADO (FIRMWARE)
El software automatiza tareas de diferente naturaleza.  
+
[[Archivo:soft_empotrado.png]]
 +
: Reside en ROM,
 +
: Se utiliza para controlar productos de sistemas de los mercados
 +
: Sistemas que suelen ''correr'' en microcontroladores
  
Es muy intuitivo pensar que no requerirá las mismas necesidades un software que hace que salte un airbag de un coche donde es tiempo de respuesta debe de ser instantáneo (un segundo puede ser vital), que un software que se encarga de imprimir una nóminas donde ese requisito temporal carece de importancia (no importa que tarde 2 segundos en responder el sistema).
+
;SOFTWARE DE PC’S
 +
[[Archivo:soft_pc.png]]
 +
:Como Procesadores de texto, hojas de cálculo, GBD
 +
:Software diseñado para ''masas ''y claramente de propósito general
 +
</div>
  
[[Archivo:|soft_sistemas.png]]Actividad Indica ejemplos de tipo de software
+
<div class="slide">
  
 +
;SOFTWARE DE INTELIGENCIA ARTIFICIAL
 +
[[Archivo:soft_inteligencia_artificial.png]]
 +
:Algoritmos no numéricos para resolver problemas complejos.
 +
:Aplican razonamiento para llegar a conclusiones a partir de alguna premisa.
  
S. DE SISTEMAS
+
;SOFTWARE DE GESTIÓN
 +
[[Archivo:soft_gestion.png]]
 +
: Realiza tareas de procesamientos de datos y operaciones de cálculo interactivo.
 +
: Trabajan con gran cantidad de información y permite automatizar gran parte de procesos en las empresas.
 +
: Los sistemas de información de gestión, suelen acceder a grandes bases de datos que contienen información comercial
 +
: Estas aplicaciones reestructuran los datos existentes:
 +
: Para facilitar las operaciones comerciales
 +
: Para gestionar la toma de decisiones
 +
: Además de las tareas convencionales de procesamiento de datos (Aplicaciones por lotes), las aplicaciones de gestión, también realizan cálculo interactivo,
 +
</div>
  
*
+
<div class="slide">
** Sirven de herramienta para otros software
+
** Ej.: S.O., Compiladores, Interpretes, CASE, Editores complejos …)
+
** [[Archivo:|soft_tiempo_real]]Tienen una fuerte interacción con el hard del ordenador
+
  
S. DE TIEMPO REAL
+
= CARACTERÍSTICAS DEL SOFTWARE =
 +
===PECULIARIDADES DEL SOFTWARE===
 +
*Son muchas las características que podríamos enumerar del software.  
 +
*Todas ellas tienen que ver con su naturaleza '''lógica '''y no '''física.'''
 +
*No es lo mismo hacer un coche (ensamblar componentes físicos), que hacer un programa (conjuníto de sofware que va a automatizar una determinada tarea)
  
*  
+
*Podríamos enumerar las siguientes características:
** Conjunto de programas que mide analiza y controla sucesos del mundo real a medida que ocurren.
+
**
** Ej. Aplicaciones de control de maquinaria
+
** Se desarrolla, no se fabrica
 +
** No se estropea, pero se deteriora (su naturaleza no física)
 +
** Se construye a medida, en vez de ensamblar componentes existentes. (Idea que se intenta cambiar sobre todo con la programación orientada a objetos)
 +
** Es una industria no es un arte
 +
[[Archivo:sort_industria_o_arte.png]]
 +
</div>
  
[[Archivo:|sotf_cientifico.png]]S. DE INGENIERÍA Y CIENTÍFICO
+
<div class="slide">
  
*
+
=== CURVA DE FALLOS HARDWARE/SOFTWARE===
** Utilizan algoritmos de manejo de números.
+
*Dada su naturaleza '''lógica''' en teoría no se estropea
** Muy pesados en cuanto a cálculos
+
*cuesta ponerlo en marcha (al principio al construirlo se identifican y corrigen fallos)
** Aplicaciones en Astronomía Meteorología, Biología molecular.
+
[[Archivo:Soft_evolucion_tiempo_teoria.png]]
** Toma características de Tiempo Real.
+
  
[[Archivo:|''soft_empotrado.png'']]S. EMPOTRADO (FIRMWARE)
+
*En cambio el hardware tras pasar un tiempo de pruebas entra en un estado funcional
 +
[[Archivo:hard_evolucion_tiempo.png]]
 +
</div>
  
*
+
<div class="slide">
** Reside en ROM,
+
===CURVA DE FALLOS HARDWARE/SOFTWARE===
** Se utiliza para controlar productos de sistemas de los mercados
+
*En la realidad el software durante su vida en un 98% de los casos hay que modificarlo (el 2% que no se modifica es por que seguramente no se usa).
** Sistemas que suelen ''correr'' en microcontroladores
+
*Existen  3 razones por las cual se puede modificar
  
[[Archivo:|soft_pc.png]]SOFTWARE DE PC’S
+
** Mejoraras
 +
** Adaptarlo a nuevas necesidades
 +
** Solucionar fallos detectados a posterior
  
* Como Procesadores de texto, hojas de cálculo, GBD
+
*La experiencia demuestra que después de las modificaciones el software pierde calidad
* Software diseñado para ''masas ''y claramente de propósito general
+
*No funciona igual de bien que antes
 +
*Esta pérdida de va sumando a nuevas modificaciones según vemos en el diagrama
 +
[[Archivo:Soft_evolucion_tiempo_real.png ]]
 +
</div>
  
[[Archivo:|soft_inteligencia_artificial.png]]SOFTWARE DE INTELIGENCIA ARTIFICIAL
+
<div class="slide">
 +
= LOS PROBLEMAS DEL SOFTWARE =
 +
===ALGUNAS CIRCUNSTANCIAS ASOCIADAS AL SOFTWARE===
 +
*Son muchos los problemas que se le asocian al software
 +
*Mas que problemas son limitaciones ligadas a su naturaleza lógica
 +
*Limitaciones humanas no del software
 +
#El software, no es capaz de crecer al  ritmo del hardware
 +
#Plazos de entrega inaceptables
 +
##Todo el mundo quiere sus aplicaciones para ayer
 +
##La gente tiene miedo a que cuando se terminen queden obsoletas
 +
##Retrasos no previstos
 +
#Difícil mantenimiento
 +
##Mal diseño
 +
##Mala utilización de recursos
 +
##Software no acorde con los requisitos previamente establecidos
 +
##Errores en los programas
 +
#Otros
 +
##Poca sensibilidad a los errores externos
 +
#Errores humanos
 +
#Dificultad de puesta en marcha
 +
#Desbordamiento de costes
 +
</div>
  
* Algoritmos no numéricos para resolver problemas complejos.
+
<div class="slide">
* Aplican razonamiento para llegar a conclusiones a partir de alguna premisa.
+
=== LOS PROBLEMAS DEL SOFTWARE ===
 +
*En Resumen podríamos afirmar que el software:
 +
**'''Planificación y estimación de costes imprecisos'''
 +
**'''Productividad no sintonizada con exigencias'''
 +
**'''Calidad muchas veces inaceptables'''
 +
''''Todo esto desencadena''''
 +
'''Crisis del software. Es un concepto en el cual aún podemos decir que estamos inmersos'''
 +
''''La solución a la crisis''''
 +
'''Aplicar Ingeniería en el Software'''
 +
</div>
  
*  
+
=== COMPLEJIDAD DEL SOFTWARE ===
 +
* La ''complejidad del software'' es una propiedad '''esencial''', no una propiedad accidental
 +
; Motivos por los que el soft es complejo
 +
:Es complejo definir el dominio del problema
 +
:Cliente, Desarrollador
 +
:Gestionar el proceso de desarrollo
 +
:Acabar en el plazo
 +
:No sobrepasar costos
 +
:Asumir riesgos
 +
:El desarrollo del Soft, ha de ser flexible
 +
:Abstracción (imaginación), ...
 +
[[Archivo:soft_complejidad.png]]
 +
</div>
  
[[Archivo:|soft_gestion.png]]
+
<div class="slide">
 +
=== CRISIS DEL SOFTWARE ===
 +
* Más que crisis, enfermedad degenerativa
 +
# Causas que lo ocasionan
 +
## Software es elemento lógico, no físico ( su naturaleza no comprendida)
 +
## Responsable de desarrollo soft sin conocimientos soft
 +
## Anarquía del programador artesano
 +
## Resistencia al cambio
 +
# Soluciones
 +
## Enfocar el software como una ingeniería
 +
## Mejorar continuamente técnicas y herramientas
 +
</div>
  
SOFTWARE DE GESTIÓN
+
<div class="slide">
  
* Realiza tareas de procesamientos de datos y operaciones de cálculo interactivo.
+
= MITOS DEL SOFTWARE=
* Trabajan con gran cantidad de información y permite automatizar gran parte de procesos en las empresas.
+
*Mas que mitos son situaciones que se pueden producir
* Los sistemas de información de gestión, suelen acceder a grandes bases de datos que contienen información comercial
+
*Identificamos tres roles
* Estas aplicaciones reestructuran los datos existentes:
+
#El rol  cliente es quien solicita el software
* Para facilitar las operaciones comerciales
+
#El rol desarrollador quien va desarrollarloç
* Para gestionar la toma de decisiones
+
#El rol gerente quien coordina al equipo de desarrollador
* Además de las tareas convencionales de procesamiento de datos (Aplicaciones por lotes), las aplicaciones de gestión, también realizan cálculo interactivo,
+
</div>
  
== CARACTERÍSTICAS DEL SOFTWARE ==
+
<div class="slide">
Son muchas las características que podríamos enumerar del software. Todas ellas tienen que ver con su naturaleza '''lógica '''y no '''física.'''
+
===MITOS DEL SOFTWARE: Cliente ===
 +
* Una declaración inicial de objetivos es suficiente
 +
**De esta forma ya podemos empezar a escribir programas.  
 +
**Mas adelante ya detallaremos con más profundidad .
 +
* Los requisitos del proyecto cambian continuamente
 +
**Esto no supone ningún problema, los cambios pueden acomodarse fácilmente
 +
**Esto es así porque el software es flexible.
 +
</div>
  
No es lo mismo hacer un coche (ensamblar componentes físicos), que hacer un programa (conjuníto de sofware que va a automatizar una determinada tarea)
+
<div class="slide">
 +
=== MITOS DEL SOFTWARE: Desarrollador ===
 +
* Una vez que escribimos el programa y hacemos que funcione, se acabó el trabajo
 +
* No podemeos comprobar la calidad hasta que el programa se ejecuta
 +
* Lo que se entrega al terminar el proyecto es el programa funcionando.
 +
</div>
  
Podríamos enumerar las siguientes características:
+
<div class="slide">
 +
=== MITOS DEL SOFTWARE: Gerente ===
 +
* YA tengo los equipos más moderno y las últimas versiones de sistemas de desarrollo
 +
* Si vamos retrasados incorporo más personas al proyecto y así termino antes
 +
</div>
  
: Se desarrolla, no se fabrica
+
<div class="slide">
: No se estropea, pero se deteriora (su naturaleza no física)
+
=LA INGENIERÍA DEL SOFTWARE=
: Se construye a medida, en vez de ensamblar componentes existentes. (Idea que se intenta cambiar sobre todo con la programación orientada a objetos)
+
=== SOLUCIÓN A LA CRISIS DEL SOFTWARE: INGENIERÍA DEL SOFTWARE. DEFINICIONES ===
: Es una industria no es un arte
+
*Lo que se ha demostrado que hay que hacer es desarrollar software con una organización
 +
*No se puede empezar sin más a escribir código
 +
*Hay que aplicar la ingeniería al desarrollo de software
 +
{{Definicion|''Ingeniería de software''(deFrits Bauer (1969)):'''Establecimiento y uso de principios de ingeniería robustos, orientados a obtener software económico que sea fiable y funcione de manera eficiente sobre máquinas reales'''}}
  
== [[Archivo:|soft_industria_o_arte.png]] ==
+
{{Definicion|''Ingeniería de software'' '''El IEEE lo define''': ''Ingeniería es la aplicación de un método sistemático, estructurado y cuantificable a estructuras, máquinas, productos, sistemas o procesos.''}}
== Curva de fallos software/ hardware ==
+
Dada su naturaleza lógica en teoría no se estropea, cuesta ponerlo en marcha (al principio al construirlo se identifican y corrigen fallos
+
  
[[Archivo:|soft_evloucion_tiempo_teoria.png]]
+
{{Definicion|'''Ingeniería del software es la aplicación de un método sistemático, estructurado y cuantificable al desarrollo, operación y mantenimiento de software.'''}}
 +
</div>
  
 +
<div class="slide">
  
En cambio el hadware tras pasar un tiempo de pruebas entra en un estado funcional
+
=== OBJETIVOS DE LA INGENIERÍA DEL SOFTWARE ===
 +
* ''La Ingeniería del software'' persigue la producción de sistemas de '''calidad''', a '''bajo coste''' y a '''tiempo'''
 +
[[Archivo:objetivos_is.png]]
 +
</div>
  
 +
<div class="slide">
  
[[Archivo:|hard_evolucion_tiempo.png]]
+
=== INGENIERÍA DEL SOFTWARE Y METODOLOGÍAS ===
 +
<br/>
 +
{{Definicion| A nivel práctico podemos decier que ingeniería del software es '''Conjunto de tareas y actividades detalladas que hay que seguir para desarrollar un software'''. ''Un conjunto de métodos organizados y estructurados constituyen la idea de '''metodología''' ''}}
 +
*Una metodología incluye tareas como
 +
# Planificación y estimación
 +
# Análisis de requisitos
 +
# Diseño de estructuras de datos, arquitectura de programas y procedimientos algorítmico
 +
# Codificación
 +
# Pruebas
 +
# Mantenimiento
 +
</div>
  
En la realidad el software durante su vida ei
+
<div class="slide">
  
n un 98% de los casos hay que modificarlo por una de las siguientes esas razones (el 2% que no se modifica es por que seguramente no se usa).
+
===HERRAMIENTAS===
 
+
* Constituyen un soporte más o menos automatizado para desarrollar las tareas de los métodos
Mejoraras
+
* CASE (Computer Aided Software Engineering)
 
+
#Conjunto de herramientas integradas ..
Adaptarlo a nuevas necesidades
+
#de forma que la información creada por una herramienta puede ser usada por otra, ...
 
+
# estableciéndose un sistema para el soporte del desarrollo del software.
Solucionar fallos detectados a posterior
+
* El CASE lo que hace  
 
+
# Integrar información
La experiencia demuestra que después de las modificaciones el software pierde calidad no funciona igual de bien que antes, y esta pérdida de va sumando a nuevas modificaciones según vemos en el diagrama
+
# Facilitar técnicas para el desarrollo del proyecto
 
+
*Ejemplos
[[Archivo:|''soft_evolucione_tiempo_real.png'']]
+
''Rational Rose'' ''Argo UML''
 
+
</div>
== LOS PROBLEMAS DEL SOFTWARE…  ==
+
<div class="slide">
Son muchos los problemas que se le asocian al software en especial una parte fundamental es tener en cuenta que el software va a ser mantenido
+
===METODOLOGÍA ===
 
+
*Es importante seguir algún criterio para realizar un software
–Difícil mantenimiento
+
*Tengo que hacer un desarrollo ¿Por donde emiezo?
 
+
*La solución es usar una metodología
•Mal diseño
+
*Me indicará
 
+
# Etapas de un proyecto
•Mala utilización de recursos
+
# Tareas por etapa
 
+
# Salidas de cada tarea
•Software no acorde con los requisitos previamente establecidos
+
# Restricciones que se aplican
 
+
# Herramientas a utilizar
•Errores en los programas
+
# En definitiva me indica cómo
 
+
'''Se gestiona, controla y realiza un proyecto'''
–Otros
+
una metodología es la ayuda que tengo para conseguir un objetivo
 
+
[[Archivo:Simil_metodología.png]]
•Poca sensibilidad a los errores externos
+
</div>
 
+
<div class="slide">
–Errores humanos
+
=== CICLO DE VIDA. DEFINICIÓN COLOQUIAL ===
 
+
* Sucesión de pasos a través de los cuales el producto software va progresando.  
–Averías físicas
+
* Estos abarcan desde el planteamiento del problema a resolver mediante el producto software,  
 
+
* hasta la retirada de dicho producto una vez que ha finalizado su vida operativa
•Dificultad de puesta en marcha
+
[[Archivo:soft_ciclo_vida.png]]
 
+
</div>
•Desbordamiento de costes
+
 
+
== LOS PROBLEMAS DEL SOFTWARE ==
+
–En Resumen podríamos afirmar que el software:
+
 
+
•Planificación y estimación de costes imprecisos
+
 
+
•Productividad no sintonizada con exigencias
+
 
+
•Calidad muchas veces inaceptables
+
 
+
ÞTodo esto desencadena&nbsp;
+
 
+
&nbsp;&nbsp;'''Crisis del software. Es un concepto en el cual aún podemos decir que estamos inmersos'''
+
 
+
 
+
 
+
+
 
+
+
 
+
+
 
+
 
+
: Todo esto desencadena
+
: <center>'''Crisis del software. Es un concepto en el cual aún podemos decir que estamos inmersos'''</center>
+
: La solución a la crisis
+
: <center>'''Aplicar Ingeniería en el Software'''</center>
+
 
+
== COMPLEJIDAD DEL SOFTWARE ==
+
: La complejidad del software es una propiedad esencial, no una propiedad accidental
+
: Motivos por los que el soft es complejo
+
: Es complejo definir el dominio del problema
+
: Cliente, Desarrollador
+
: Gestionar el proceso de desarrollo
+
: Acabar en el plazo
+
: No sobrepasar costos
+
: Asumir riesgos
+
: El desarrollo del Soft, ha de ser flexible
+
: Abstracción (imaginación), …
+
 
+
== CRISIS DEL SOFTWARE ==
+
: Más que crisis, enfermedad degenerativa
+
: Causas que lo ocasionan
+
: Software es elemento lógico, no físico ( su naturaleza no comprendida)
+
: Responsable de desarrollo soft sin conocimientos soft
+
: Anarquía del programador artesano
+
: Resistencia al cambio
+
: Soluciones
+
: Enfocar el software como una ingeniería
+
: Mejorar continuamente técnicas y herramientas
+
 
+
== MITOS DEL SOFTWARE : Cliente. ==
+
: Una declaración inicial de objetivos es suficiente para empezar a escribir programas. Ya detallaremos más adelante.
+
: Los requisitos del proyecto cambian continuamente, pero los cambios pueden acomodarse fácilmente, porque el software es flexible.
+
 
+
== MITOS DEL SOFTWARE: Desarrollador ==
+
: Una vez que escribimos el programa y hacemos que funcione, se acabó el trabajo
+
: No podemeos comprobar la calidad hasta que el programa se ejecuta
+
: Lo que se entrega al terminar el proyecto es el programa funcionando.
+
 
+
== SOLUCIÓN A LA CRISIS DEL SOFTWARE: INGENIERÍA DEL SOFTWARE ... ==
+
: Def. deFrits Bauer (1969)
+
: <center>Establecimiento y uso de principios de ingeniería robustos, orientados a obtener software económico que sea fiable y funcione de manera eficiente sobre máquinas reales</center>
+
 
+
== INGENIERÍA DEL SOFTWARE ==
+
: El IEEE lo define:
+
: Ingeniería es la aplicación de un método sistemático, estructurado y cuantificable a estructuras, máquinas, productos, sistemas o procesos.
+
: Ingeniería del software es la aplicación de un método sistemático, estructurado y cuantificable al desarrollo, operación y mantenimiento de software.
+
 
+
== OBJETIVOS DE LA INGENIERÍA DEL SOFTWARE ==
+
: La I. del S. persigue la producción de sistemas de calidad, a bajo coste y a tiempo
+
 
+
== DEFINICIÓN PRÁCTICA DE I.S. ==
+
<center>'''MÉTODOS (Técnica)'''</center>
+
 
+
: Conjunto de tareas y actividades detalladas que hay que seguir para desarrollar un software. Un conjunto de métodos organizados y estructurados constituyen la idea de metodología
+
: Incluye tareas como
+
: Planificación y estimación
+
: Análisis de requisitos
+
: Diseño de estructuras de datos, arquitectura de programas y procedimientos algorítmico
+
: Codificación
+
: Pruebas
+
: Mantenimiento
+
 
+
<center>'''HERRAMIENTAS'''</center>
+
 
+
: Constituyen un soporte más o menos automatizado para desarrollar las tareas de los métodos
+
: CASE (Computer Aided Software Engineering)
+
: 1.- Conjunto de herramientas integradas ...
+
: 2.- de forma que la información creada por una herramienta puede ser usada por otra, ...
+
: 3.- estableciéndose un sistema para el soporte del desarrollo del software.
+
: El CASE lo que hace  
+
: Integrar información
+
: Facilitar técnicas para el desarrollo del proyecto
+
 
+
== Por Qué Una Metodología ==
+
: Me indicará
+
: Etapas de un proyecto
+
: Tareas por etapa
+
: Salidas de cada tarea
+
: Restricciones que se aplican
+
: Herramientas a utilizar
+
: En definitiva me indica cómo
+
 
+
<center>'''Se gestiona, controla y realiza un proyecto'''</center>
+
 
+
== CICLO DE VIDA. DEFINICIÓN COLOQUIAL ==
+
: Sucesión de pasos a través de los cuales el producto software va progresando.  
+
: Estos abarcan desde el planteamiento del problema a resolver mediante el producto software,  
+
: hasta la retirada de dicho producto una vez que ha finalizado su vida operativa
+

Última revisión de 03:18 3 feb 2015

Road Works.svg Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos.
Ver página de charlas.
Road Works.svg



CONCEPTOS GENERALES PARA EL DESARROLLO DEL SOFTWARE

Definiciones

Software (Pressman)
Instrucciones que cuando se ejecutan proporcionan la función y el comportamiento deseado.
Estructuras de datos que facilitan a los programas manipular adecuadamente la información
Documentos que describen la operación y el uso de los programas
  • Una definición más enfocada a un software estructurado que orientado a objetos
  • Nos da una idea de la naturaleza lógica del software
  • Nos recalca la importancia de la documentación aparentemente no necesaria para que el software funcione


Icon activity.jpg

Actividad

Por qué crees que es importante la documentación en el software



Tipos de software

  • El software automatiza tareas de diferente naturaleza.
Es muy intuitivo pensar que no requerirá las mismas necesidades un software que hace que salte un airbag de un coche donde es tiempo de respuesta debe de ser  instantáneo (un segundo puede ser vital), que un software que se encarga de imprimir una nóminas donde ese requisito temporal carece de importancia (no importa que tarde 2 segundos en responder el sistema).


Icon activity.jpg

Actividad

Indica ejemplos de tipo de software



SOFTWARE DE SISTEMAS

Soft sistemas.png

Sirven de herramienta para otros software
Ej.: S.O., Compiladores, Interpretes, CASE, Editores complejos …)
SOFTWARE DE TIEMPO REAL

Soft tiempo real.png

Tienen una fuerte interacción con el hard del ordenador
Conjunto de programas que mide analiza y controla sucesos del mundo real a medida que ocurren.
Ej. Aplicaciones de control de maquinaria
SOFTWARE DE INGENIERÍA Y CIENTÍFICO

Soft cientifico.png

Utilizan algoritmos de manejo de números.
Muy pesados en cuanto a cálculos
Aplicaciones en Astronomía Meteorología, Biología molecular.
Toma características de Tiempo Real.
SOFTWARE EMPOTRADO (FIRMWARE)

Soft empotrado.png

Reside en ROM,
Se utiliza para controlar productos de sistemas de los mercados
Sistemas que suelen correr en microcontroladores
SOFTWARE DE PC’S

Soft pc.png

Como Procesadores de texto, hojas de cálculo, GBD
Software diseñado para masas y claramente de propósito general
SOFTWARE DE INTELIGENCIA ARTIFICIAL

Soft inteligencia artificial.png

Algoritmos no numéricos para resolver problemas complejos.
Aplican razonamiento para llegar a conclusiones a partir de alguna premisa.
SOFTWARE DE GESTIÓN

Soft gestion.png

Realiza tareas de procesamientos de datos y operaciones de cálculo interactivo.
Trabajan con gran cantidad de información y permite automatizar gran parte de procesos en las empresas.
Los sistemas de información de gestión, suelen acceder a grandes bases de datos que contienen información comercial
Estas aplicaciones reestructuran los datos existentes:
Para facilitar las operaciones comerciales
Para gestionar la toma de decisiones
Además de las tareas convencionales de procesamiento de datos (Aplicaciones por lotes), las aplicaciones de gestión, también realizan cálculo interactivo,

CARACTERÍSTICAS DEL SOFTWARE

PECULIARIDADES DEL SOFTWARE

  • Son muchas las características que podríamos enumerar del software.
  • Todas ellas tienen que ver con su naturaleza lógica y no física.
  • No es lo mismo hacer un coche (ensamblar componentes físicos), que hacer un programa (conjuníto de sofware que va a automatizar una determinada tarea)
  • Podríamos enumerar las siguientes características:
    • Se desarrolla, no se fabrica
    • No se estropea, pero se deteriora (su naturaleza no física)
    • Se construye a medida, en vez de ensamblar componentes existentes. (Idea que se intenta cambiar sobre todo con la programación orientada a objetos)
    • Es una industria no es un arte

Sort industria o arte.png

CURVA DE FALLOS HARDWARE/SOFTWARE

  • Dada su naturaleza lógica en teoría no se estropea
  • cuesta ponerlo en marcha (al principio al construirlo se identifican y corrigen fallos)

Soft evolucion tiempo teoria.png

  • En cambio el hardware tras pasar un tiempo de pruebas entra en un estado funcional

Hard evolucion tiempo.png

CURVA DE FALLOS HARDWARE/SOFTWARE

  • En la realidad el software durante su vida en un 98% de los casos hay que modificarlo (el 2% que no se modifica es por que seguramente no se usa).
  • Existen 3 razones por las cual se puede modificar
    • Mejoraras
    • Adaptarlo a nuevas necesidades
    • Solucionar fallos detectados a posterior
  • La experiencia demuestra que después de las modificaciones el software pierde calidad
  • No funciona igual de bien que antes
  • Esta pérdida de va sumando a nuevas modificaciones según vemos en el diagrama

Soft evolucion tiempo real.png

LOS PROBLEMAS DEL SOFTWARE

ALGUNAS CIRCUNSTANCIAS ASOCIADAS AL SOFTWARE

  • Son muchos los problemas que se le asocian al software
  • Mas que problemas son limitaciones ligadas a su naturaleza lógica
  • Limitaciones humanas no del software
  1. El software, no es capaz de crecer al ritmo del hardware
  2. Plazos de entrega inaceptables
    1. Todo el mundo quiere sus aplicaciones para ayer
    2. La gente tiene miedo a que cuando se terminen queden obsoletas
    3. Retrasos no previstos
  3. Difícil mantenimiento
    1. Mal diseño
    2. Mala utilización de recursos
    3. Software no acorde con los requisitos previamente establecidos
    4. Errores en los programas
  4. Otros
    1. Poca sensibilidad a los errores externos
  5. Errores humanos
  6. Dificultad de puesta en marcha
  7. Desbordamiento de costes

LOS PROBLEMAS DEL SOFTWARE

  • En Resumen podríamos afirmar que el software:
    • Planificación y estimación de costes imprecisos
    • Productividad no sintonizada con exigencias
    • Calidad muchas veces inaceptables

'Todo esto desencadena'

Crisis del software. Es un concepto en el cual aún podemos decir que estamos inmersos

'La solución a la crisis'

Aplicar Ingeniería en el Software

COMPLEJIDAD DEL SOFTWARE

  • La complejidad del software es una propiedad esencial, no una propiedad accidental
Motivos por los que el soft es complejo
Es complejo definir el dominio del problema
Cliente, Desarrollador
Gestionar el proceso de desarrollo
Acabar en el plazo
No sobrepasar costos
Asumir riesgos
El desarrollo del Soft, ha de ser flexible
Abstracción (imaginación), ...

Soft complejidad.png

CRISIS DEL SOFTWARE

  • Más que crisis, enfermedad degenerativa
  1. Causas que lo ocasionan
    1. Software es elemento lógico, no físico ( su naturaleza no comprendida)
    2. Responsable de desarrollo soft sin conocimientos soft
    3. Anarquía del programador artesano
    4. Resistencia al cambio
  2. Soluciones
    1. Enfocar el software como una ingeniería
    2. Mejorar continuamente técnicas y herramientas

MITOS DEL SOFTWARE

  • Mas que mitos son situaciones que se pueden producir
  • Identificamos tres roles
  1. El rol cliente es quien solicita el software
  2. El rol desarrollador quien va desarrollarloç
  3. El rol gerente quien coordina al equipo de desarrollador

MITOS DEL SOFTWARE: Cliente

  • Una declaración inicial de objetivos es suficiente
    • De esta forma ya podemos empezar a escribir programas.
    • Mas adelante ya detallaremos con más profundidad .
  • Los requisitos del proyecto cambian continuamente
    • Esto no supone ningún problema, los cambios pueden acomodarse fácilmente
    • Esto es así porque el software es flexible.

MITOS DEL SOFTWARE: Desarrollador

  • Una vez que escribimos el programa y hacemos que funcione, se acabó el trabajo
  • No podemeos comprobar la calidad hasta que el programa se ejecuta
  • Lo que se entrega al terminar el proyecto es el programa funcionando.

MITOS DEL SOFTWARE: Gerente

  • YA tengo los equipos más moderno y las últimas versiones de sistemas de desarrollo
  • Si vamos retrasados incorporo más personas al proyecto y así termino antes

LA INGENIERÍA DEL SOFTWARE

SOLUCIÓN A LA CRISIS DEL SOFTWARE: INGENIERÍA DEL SOFTWARE. DEFINICIONES

  • Lo que se ha demostrado que hay que hacer es desarrollar software con una organización
  • No se puede empezar sin más a escribir código
  • Hay que aplicar la ingeniería al desarrollo de software


Icon define.gif

Definición

Ingeniería de software(deFrits Bauer (1969)):Establecimiento y uso de principios de ingeniería robustos, orientados a obtener software económico que sea fiable y funcione de manera eficiente sobre máquinas reales




Icon define.gif

Definición

Ingeniería de software El IEEE lo define: Ingeniería es la aplicación de un método sistemático, estructurado y cuantificable a estructuras, máquinas, productos, sistemas o procesos.




Icon define.gif

Definición

Ingeniería del software es la aplicación de un método sistemático, estructurado y cuantificable al desarrollo, operación y mantenimiento de software.


OBJETIVOS DE LA INGENIERÍA DEL SOFTWARE

  • La Ingeniería del software persigue la producción de sistemas de calidad, a bajo coste y a tiempo

Objetivos is.png

INGENIERÍA DEL SOFTWARE Y METODOLOGÍAS



Icon define.gif

Definición

A nivel práctico podemos decier que ingeniería del software es Conjunto de tareas y actividades detalladas que hay que seguir para desarrollar un software. Un conjunto de métodos organizados y estructurados constituyen la idea de metodología


  • Una metodología incluye tareas como
  1. Planificación y estimación
  2. Análisis de requisitos
  3. Diseño de estructuras de datos, arquitectura de programas y procedimientos algorítmico
  4. Codificación
  5. Pruebas
  6. Mantenimiento

HERRAMIENTAS

  • Constituyen un soporte más o menos automatizado para desarrollar las tareas de los métodos
  • CASE (Computer Aided Software Engineering)
  1. Conjunto de herramientas integradas ..
  2. de forma que la información creada por una herramienta puede ser usada por otra, ...
  3. estableciéndose un sistema para el soporte del desarrollo del software.
  • El CASE lo que hace
  1. Integrar información
  2. Facilitar técnicas para el desarrollo del proyecto
  • Ejemplos

Rational Rose Argo UML

METODOLOGÍA

  • Es importante seguir algún criterio para realizar un software
  • Tengo que hacer un desarrollo ¿Por donde emiezo?
  • La solución es usar una metodología
  • Me indicará
  1. Etapas de un proyecto
  2. Tareas por etapa
  3. Salidas de cada tarea
  4. Restricciones que se aplican
  5. Herramientas a utilizar
  6. En definitiva me indica cómo
Se gestiona, controla y realiza un proyecto
una metodología es la ayuda que tengo para conseguir un objetivo

Simil metodología.png

CICLO DE VIDA. DEFINICIÓN COLOQUIAL

  • Sucesión de pasos a través de los cuales el producto software va progresando.
  • Estos abarcan desde el planteamiento del problema a resolver mediante el producto software,
  • hasta la retirada de dicho producto una vez que ha finalizado su vida operativa

Soft ciclo vida.png