tema1 - Ingenieria de Sistemas e Informatica

Download Report

Transcript tema1 - Ingenieria de Sistemas e Informatica

Ingeniería de software
El Producto
“Es el conjunto de programas (fuentes y
ejecutables), procedimientos, reglas y
documentación posible asociada, así
como los datos pertenecientes a la
operación del sistema.”
Definición de software

Como producto

Como vehículo
Definición de software (como producto)
“Hace entrega de la potencia informática del
hardware informático. Si reside dentro de un teléfono
celular u opera dentro de una computadora central, el
software es un transformador de información,
produciendo, gestionando, adquiriendo, modificando,
mostrando o transmitiendo información que puede
ser tan simple como un solo bit, o tan complejo como
una simulación en multimedia.”
Definición de software (como vehículo)

Hace entrega de lo que muchos creen que será el
producto más importante del siglo veintiuno, la
información.

Transforma datos personales (transacciones
financieras) para que los datos sean más útiles en
un contexto local.

Gestiona información comercial para mejorar la
competitividad; Proporciona el acceso a redes de
información por todo el mundo (internet).

También proporciona el método
información en todas sus formas.
de
adquirir
Características del Software
El software se desarrolla, no se fabrica en un sentido clásico.



La buena calidad se adquiere mediante un buen diseño, pero la
fase de construcción del hardware puede introducir problemas
de calidad (o son fácilmente corregibles) que no existen en el
software.
Ambas actividades dependen de las personas, pero la relación
entre las personas dedicadas y el trabajo realizado es
completamente diferente para el software. Ambas actividades
requieren la construcción de un “producto”, pero los métodos son
diferentes.
Los costos del software se encuentran en la ingeniería. Esto
significa que los proyectos de software no se pueden gestionar
como si fueran proyectos de fabricación
El software no se “estropea”



El software no es susceptible a los males del
entorno que hacen que el hardware se estropee.
Durante las primeras etapas de su vida se
detectarán efectos que harán que falle el programa,
pero una vez que se corrigen su funcionalidad será
constante.
El software no se estropea, pero si se deteriora, o
sea,
durante
su
vida,
sufre
cambios
(mantenimiento), por lo tanto, es bastante probable
que se introduzcan nuevos defectos.
La mayoría del software se construye a medida, en
vez de ensamblar componentes ya existentes


Consideremos la forma en la que se diseña y se
construye el hardware de control para un producto
basado en microprocesador.
Se puede comprar software ya desarrollado, pero
sólo como una unidad completa, no como
componentes que pueden reensamblarse en nuevos
programas.
Componentes del software

Los componentes deberían diseñarse e implementarse
para que pueda volver a ser reutilizado en muchos
programas diferentes. Como:

Bibliotecas de subrutinas (algoritmos).

Estructuras de datos.

Encapsulamiento de datos como de procesos que se aplican
a los datos. Ej: interfases interactivas (ventanas y menúes
emergentes).

Son construidos por lenguajes de programación produciendo
desde: un uso extremadamente eficiente de la memoria
hasta la optimización de la velocidad de ejecución del
programa.
Aplicaciones del Software
Software de Sistemas
1. Fuerte interacción con el hardware de la computadora.
2. Utilización por múltiples usuarios.
3. Operación concurrente que requiere una planificación.
4. Compartición de recursos y una sofisticada gestión de
procesos.
5. Estructuras de datos complejas.
6. Múltiples interfases externas.
“Es un conjunto de programas que han sido escritos
para servir a otros programas.”
Software de Tiempo Real
1.
Mide/Analiza/Controla sucesos del mundo real
conforme ocurren.
Elementos:

Componente de adquisición de datos que recolecte y de
formato a la información recibida del entorno externo.

Componente de análisis que transforme la información
según lo requiera la aplicación.

Componente de control/salida que responda al entorno
externo.

Componente de monitorización que coordine todos los
demás componentes, de forma que pueda mantenerse la
respuesta en tiempo real.
•
Software de Gestión
1.
Se tiene acceso a 1 ó más bases de datos grandes
que contienen información comercial.
Las aplicaciones en ésta área reestructuran los datos
existentes para facilitar las operaciones comerciales o
gestionar la toma de decisiones.
Realizan cálculos interactivos.
2.
3.
Ej:
Nóminas
Cuentas de haberes/débitos
Inventarios
Transacciones en puntos de venta.
Software de Ingeniería y Científico
1.
2.
3.
Característicos los algoritmos de manejo de números.
Las aplicaciones van desde:

La astronomía a la vulcanología.

El análisis de la presión de los automotores a la
dinámica
orbital de las lanzaderas espaciales.

La biología molecular a la fabricación automática.
Diseño asistido por computadora (CAD), la simulación de
sistemas y otras aplicaciones interactivas, han comenzado a
coger características del software de tiempo real e incluso del
software de sistemas.
WebPage:
CAD – GIS – GPS
Software Empotrado
1.
2.
3.
Reside en memoria de solo lectura y se utiliza para
controlar productos y sistemas de los mercados
industriales y de consumo.
Puede ejecutar funciones muy limitadas y curiosas.
Ej: el control de las teclas de un horno de microondas.
Puede también suministrar una función significativa y
con capacidad de control.
Ej: funciones digitales en un automóvil, tales como
control de la gasolina, indicaciones en el salpicadero,
sistemas de frenado.
Software de Computadoras Personales

Procesamiento de textos, las hojas de cálculo, los gráficos por
computadora, multimedia, entretenimientos, gestión de bases de
datos, aplicaciones financieras, de negocios y personales, y
redes o acceso a bases de datos externas, etc
Software de Inteligencia Artificial

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.
Ejemplo de aplicaciones:
Sistemas Expertos
Reconocimiento de patrones (imágenes y voz)
La prueba de teoremas y los juegos.
Redes neuronales.
Mitos del Software
Mitos de Gestión
1.
Tenemos ya un libro que está lleno de estándares y
procedimientos para construir software. ¿No le proporciona ya
a mi gente todo lo que necesita saber?
2.
Mi gente dispone de las herramientas de desarrollo de software
más avanzadas; despúes de todo, les compramos las
computadoras más modernas.
3.
Si fallamos en la planificación, podemos
programadores y adelantar el tiempo perdido.
añadir
más
Mitos del Cliente
1.
2.
Una declaración general de los objetivos es suficiente para
comenzar a escribir los programas, podemos dar los detalles más
adelante.
Los requisitos del proyecto cambian continuamente, pero los
cambios pueden acomodarse fácilmente, ya que el software es
flexible.
Mitos de los Desarrolladores
1.
2.
3.
Una vez que escribimos el programa y hacemos que funcione,
nuestro trabajo ha terminado.
Hasta que no tenga el programa “ejecutándose”, realmente no
tengo forma de comprobar su calidad.
Lo único que se entrega al terminar el proyecto es el programa
funcionando.
Problemas del software

Insatisfacción del cliente por falta de una buena
definición de los requerimientos.

De cada 6 proyectos
abandonados.

No se tienen datos históricos sobre el proceso de
Desarrollo de Software. No se pueden hacer
buenas estimaciones.

No se puede evaluar con precisión la eficacia de las
nuevas herramientas, técnicas o estándares.
de
software
2
son
Problemas del software(cont...)

Las empresas de software pequeñas en general no
disponen de los recursos y la experticia necesarios
para desarrollar proyectos de mejoramiento del
proceso de software






Compromiso
Habilidad
Experiencia
Recurso humano
Dinero
Se requería un proyecto de colaboración para
compartir los costos y beneficios
¿Que se puede esperar de la industria del
software?
1. Creación de empleo calificado.
2. Generación de exportaciones no tradicionales
de alto valor agregado.
3. Facilitar el proceso de modernización de las
economías nacionales.
El Proceso
“Es el conjunto de actividades técnicas y
administrativas necesarias para la fabricación de
un producto de software.”
“La madurez de una organización es
proporcional a su capacidad para poner en
práctica procesos de software que produzcan los
resultados previstos.”
Ingeniería de Software
“Disciplina o área de la informática o Ciencias de
la Computación, que ofrece métodos y técnicas
para desarrollar y mantener software de calidad
que resuelven problemas de todo tipo.”
Ingeniería de Software
Definiciones

Es el estudio de los principios y metodologías para
desarrollo y mantenimiento de sistemas de software.

Aplicación de un enfoque sistemático, disciplinado y
cuantificable al desarrollo, operación (funcionamiento)
y mantenimiento del software: es decir, la aplicación de
ingeniería al software.

Objetivo de las organizaciones fabricantes de software:
producir software de buena calidad de una manera
sistemática y previsible.

Es una disciplina pragmática que utiliza:
Ciencias de la Computación
Fundamentos científicos
Administración
Fundamentos para
administración de proyectos
Economía
Fundamentos para estima de
recursos y control de costos
Sicología y técnicas de
comunicación
Fundamentos para trabajo
interdisciplinario y buena
comunicación interpersonal
entre grupo y clientes
Metas de la Ingeniería del Software
Mejorar la calidad de los procesos de fabricación de
software.
Mejorar la calidad de los productos de software.
Aumentar la productividad y satisfacción profesional de los
ingenieros de esta disciplina.
Facilitar el control del proceso de desarrollo de software.
Suministrar a los desarrolladores las bases para construir
software de alta calidad en una forma eficiente.
Definir una disciplina que garantice la producción y el
mantenimiento de los productos software desarrollados en
el plazo fijado y dentro del costo estimado.
Evolución del Software



Los primeros años (50’s)
Orientación por lotes (batch).
Distribución limitada.
Software a medida.









La tercera generación (70’s – 80’s)
Sistemas distribuidos.
Incorporación de “inteligencia”.
Hardware de bajo coste.
Impacto en el consumo.
Funciones concurrentes.






La segunda era (60’s – 70’s)
Multiprogramación-Multiusuario.
Tiempo real.
Bases de datos.
Producto de software.
La cuarta era (epoca actual)
Sistemas personales potentes.
Tecnologías orientadas a objetos
Sistemas expertos.
Redes neurales artificiales.
Computación en paralelo.
Redes de computación.