DE SOFTWARE Qu es software? Qu es la Ingeniera de Software? Cul es la diferencia entre Ingeniera de Software e Ingeniera de Sistemas? Qu es un proceso de software? Qu es un modelo de proceso de software? Qu son los mtodos de Ingeniera de Software? Qu es CASE? Cules son los atributos del software de calidad? QU ES SOFTWARE? Programas de cmputo y su documentacin asociada: requerimientos, modelos de diseo y manuales de usuario El software puede ser desarrollado para un cliente en particular o para un mercado general El software puede ser: Genrico: desarrollado para venderse a mltiples clientes (Excel,Word, etc.) A la medida: desarrollado bajo demanda del cliente a un desarrollador especfico El software nuevo puede ser creado desarrollando nuevos programas, configurando sistemas de software genrico o reutilizando software existente
QU ES LA INGENIERA DE SOFTWARE? Una disciplina de la Ingeniera que concierne a todos los aspectos de la produccin de software Los Ingenieros de Software deben: Adoptar un enfoque sistemtico para llevar a cabo su trabajo Utilizar las herramientas y tcnicas apropiadas para resolver el problema planteado, de acuerdo a las restricciones de desarrollo y a los recursos disponibles
CUL ES LA DIFERENCIA ENTRE INGENIERA DE SOFTWARE E INGENIERA DE SISTEMAS?
La Ingeniera de Sistemas concierne a todos los aspectos del desarrollo de sistemas basados en cmputo incluyendo hardware, software y la ingeniera de procesos. La Ingeniera de Software es una parte de este proceso que comprende el desarrollo de software, control, aplicaciones y bases de datos del sistema Los ingenieros de software son los encargados de la especificacin del sistema, del diseo de la arquitectura, la integracin y la puesta en marcha.
QU ES UN PROCESO DE SOFTWARE? Un conjunto estructurado de actividades cuya meta es el desarrollo o evolucin de un software Algunas actividades genricas en todos los procesos de software son:
Especificacin, qu debe hacer el software y cules son sus especificaciones de desarrollo Desarrollo, produccin del sistema de software Validacin, verificar que el software cumple con lo solicitado por el cliente Evolucin, cambiar/adaptar el software a las nuevas demandas Estas actividades varan dependiendo de la organizacin y del tipo de sistema a desarrollarse
QU ES UN MODELO DE PROCESO DE SOFTWARE? Representacin formal y simplificada de un proceso de software, presentada desde una perspectiva especfica
Ejemplos de perspectivas del proceso de software: Flujo de trabajo, secuencia de actividades Flujo de datos, flujo de la informacin Rol/accin, quin realiza qu Modelos Genricos: Cascada, separar en distintas fases de especificacin y desarrollo Desarrollo Iterativo, la especificacin, desarrollo y validacin estn interrelacionados Prototipado, un modelo sirve de prototipo para la construccin del sistema final Basado en componentes, asume que partes del sistema ya existen y se enfoca a su integracin QU SON LOS MTODOS DE INGENIERA DE SOFTWARE? Enfoques estructurados para el desarrollo de software que incluye:
Descripciones del modelo, descripciones de modelos grficos que deben ser producidos Reglas, restricciones aplicadas a los modelos de sistemas Recomendaciones, para realizar un diseo efectivo Administracin del proceso, que actividades deben realizarse y en qu orden QU ES CASE? CASE es Computer-Aided Software Engineering Programas que son usados para dar soporte automatizado a las actividades del proceso de software: Anlisis de requerimientos, modelado del sistema, pruebas y depuracin (debugging) Las herramientas CASE son comnmente usadas para dar soporte a los mtodos de software Editores para la notacin del mtodo Mdulos de anlisis que verifican que las reglas del mtodo se cumplan Generadores de reportes que facilitan la creacin de la documentacin del sistema Generadores de cdigo a partir del modelo del sistema CULES SON LOS ATRIBUTOS DEL SOFTWARE DE CALIDAD? El software debe proveer la funcionalidad y desempeo requeridos por el usuario y debe ser mantenible, confiable y aceptable Mantenible, el software debe poder evolucionar para continuar cumpliendo con las especificaciones Confiable, el software no debe causar daos fsicos o econmicos en el caso de que falle Eficiente, el software no debe desperdiciar los recursos del sistema Aceptable, el software debe ser aceptado por los usuarios para los que fue diseado. Debe ser entendible, utilizable y compatible con otros sistemas 1.2 EL PROCESO EVOLUTIVO DEL SOFTWARE 1.2 EL PROCESO EVOLUTIVO DEL SOFTWARE El trmino Ingeniera del software apareci por primera vez en a finales de la dcada de 1950. La Ingeniera de software fue estimulada por la crisis del software de las dcadas de entre 1960 y 1980. La Ingeniera del software viene a ayudar a identificar y corregir mediante principios y metodologas los procesos de desarrollo y mantenimiento de sistemas de software. Muchos proyectos sobrepasaron los presupuestos y tiempo estimados.
La crisis del software se caracteriz principalmente por: Imprecisin en la planificacin del proyecto y estimacin de los costos. Baja calidad del Software. Dificultad de mantenimiento de programas con un diseo poco estructurado, etc. El papel del software de computadora ha experimentado un cambio significativo en un periodo un poco mayor a 50 aos. La mejoras sustanciales en el desempeo del hardware, los cambios profundos en las arquitecturas de cmputo, los enormes incrementos en las capacidades de memoria y almacenamiento, y la amplia variedad de opciones de entrada y salida han propiciado el surgimiento de sistemas ms elaborados y complejos basados en computadoras. Actualmente se ha propuesto el dividir la evolucin de la ingeniera del software en 5 eras, de acuerdo a los periodos en los que se lograron avances importante en el campo de estudio. PRIMERA ERA (1950 / 1965)
Se trabajaba con la idea de Codificar y Corregir.
No exista un planteamiento previo.
No exista documentacin de ningn tipo.
Existencia de pocos mtodos formales y pocos creyentes en ellos.
Desarrollado a base de prueba y error. SEGUNDA ERA (1965 1972)
Se busca simplificar cdigo
Aparicin de Multiprogramacin y Sistemas Multiusuarios.
Sistemas de tiempo real apoyan la toma de decisiones.
Aparicin de software como producto.
Se buscan procedimientos para el desarrollo del software. TERCERA ERA (1972 1985)
Nuevo concepto: Sistemas Distribuidos.
Mayor complejidad en los sistemas de informacin.
Aparecen: Redes de rea local y global, y comunicadores digitales.
Uso de microprocesadores. CUARTA ERA (1985 1995)
Impacto Colectivo de software:
Aparecen: Las redes de informacin, tecnologas orientadas a objetos , redes neuronales, sistemas expertos y software de inteligencia artificial.
La informacin como valor preponderante dentro de las organizaciones. QUINTA ERA (1995 20XX)
Utiliza algunos requisitos de las eras anteriores solo que aumenta la omnipresencia de la web, la reutilizacin de informacin y componentes de software.
Codificar: Transformar mediante las reglas de un cdigo la formulacin de un mensaje.
Hardware: Componente fsico de la computadora. Por ejemplo: el monitor, la impresora o el disco rgido. El hardware por s mismo no hace que una mquina funcione.
Multiprogramacin: Se denomina multiprogramacin a la tcnica que permite que dos o ms procesos ocupen la misma unidad de memoria principal y que sean ejecutados al "mismo tiempo. 1.3 etapas del desarrollo del software Las etapas de desarrollo del software son 7 las cuales son: 1.- Anlisis de requerimientos 2.-Diseo 3.-Desarrollo 4.-Pruebas 5.-Implementacion 6.-Mantenimiento 7.- Fin del ciclo
Anlisis de requerimientos Definicin: Es el conjunto de tcnicas y procedimientos que nos permiten conocer los elementos necesarios para definir un proyecto de software. Es la etapa ms crucial del desarrollo de un proyecto de software. La IEEE los divide en funcionales y no funcionales: Funcionales: Condicin o capacidad de un sistema requerida por el usuario para resolver un problema o alcanzar un objetivo. No Funcionales: Condicin o capacidad que debe poseer un sistema par satisfacer un contrato, un estndar, una especificacin u otro documento formalmente impuesto.
El anlisis de requerimientos es la tarea que plantea la asignacin de software a nivel de sistema y el diseo de programas (Figura 1). El anlisis de requerimientos facilita al ingeniero de sistemas especificar la funcin y comportamiento de los programas, indicar la interfaz con otros elementos del sistema y establecer las ligaduras de diseo que debe cumplir el programa.
Tareas del Anlisis El anlisis de requerimientos puede dividirse en cuatro reas: 1.- Reconocimiento del problema 2.- Evaluacin y sntesis 3.- Especificacin 4.- Revisin. Inicialmente, el analista estudia la especificacin del sistema (si existe) y el plan de proyecto. A continuacin, debe establecerse la comunicacin necesaria para el anlisis, de forma que se asegure el reconocimiento del problema.
Diseo Esta etapa se define como el proceso de utilizar la informacin recolectada en el anlisis para disear el software a realizar. La principal tarea de la etapa de diseo es desarrollar un modelo o las especificaciones para el producto a Componentes del sistema Qu es?
El diseo crea una representacin o modelo del software, pero, a diferencia del modelo de los requerimientos (que se centra en describir los datos que se necesitan, la funcin y el comportamiento), el modelo de diseo proporciona detalles sobre arquitectura del software, estructuras de datos, interfaces y componentes que se necesitan para implementar el sistema. Por qu es importante?
El diseo permite modelar el sistema o producto que se va a construir. Este modelo se evala respecto de la calidad y su mejora antes de generar cdigo; despus, se efectan pruebas y se involucra a muchos usuarios finales. El diseo es el lugar en el que se establece la calidad del software. Desarrollo Una vez concluida la etapa de el diseo se procede a realizar el desarrollo Del software, en esta etapa se lleva a cabo regularmente la programacin construyendo con cientos de lneas de cdigo el prototipo del diseo que fue planteado con anterioridad. Es importante asegurar la consistencia del software hacindolo lo mas funcional, practico y seguro posible. En anlisis debe ser conducido independientemente del paradigma de ingeniera de software aplicado. Sin embargo, la forma que ese anlisis tomara puede variar. PASO 1. Evaluar la peticin del software y determinar si el programa a desarrollar es un buen candidato para construir un prototipo. PASO 2. Dado un proyecto candidato aceptable, el analista desarrolla una representacin abreviada de los requerimientos. PASO 3. Despus de que se haya revisado la representacin de los requerimientos, se crea un conjunto de especificaciones de diseo abreviadas para el prototipo.
Pruebas PASO 4. El software del prototipo se crea, prueba y refina Se deben de realizar todas las pruebas pertinentes para verificar que el software funcione de manera adecuada y en caso de encontrarse fallas encontrar la causa de su presencia para poder optimizar el software. Por qu es importante? Con frecuencia, la prueba requiere ms esfuerzo que cualquiera otra accin de ingeniera del software. Si se realiza sin orden, se desperdicia tiempo, se emplea esfuerzo innecesario y, todava peor, es posible que algunos errores pasen desapercibidos. Por tanto, parecera razonable establecer una estrategia sistemtica para probar el software. Cules son los pasos? La prueba comienza por lo pequeo y avanza hacia lo grande. Es decir que las primeras etapas de prueba se enfocan sobre un solo componente o un pequeo grupo de componentes relacionados y se aplican pruebas para descubrir errores en los datos y en la lgica de procesamiento que se encapsularon en los componentes. Despus de probar stos, deben integrarse hasta que se construya el sistema completo. Cul es el producto final?
Una Especificacin pruebas documenta la forma en la que el equipo de software prepara la prueba al definir un plan que describe una estrategia global y un procedimiento con pasos de prueba especficos y los tipos de pruebas que se realizarn.
Implementacin PASO 5. Una vez que el prototipo ha sido probado, se presenta al cliente, el cual "conduce la prueba" de la aplicacin y sugiere modificaciones. Este paso es el ncleo del mtodo de construccin de prototipo. Es aqu donde el cliente puede examinar una representacin implementada de los requerimientos del programa, sugerir modificaciones que harn al programa cumplir mejor las necesidades reales. PASO 6. Los pasos 4 y 5 se repiten iterativamente hasta que todos los requerimientos estn formalizados o hasta que el prototipo haya evolucionado hacia un sistema de produccin.
Mantenimiento Despus de que el software a sido aprobado y utilizado por el cliente suelen encontrarse fallas que no se haban detectado con anterioridad por lo cual es necesario corregirlas dando mantenimiento al software, tambin se puede dar en el caso de que se desee agregar nuevas mejoras al programa. Quin lo hace? En el nivel de la organizacin, el mantenimiento lo realiza el personal de apoyo que es parte de la organizacin de ingeniera de software. La reingeniera la realizan especialistas en negocios (con frecuencia compaas consultoras). En el nivel de software, la reingeniera la realizan ingenieros de software. Por qu es importante? las demandas sobre las funciones empresariales y la tecnologa de la informacin que las apoyan cambian a un paso que pone enorme presin competitiva sobre toda organizacin comercial. Por esto, el software debe mantenerse continuamente y, en el momento adecuado, someterse a reingeniera para sostener el paso.
Cules son los pasos? El mantenimiento corrige los defectos, adapta el software para satisfacer un entorno cambiante y mejorar la funcionalidad a fin de cubrir las necesidades evolutivas de los clientes.
Cul es el producto final? Se producen varios productos operativos de mantenimiento y reingeniera (por ejemplo, casos de uso, modelos de anlisis y diseo, procedimientos de prueba). El resultado final es actualizacin de software. Fin del ciclo El fin del ciclo se refiere al fin de la vida til del producto consiste en realizar todas las tareas necesarias para asegurar que los clientes y los empleados estn consientes de que el producto ya no ser vendido ni soportado y es necesario adquirir una nueva versin o un nuevo producto. 1.4 CLASIFICACION DE LA TECNOLOGIA EN EL DESARROLLO DEL SOFTWARE
Tecnologa estructurada
Programacin Estructurada es una tcnica en la cual la estructura de un programa, esto es, la interpelacin de sus partes realiza tan claramente como es posible mediante el uso de tres estructuras lgicas de control: Secuencia: Sucesin simple de dos o mas operaciones. Seleccin: bifurcacin condicional de una o mas operaciones. Interaccin: Repeticin de una operacin mientras se cumple una condicin.
Estos tres tipos de estructuras lgicas de control pueden ser combinados para producir programas que manejen cualquier tarea de procesamiento de informacin.
Tecnologa orientada a objetos
Hoy en da la tecnologa orientada a objetos ya no se aplica solamente a los lenguajes de programacin, adems se viene aplicando en el anlisis y diseo con mucho xito, al igual que en las bases de datos. Es que para hacer una buena programacin orientada a objetos hay que desarrollar todo el sistema aplicando esta tecnologa, de ah la importancia del anlisis y el diseo orientado a objetos.
1.5 DEFINICION E HISTORIA DE LAS HERRAMIENTAS CASE Qu son las Herramientas CASE?
Se puede definir a las Herramientas CASE como un conjunto de programas y ayudas que dan asistencia a los analistas, ingenieros de software y desarrolladores, durante todos los pasos del Ciclo de Vida de desarrollo de un Software. Como es sabido, los estados en el Ciclo de Vida de desarrollo de un Software son: Investigacin Preliminar, Anlisis, Diseo, Implementacin e Instalacin. Historia de las Herramientas CASE
Las Herramientas CASE tienen su inicio con el simple procesador de palabras que fue usado para crear y manipular documentacin. Los setentas vieron la introduccin de tcnicas grficas y diagramas de flujo de estructuras de datos. Sobre este punto, el diseo y especificaciones en forma pictrica han sido extremadamente complejos y consuman mucho tiempo para realizar cambios.
La introduccin de las herramientas CASE para ayudar en este proceso ha permitido que los diagramas puedan ser fcilmente creados y modificados, mejorando la calidad de los diseos de software. Los diccionarios de datos, un documento muy usado que mantiene los detalles de cada tipo de dato y los procesos dentro de un sistema, son el resultado directo de la llegada del diseo de flujo de datos y anlisis estructural, hecho posible a travs de las mejoras en las Herramientas CASE.
Como un paso final, la verificacin de errores y generadores de casos de pruebas fueron incluidos para validar el diseo del software. Todos estos procesos pueden saberse integrados en una simple herramienta CASE que soporta todo el ciclo de desarrollo. Objetivos
*Mejorar la productividad en el desarrollo y mantenimiento del software.
*Aumentar la calidad del software.
*Reducir el tiempo y costo de desarrollo y mantenimiento de los sistemas informticos.
*Mejorar la planificacin de un proyecto.
*Aumentar la biblioteca de conocimiento informtico de una empresa ayudando a la bsqueda de soluciones para los requisitos.
*Automatizar el desarrollo del software, la documentacin, la generacin de cdigo, las pruebas de errores y la gestin del proyecto.
*Ayuda a la reutilizacin del software, portabilidad y estandarizacin de la documentacin.
*Gestin global en todas las fases de desarrollo de software con una misma herramienta.
*Facilitar el uso de las distintas metodologas propias de la ingeniera del software. EJEMPLOS:
ERwin EasyCase Oracle Designer Microsoft Project Jdeveloper 1.6 CLASIFICACIN DE LAS HERRAMIENTAS CASE
No existe una nica clasificacin de herramientas CASE y, en ocasiones, es difcil incluirlas en una clase determinada. Podran clasificarse atendiendo a:
Las plataformas que soportan.
Las fases del ciclo de vida del desarrollo de sistemas que cubren.
La arquitectura de las aplicaciones que producen. Su funcionalidad. Las herramientas CASE, en funcin de las fases del ciclo de vida abarcadas, se pueden agrupar de la forma siguiente:
1. Herramientas integradas, I-CASE (Integrated CASE, CASE integrado): abarcan todas las fases del ciclo de vida del desarrollo de sistemas. Son llamadas tambin CASE workbench.
2. Herramientas de alto nivel, U-CASE (Upper CASE - CASE superior) o front-end, orientadas a la automatizacin y soporte de las actividades desarrolladas durante las primeras fases del desarrollo: anlisis y diseo.
3. Herramientas de bajo nivel, L-CASE (Lower CASE - CASE inferior) o back-end, dirigidas a las ltimas fases del desarrollo: construccin e implantacin.
4. Juegos de herramientas o Tools-Case, son el tipo ms simple de herramientas CASE. Automatizan una fase dentro del ciclo de vida. Dentro de este grupo se encontraran las herramientas de reingeniera, orientadas a la fase de mantenimiento.
Herramientas de anlisis y diseo. Permiten al desarrollador crear un modelo del sistema que se va a construir y tambin la evaluacin de la validez y consistencia de este modelo. Proporcionan un grado de confianza en la representacin del anlisis y ayudan a eliminar errores con anticipacin. Se tienen: Herramientas de anlisis y diseo (Modelamiento). Herramientas de creacin de prototipos y de simulacin. Herramientas para el diseo y desarrollo de interfaces. Mquinas de anlisis y diseo. (Modelamiento).
Herramientas de programacin. Se engloban aqu los compiladores, los editores y los depuradores de los lenguajes de programacin convencionales. Ejemplos de estas herramientas son: Herramientas de codificacin convencionales. Herramientas de codificacin de cuarta generacin. Herramientas de programacin orientadas a los objetos.
Herramientas de soporte. Se engloban en esta categora las herramientas que recogen las actividades aplicables en todo el proceso de desarrollo, como las que se relacionan a continuacin: Herramientas de documentacin. Herramientas para software de sistemas. Herramientas de control de calidad. Herramientas de bases de datos.