Vous êtes sur la page 1sur 36

Qu es la

Ingeniera de Software?
Ingeniera de Software
Tecnlogo en Informtica

Agenda
Surgimiento
Definiciones
Solucin de Problemas

Relacin con otras disciplinas


El Software en la sociedad actual
tica y Responsabilidad

Calidad del Software


Participantes en el Desarrollo
Ingeniera de Software e Ingeniera de Sistemas

Cambios y Tendencias

Surgimiento
En los comienzos:
el programador era el usuario
los problemas a resolver bien conocidos y simples

Desarrollo de las computadoras:


aparece la figura del programador especializado
la mayor potencia de los equipos permite atacar
problemas ms complejos
Se habla de la Crisis del Software

El trmino Ing. de Software aparece por 1ra. vez en


1968

Surgimiento
Crisis del Software
No se obtienen resultados esperados

Baja calidad del software


Cdigo difcil de mantener
No cumplimiento de plazos ni presupuesto
No cumplir con especificaciones

Gran costo y poca flexibilidad


Dificultad para escribir programas libres de defectos,
fcilmente comprensibles y verificables
Cambios en programas para satisfacer necesidades
cambiantes de usuarios
No poder estimar duracin ni esfuerzo para desarrollar un
programa

Definiciones
Software
Programas de computador, procedimientos, la
documentacin y los datos posiblemente relacionados con
la operacin de un sistema de computador IEEE 90.
... (el ingeniero) aplica el mtodo y enfoque cientfico a la
solucin de problemas.

Ingeniera de Software
(1) Aplicacin de un enfoque sistemtico, disciplinado y
cuantificable al desarrollo, operacin y mantenimiento de
software, esto es, la aplicacin de la ingeniera al
software.
(2) El estudio de enfoques como en (1) - IEEE 90
(*) IEEE: Institute of Electrical and Electronics Engineers

Solucin de Problemas
Solucionar un problema complejo
Anlisis: en subproblemas ms simples
Sntesis de una solucin al problema a partir de las
soluciones a los subproblemas

Recurriendo a:

Mtodos (o Tcnicas)
Herramientas (mejorar resultado o eficiencia)
Procedimientos (combinan mtodos y herramientas)
Paradigmas (estilo de la solucin)

Definiciones
Tcnica
Procedimiento tcnico para construir o evaluar software que
requiere habilidades y produce un resultado tcnico, p.e. probar,
codificar, etc.

Mtodo
Es un procedimiento para gestionar la aplicacin de tcnicas de

software (cundo y cmo aplicar, cundo comenzar y terminar,


qu tcnica es apropiada, cmo evaluarla), p.e. plan de prueba,
recopilar requerimientos

Herramienta
Producto de software que facilita la ejecucin de una tcnica o
mtodo

Procedimiento
Combinacin de mtodos, tcnicas y herramientas

Paradigma
Filtro conceptual que determina cmo percibimos/interpretamos

Relacin con otras disciplinas


Ciencias de la Computacin aporta:
Teoras
Funciones de Computadoras

Cliente trae:
Problema

Ingeniera de Software (1) resuelve problemas


Ingeniera de Software (2) desarrolla:
Mtodos, Herramientas, Procedimientos, Paradigmas para
resolver problemas

Ciencias de la
Computacin

Teoras

Funciones
de las
Computadoras

Ingeniera de
Software (2)

Herramientas y
Tcnicas para
resolver problemas

Cliente

Problema

Ingeniera de
Software (1)

Solucin

Relacin con otras disciplinas


Programacin-Programa-Producto-Sistema

Ingeniera
Construccin de artefactos cumpliendo con restricciones
Arte ms que Ciencia (hacer ms que saber)
Considerar Plazo, Costo, Calidad, Otras

Administracin
Proyectos, Recursos Humanos

Software en la sociedad actual


Dnde no est presente?

Energa
Comunicaciones
Automviles
Electrodomsticos
Equipos mdicos
...

Crisis del Software?

tica y responsabilidad
Repercusiones de fallas en el software:
prdidas financieras
riesgo a la seguridad
...

Ms all de las fallas:


Impacto social
Calidad de vida
Cuestiones legales

Cdigo de tica y Prcticas Profesionales


Los Ingenieros de Software
actuarn en forma congruente con el inters social
actuarn de manera que se concilien los mejores intereses de sus clientes y
empresarios, congruentemente con el inters social
asegurarn que sus productos y modificaciones correspondientes cumplen
los estndares profesionales ms altos posibles
mantendrn integridad e independencia en su juicio profesional
gerentes y lderes promovern y se suscribirn a un enfoque tico en la
administracin del desarrollo y mantenimiento de software
incrementarn la integridad y reputacin de la profesin congruentemente
con el inters social
apoyarn y sern justos con sus colegas
participarn toda su vida en el aprendizaje relacionado con la prctica de su
profesin y promovern un enfoque tico en la prctica de la profesin
(*) Fuente: ACM (Association for Computing Machinery) IEEE-CS

Calidad
Problemas:
Plazo
Costo respecto a presupuesto
Utilidad
Requerimientos oscuros o cambiantes
Fallas
Rigidez
Alto costo de mantenimiento
Riesgos

Calidad (falta-falla)

puede generar

que puede generar


una falta

un error humano
(interna)

?!
una falla
(externa)

Calidad - Visiones
Qu es la Calidad?
Visin:

Trascendente - se reconoce pero no se puede definir


del Usuario - adecuacin al uso
del Productor- adecuacin a las especificaciones
del Producto - caractersticas especficas
comportamiento externo (visible para todos)
caractersticas internas (normalmente slo visibles al productor)

basada en el Valor - cunto estara dispuesto a pagar

Calidad - Visiones
Usuario:
satisfacer necesidades/expectativas (utilidad, tiempo de
respuesta)
esfuerzo necesario (facilidades de aprendizaje y uso)
sin inconvenientes (frecuencia e impacto de fallas)

Implementador:
cantidad y tipo de faltas
facilidad de entender
bajo impacto de las modificaciones

Calidad - Visiones
Segn la visibilidad:
factores externos (visibles a todos)
factores internos (visibles a los implementadores)

Atinentes al:
Producto (una vez que el producto ya existe)
Proceso de Produccin (mientras se produce)

En el contexto del Negocio


Valor para el Negocio

Quines participan?
Desarrollo a Medida
Cliente (solicita)
Desarrollador construye
Usuario

COTS (Commercial Off The Shelf)


Desarrollador subcontrata parte
Producto llave en mano

Personalizacin
Integracin

CLIENTE

Patrocina el desarrollo
del sistema

$$$,
necesidades

USUARIO

Obligacin
contractual

DESARROLLADOR
Construye
el sistema

Usa el
sistema
Necesidades

Sistema de software

Anlisis y Definicin de
Requerimientos

Diseo del programa

Diseador
Programador

Implementacin del
programa
Prueba Unitaria

Tester

Prueba de Integracin
Prueba del Sistema

Liberacin del Sistema

Capacitador
Mantenimiento

Roles de los Desarrolladores

Paso en el Desarrollo de Software

Diseo del Sistema

Analista

Ingeniera de SW y Sistemas
El Software como componente de un sistema:
Hardware
Software
Personas

Sistema
Lmite
Interaccin con el exterior
Componentes y sus relaciones

Cambios y Tendencias
Tecnologas

Problemas con
Modelo en Cascada

Cloud computing

Inversin de relacin
de costo entre HW y SW

CAMBIOS EN
INGENIERIA DE
SOFTWARE

Web 2.0

Tiempo para
salir al mercado

Interconexin
en Redes Internet

Cambios y Tendencias
Nociones Fundamentales:
Abstraccin
Mtodos y Notaciones para Anlisis y Diseo
Prototipacin
Arquitectura del Software
Proceso de Software
Reuso
Mediciones
Herramientas y Ambientes Integrados

Abstraccin
Es una decripcin del problema a cierto nivel de
generalizacin que permite concentrarnos en los
aspectos esenciales del problema, sin preocuparnos
de detalles
Identificar clases de objetos que permiten agrupar
elementos
Formar jerarquas

Abstraccin - Ejemplo
Dispositivo elctrico

Sensor

Sensor de Agua

Sensor de Aire

Mtodos y Notaciones Anlisis y Diseo


Construir modelos y verificar completitud y
consistencia
Usar notacin estndar para ayudarnos a
comunicar y documentar las decisiones

Prototipos
Construir una pequea versin de un sistema
para:
ayudar al usuario y al cliente a identificar los
requerimientos clave
demostrar la factibilidad de un diseo o enfoque

El usuario se siente cmodo con la apariencia


y forma de interaccin?

Arquitectura
La arquitectura de un sistema lo describe en
trminos de un conjunto de unidades
arquitectnicas, y de cmo esas unidades se
relacionan entre s
Existen distintos estilos arquitectnicos y
distintos enfoques para identificar las
unidades arquitectnicas

Arquitectura Cmo descomponer


A partir de las funciones: asignar funciones a
mdulos
Orientada a los datos: a partir de las estructuras de
datos externas
Orientada a eventos
Diseo de afuera hacia adentro: basada en las
entradas del usuario al sistema
Diseo orientado a objetos: basado en identificar
clases de objetos y sus interrelaciones

Proceso
Proceso de desarrollar software
Organizacin y disciplina en las actividades

Contribuir a la calidad del software y a la


velocidad con la que se desarrolla

Desarrollo
Controlado

Proceso Especificidad
Aplicaciones
para toda la
empresa o
divisin
Aplicaciones

Departamentales

Desarrollo
Rpido
de aplicaciones

Mono-usuario,
herramientas para
PC de escritorio

Mision-critica
Multi-usuario
Multi-plataforma
2-3 capas
Visin/Alcance limitados
Riesgo bajo/medio
Mono/multi-plataforma
1-2 capas
Paquetes/desarrollo
minimo
Bajo costo/bajo
riesgo
Plataforma nica

Reuso
Sacar partido de los elementos comunes entre
aplicaciones, reutilizando elementos de
desarrollos previos
Componentes reusables como bienes de
activo del negocio

Mediciones
Cuantificando dnde estamos y a dnde
podemos llegar, describimos nuestras
acciones y resultados en un lenguaje
matemtico comn, que nos permite evaluar
nuestro progreso

Herramientas y Ambientes Integrados


Utilizar herramientas para mejorar el
desarrollo de software, ayuda en:
anlisis y diseo
registrar el avance

depurar programas
probar programas

Preguntas
1. Brinde al menos una definicin de Ingeniera de Software
(IS)
2. Cuntos aos tiene como disciplina?
3. Con qu otras disciplinas est relacionada?
4. Qu se entiende por crisis del software?
5. Cmo afecta a la IS que el software est presente en las
ms diversas reas?
6. Qu implicancias tiene sobre la tica y responsabilidad?
7. Cul es la diferencia entre falta (o defecto) y una falla del
software?
8. Cundo es posible evaluar los factores de calidad externos
de un producto de software?
9. Qu nociones fundamentales han persistido?

Vous aimerez peut-être aussi