Software
1.2.
1.3.
Situacin actual
Las aplicaciones de hoy en da son programas muy complejos, inabordables por una
sola persona. En sus comienzos se valor como causa tambin la inmadurez de la
ingeniera de software, aunque todava hoy en da no es posible realizar estimaciones
precisas del coste y tiempo que necesitar un proyecto de software.
Adems, no existen todava herramientas que permitan estimar de una manera exacta,
antes de comenzar el proyecto, cul es el esfuerzo que se necesitar para desarrollar un
programa. Este hecho provoca que la mayora de las veces no sea posible estimar cunto
tiempo llevar un proyecto, ni cunto personal ser necesario. Cuando se fijan plazos
normalmente no se cumplen por este hecho. Del mismo modo, en muchas ocasiones el
personal asignado a un proyecto se incrementa con la esperanza de disminuir el plazo de
ejecucin.
Aunque se han propuesto diversas metodologas para intentar subsanar los problemas
mencionados, lo cierto es que todava hoy no existe ningn mtodo que haya permitido
estimar de manera fiable el coste y duracin de un proyecto antes de sus comienzos.
En definitiva, la industria del software no ha acabado de salir de la fase artesanal
1.4.
INDUSTRIA de la CONSTRUCCION
INDUSTRIA del SOFTWARE
-PEQUEOS PROYECTOS
(armario empotrado)
(pequeo programa)
1 da x 1 hombre
1 da x 1 hombre
+ GRANDES PROYECTOS
(La Dfense, Opera House)
(Gran proyecto Sw)
Varios aos x
Varios aos x
Contratistas,
empresa software,
constructores,
ingenieros software,
arquitectos,
analistas,
delineantes,
operadores,
obreros,
programadores,
auditores,
albailes,
auditores,
usuarios
Los proyectos ms pequeos (los de uso personal) se parecen a los pequeos
programas: puede desarrollarlo el propio interesado, y en un tiempo mnimo.
Los proyectos ms grandes se parecen a los grandes proyectos software:
gran cantidad de personal y usuarios,
son personas distintas los que desarrollan, usan y mantienen,
100
total del sistema
80
Hardware
60
Software
40
20
80
60
0
aos
Total
1.5.
Ingeniera
del software
Desarrollo
de Software
Analisis
Diseo
Codificacin
Pruebas
Gestin de
proyectos
Metricas
del software
Planificacin
Organizacin
Reclutamiento
Direccin
Control
Mantenimiento
de software
Fiabilidad
Correccin de Errores
Usabilidad
Modificaciones
Flexibilidad
Mantenibilidad
Reusabilidad
Etc.
Principios de la ISW
Pilares de la ISW
Reducir un diseo a cdigo puede ser la parte ms obvia del trabajo de ingeniera de
software, pero no necesariamente es la que demanda mayor trabajo y ni la ms
complicada. La complejidad y la duracin de esta etapa est ntimamente relacionada al
o a los lenguajes de programacin utilizados, as como al diseo previamente realizado.
Prueba
Documentacin
DEFINICIN
DESARROLLO
Fallos de definicin
MANTENIMIENTO
Errores
Modificaciones y adaptaciones
1.6.
Roles en la ISW
Analistas: Trabajar con los analistas para estudiar las necesidades de los clientes y los
requisitos del sistema.
Esta se refiere a la habilidad de poder estudiar un problema de una complejidad
determinada, descomponiendo el problema en subproblemas de menor complejidad. De
esa forma, la solucin del problema completo se obtiene como la suma de las soluciones
de los subproblemas de menor complejidad.
Tareas:
Preparar un documento con preguntas a realizar al cliente durante las entrevistas.
Determinar las fechas de reunin con el cliente.
Generar un documento de especificacin de requisitos de usuario en base a los
acuerdos alcanzados en la primera reunin.
Presentacin del documento de especificacin al cliente en la siguiente reunin.
De ser necesario, realizar las modificaciones al documento de especificacin de
requisitos de usuario y presentarlas al cliente en la prxima reunin. Repetir esta
actividad las veces que sea necesario.
Revisar los diagramas de arquitectura con los diseadores.
De ser necesario, realizar las modificaciones a los diagramas.
Presentar los diagramas de arquitectura finales.
Construir el documento de requisitos de software.
Revisar el documento con los ingenieros de aseguramiento de la calidad y
cliente, realizando modificaciones de ser necesario.
Diseadores: Trabajar con ellos para disear la arquitectura del sistema de acuerdo con
los recursos asignados al proyecto. El administrador de proyecto requiere la arquitectura
del sistema para determinar el plan de trabajo de los dems roles.
Programadores: Los programadores deben convertir la especificacin del sistema en
cdigo fuente ejecutable utilizando uno o ms lenguajes de programacin, as como
herramientas de software de apoyo a la programacin.
Tareas:
Codificar y depurar.
Testear.
Realizar revisiones personales y reuniones.
Escribir la documentacin tcnica.
Tsters: Trabajar con ellos para determinar que tipo de testeo deber utilizarse, y con
que profundidad, de acuerdo con los requisitos de seguridad en el diseo del sistema y
de los recursos disponibles. Los resultados de los tests ayudan a determinar el xito del
proyecto, preocupacin principal de la administracin de proyecto.
Documentadores: El administrador de proyecto tomar como referencia los
documentos controlados por los documentadores para elaborar planes y la evaluacin
del proyecto.
Tarea: Plantear cuestin sobre que modelo ellos seguiran para crear software. Ver
ventajas e inconvenientes.
2.2.
Se define como Proceso al conjunto ordenado de pasos a seguir para llegar a la solucin
de un problema u obtencin de un producto, en este caso particular, para lograr la
obtencin de un producto software que resuelva un problema.
2.3.
2.4.
Caractersticas:
Para pasar de una fase a otra es necesario conseguir todos los objetivos de la
etapa previa
Ayuda a prevenir que se sobrepasen las fechas de entrega y los costes esperados
El cliente debe tener paciencia ya que el software no estar disponible hasta muy
avanzado el proyecto. Un error detectado por el cliente (en fase de operacin)
puede ser desastroso, implicando reinicio del proyecto, con altos costos.
Caractersticas:
El sistema no se ve como una entidad monoltica con una fecha fija de entrega,
sino que es una integracin de resultados sucesivos obtenidos despus de cada
iteracin
Ejemplo:
Un procesador de texto que sea desarrollado bajo el paradigma Incremental podra
aportar, en principio, funciones bsicas de edicin de archivos y produccin de
documentos (algo como un editor simple). En un segundo incremento se le podra
agregar edicin ms sofisticada, y de generacin y mezcla de documentos. En un tercer
incremento podra considerarse el agregado de funciones de correccin ortogrfica,
esquemas de paginado y plantillas; en un cuarto capacidades de dibujo propias y
ecuaciones matemticas. As sucesivamente hasta llegar al procesador final requerido.
As, el producto va creciendo, acercndose a su meta final, pero desde la entrega del
primer incremento ya es til y funcional para el cliente, el cual observa una respuesta
rpida en cuanto a entrega temprana; sin notar que la fecha lmite del proyecto puede no
estar acotada ni tan definida, lo que da margen de operacin y alivia presiones al equipo
de desarrollo.
El hecho de que existan incrementos funcionales del software lleva inmediatamente a
pensar en un esquema de desarrollo modular, por tanto este modelo facilita tal
paradigma de diseo.
En resumen, un modelo incremental lleva a pensar en un desarrollo modular, con
entregas parciales del producto software denominados incrementos del sistema, que
son escogidos segn prioridades predefinidas de algn modo. El modelo permite una
implementacin con refinamientos sucesivos (ampliacin o mejora). Con cada
incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se
mejora la versin previamente implementada del producto software.
Ventajas y desventajas:
Se evitan proyectos largos y se entrega algo de valor a los usuarios con cierta
frecuencia
El usuario se involucra ms
Mayor retorno de la inversin
Difcil de evaluar el coste total
Difcil de aplicar a sistemas transaccionales que tienden a ser integrados y a
operar como un todo
Requiere gestores experimentados
El resultado puede ser muy positivo
Los errores en los requisitos se detectan tarde y su correccin resulta costosa
Caractersticas:
2.5.
Principios de la reutilizacin:
Existen similitudes entre distintos sistemas de un mismo dominio de aplicacin
El software puede representarse como una combinacin de mdulos
Disear aplicaciones = especificar mdulos + interrelaciones
Los sistemas nuevos se pueden caracterizar por diferencias respecto a los
antiguos
Ventajas y desventajas:
2.6.
2.7.
Herramientas CASE
Desde que a finales de los aos sesenta se acua el trmino "crisis del software",
numerosos expertos han venido ocupndose del tema, proponiendo distintas tcnicas,
metodologas y herramientas para paliar esta situacin.
Entre todas ellas destaca la tecnologa conocida con el nombre de CASE (Computer
Aided/Assisted Software/System Engineering) que, en su acepcin ms amplia, se
puede definir como el conjunto de herramientas y metodologas que prestan soporte a
un enfoque de ingeniera en el desarrollo de software en alguna o todas las fases de este
proceso.
La tecnologa CASE surge a mediados de los aos setenta cuando empiezan a aparecer
las primeras metodologas estructuradas y se inician las investigaciones sobre entornos
de desarrollo.
A mediados de los aos ochenta el CASE se populariza y surgen las primeras
herramientas de documentacin y diagramacin automtica. Surge asimismo el
concepto de repositorio/diccionario como ncleo de un entorno CASE, as como
generadores de programas y aplicaciones que automatizan gran parte de las ltimas
fases del ciclo de vida. En paralelo, aparecen tambin los gestores de proyectos algunos
de los cuales se integran con herramientas CASE.
A finales de los ochenta se produce un considerable aumento en la venta de estos
productos y empieza la etapa de asimilacin de la tecnologa, que fracasa debido a las
limitaciones de la "primera" generacin de productos, las falsas expectativas sobre sus
posibilidades y su incorrecta implantacin.
A mediados de los aos noventa empieza a surgir una "segunda generacin" de
herramientas que superan gran parte de las limitaciones existentes en las de primera
generacin. Adems, los usuarios conocen mejor sus posibilidades y han aprendido a
poner unas expectativas ms justas sobre stas, mejorando tambin los procesos de
adopcin de metodologas y herramientas.
La tecnologa CASE supone la "informatizacin de la informtica", es decir, "la
automatizacin del desarrollo del software", contribuyendo as a elevar la productividad
y la calidad en el desarrollo de sistemas de informacin. Este nuevo enfoque a la hora
de construir software persigue mejorar la calidad y la productividad de los sistemas de
informacin, para lo que se plantean los siguientes objetivos:
2.8.