jueves, 21 de febrero de 2013

FUNDAMENTOS DE INGENIERIA DE SOFTWARE

1.1Conceptos básicos Ingeniería de software

Sin importar cualquiera que sea el tipo de software a ser desarrollado sea de sistemas (Son programas que sirven a otros programas en el trabajo de desarrollo como compiladores, editores, ..), tiempo real (Software encargado de analizar datos del mundo en forma real tales como análisis de datos, control automatizado, monitoreo de datos), gestión (a esta categoría se incluye el software comercial a nivel empresarial nominas, inventarios), ingeniería y científico (es software que posee un amplio manejo numérico usado en biologíaastronomía, CAD, …), empotrado (software que se encuentra residente en memoria, tales como : controles automáticos en los vehículos, sistemas de background, partes del sistema operativo, …), computación personal (software comercial de uso local como procesadores de texto, hojas electrónicas, navegadores web, calendarios, agendas, recetarios, …), inteligencia artificial (software de procesamiento especial sistemas expertos, sistemas basados en el conocimiento, generalmente no usan algoritmos numéricos). Todos los tipos de software mencionados requieren que los analistas, diseñadores y desarrolladores apliquen características y elementos de calidad para que se logren productos a las necesidades del usuario, estas necesidades se comienzan a encontrar un camino de solución a través de la aplicación de elementos de calidad, así se presentan dos de los más valiosos como son la eficiencia y la eficacia.
El uso eficiente y eficaz de la tecnología de los computadores es un objetivo que aún está distante. Para representar lo anterior, sólo basta señalar los reportes de fracasos y dificultades de muchos proyectos en los que se pretende involucrar a la tecnología de los computadores.
La ingeniería del software pretende utilizar los recursos computacionales de tal manera que se produzcan soluciones eficientes y eficaces a los problemas informáticos, el éxito de un proyecto involucra elementos como la planeación, la administración y la utilización de metodologías de desarrollo de software.
A través de la planeación se determinan los recursos necesarios para el desarrollo del proyecto, la factibilidad del mismo y el tiempo estimado de desarrollo; unido a ello con la administración se controla, evalúa y corrige la dirección de acuerdo a las contingencias y demás elementos que se vayan presentando durante el desarrollo; finalmente, a través del uso de una metodología se busca lograr el acople de los participantes y la garantía de una determinada calidad. Debe notarse que las metodologías de desarrollote software sólo constituyen uno de los mecanismos que actualmente se utilizan para alcanzar software de calidad; no debemos dejar de lado aspectos de la dirección de proyectos que también buscan calidad en el proceso de desarrollo y en el producto final.
Considerando que la calidad es un término bastante impreciso se ha decidido establecer este tema como punto de partida. Como complemento se trata el tema del manejo de la complejidad puesto que es un tópico fundamental dentro de una metodología, que es la herramienta fundamental con la que se pretende guiar el proceso de elaboración de un producto software de alta calidad.


Calidad en la ingeniería del software. En una versión sucinta la calidad en la ingeniería del software es un grupo de características que representa la efectividad y la eficiencia de un sistema de información. Es importante enfatizar en dos puntos :
Un software de calidad debe ser eficaz, es decir, que debe realizar las funciones establecidas, debe ser amigable. Un usuario debe utilizar el software porque produce resultados confiables, realiza todas las operaciones que se requieren, ejecuta las operaciones en un tiempo aceptado y es fácilmente usado por el grupo de usuarios a quien este dirigido.
Un software de calidad debe ser eficiente, es decir el costo de su desarrollo tomando todos los recursos y el costo de su operación debe ser tal que las organizaciones involucradas en su desarrollo y uso obtengan el máximo beneficio o por lo menos un beneficio aceptable en un período de tiempo establecido.
Para ilustrar el concepto de calidad de manera más profunda, es necesario considerar algunos aspectos fundamentales que caracterizan al software de calidad como son : solidez, exactitud, completitud, mantenibilidad, reutilizabilidad, claridad en la documentación, entre otros que serán descritos a continuación.






El software es tanto un producto como el vehículo para su entrega. Es el transformador de la información. El papel del software de computadora ha experimentado un cambio significativo en un periodo un poco mayor a 50 años. Las mejorías sustanciales en el desempeño del hardware, los cambios profundos en las arquitecturas de cómputo, los enormes incrementos en las capacidades de memoria y almacenamiento, y la amplia variedad de opciones de salida y de entrada han propiciado el surgimiento de sistemas más elaborados y complejos basados en computadoras. Nadie sabe en realidad el futuro de los sistemas que día a día se construyen, más sin embargo sin importar el lugar en el que resida el software, ya sea en un celular o dentro de una computadora central, el software realiza la producción, el manejo, la adquisición, la modificación, el despliegue o la transmisión de la información que puede ser tan simple como un solo bit o tan compleja como una   presentación multimedia. En su papel de vehículo para la entrega de un producto, el software actúa como la base para el control de la computadora (sistemas operativos), la comunicación de información (redes) y la creación y el control de otros programas (utilerías de software y ambientes)
El software entrega el producto más importante de nuestro tiempo: información. Transforma los datos personales, por ejemplo las transacciones financieras de un individuo, de modo que los datos sean más útiles en un contexto local. Maneja información de negocio para mejorar la competitividad, proporciona una vía para las redes de información alrededor del mundo (Internet) y proporciona los medios 






2. Etapas del desarrollo de software Etapas. Descripción. Identificación Las oportunidades son situaciones que se considera quede problemas, pueden mejorarse, perfeccionarse mediante el uso de los sistemas de oportunidades información. Es crucial para el éxito del resto del proyecto, requiere que se y objetivos. Observe de forma objetiva lo que ocurre en una organización o empresa, luego en conjunto con otros miembros o usuarios de la organización hacer notar los problemas. Se debe averiguar lo que la organización trata de conseguir, se podrá determinar si algunas funciones de las aplicaciones de los sistemas de información pueden contribuir a que la organización alcance sus objetivos aplicándolas a problemas u oportunidades específicos. Determinación Se determina la información que necesita los usuarios para llevar a cabo de los sus actividades. Entre las herramientas que se utilizan para determinar requerimientos los requerimientos de información de una organización se encuentran: de información. Métodos interactivos (entrevistas, muestreos, investigación de datos impresos y aplicación de cuestionarios). Métodos que no interfieren con el usuario como la observación del comportamiento de los encargados de tomar las decisiones y sus entornos de trabajo. Análisis de las Se analizan las necesidades propias del sistema, se utilizan los necesidades de diagramas de flujo de datos que cuentan con una técnica estructurada sistema. para representar en forma gráfica la entrada de datos, procesos y salida de información. También se analizan las decisiones estructuradas por realizar. Diseño del Se usa la información recolectada y se elabora el diseño lógico de sistema sistemas de información, se diseña también los procedimientos precisos recomendado. de captura de datos, con la finalidad de que los datos que se introducen en el sistema de información sean los correctos. También incluye el
3. diseño de los archivos o la base de datos que almacenará los datos requeridos por quien toma las decisiones en la organización. Desarrollo y Dentro de las técnicas estructuradas para el diseño y documentación documentación del software se tienen: del software. Método HIPO. Los diagramas de flujo. Los diagramas Nassi-Schneiderman. Los diagramas Warnier-Orr. El pseudocódigo. Pruebas y En esta etapa todo sistema de información debe probarse antes de ser mantenimiento utilizado, así se reduce el coste al encontrar problemas y errores antes del del sistema. uso del sistema. Esta etapa se desarrolla de la siguiente manera: 1. Se realizan las pruebas con datos de muestra para determinar con precisión cuáles son los problemas. 2. Se realiza otra con datos reales del sistema actual. Implementación La última etapa del desarrollo del sistema; incluye lay evaluación capacitación que el usuario requerirá, impartido por eldel sistema. Fabricante (manuales de usuario y manuales técnicos). Aunque la evaluación del sistema se plantea como parte de la última etapa del ciclo de desarrollo de los sistemas; Realmente la evaluación toma parte de cada una. Incluso durante el uso del sistema se puede seguir evaluando el mismo. Uno de los criterios fundamentales que debe satisfacerse, es que el futuro usuario utilice el sistema desarrollado. A veces suelen encontrarse errores o vulnerabilidades en el sistema por lo que la evaluación no debe terminarse, para así en su caso aplicar arreglos (actualizaciones, parches, etcétera.)









Tecnologías de desarrollo estructurado
Las tecnologías de desarrollo estructurado son las más convencionales de las empleadas hoy día. Han surgido de la evolución de las ideas de programación estructurada (hace más de veinticinco años) hacia las fases iníciales del ciclo de vida. En su formulación actual, las notaciones empleadas en las prime-ras fases del ciclo de vida (especificación de requisitos de usuario y sistema)suelen estar constituidas por lenguajes gráficos que permiten: identificarle sistema y el entorno; representar el flujo de información entre los elementos; y, describir los datos y las actividades del sistema [12].La idea base de esta tecnología es que es posible estructurar el modelo de un sistema de software en base a funciones que procesan informa-cien que reciben de otras funciones (o del exterior) y dirigen la información procesada a otros módulos funcionales (o al exterior). El enfoque seguido, por tanto, es el de pensar en las funciones del sistema necesarias (extraídas de los requisitos del sistema) y luego en los datos que requieren.
Las tecnologías de desarrollo estructurado han demostrado sus limitaciones a la hora de organizar y facilitar la evolución de sistemas de software complejos. La descomposición en funciones hace difícil al diseñador mantener la relación con los objetos del mundo real sobre los que se modifican generalmente los requisitos del usuario.
Los métodos de descomposición orientada a objetos constitúyanla tendencia más influyente observada en la ingeniería de sistemas de software en los últimos años. Con ellos nos referimos a un conjunto de métodos (aún en fase de desarrollo o evolución) que permiten al analista diseñador concebir su sistema identificando clases de objetos, opera-ciones permitidas y relaciones entre ellos como base para la estructuradle sistema a diseñar.







1.5 Definición 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 los analistas, ingenieros de software y desarrolladores, durante todos los pasos del Ciclo debida de desarrollo de un Software. Como es sabido, los estados en el Ciclo de Vida de desarrollo de un Software son: Investigación Preliminar, Análisis, Diseño, Implementación e Instalación.
CASE se define también como:
Conjunto de métodos, utilidades y técnicas que facilitan la automatización delciclo de vida del desarrollo de sistemas de información, completamente o enalguna de sus fases.
La sigla genérica para una serie de programas y una filosofía de desarrollo de software que ayuda a automatizar el ciclo de vida de desarrollo de los sistemas.
Una innovación en la organización, un concepto avanzado en la evolución de tecnología con un potencial efecto profundo en la organización. Se puede ver alCASE como la unión de las herramientas automáticas de software y las metodologías de desarrollo de software formales.

Historia de las Herramientas CASE
Las Herramientas CASE tienen su inicio con el simple procesador de palabras que fue usado para crear y manipular documentación. Los setentas vieron la introducción de técnicas gráficas y diagramas de flujo de estructuras de datos. Sobre este punto, el diseño y especificaciones en forma pictórica han sido extremadamente complejos y consumían mucho tiempo para realizar cambios.
La introducción de las herramientas CASE para ayudar enaste proceso ha permitido que los diagramas puedan ser fácilmente creados y modificados, mejorando la calidad delos diseños 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 diseño de flujo de datos y análisis estructural, hecho posible a través de las mejoras en las Herramientas CASE.
Pronto se reemplazaron el paquete gráficos por paquetes especializados que habilitan la edición, actualización e impresión en múltiples versiones de diseño. Eventualmente, las herramientas gráficas integradas con diccionarios de base de datos para producir poderosos diseños y  desarrollar herramientas, podrían sostener ciclos completos de diseño de documentos.
Como un paso final, la verificación de errores y generadores de casos de pruebas fue incluidos para validar el diseño del software. Todos estos procesos pueden saberse integrados en una simple herramienta CASE que soporta todo el ciclo de desarrollo.


Clasificación de las Herramientas Case
No existe una única clasificación de herramientas CASE y, en ocasiones, es difícil incluirlas en una clase determinada. Podrían 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 función de las fases del ciclo de vida abarcadas, se pueden agrupar de la forma siguiente:
1. Herramientas integradas, I-CASE (Intégrate CASE, CASE integrado):abarcan todas las fases del ciclo de vida del desarrollo de sistemas. Sollamadas también CASE workbench.
2. Herramientas de alto nivel, U-CASE (Upper CASE - CASE superior) ofront-end, orientadas a la automatización y soporte de las actividadesdesarrolladas durante las primeras fases del desarrollo: análisis y diseño.
3. Herramientas de bajo nivel, L-CASE (Lower CASE - CASE inferior) oback-end, dirigidas a las últimas fases del desarrollo: construcción eimplantación.
4. Juegos de herramientas o Tools-Case, son el tipo más simple deherramientas CASE. Automatizan una fase dentro del ciclo de vida. Dentrode este grupo se encontrarían las herramientas de reingeniería, orientadasa la fase de mantenimiento

6 comentarios: