Sunteți pe pagina 1din 55

Introduccin

Tpicos de Ingeniera de Software

Ing. Toms Chuquillanqui Ospina


tomas.chuquillanqui@usil.pe

Objetivos
Adquirir los conocimientos de la ingeniera del software en
general, y ms especficamente en el anlisis y diseo de
software orientado a objetos.
Proporcionar al estudiante un conjunto de tcnicas,
principios y heursticas de ingeniera del software que le
permitan abordar de forma sistemtica el proceso de
construccin de software, en particular desde el paradigma
de desarrollo orientado a objetos.
Inculcar la necesidad de realizar de forma disciplinada el
proceso de desarrollo de software, usando tcnicas,
mtodos y herramientas de ingeniera del software.

Agenda
Ingeniera de Software
Metodologa de desarrollo

Qu es un proceso de software?
Proceso de desarrollo de software

Fabrica de software

Ingeniera de Software
- Definicin
La Ingeniera del Software es la disciplina de ingeniera encargada de todos
los aspectos relacionados con la produccin de software desde sus etapas
ms tempranas de la especificacin del sistema, hasta el mantenimiento del
sistema tras su puesta en marcha
Ingeniera del Software Ian Sommerville

"Es el establecimiento y uso de slidos principios de ingeniera, de buenas


prcticas de gestin y de la aplicacin de herramientas y mtodos
relevantes para obtener, con recursos limitados, software de alta calidad, en
un sentido explcitamente definido.
Marco & Buxton 1987, citado en A. Marco "Software Engineering: Concepts and Management",
Prentice-Hall, 1990.

Una disciplina que integra mtodos, herramientas y


procedimientos para el desarrollo de software de
computadora bajo un enfoque de calidad.

Ingeniera de Software
Principales actividades:
En un proceso pueden distinguirse actividades
resolver problemas.

o pasos para

Actividades tcnicas:
1.

Elicitacin sonsacar de metas y requerimientos (definir el


problema)

2.

Anlisis de requerimientos (cerciorarse que se entiende las


exigencias del problema)

3.

Diseo (exploracin del espacio de solucin; esbozo de una


solucin)

4.

Implementacin (construccin y validacin de una solucin):


Programacin (a veces, codificacin)
Validacin ("testing").

5.

Implantacin (adopcin y puesta en produccin de la solucin)

Ingeniera de Software
Principales actividades:
Actividades gerenciales:
1. Planificacin, control y seguimiento del proceso
2. Gerencia de producto
3. Evaluacin de productos y procesos
4. Gestin de riesgos

5. Gestin de recursos (tiempo, costos, tecnologa,


recursos humanos)

Ingeniera de Software
Principios:
Producir lo que cliente necesita:
Captura de Requisitos; Se debe dedicar
esfuerzo en la captura de las necesidades
del cliente.
Uso de Prototipos; Involucrar al cliente en el
proceso de desarrollo
Respetar los plazos acordados con el
cliente. Quedar satisfecho

Ingeniera de Software
Principios:
Determinar el problema antes de escribir
especificaciones:
Elegir la solucin que mejor se adapte a las
necesidades del cliente
Analizar todas las posibles soluciones.
Costes, esfuerzo, etc.
No dar soluciones precipitadas. Explorar
todas las alternativas

Ingeniera de Software
Principios:
Evaluar las alternativas de diseo:
Una vez establecidos los requisitos, qu
arquitecturas o algoritmos elegir?
Segn por
tendremos:

el

diseo

que

Unos tiempos de respuesta u otros


Ms portabilidad
Mayor seguridad

optemos

Ingeniera de Software
Principios:
La tcnica es ms importante que las herramientas:
Antes de seguir una herramienta, se debe comprender y
seguir una tcnica apropiada

Hazlo bien antes de hacerlo rpido:


Es ms fcil hacer que un programa que funciona bien sea
ms rpido, que hacer que un programa rpido que funciona
mal.

La inspeccin de cdigo es mejor que la ejecucin:


La inspeccin de cdigo y las pruebas consumen tiempo, pero
es preferible encontrar fallos tempranamente que al final del
desarrollo

Ingeniera de Software
Principios:
El personal es la clave del xito:
Personal capacitado
herramientas.

en

el

uso

de

las

Importante trabajar en equipo.


Todo el personal debe conocer los estndares
de trabajo.

Alguien debe controlar la aplicacin de estos


estndares.
Deber haber una persona encargada de
mantenerlos, adaptarlos y ampliarlos.

Ingeniera de Software
Principios:
Todo el diseo
documentado:

del

software

debe

de

estar

Se debe ir documentando durante todo el proceso de


desarrollo

El cdigo difcil de leer es difcil de mantener.


La encapsulacin crea software fcil de probar y
mantener.
Los desarrolladores no deben de probar el software
que han generado.

Metodologa de desarrollo
Definicin:
Es un conjunto de mtodos, tcnicas, herramientas y
un soporte documental que ayuda a desarrollar
software. Es decir, una metodologa establece un
camino para desarrollar software de manera
sistemtica, proporcionando un estndar de trabajo a
la organizacin.
Actividades:

Especificacin

Desarrollo

Validacin

Mantenimiento

Metodologa de desarrollo
Objetivos:
Mejorar el proceso de desarrollo.
Dotar a la empresa de un estndar de trabajo.
Conseguir definir requisitos de forma acertada.

Establecer un mtodo sistemtico de desarrollo.


Construir sistemas en tiempo y coste razonable.

Construir sistemas documentados fciles de


mantener.

Qu es un mtodo ?
Un mtodo especifica en qu fases, etapas
y actividades se debe descomponer el
proceso de desarrollo de un proyecto.
Se especifica:
Qu se debe hacer.

Qu tcnicas se deben utilizar.


Qu documentos se deben generar.

Qu control se debe hacer.

Qu es una tcnica?
Es la explicacin clara y prctica de
CMO se debe llevar a cabo una tarea
concreta.
Dar forma al mtodo especificado para una
tarea.

Suele estar soportada por una herramienta.

Qu es una herramienta?
Todo aquello que funciona en un ordenador y
proporciona a la metodologa un soporte
automtico o semiautomtico.
Las herramientas CASE (Computer Aided
Software Engineering):
Por ejemplo:
Un diagramador (Smartdraw)
Procesador de texto (Word)
Editor grfico (Visio)

Metodologa de desarrollo
Ventajas:
A nivel de la gestin de proyectos:
Facilita la planificacin y el seguimiento del
proyecto

Optimiza la gestin de recursos


Facilita
la
comunicacin
entre
los
participantes, independientemente de la
unidad organizativa o empresa a la que
pertenezcan
Mejora del ratio costo/beneficio

Metodologa de desarrollo
Ventajas:
Para los
software:

Ingenieros

de

desarrollo

de

Facilita la comprensin del problema


Optimiza el proceso de desarrollo y fases
Facilita el mantenimiento del producto
Incorpora criterios de reusabilidad

Para el Cliente o usuario:


El producto cumple con los
establecidos
Garantiza la calidad del producto

requisitos

Qu es un proceso de software?
Conjunto repetitivo de actividades interrelacionadas
que se realizan sistemticamente, mediante las cuales
una entrada se convierte en una salida o resultado,
que da valor a los procesos de la organizacin.
Un proceso est
compuesto por actividades.

Proceso

Una actividad est


compuesta de tareas.
Una tarea es una accin
que transforma unas
entradas en salida.

Tarea 1

Actividad 1

Actividad n

Tarea X

Tarea 1

Proceso de software
Caractersticas:
Repetibilidad de resultados. Al conseguir
que la calidad del resultado sea
consecuencia del proceso, logra la
homogeneidad de los resultados.
Escalabilidad. Es una consecuencia de la
repetibilidad. No slo un equipo consigue
resultados homogneos en todos los
proyectos, sino que los obtienen todos los
equipos.

Proceso de software
Caractersticas:
Mejora continua. Al aplicar procesos que trabajan
sobre los propios procesos de produccin,
midiendo y analizando los resultados se obtienen
los criterios de gestin necesarios para aplicar
medidas que mejoran de forma continua la
eficiencia y calidad de los procesos base, y por
tanto de los resultados.
know-how propio, consiguiendo finalmente una
empresa que sabe hacer, porque su modelo de
procesos termina conteniendo un activo valioso de
la organizacin: la clave para hacer las cosas bien,
con eficiencia y de forma homognea.

Proceso de software lenguaje:


Lenguajes de modelado grfico que sirven para representar
a los procesos:
Diagramas de flujo: Tcnica para especificar los detalles de
un proceso en trminos de actividades, tareas, entradas,
salidas, condiciones.
IDEF0 (Integration Definition for Function Modeling): Estndar
para desarrollar representaciones grficas estructuradas de
un sistema o entorno empresarial. Permite la construccin de
modelos que comprenden funciones del sistema (actividades,
acciones, operaciones, procesos), relaciones y datos.
UML (Unified Modeling Language)...

Ciclo de vida de un software:


Segn la Norma ISO/IEC Standard 12207:2008: Software life- Cycle
processes propuesta por la ISO (International Organization for
Standardization):

Es un marco de referencia que contiene los procesos, las


actividades y las tareas involucradas en el desarrollo, la explotacin
y mantenimiento de un producto software, abarcando la vida del
sistema desde la definicin de requisitos hasta que se deja de
utilizar

http://www.iso.org/iso/home.htm

Ciclo de vida de un software (ISO 12207):


Por ciclo de vida del software, entendemos la sucesin de etapas por
las que pasa el software desde que un nuevo proyecto es concebido
hasta que se deja de usar. Estas etapas representan el ciclo de
actividades involucradas en el desarrollo, uso y mantenimiento de
sistemas de software, adems de llevar asociadas una serie de
documentos que sern la salida de cada una de estas fases y
servirn de entrada en la fase siguiente.
Actividades como:
Adopcin e identificacin del sistema: es importante conocer el
origen del sistema, as como las motivaciones que impulsaron el
desarrollo del sistema (por qu, para qu, etctera.).

Ciclo de vida de un software (ISO 12207):


Anlisis de requerimientos: identificacin de las necesidades del
cliente y los usuarios que el sistema debe satisfacer.
Especificacin: de manera que se pueda encontrar la funcin de
correspondencia entre las entradas del sistema y las salidas que
se supone que genera. Al estar completamente especificado el
sistema, se pueden hacer estimaciones cuantitativas del coste,
tiempos de diseo y asignacin de personal al sistema, as como
la planificacin general del proyecto.

Especificacin de la arquitectura: define las interfaces de


interconexin y recursos entre mdulos del sistema de manera
apropiada para su diseo detallado y administracin.

Ciclo de vida de un software (ISO 12207):


Diseo: en esta etapa, se divide el sistema en partes manejables,
mdulos, y se analizan los elementos que las constituyen.
Desarrollo e implementacin: codificacin y depuracin de la
etapa de diseo en implementaciones de cdigo fuente
operacional.
Integracin y prueba del software: ensamble de los componentes
de acuerdo a la arquitectura establecida y evaluacin del
comportamiento de todo el sistema atendiendo a su
funcionalidad y eficacia.
Documentacin: generacin de documentos necesarios para el
uso y mantenimiento.

Ciclo de vida de un software (ISO 12207):


Entrenamiento y uso: instrucciones y guas para los
usuarios detallando las posibilidades y limitaciones
del sistema, para su uso efectivo.
Mantenimiento del software: actividades para el
mantenimiento operativo del sistema. Se clasifican en:
evolucin, conservacin y mantenimiento.
Existen diversos modelos de ciclo de vida, pero cada uno
de ellos va asociado a unos mtodos, herramientas y
procedimientos que usamos a lo largo de un proyecto.

El proceso de desarrollo de software


Un modelo de proceso de desarrollo de software es una
representacin y descripcin desde una perspectiva particular
(marco de trabajo) de cmo elaborar un producto de software.
Estos pueden ser:
1.

Modelo en Lineal

2.

Modelo en Cascada

3.

Modelo de Prototipo

4.

Modelo en V

5.

Modelo en Espiral

6.

Modelo de Desarrollo por fases

1. Modelo en lineal:
Se refiere al desarrollo del ciclo de vida de un
sistema horizontal.

2. Modelo en Cascada:
El proceso de desarrollo se considera como la sucesin de
etapas que generan productos intermedios
Existen diferentes etapas de desarrollo, la salida de la primera
etapa fluye hacia la segunda etapa y esta salida fluye hacia
la tercera y as sucesivamente.

2. Modelo en Cascada: (cont)


Los requisitos se fijan al principio del proyecto y no pueden
modificarse (difcil de responder a un cambio durante el
desarrollo)
No admite iteraciones, no existe un producto hasta el final del
proyecto.
Dificultad de tener en cuenta los cambios cuando el proceso ya
esta en marcha.

Este modelo es
apropiado solo cuando
los requisitos se
comprende muy bien.

3. Modelo de Prototipo
Permite la construccin rpida del sistema (o parte de ste).
Usuario y desarrollador tienen una visin comn.
Se reduce el riesgo y la incerteza del desarrollo.

4. Modelo en V

Alemania 1992 (estndar utilizado para los proyectos de la Administracin


Federal Alemn y de defensa)

Variacin del modelo en cascada.

El ngulo es la codificacin.

Los sucesivos Testing proceden como contraparte de las actividades de


desarrollo.

Se forman ciclos desarrollo-verificacin-desarrollo...

5. Modelo Espiral
El proceso se representa ms como una espiral que como
una secuencia de actividades con vuelta hacia atrs.
Cada vuelta en la espiral representa una fase del proceso y
determina las actividades a realizar.

El modelo es de tipo iterativo:


Planificacin Anlisis de Riesgo Ingeniera
Evaluacin Planificacin ...

En cada iteracin, se evalan las diferentes alternativas y


se elige una.
Los gestores del proyecto intentan eliminar o minimizar el
riesgo.

5. Modelo Espiral
Representacin detallada:

6. Modelo de desarrollo por fases:

Hoy, el mercado no acepta grandes retardos. Una forma de reducirlos


es desarrollar en fases.

El sistema se disea de manera que pueda ser entregado por partes.

As, el usuario tiene algo de funcionalidad, mientras se desarrolla el


resto.

Hay dos sistemas funcionando en


paralelo:
De Desarrollo.
La siguiente versin
(release) reemplazar a la
actual de Produccin.
De Produccin.
La versin es usado por el
Cliente.

6. Modelo de desarrollo por fases,


continua
Hay dos maneras bsicas de organizar el desarrollo de los

releases:

Incremental. El sistema se especifica y luego es particionado en


subsistemas, por funcionalidad. Se comienza con un subsistema
pequeo y se va agregando funcionalidad en cada nuevo release.

Iterativo. Se entrega el sistema completo al comienzo y se van


haciendo cambios y mejoras en la funcionalidad, en cada nuevo
release.

6. Modelo de desarrollo por fases,


continua
Otra representacin del modelo:

Fbrica de software - antecedentes


En 1968 General Electric desarrolla una fbrica de software
para mejorar la productividad de sus programadores mediante
el uso de herramientas estandarizadas, una interfaz grfica de
usuario y una base de datos con datos financieros y de control
de la administracin.
Entonces surge en la industria del software el concepto de
fbrica de software, como una respuesta a la necesidad de
aliviar la incertidumbre que se tena en el desarrollo de
proyectos de software en aspectos como:
1. Confiabilidad de los productos.
2. Mantener en presupuesto y calendario los proyectos de
desarrollo

Fbrica de software - antecedentes


3. Falta de una definicin y seguimiento adecuado a los
procesos de produccin, as como un medio efectivo de medir su
desempeo y la productividad de las personas que lo ejecutan.
4. Falta de estandarizacin en los mtodos y herramientas
empleados en los procesos. Esto provocaba reinventar el hilo
negro cada vez, adems del nulo reuso de los productos que
los mismos procesos de produccin generan.
5. Falta de herramientas para hacer rastreables los productos
(requerimientos, especificaciones de productos, etc.) que generan
los procesos.

Fbrica de software - antecedentes


Entre las empresas pioneras se encuentran:
System Development Corporation.- Control:
Control de proyectos y aseguramiento de la
calidad; implementacin: diseo, construccin y
pruebas.
Hitachi.- Definicin y medicin de procesos
incorporando procesos de medicin y control
de la calidad.
Toshiba.- Estandarizacin de procesos, reuso,
herramientas estndar y entrenamiento.

Fbrica de software - antecedentes


Fundada en 1982, Softtek La primera fbrica de software en
Amrica Latina, ubicada en Monterrey El Presidente Zedillo,
inaugur empresa Softtek, en Monterrey el da 20 de febrero de
1998.
Existen aproximadamente 500
desarrollo de software. Existen
privadas, esto es, que la tiene
desarrollos, como Ddmesis,
Tecnosys, de IBM

empresas importantes en el
fbricas de software que son
una empresa para sus propios
adquirida por GE Capital, y

Fbrica de software
Una fbrica de software es una
empresa de la industria del software
cuya misin es el desarrollo de
software para sus clientes de acuerdo
a los requerimientos especficos que
aquel le solicita.
Una fbrica de software tiene como su
principal fuente de ingreso, la venta de
proyectos de desarrollo de software,
como as tambin la venta de horas
hombre de desarrollo de software.
Generalmente la propiedad intelectual
de
las
aplicaciones
informticas
desarrolladas le pertenecen al cliente.

Fbrica de software
Se trata de aplicar los procesos de industrializacin
a la generacin de programas, para que estos
puedan ser producidos bajo estndares que
permitan mantener un nivel de calidad aceptable.
Se trata de normar el proceso de diseo, desarrollo,
pruebas y documentacin.
Esto trae como consecuencia que el proceso se
pueda entonces supervisar de manera adecuada,
evitando la sensacin de caja negra que a veces
rodea a los proyectos de TI, y a la vez permite
encargar el proyecto, o parte del mismo, a otras
unidades de TI o inclusive a empresas externas.

Fsw componentes estructurales


Conforman los componentes estructurales, aquellos elementos
fundamentales sobre los cuales se basa una empresa de
diseo y construccin de software a la medida.
Hay tres tipos de componentes estructurales que conforman
una empresa:
I. OPERACIN
1.

Planta fsica. Infraestructura de soporte (mobiliario,


equipo, horarios, etc.) que contenga espacios de trabajo
que garanticen las condiciones necesarias para que las
personas puedan desarrollar su trabajo.

Fsw componentes estructurales


2.

Administracin de la configuracin. Herramientas y repositorio


que contenga los productos que se generan en el proceso de
produccin as como un procedimiento de administracin
claramente definido.

3.

Libreras de componentes. El reuso es una forma de incrementar


la confiabilidad, disminuir los tiempos y costo de desarrollo. Por
tal razn se debe habilitar un repositorio donde se tengan
claramente identificados, accesibles y disponibles cualquier
componente reusable (diseos, procesos, programas fuente,
datos, planes de proyectos, bases de datos, etc.)

4.

Base de conocimientos. Es necesario contar con una librera


tcnica donde se registren todo incidente tcnico relacionado
con los procesos de produccin, las herramientas de desarrollo
o el dominio de especialidad del producto.

Fsw componentes estructurales


II. CONTROL
1. Estimacin y Planeacin. Es indispensable contar
con tcnicas y mtodos para poder estimar,
planear y medir el avance de los proyectos.
2. Administracin de Procesos. Se necesitan:
Procesos de produccin claramente definidos de tal
forma que puedan ser rastreables y medidos a fin de ser
mejorados.
Metodologas, tcnicas y herramientas para llevar a
cabo los procesos de produccin.

Fsw componentes estructurales


3. Aseguramiento
necesitan:

de

calidad

productividad.

Se

1. Funciones de aseguramiento de calidad de tal forma que


los productos cumplan con los requerimientos solicitados por
el cliente.
2. Mtricas claramente definidas para medir la productividad
de los procesos.

3. Mtricas para medir la satisfaccin del cliente.

4. Administracin de costos. Es necesario contar con un


sistema para medir los costos de produccin por
operacin, proceso, persona y proyecto.

Fsw componentes estructurales


III. DESARROLLO DE PERSONAL
1.

Programas de Carrera.
Es necesario definir un
procedimiento que administre el crecimiento del personal.

2.

Entrenamiento. Para mejorar la productividad de las


personas, es necesario proveer y medir el entrenamiento
necesario.

3.

Evaluacin. A fin de elevar la productividad de las


personas es necesario medir en trminos cualitativos y
cuantitativos su desempeo dentro de los procesos de
produccin.

4.

Planes de Compensacin. Es necesario contar con un


procedimiento
definido
sobre
la
poltica
de
compensaciones de las personas, de tal forma que
incentive el desarrollo personal de una manera sostenida.

Qu no es fabrica de software?

Se podra pensar que Microsoft es una fbrica


de software, pero no es as. Ellos basan su
negocio en la creacin de programas dirigidos a
pblicos masivos, ms que a desarrollos
especializados para cierto tipo de industria;
hacen software genrico como hojas de clculo,
procesadores de palabra y sistemas operativos.

Por el contrario, el modelo de fbricas de


software se basa en que la empresa ofrezca
servicios a la medida a sus clientes, es un
concepto de outsourcing, en el cual se delega
el diseo de software a una empresa dedicada
totalmente a ese fin, la cual est encargada de
desarrollar
plataformas
para
sistemas
administrativos, nminas, control, procesos y
muchos ms.

Fsw beneficios:
1.

Estimacin de procesos y costos con precisin.

2.

Reduccin de costos como factores de improductividad,


actualizacin tecnolgica de equipos internos e
infraestructura del rea de desarrollo.

3.

Concentracin de esfuerzos de profesionales de TI y de


los usuarios mismos.

4.

Mejora de procesos de productividad, control total de


inventario y mejora de Controles de calidad de software.

5.

Sincronizacin de documentos, cdigo y aplicaciones


particulares

6.

Mayor facilidad para entrenar usuarios, tcnicos en


software y equipo.

Fsw aplicaciones:

Fsw modelos:

Existen 4 enfoques sobre las fbricas de software que resulta interesante revisar:

Dichos enfoques
agruparse en:

pueden

1.

Orientados
a
infraestructura (I y II)

la

2.

Orientados al desarrollo
de
procesos
ptimos
basados en la experiencia
(III y IV)

El xito de cada modelo


depende
de
factores
diferentes:

(I) contexto cultural y laboral

(II) intervencin en la estructura organizacional

(III) aprendizaje

(IV) priorizacin de iniciativas para su implantacin y buen soporte de


infraestructura

Resumen
En esta sesin hemos aprendido:
La ingeniera del software en general,
Conceptos de Software Factory

Ing. Toms Chuquillanqui Ospina

tomas.chuquillanqui@usil.pe
tchuquillanqui@yahoo.com

S-ar putea să vă placă și