CAPITULO II MARCO TEORICO SOBRE ARQUETIPOS, SISTEMAS, SOFTWARE, ESTANDARES Y ESTRATEGIA. A. ARQUETIPOS Un arquetipo es un modelo o prototipo de una obra material o intelectual. Idea ejemplar de las cosas, modelo ideal. 1. GENERALIDADES SOBRE MODELOS Los modelos, suministran una guía con el fin de ordenar las diversas actividades técnicas en el proyecto de desarrollo de software e intentan suministrar un marco para la administración en el desarrollo y el mantenimiento. Aunque todos ellos son compatibles unos con otros, un proyecto puede decidir cuáles enfoques son más útiles en situaciones especiales. El identificar los riesgos en proyectos, evaluar su impacto, monitorear y controlar el avance del desarrollo del proyecto, permite al desarrollador aumentar las posibilidades de éxito de un proyecto o, minimizar las posibilidades de fracaso de éste. Una reorientación de los actuales Sistemas de Información debe dejar de lado los criterios y modelos seguidos hasta ahora y debe determinar aquellos aspectos que ofrezcan un diseño integrado, más estándar y de fácil evolución en el tiempo. Entre los principales aspectos a considerar en el nuevo diseño están: • Obtener una visión total e integrada del Sistema de Información para el conjunto de la Organización. • Crear y definir normas y estructuras de diseño. • Empezar a orientar la construcción de los Sistemas de Información bajo conceptos de componentes para la fabricación de información, contemplando la reutilización de los módulos, la especialización de funciones y la conectividad entre todo el conjunto de piezas que la integran. • Orientar los Sistemas de Información hacia los Usuarios y Clientes. • La mejora de la calidad percibida por el Cliente y los profesionales. • El incremento de la calidad productiva. • La mejora de la utilización y uso de los recursos. 1.1 Importancia de los Modelos Los modelos por una parte suministran una guía para los ingenieros de software con el fin de ordenar las diversas actividades técnicas en el proyecto; por otra parte, suministran un marco para la administración del desarrollo y el mantenimiento, en el sentido en que permiten estimar recursos, definir puntos de control intermedios y monitorear el avance. 2. CONCEPTO DE MODELOS Arquetipo o punto de referencia para imitarlo o reproducirlo.1 Representación en pequeño de alguna cosa.2 Esquema teórico, de un sistema o una realidad compleja, que se elabora para facilitar su comprensión y el estudio de su comportamiento. Simulación de un sistema que existe en un mundo real, la creación de un modelo pretende una mejor comprensión de un prototipo (el sistema que sé esta modelando) mediante la revisión o modificación de las características de un modelo, el usuario puede hacer inferencias acerca del comportamiento del prototipo. 1 2 Diccionario de la Lengua Española, Editorial Espasa Calpe, Vigésima segunda edición 2000 Ídem 3. CLASIFICACIÓN DE LOS MODELOS Existen diversos modelos para la elaboración de software, en este documento se muestran los más conocidos y utilizados 3.1 Modelo del Ciclo de Vida. El ciclo de vida es el conjunto de actividades que los analistas, diseñadores y usuarios realizan para desarrollar e implantar un sistema de información. Un modelo de ciclo de vida define el estado de las fases a través de las cuales se mueve un proyecto de desarrollo de software. El método de Ciclo de Vida para desarrollo de sistemas consta de varias fases las cuales varían de un autor a otro3, las cuales se definen así: a) Identificación de problemas, oportunidades y objetivos. b) Determinación de los requerimientos de información. c) Análisis de las necesidades del sistema. d) Diseño del sistema recomendado. e) Desarrollo y documentación del software. f) Prueba y mantenimiento del sistema. g) Implantación y evaluación del sistema. 3.2 Modelo Cascada. Este es el más básico de todos los modelos, y sirve como bloque de construcción para los demás modelos de ciclo de vida. La visión del modelo cascada del desarrollo de software es muy simple; dice que el desarrollo de software puede ser a través de una secuencia simple de fases. Cada fase tiene un conjunto de metas bien definidas, y las actividades dentro de una fase contribuyen a la satisfacción de metas de esa fase o quizás a una subsecuencia de metas de la fase. 3 Según kendal & kendal, Análisis y Diseño de Sistemas, pg. 7 El modelo de ciclo de vida cascada, captura algunos principios básicos: a) Planear un proyecto antes de embarcarse en él. b) Definir el comportamiento externo deseado del sistema antes de diseñar su arquitectura interna. c) Documentar los resultados de cada actividad. d) Diseñar un sistema antes de codificarlo. e) Testar un sistema después de construirlo. 3.3 Modelo de Prototipos El prototipo es dado a los usuarios, clientes o representantes de ellos, posibilitando que ellos lo experimenten. Estos individuos luego proveen la retroalimentación sobre lo que a ellos les gustó y no les gustó acerca del prototipo proporcionado, quienes capturan en la documentación actual de la especificación de requerimientos la información entregada por los usuarios para el desarrollo del sistema real. El prototipado puede ser usado como parte de la fase de requerimientos (determinar requerimientos) o justo antes de la fase de requerimientos (como predecesor de requerimientos). 3.3.1 Modelo de Prototipado de Requerimientos El prototipado de requerimientos es la creación de una implementación parcial de un sistema, para el propósito explícito de aprender sobre los requerimientos del sistema. Un prototipo es construido de una manera rápida tal como sea posible. El Prototipado ha sido usado frecuentemente en la década de los 90’s, porque la especificación de requerimientos para sistemas complejos tiende a ser relativamente dificultoso de cursar. Muchos usuarios y clientes encuentran que es mucho más fácil proveer retroalimentación convenientemente basada en la manipulación, desde un prototipo, en vez de leer una especificación de requerimientos potencialmente ambigua y extensa. Diferente del modelo evolutivo donde los requerimientos mejor entendidos están incorporados, un prototipo generalmente se construye con los requerimientos entendidos más pobremente. 3.3.2 Modelo de Desarrollo Evolutivo Construye una serie de grandes versiones sucesivas de un producto. Sin embargo, mientras que la aproximación incremental presupone que el conjunto completo de requerimientos es conocido al comenzar, el modelo evolutivo asume que los requerimientos no son completamente conocidos al inicio del proyecto. En el modelo evolutivo, los requerimientos son cuidadosamente examinados, y sólo los que son bien comprendidos son seleccionados para el primer incremento. Los desarrolladores construyen una implementación parcial del sistema que recibe sólo estos requerimientos. El sistema es entonces desarrollado, los usuarios lo usan, y proveen retroalimentación a los desarrolladores. Basada en esta retroalimentación, la especificación de requerimientos es actualizada, y una segunda versión del producto es desarrollada y desplegada. El proceso se repite indefinidamente. 3.4 Modelo Incremental Los riesgos asociados con el desarrollo de sistemas largos y complejos son enormes. Una forma de reducir los riesgos es construir sólo una parte del sistema, reservando otros aspectos para niveles posteriores. El desarrollo incremental es el proceso de construcción siempre incrementando subconjuntos de requerimientos del sistema. Además el modelo incremental consta de lo siguiente: a) Combina elementos del modelo de cascada (aplicados repetitivamente) con la filosofía interactiva de construcción de prototipos. b) El primer incremento es un producto esencial (núcleo), se afrontan requisitos básicos y muchas funciones extras (conocidas o no) quedan para los siguientes incrementos. c) El cliente usa el producto central y en base a la utilización y/o evaluación se desarrolla un plan para el incremento siguiente. d) Este proceso se repite hasta que se elabora el producto completo. e) Es interactivo, al igual que el de construcción de prototipos y otros enfoques evolutivos. Pero a diferencia del modelo de construcción de prototipos, el modelo incremental entrega un producto operacional en cada incremento. f) Es útil cuando la dotación de personal no está disponible para una implementación completa. El primer incremento se pueden implementar con pocas personas. Si el producto central es bien recibido, se pueden añadir más personal. 3.5. Modelo Espiral En este modelo, el esfuerzo de desarrollo es iterativo. Tan pronto como uno completa un esfuerzo de desarrollo, otro comienza. Además, en cada desarrollo ejecutado, se pueden seguir estos cuatros pasos: a) Determinar qué se quiere lograr. b) Determinar las rutas alternativas que se pueden tomar para lograr estas metas. Por cada una, analizar los riesgos y resultados finales, y seleccionar la mejor. c) Seguir la alternativa seleccionada en el paso b. d) Establecer qué se tiene terminado. 3.6. Modelo Concurrente. Como el modelo espiral, el modelo concurrente provee una meta-descripción del proceso software. Mientras que la contribución primaria del modelo espiral es en realidad que esas actividades del software ocurran repetidamente, la contribución del modelo concurrente es su capacidad de describir las múltiples actividades del software ocurriendo simultáneamente. Esto no sorprende a nadie que ha estado involucrado con las diversas actividades que ocurren en algún tiempo del proceso de desarrollo de software. En vez de confinar las actividades de ingeniería de software a una secuencia de pasos, define una red de actividades. Todas las actividades de la red existen simultáneamente con otras. Los sucesos generados dentro de una actividad, o en algún otro lado de la red de actividad, inician las transiciones entre los estados de otra actividad. 3.7. Modelo sobre Técnicas de Cuarta Generación (4GL) a) Permite especificar el software usando lenguajes especializados o notaciones gráficas que describan el problema. b) Requiere usar alguna herramienta CASE (Computer-Aided Software Engineering) con herramientas tales como: SQL (Structured Query Language), generador de reportes, base de datos, definidores de pantallas, generadores de código, generador de gráficas, hoja de cálculo. c) Idealmente el cliente describe los requisitos, que son traducidos inmediatamente a un prototipo operativo. d) En aplicaciones pequeñas, se puede ir directamente a la implementación usando un lenguaje de cuarta generación (4GL). e) En aplicaciones grandes, el uso de 4GL sin diseño provocará los mismos problemas que los otros paradigmas (poca calidad, mantenimiento pobre y mala aceptación del cliente). f) El uso de 4GL permite al desarrollador centrarse en la representación de los resultados deseados. g) Para transformar una implementación 4GL en un producto, el desarrollador debe dirigir una prueba completa, hacer una buena documentación y ejecutar el resto de las actividades de integración requeridas en los otros paradigmas. Además, el software desarrollado con 4GL debe ser construido de modo que facilite el mantenimiento. B. SISTEMAS 1. GENERALIDADES DE SISTEMAS El término “sistema” es de uso común. Se habla de sistemas educativos, de sistemas de computación, de sistemas de teología, y de muchos otros. Los conceptos de sistemas proveen una infraestructura útil para la descripción y comprensión de muchos fenómenos organizacionales incluyendo las características de los sistemas de información. Los sistemas pueden ser abstractos o físicos. Un Sistema Abstracto, es una disposición de manera ordenada de ideas interdependientes o artefactos. Un Sistema Físico es un conjunto de elementos que operan conjuntamente para cumplir un objetivo. Un modelo general de un sistema físico es la entrada, el proceso y la salida. Las características que definen y que delinean un sistema configuran su límite. El sistema está por dentro de los límites; el medio ambiente está por fuera de los límites. Cada sistema está compuesto de “subsistemas”, los cuales a su vez son parte de otros subsistemas; cada subsistema delineado por sus límites. Las interconexiones y las interacciones entre los subsistemas se llaman interfaces. Las interfaces ocurren en el límite y toman la forma de entradas y de salidas. 2. CONCEPTO DE SISTEMAS4 Colección organizada de componentes que se optimizan para que funcionen como un todo. Es un conjunto o disposición de procedimientos o programas relacionados de manera que juntos forman una sola unidad. 4 www.monografias.com/trabajo6 2002 Documentación de Sistemas Un conjunto de hechos, principios y reglas clasificadas y dispuestas de manera ordenada mostrando un plan lógico en la unión de las partes. Un método, plan o procedimiento de clasificación para hacer algo. 3. CLASIFICACIÓN DE SISTEMA. Existen diferentes clases de sistemas dentro de las cuales están: a) Sistemas Determinísticos Un sistema determinístico opera de una manera predecible. La interacción entre las partes se conoce con certeza. Si se tiene la descripción de un estado del sistema en un momento dado además de una descripción de su operación, el siguiente estado del sistema se puede dar con exactitud, sin error. b) Sistemas Probabilísticos El sistema probabilístico se puede definir en términos de comportamiento probable; hay un cierto grado de error que siempre está asociado a la predicción de lo que hará este sistema. c) Sistemas Cerrados Un sistema es cerrado cuando ningún elemento de afuera entra y ninguno sale fuera del sistema. Estos alcanzan su estado máximo de equilibrio al igualarse con el medio (entropía, equilibrio). En ocasiones el término sistema cerrado es también aplicado a sistemas que se comportan de una manera fija, rítmica o sin variaciones, como sería el caso de los circuitos cerrados. d) Sistemas Abiertos Los sistemas abiertos intercambian información, materiales o energía con el medio ambiente incluyendo el azar y entradas no definidas. Los sistemas abiertos tienden a tener forma y estructura que les permiten adaptarse a los cambios de su medio ambiente en tal forma que puedan continuar su existencia. Son auto-organizados en el sentido de que modifican su organización en respuesta a las condiciones cambiantes. e) Sistemas Artificiales Los sistemas artificiales son creados, no ocurren en la naturaleza. Los sistemas artificiales están diseñados para apoyar los objetivos de los diseñadores y de los usuarios. Manifiestan, en consecuencia, las características del sistema que soportan. f) Sistemas HOMBRE-MAQUINA Los sistemas de información son generalmente sistemas hombre-máquina (o sistemas usuario-máquina) de modo tal que ambos desempeñan algunas de las actividades en el cumplimiento de una meta ( por ejemplo una toma de decisión). Los elementos de las máquinas ( hardware y software) son relativamente cerrados, y determinísticos, mientras que los elementos humanos del sistema son abiertos y probabilísticos. Son posibles varias combinaciones de hombre máquina. Un balance apropiado en la división de funciones, es decisivo para el desempeño exitoso de cada uno de los componentes en el cumplimiento de sus objetivos; de esta manera la división entre el hombre y la máquina variará de aplicación en aplicación. 4. ANALISIS Y DISEÑO DE SISTEMAS 4.1 Generalidades del Análisis y Diseño de Sistemas. Dentro de las organizaciones, el análisis y diseño de sistemas se refiere a examinar la situación de una empresa con el propósito de mejorarla con métodos y procedimientos más adecuados. El desarrollo de sistemas puede considerarse, en general, formado por dos grandes componentes: el análisis de sistemas y el diseño de sistemas. El análisis de sistemas, es el proceso de clasificación e interpretación de hechos, diagnóstico de problemas y empleo de la información para recomendar mejorar el sistema. El diseño de sistemas es el proceso de planificar, reemplazar o completar un requerimiento organizacional existente. Pero antes de llevar a cabo esta planeación es necesario comprender, en su totalidad, el viejo sistema y determinar la mejor forma en que se pueden, sí es posible, utilizar las computadoras para hacer la operación más eficiente. 4.2 Importancia del Análisis y Diseño de Sistemas En una organización o empresa, el análisis y diseño de sistemas, es el proceso de estudiar su situación con la finalidad de observar cómo trabaja y decidir si es necesario realizar una mejora; el encargado de llevar a cabo estas tareas es el analista de sistemas. Antes de comenzar con el desarrollo de cualquier proyecto, se conduce un estudio de sistemas para detectar todos los detalles de la situación actual de la empresa. La información reunida con este estudio sirve como base para crear varias estrategias de diseño. Los administradores deciden qué estrategias seguir. Los gerentes, empleados y otros usuarios finales que se familiarizan cada vez más con el uso de computadoras están teniendo un papel muy importante en el desarrollo de sistemas. Todas las organizaciones son sistemas que actúan de manera recíproca con su medio ambiente recibiendo entradas y produciendo salidas. Los sistemas que pueden estar formados por otros sistemas se denominan sub-sistemas y funcionan para alcanzar los fines de su implantación. 4.3 Análisis de Sistemas La función del Análisis puede ser dar soporte a las actividades de un negocio, o desarrollar un producto que pueda venderse para generar beneficios. Para conseguir este objetivo, un sistema basado en computadoras hace uso de seis elementos fundamentales: a) Software: programas de computadora, con estructuras de datos y su respectiva documentación que hacen efectiva la logística, metodología o controles de requerimientos del programa. b) Hardware: dispositivos electrónicos y electromecánicos, que proporcionan capacidad de cálculos y funciones rápidas, exactas y efectivas que proporcionan una función externa dentro de los sistemas. c) Personal: son los operadores o usuarios directos de las herramientas del sistema. d) Base de Datos: gran colección de información organizada y enlazada al sistema a la que se accede por medio del Software. e) Documentación: manuales, formularios y otra información descriptiva que detalla o da instrucciones sobre el empleo y operación del programa. f) Procedimientos: pasos que definen el uso específico de cada uno de los elementos o componentes del sistema y las reglas de su manejo y mantenimiento. Un Análisis de Sistemas se lleva a cabo teniendo en cuenta los siguientes objetivos en mente: a) Identificar las necesidades del Cliente. b) Evaluar que conceptos tiene el cliente del sistema para establecer su Viabilidad. c) Realizar un análisis técnico y económico. d) Asignar funciones al Hardware, Software, Personal, Base de Datos, y otros elementos del sistema. e) Establecer las restricciones de presupuestos y planificación temporal. f) Crear una definición del sistema que forme el fundamento de todo el trabajo de Ingeniería. 4.4 Diseño de Sistemas El diseño es una representación significativa de algo que se va a construir. Se puede efectuar el seguimiento basándose en los requisitos del usuario, y al mismo tiempo la calidad se puede evaluar y cotejar con el conjunto de criterios predefinidos. El diseño comienza con el modelado de los requisitos, se trabaja para transformar este modelo y obtener cuatro niveles de detalle de diseño: a) La estructura de datos. b) Arquitectura del sistema. c) Representación de la interfaz. d) Detalles a nivel de componente. Durante cada una de las actividades del diseño, se aplican los conceptos y principios básicos que llevan a obtener una alta calidad. 4.5 Etapas del Diseño El Diseño de Sistemas se define como el proceso de aplicar ciertas técnicas y principios con el propósito de definir un dispositivo, un proceso o un sistema, con suficientes detalles como para permitir su interpretación y realización física. Encierra cuatro etapas: a) Diseño de los Datos. Trasforma el modelo de dominio de la información, creado durante el análisis, en las estructuras de datos necesarios para implementar el Software. b) Diseño Arquitectónico. Define la relación entre cada uno de los elementos estructurales del programa. c) Diseño de la Interfaz. Describe cómo se comunica el Software consigo mismo, con los sistemas que operan junto con él y con los operadores y usuarios que lo emplean. d) Diseño de Procedimientos. Transforma elementos estructurales de la arquitectura del programa. La importancia del Diseño del Software se puede definir en una sola palabra Calidad, dentro del diseño es donde se fomenta la calidad del proyecto. El Diseño es la única manera de materializar con precisión los requerimientos del cliente. El diseño debe implementar todos los requisitos explícitos contenidos en el modelo de análisis y debe acumular todos los requisitos implícitos que desea el cliente. Debe ser una guía que puedan leer y entender los que construyan el código y los que prueban y mantienen el Software. El Diseño debe proporcionar una completa idea de lo que es el Software, enfocando los dominios de datos, funcional y comportamiento desde el punto de vista de la Implementación. El Diseño del Software es un proceso y un modelado a la vez. El proceso de Diseño es un conjunto de pasos repetitivos que permiten al diseñador describir todos los aspectos del Sistema a construir. A lo largo del diseño se evalúa la calidad del desarrollo del proyecto con un conjunto de revisiones técnicas. 4.6. Diseño de la Salida. En este caso salida se refiere a los resultados e informaciones generadas por el Sistema. Para la mayoría de los usuarios la salida es la única razón para el desarrollo de un Sistema y la base de evaluación de su utilidad. 4.7. Diseño de Archivos. Incluye decisiones con respecto a la naturaleza y contenido del propio archivo, como si se fuera a emplear para guardar detalles de las transacciones, datos históricos o información de referencia. Entre las decisiones que se toman durante el diseño de archivos, se encuentran las siguientes: a) Los datos que deben incluirse en el formato de registros contenidos en el archivo. b) La longitud de cada registro, con base en las características de los datos que contenga. c) La secuencia a disposición de los registros dentro del archivo . d) La estructura de almacenamiento que puede ser secuencial, indexada o relativa. 4.8 Diseño de Interacciones con la Base de Datos. La mayoría de los sistemas de información ya sean implantado en sistemas de cómputos grandes o pequeños, utilizan una base de datos que pueden abarcar varias aplicaciones, por esta razón estos sistemas utilizan un administrador de base de datos, en este caso el diseñador no construye la base de datos sino que consulta a su administrador para ponerse de acuerdo en el uso de esta en el sistema. 5. DESARROLLO DE SOFTWARE 5.1 Generalidades del Desarrollo de Software Uno de los factores que más influyen en el proceso de desarrollo de software y que prácticamente acompaña a toda aplicación es el hecho de que en su mayoría, no hay forma de tener todos los requerimientos corregidos antes del desarrollo del software. Muchas veces los requerimientos emergen a medida que la aplicación o parte de ella esta disponible para experimentación práctica. En todos los casos, el trabajo comienza con la determinación de objetivos, alternativas y restricciones, paso que a veces se llama recolección preliminar de requisitos. El cambio es una propiedad intrínseca del software. Hoy en día el software debe poseer un enfoque evolutivo, un sistema debe evolucionar para acomodar la naturaleza evolutiva de los grandes sistemas. constantemente, debido a la necesidad de repararlo El software cambia (eliminando errores no detectados anteriormente) como a la necesidad de apoyar la evolución de los sistemas a medida que aparecen nuevos requerimientos o cambian los antiguos. El proceso de desarrollo o elaboración de software es un conjunto de actividades que varían según la organización y el tipo de sistema que se desarrolla, por lo que la gestión exige disponer de un modelo. Son características de un proceso de software: claridad, fiabilidad, visibilidad, robustez, facilidad de soporte, facilidad de mantenimiento, aceptación y rapidez 5.2 Factibilidad de Realizar un Proyecto (Software). Las investigaciones preliminares examinan la factibilidad del proyecto, la posibilidad de que el sistema sea de utilidad para la organización. Se estudian las pruebas factibles siguientes: a) Factibilidad Técnica. Entre los aspectos técnicos comunes que aparezcan durante la etapa de factibilidad de la investigación, se incluyen los siguientes: a.1) ¿Se cuenta con la tecnología adecuada? a.2) ¿El sistema propuesto ofrecerá respuestas adecuadas a las peticiones sin importar él numero de usuarios? El análisis de factibilidad técnica evalúa si el equipo y software están disponibles (o, en el caso del software, si puede desarrollarse) y si tienen las capacidades técnicas requeridas por cada alternativa del diseño que se esté considerando. Los estudios de factibilidad técnica también consideran las interfases entre los sistemas actuales y nuevo. Los estudios de factibilidad técnica también consideran si la organización tiene el personal que posee la experiencia técnica requerida para diseñar, implementar, operar y mantener el sistema propuesto. Si el personal no tiene esta experiencia, puede entrenársele o pueden emplearse nuevos o consultores que la tengan. Sin embargo, una falta de experiencia técnica dentro de la organización puede llevar al rechazo de una alternativa particular. b) Factibilidad Financiera y Económica Un sistema que puede ser desarrollado desde el punto de vista técnico y que, además, será utilizado, debe ser una buena inversión para la organización. Los beneficios financieros deben igualar o exceder a los costos. Las cuestiones económicas y financieras formuladas, tienen el propósito de estimar lo siguiente: b.1) El costo de llevar a cabo el sistema b.2) El costo de inversión de equipo (hardware) y el costo del software para realizar la aplicación. b.3) Beneficios a obtener. c) Factibilidad Operacional Esta factibilidad comprende una determinación de la probabilidad de que un nuevo sistema se use como se supone. Deberían considerarse cuatro aspectos de la factibilidad operacional por lo menos. Primero, un nuevo sistema puede ser demasiado complejo para los usuarios de la organización o los operadores del sistema. Si lo es, los usuarios pueden ignorarlo o bien usarlo en tal forma que cause errores o fallas en el sistema. Segundo, un sistema puede hacer que los usuarios se resistan a él como consecuencia de una técnica de trabajo, miedo a ser desplazados, intereses en el sistema antiguo u otras razones. Para cada alternativa debe explorarse con cuidado la posibilidad de resistirse al cambio al nuevo sistema. Tercero, un nuevo sistema puede introducir cambios demasiado rápido para permitir al personal adaptarse a él y aceptarlo. Un cambio repentino que se ha anunciado, explicado y “vendido” a los usuarios con anterioridad puede crear resistencia. Sin importar qué tan atractivo pueda ser un sistema en su aspecto económico si la factibilidad operacional indica que tal vez los usuarios no aceptarán el sistema o que su uso resultará en muchos errores o en una baja en la moral, el sistema no debe implantarse. Una última consideración es la probabilidad de la obsolescencia subsecuente en el sistema. La tecnología que ha sido anunciada pero que aún no está disponible puede ser preferible a la tecnología que se encuentra en una o más de las alternativas que se están comparando, o cambios anticipados en las prácticas o políticas administrativas pueden hacer que un nuevo sistema sea obsoleto muy pronto. En cualquier caso, la implantación de la alternativa en consideración se convierte en impráctica. Un resultado frecuente de hallazgos negativos acerca de la factibilidad operacional de un sistema es que éste no se elimina sino que se simplifica para mejorar su uso. Otras posibilidades son que los programas de relaciones públicas o de entrenamiento estén diseñados para enfocarse a sobreponerse a la resistencia a un nuevo sistema, o se desarrollan formas para hacer fases en el nuevo sistema en un largo periodo para que el cambio total, que traumatizaría a los usuarios u operadores, se convierta en una serie de pequeños cambios. 5.3 Etapas del Desarrollo de Software El desarrollo de software implica la puesta en marcha de las siguientes etapas: a) Análisis. b) Diseño. c) Implementación. d) Prueba. e) Instalación. f) Mantenimiento. 5.4 Riesgo en el Desarrollo de Software En primer lugar definir en forma precisa lo que es el riesgo en el desarrollo de software resulta un tanto difícil; por lo que riesgo implica: • Incertidumbre. El acontecimiento que caracteriza al riesgo puede o no puede ocurrir. • Pérdida. Si el riesgo se convierte en una realidad, ocurrirán consecuencias no deseadas o pérdidas. Se tiene riesgo al disponer de una información inadecuada o imprecisa, este hecho se puede reducir disponiendo de información que reduzca incertidumbres. El riesgo inherente en las actividades es una medida de la incertidumbre de los resultados por lo que se puede decir que a menor información mayor riesgo en el desarrollo de software. El riesgo latente en el desarrollo de software también puede afectar al mejor modelo que se está aplicando para su desarrollo, por lo mismo, se debe saber qué modelo aplicar ante el desarrollo de cada sistema. De acuerdo al nivel de incertidumbre y el grado de pérdidas asociado con cada riesgo se pueden determinar las siguientes categorías: a) Riesgos del proyecto: amenazan al plan del proyecto. b) Riesgos técnicos: amenazan la calidad y la planificación temporal del software que hay que producir y si se convierte en realidad, la implementación puede llegar a ser difícil o imposible. c) Riesgos del negocio: amenazan la viabilidad del software a construir. d) Riesgos conocidos: son los que se pueden determinar después de una cuidada evaluación del plan del proyecto. 5.5 Visibilidad del Proceso de Desarrollo de Software Dada la naturaleza intangible del proceso de desarrollo de software es necesario la elaboración de un documento que permita seguir la marcha del proceso de esta manera se está logrando que el proceso de software sea visible a otros posibles usuarios tomando en cuenta lo siguiente: 1. No formular documentos más de lo necesario lo cual encarece el proceso. 2. El tiempo que se necesita para revisar y aprobar un proceso es significativo. 5.6 Fundamentos de Desarrollo de Software Existen dos conceptos importantes a considerar en los sistemas de procesamiento de la información como son: 1. Hardware. Conjunto de componentes físicos de una computadora. 2. Software. Conjunto de programas que controlan el funcionamiento de una computadora. Es muy importante saber que un programador de computadora es antes que nada una persona que resuelve problemas de un modo riguroso y sistemático; es decir haciendo uso de la metodología necesaria para resolver problemas mediante programas. 5.7 Resolución de Problemas a través de un Software La principal razón para que las personas aprendan a desarrollar software en general y los lenguajes de programación en particular es utilizar la computadora como una herramienta para la resolución de problemas. La resolución de un problema se puede dividir en tres fases: a) Análisis del problema. b) Diseño o desarrollo de un algoritmo. c) Resolución del algoritmo en la computadora. Para el desarrollo de software se utilizan diferentes tipos de lenguajes entre los que se tienen: a. Lenguaje de Bajo Nivel Los lenguajes de bajo nivel son más fáciles de utilizar que los lenguajes máquina, pero, al igual que ellos, dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador y las instrucciones utilizadas son conocidas como nemotécnicas; el programa original escrito en ensamblador se denomina programa fuente. Son ventajas de los lenguajes de bajo nivel: la facilidad de codificación y la mayor velocidad de cálculo. Son desventajas de los lenguajes de bajo nivel: la dependencia total de la máquina (lo que impide la transportabilidad de los programas) y la formación de los programadores es más compleja que la correspondiente a los programadores de alto nivel porque no sólo son requeridas las técnicas de programación, sino también el conocimiento del interior de la máquina. b. Lenguaje de Alto Nivel. Los lenguajes de alto nivel son los más utilizados por los programadores ya que están diseñados para que las personas escriban y entiendan los programas de un modo mucho más fácil que los lenguajes de máquina y ensambladores. Son ventajas de los lenguajes de alto nivel: el tiempo de formación de los programadores es relativamente corto comparado con otros lenguajes, la escritura de programas se basa en reglas sintácticas similares a los lenguajes humanos, las modificaciones y puesta a punto de los programas son más fáciles, la reducción del coste de los programas y la transportabilidad. Son desventajas de los lenguajes de alto nivel: el incremento del tiempo de puesta a punto, no se aprovechan los recursos internos de la máquina, el aumento de la ocupación de memoria y el tiempo de ejecución de los programas es mucho mayor. C. SOFTWARE 1. CONCEPTO DE SOFTWARE5 Conjunto de programas, instrucciones y reglas informáticas para ejecutar o crear ciertas tareas en una computadora. Programas de computadora en contraste con el equipo físico en el que son ejecutados (hardware). Por convención el software se divide en dos categorías, software de sistemas, programa necesario para operar la computadora y programas de aplicación que permiten a los usuarios desarrollar tareas, utilizando la computadora. 2. CONTROL DE CALIDAD DEL SOFTWARE 2.1 Calidad en el Software Los desarrolladores de software convergen en que un software de alta calidad es una de las metas más importantes que deben cumplir; pero es difícil definir la calidad, ya que el software en su gran extensión, como entidad intelectual es 5 www.monografias.com/trabajo7 2002 Análisis y Diseño de Sistemas difícil de caracterizar la calidad que posee en comparación con los objetos físicos; sin embargo sí existen las medidas de características de un programa ante las cuales se tienen: Complejidad ciclomática, cohesión, números de puntos de función, líneas de código. Una interpretación de calidad del software tiende al rendimiento establecido, los estándares de desarrollo explícitamente documentados y las características implícitas que se esperan de todo software desarrollado profesionalmente; es decir hacer énfasis en: • Los requisitos del software son la base de las medidas de la calidad, lo que se traduce a que si existe una falta de concordancia de los requisitos entonces se da una falta de calidad. • Estándares específicos definen un conjunto de criterios de desarrollo que guían la manera en que se desarrolla el software • El software debe cumplir con los requisitos explícitos; pero también con los implícitos (por ejemplo facilidad de mantenimiento) ya que de no ser así la calidad del software no será fiable. La calidad en el desarrollo de software se puede clasificar en dos tipos como son: a. LA CALIDAD DEL DISEÑO. Se refiere a las características que especifican los desarrolladores de software para un producto lo que significa que el software se desarrolla, no se fabrica. El coste está fundamentalmente en el proceso de diseño, no en la posterior producción en serie, y los errores se introducen también en el diseño, no en la producción. Por lo tanto es importante destacar que la calidad de un producto software debe ser considerada en todos sus estados de evolución (especificaciones, diseño, códigos). No basta con verificar la calidad del producto una vez finalizado cuando los problemas de mala calidad ya no tienen solución o su reparación es muy costosa. b. LA CALIDAD DE CONCORDANCIA. Es el grado de cumplimiento de las especificaciones de diseño durante su realización 2.2 Control, Garantía y Coste de Calidad El Control de Calidad es una serie de inspecciones, revisiones y pruebas utilizadas a lo largo del ciclo de desarrollo para asegurar que cada requerimiento cumple con los requisitos que le han sido asignados. Las actividades de control de calidad pueden ser manuales, completamente automáticas o una combinación de herramientas automáticas e interacción humana. La Garantía de Calidad o el Aseguramiento de la Calidad, consiste en la auditoria y las funciones de información de la gestión. El objetivo de la garantía de calidad es; proporcionar la gestión, para informar de los datos necesarios sobre la calidad del producto, por lo que se va adquiriendo una visión más profunda y segura de que la calidad del producto está cumpliendo sus objetivos. El Coste de calidad, incluye todos los costes acarreados en la búsqueda de la calidad o en las actividades relacionadas con la obtención de la calidad. Se realizan estudios sobre el coste de calidad para proporcionar una línea base del coste actual de calidad, para identificar oportunidades de reducir este coste, y para proporcionar una base normalizada de comparación. Los costes de calidad se pueden dividir en costes asociados con la prevención, la evaluación y los fallos. Entre los costes de prevención se incluyen: planificación de la calidad, revisiones técnicas formales, equipo de pruebas y formación. Entre los costes de evaluación se incluyen actividades para tener una visión más profunda de la condición del producto; como por ejemplo: inspección en el proceso y entre procesos, calibrado y mantenimiento del equipo y pruebas. Los costes de fallos son los costes que desaparecerían si no surgieran defectos antes de la entrega de un producto a los clientes. Los costes de fallos se pueden dividir en: costes de fallos internos y costes de fallos externos. Los Costes de Fallos Internos, se producen cuando se detecta un error en el producto antes de la puesta en marcha Los Costes de Fallos Externo, son los que se asocian a los defectos encontrados una vez entregado el producto al cliente. 2.3 Factores de Calidad en el Software Los factores que afectan a la calidad del software se pueden categorizar en dos grupos: • Factores que se pueden medir directamente (defectos por punto de función). • Factores que se pueden medir solo indirectamente (facilidad de uso o de mantenimiento) El modelo de calidad de software organiza los factores en dos ejes o puntos de vista desde los cuales el usuario puede contemplar la calidad de un producto, basándose en once factores de calidad organizados en torno a los dos ejes y a su vez cada factor se desglosa en otros criterios: Puntos De Factor Criterios Vista O Ejes - Facilidad de operación: Atributos del software que determinan OPERACIÓN Facilidad de uso la facilidad de operación del software. DEL PRODUCTO -Facilidad de comunicación: Atributos del software que proporcionan entradas y salidas fácilmente asimilables. - Facilidad de aprendizaje: Atributos del software que facilitan la familiarización inicial del usuario con el software y la transición del modo actual de operación. - Formación: El grado en que el software ayuda para permitir que nuevos usuarios apliquen el sistema. - Control de accesos: Atributos del software que proporcionan Integridad control de acceso al software y los datos que maneja. - Facilidad de auditoría: Atributos del software que facilitan la auditoría de los accesos al software. - Seguridad: La disponibilidad de mecanismos que controlen o protejan los programas o los datos. - Completitud: Atributos del software que proporcionan la Corrección implementación completa de todas las funciones requeridas. - Consistencia: uniformidad OPERACIÓN en Atributos las del técnicas software y que notaciones proporcionan de diseño e implementación. DEL - Trazhabilidad o rastrehabilidad: Atributos del software que PRODUCTO proporcionan una traza desde los requisitos a la implementación con respecto a un entorno operativo concreto. - Precisión: Atributos del software que proporcionan el grado de Fiabilidad precisión requerido en los cálculos y los resultados. - Tolerancia a fallos: Atributos del software que posibilitan la continuidad del funcionamiento bajo condiciones no usuales. - Modularidad: Atributos del software que proporcionan una estructura de módulos altamente independientes. - Simplicidad: Atributos del software que posibilitan la implementación de funciones de la forma más comprensible posible. - Exactitud: La precisión de los cálculos y del control. - Eficiencia en ejecución: Atributos del software que minimizan el Eficiencia tiempo de procesamiento. - Eficiencia en almacenamiento: Atributos del software que minimizan el espacio de almacenamiento necesario. REVISIÓN DEL - Modularidad: Atributos del software que proporcionan una Facilidad de estructura de módulos altamente independientes. PRODUCTO mantenimiento - Simplicidad: Atributos del software que posibilitan la implementación de funciones de la forma más comprensible posible. - Consistencia: uniformidad en Atributos las del técnicas software y que notaciones proporcionan de diseño e implementación. - Concisión: Atributos del software que posibilitan la implementación de una función con la menor cantidad de códigos posible. - Auto descripción: Atributos del software que proporcionan explicaciones sobre la implementación de las funciones. - Modularidad: Atributos del software que proporcionan una Facilidad REVISION prueba de estructura de módulos altamente independientes. - Simplicidad: Atributos del software que posibilitan la implementación de funciones de la forma más comprensible DEL posible. PRODUCTO - Auto descripción: Atributos del software que proporcionan explicaciones sobre la implementación de las funciones. - Instrumentación: Atributos del software que posibilitan la observación del comportamiento del software durante su ejecución para facilitar las mediciones del uso o la identificación de errores. - Auto descripción: Atributos del software que proporcionan Flexibilidad explicaciones sobre la implementación de las funciones. - Capacidad de expansión: Atributos del software que posibilitan la expansión del software en cuanto a capacidades funcionales y datos. - Generalidad: Atributos del software que proporcionan amplitud a las funciones implementadas. - Modularidad: Atributos del software que proporcionan una estructura de módulos altamente independientes. - Auto descripción: Atributos del software que proporcionan Reusabilidad explicaciones sobre la implementación de las funciones. - Generalidad: Atributos del software que proporcionan amplitud a las funciones implementadas. - Modularidad: Atributos del software que proporcionan una estructura de módulos altamente independientes. -Independencia entre sistema y software: Atributos del software que determinan su dependencia del entorno operativo. - Independencia del hardware: Atributos del software que determinan su dependencia del hardware. - Modularidad: Atributos del software que proporcionan una Interoperabilidad estructura de módulos altamente independientes. - Compatibilidad de comunicaciones: Atributos del software que posibilitan el uso de protocolos de comunicación e interfaces estándar. - Compatibilidad de datos: Atributos del software que posibilitan el uso representaciones de datos estándar. - Estandarización en los datos: El uso de estructuras de datos y de tipos estándar a lo largo de todo el programa. - Auto descripción: Atributos del software que proporcionan Portabilidad explicaciones sobre la implementación de las funciones. - Modularidad: Atributos del software que proporcionan una estructura de módulos altamente independientes. -Independencia entre sistema y software: Atributos del software que determinan su dependencia del entorno operativo. - Independencia del hardware: Atributos del software que determinan su dependencia del hardware. D. ESTÁNDARES 1. GENERALIDADES DE ESTANDARES La Organización Internacional de Normalización (ISO) es una federación mundial de organismos nacionales de normalización cuyos comités técnicos elaboran las normas internacionales. Todos los organismos miembros interesados en una materia y para la cual se haya instituido un comité técnico, tienen el derecho de estar representados en dicho comité. Los proyectos de normas internacionales (DIS) adoptados por los comités técnicos son enviados a los organismos miembros para su votación. En 1985 la Comunidad Económica Europea emitió una resolución donde ponía de manifiesto la necesidad de aproximación técnica de las empresas europeas para la correcta implantación del libre mercado, así mismo instaba a los organismos de estandarización a buscar una normativa que asegurase la conformidad de servicios, productos, sistemas y procesos a la que pudiesen acogerse las empresas con el fin de lograr esta conversión técnica. En el año 1987 se adopta en Europa a través del Comité Europeo de Normalización (CEN) la serie de normas ISO 9000 como referencia para la certificación de sistemas de calidad. En 1994 estas normas son revisadas y nuevamente en el año 2000, tal como establecen los protocolos ISO que obligan a revisar las normas cada 5 años. Las ISO 9000:2000 están compuestas por 4 normas básicas, complementadas con un número reducido de otros documentos ( guías, informes técnicos y especificaciones técnicas) que con mayor claridad de lenguaje establecen las siguientes características principales: incrementar el compromiso de la dirección, orientación a los procesos, incluir la satisfacción del cliente y mejora continua. ESTRUCTURA DE LAS ISO 9000:2000 a) ISO 9000:2000. Sistema de Gestión de Calidad, principios y vocabularios donde se establece la terminología y definiciones utilizadas en ella. b) ISO 9001:2000. Los Requerimientos del Sistema de Gestión de Calidad, para su utilización como un medio de asegurar la conformidad de los productos y servicios y puede ser utilizada con fines de certificación c) ISO 9004:2000. Recomendaciones sobre todos los aspectos de un Sistema de Gestión de Calidad, para mejorar las prestaciones globales de una organización. d) ISO1 9011:2000. Auditorias, todas estás han sido modificadas por las siguientes directrices: • Simplicidad de uso y vocabulario actualmente utilizado por las organizaciones. • Aplicable a todas las categorías genéricas de productos (hardware, software, materiales procesados y servicios). • Gestión orientada a “Aproximación a procesos” • Es un camino hacia la gestión de calidad total • Orientación hacia la mejora continua y la satisfacción del cliente. • Compatibilidad con otros sistemas de Gestión (ISO 14000) Gestionar una organización incluye gestionar la calidad entre otras disciplinas, por ello las normas ISO 9000:2000 se han basado en los 8 principios de gestión de calidad preparados por expertos internacionales en calidad y tomadas como directrices, estos ocho principios son: a) Organización Enfocada al Cliente: las organizaciones dependen de sus clientes y por tanto deben comprender las necesidades actuales y futuras, cumplir con los requisitos de los clientes y esforzarse en sobrepasar las expectativas de los mismos. b) Liderazgo: Las organizaciones deben fomentar el liderazgo, éstas crean el ambiente en el cual el personal puede llegar a involucrase totalmente en el logro de los objetivos de la organización. c) Participación del Personal: El personal es la esencia de la organización y su total implicación posibilita que sus capacidades sean usadas para el beneficio de la organización. d) Enfoque al Proceso: Los resultados deseados se consiguen más eficazmente cuando los recursos y actividades se gestionan como un proceso. e) Enfoque del Sistema hacia la Gestión: Identificar, entender y gestionar un sistema de procesos interrelacionados, mejorar la eficacia de una organización. f) Mejora Continua: es un objetivo permanente de la organización. g) Toma de Decisiones por Datos: las decisiones eficaces se basan en el análisis de los datos y la información. h) Relación Beneficiosa con los Suministradores: las relaciones mutuamente beneficiosas entre la organización y sus suministradores intensifica la capacidad de ambas organizaciones para crear valor. 2. CONCEPTO DE ESTANDAR Estándar: En computación conjunto de reglas o especificaciones que definen la arquitectura de un dispositivo de hardware, un programa o un sistema operativo Estándar: Tipo, modelo, patrón. Estandarización: Normalización en la composición de los productos lo que suele ir acompañado de una reducción del numero de modelos de fabricación 3. GESTION ESTANDAR Hoy en día en todo el mundo reconoce que la alta calidad del producto se traduce en ahorro de coste y en una mejora general por lo que existe la gestión total de calidad lo cual genera los siguientes pasos: 1. El primer paso se llama Kaizen y se refiere a un sistema de mejora continua del proceso. El objetivo de kaizen es desarrollar un proceso que sea visible, repetible y mensurable. 2 . El segundo paso, invocado una vez que se ha alcanzado kaizen , se llama atarimae hinshitsu; en este paso se examina lo intangible que afecta el proceso y se trabaja para optimizar su impacto en el proceso. 3. El tercer paso llamado kansei se centra en el usuario del software. 4. El último paso llamado miryokuteki hinshitsu amplía la preocupación de la gestión más allá del producto inmediato; es decir el objetivo es detectar productos nuevos y beneficiosos, o aplicaciones que sean una extensión de un sistema ya existente basado en computadora. Un sistema de garantía de calidad se puede definir como la estructura organizativa, responsabilidades, procedimientos, procesos y recursos para implementar gestión de calidad Las normas ISO 9000 Las normas ISO9000 son la normalización al servicio de la calidad. Los objetivos de las normas ISO-9000, son: • Homogenizar el lenguaje relacionado con el concepto de calidad. • Dar las líneas directrices que permitan crear un Sistema de Calidad. Las normas de calidad aplicables al desarrollo de software son cinco: • ISO-9000: definiciones y guías para la utilización de las normas. • ISO-9004: enfoque operacional para poner en marcha un sistema de calidad. • ISO-9001, 9002 y 9003: enfoque de la calidad en situaciones contractuales (cliente-proveedor) • ISO 9001: diseño y desarrollo de productos • ISO 9002: producción e instalación • ISO 9003: control y pruebas finales, es la guía para la aplicación de la norma ISO-9001 en el caso concreto de Productos de Software. E. ESTRATEGIA 1. CONCEPTO Consiste en determinar los objetivos y las metas fundamentales a largo plazo, adoptar las políticas correspondientes y asignar los recursos necesarios para llegar a esas metas.6 6 Estrategia,Diseño y Ejecución, José Nicolás Marín y Eduardo Luis Montiel,. Se supone que la estrategia realmente abarca todas las actividades críticas de una empresa; ofrece un sentido de unidad, dirección y propósito y facilita a la empresa a asimilar los cambios de entorno. El significado del término estrategia, proviene de la palabra griega Strategos, jefes de ejército; tradicionalmente utilizada en el terreno de las operaciones guerreras. En los últimos años el concepto de estrategia ha evolucionado de manera tal que, sobre la base de este ha surgido una nueva escuela de administración y una nueva forma de dirigir a las organizaciones, llamada “administración estratégica”. El empleo del término estrategia en administración significa mucho más que las acepciones militares del mismo. Para los militares, la estrategia es sencillamente la ciencia y el arte de emplear la fuerza armada de una nación para conseguir fines determinados por sus dirigentes. La estrategia en administración, es un término difícil de definir y muy pocos autores coinciden en el significado de la estrategia. Pero la definición de estrategia surge de la necesidad de contar con ella. Por estrategia para la administración básicamente se entiende la adaptación de los recursos y habilidades de la organización al entorno cambiante, aprovechando oportunidades y evaluando riesgos en función de objetivos y metas. 2. DIMENSIONES DE LA ESTRATEGIA 2.1 La estrategia como pauta coherente, unificadora e integradora de las decisiones. Fuerza principal para un plan detallado, completo e integrador. Como tal, la estrategia da origen a planes que garantizan el logro de los objetivos básicos de la empresa. Esto supone que la estrategia es consistente, explícita, proactiva. 2.2 La estrategia como medio para establecer objetivos a largo plazo, programas de acción y prioridades en la distribución de recursos. Esta opinión clásica considera la estrategia como el medio de hacer explícitas las metas u objetivos de una organización en el largo plazo; de definir los principales programas de acción que se necesitan para alcanzar sus objetivos y de asignar los recursos necesarios. Para que éste concepto resulte útil, se necesita primero que los objetivos empresariales a largo plazo, una vez establecidos no se modifiquen, a menos que sea indispensable; sí se cambiaran frecuentemente, el valor de este enfoque disminuiría. Nada puede ser más debilitante para una empresa que la reorientación errática de sus objetivos sin razones de peso. Los cambios continuos de dirección estratégica crean confusión entre los que tienen intereses en una empresa, sobre todo entre sus clientes, empleados y accionistas. Para alcanzar la eficacia estratégica es necesaria la concordancia entre los objetivos, programas estratégicos y la asignación de recursos globales ( humanos, financieros, tecnológicos y físicos ). 2.3 La estrategia como definición del ámbito en el que va a competir la empresa. Desde hace tiempo se ha reconocido que una de las inquietudes principales, con relación a la estrategia, es determinar las actividades a que la empresa se dedica, o puede dedicarse. Este concepto exige que los estrategas adopten las decisiones de crecimiento, diversificación y posicionamiento. Un paso clave es la segmentación apropiada de la empresa. Esta segmentación es crucial en el análisis empresarial, el posicionamiento estratégico, la asignación de recursos y la administración de cartera. También ayuda a identificar explícitamente el campo de acción: dónde y cómo va a competir la empresa. 2.4 La estrategia como respuesta a las oportunidades y amenazas externas, a las fortalezas y debilidades internas, para alcanzar la ventaja competitiva. Según ésta perspectiva, el propósito básico de la estrategia es alcanzar una ventaja sobre los competidores claves, sostenible a largo plazo. Tal punto de vista, sustentado por la mayor parte de los enfoques analíticos modernos reconoce lo siguiente: a. El objetivo fundamental de una empresa es alcanzar la ventaja competitiva a largo plazo sobre sus competidores. Estas ventajas presuponen comprender a cabalidad los factores externos e internos, que afectan profundamente a la organización. Externamente, una empresa debe reconocer el atractivo y las tendencias relativas de su industria y las características de los principales competidores. Esto ayuda a descubrir las oportunidades y amenazas con las cuales se debe enfrentar. Internamente una empresa debe identificar sus capacidades competitivas. b. La estrategia busca una concordancia viable entre el ambiente externo de la empresa y sus capacidades internas. El papel de la estrategia no se considera simplemente como una reacción pasiva a las oportunidades y amenazas que le presenta el entrono, sino de la organización, para satisfacer las exigencias de un entorno continuamente cambiante. 2.5 La estrategia como sistema lógico para diferenciar las tareas gerenciales en los niveles corporativos, empresarial, y funcional. Los diversos niveles jerárquico gerenciales muy diferentes que la estrategia debe reflejar. a. El nivel corporativo, es responsable de las tareas de mayor alcance: definir la misión global de la empresa; examinar las propuestas de negocios; identificar y explotar los nexos entre las unidades empresariales diferentes, aunque relacionadas, y asignar los recursos con un sentido de prioridad estratégica. b. El nivel empresarial, es responsable de realzar la posición competitiva de cada unidad empresarial frente a un medio ambiente y a la competencia. c. El nivel funcional, es responsable de desarrollar capacidades en áreas claves como finanzas, infraestructura administrativa, recursos humanos, tecnología, proveeduría, logística, distribución, mercadeo, ventas y servicios. Además de desarrollar estas capacidades es responsable de integrarlas armoniosamente. 2.6 La estrategia es la expresión de los beneficios, económicos y no económicos, que la empresa pretende dar a los grupos de interés. La estrategia consiste en encargarse de los que tienen interés en esa compañía. En una organización con fines de lucro, el resultado financiero es un objetivo importante. 3. EL ANÁLISIS FODA El análisis FODA es una herramienta que permite conformar un cuadro de la situación actual de la empresa u organización, permitiendo de esta manera obtener un diagnóstico preciso que permita en función de ello tomar decisiones acordes con los objetivos y políticas formulados. El término FODA es una sigla conformada por las primeras letras de las palabras Fortalezas, Oportunidades, Debilidades y Amenazas (en inglés SWOT: Strenghts, Weaknesses, Oportunities, Threats). De entre estas cuatro variables, tanto fortalezas como debilidades son internas de la organización, por lo que es posible actuar directamente sobre ellas. En cambio las oportunidades y las amenazas son externas, por lo que en general resulta muy difícil poder modificarlas. • Fortalezas: son las capacidades especiales con que cuenta la empresa, y por lo que se posiciona en un lugar privilegiado frente a la competencia. Recursos que se controlan, capacidades y habilidades que se poseen, actividades que se desarrollan positivamente. • Oportunidades: son aquellos factores que resultan positivos, favorables, explotables, que se deben descubrir en el entorno en el que actúa la empresa, y que permiten obtener ventajas competitivas. • Debilidades: son aquellos factores que provocan una posición desfavorable frente a la competencia, recursos de los que se carece, habilidades que no se poseen, actividades que no se desarrollan positivamente. • Amenazas: son aquellas situaciones que provienen del entorno y que pueden llegar a atentar incluso contra la permanencia de la organización. FODA es un concepto muy simple y claro, pero detrás de su simpleza residen conceptos fundamentales de la Administración. Se tiene un objetivo: convertir los datos del universo (según se perciba ) en información, procesada y lista para la toma de decisiones (estratégicas en este caso). En términos de sistemas, se tiene un conjunto inicial de datos (universo a analizar), un proceso (análisis FODA) y un producto, que es la información para la toma de decisiones (el informe FODA que resulta del análisis FODA).