Académique Documents
Professionnel Documents
Culture Documents
informáticas de gestión
SINOPSIS
La presente obra está dirigida a los estudiantes del Ciclo Formativo de Desarrollo de Aplicaciones
Informáticas, en concreto al Módulo Profesional Análisis y Diseño Detallado de Aplicaciones Informáticas
de Gestión.
Los contenidos incluidos en este libro abarcan conceptos básicos de los sistemas de información, ciclos
de vida, metodologías de desarrollo y gestión de proyectos software. Se estudian en detalle las fases de
análisis y diseño de sistemas, tanto la metodología Métrica 3 como el Lenguaje Unificado de Modelado
(UML). También se dedica especial atención a los diferentes tipos de pruebas, la calidad, la verificación y
validación, así como la gestión de la configuración y el mantenimiento de las aplicaciones informáticas de
gestión.
Por último, se incluye una idea general sobre los diferentes entornos de programación y las tecnologías
para las aplicaciones informáticas, los conceptos básicos sobre los sistemas de gestión de bases de
datos y el análisis y diseño asistido por ordenador mediante el uso de herramientas CASE.
Los capítulos incluyen ejercicios con el propósito de facilitar la asimilación de los conocimientos tratados y
bibliografía diversa para poder aumentar los conocimientos sobre los temas deseados.
Así mismo, incorporan tests de conocimientos y ejercicios propuestos con el objeto de comprobar que los
objetivos de cada capítulo se han asimilado correctamente.
Software
Durante los primeros tiempos de la informática el principal desafío fue el desarrollo del hardware de los ordenadores, el
software se desarrollaba intentando optimizar al máximo el hardware. Los responsables de los Centros de Proceso de
Datos ponían normas en el Análisis y Diseño, para conseguir mejoras; de esta forma el desarrollo del software se convirtió
en un “arte indisciplinado”.
Durante la década de los 80 los avances en microelectrónica han dado como resultado ordenadores con mayor
potencia y menor coste. Ahora, el problema ha pasado a ser como reducir el coste y mejorar la calidad de las
soluciones.
Definición.
El software engloba:
El software es por tanto un elemento más lógico que físico con unas características propias que lo distinguen de hardware.
Tipos de software.
El software puede aplicarse en cualquier situación en la que se haya definido previamente un conjunto específico de pasos
procedimentales. La determinación y contenido de la información son factores importantes para determinar la naturaleza
de una aplicación software.
Software de sistemas: es un conjunto de programas que están hechos para servir a otros programas. Tienen
una fuerte interacción con el hardware de la computadora, operando de forma concurrente, por lo que
requiere planificación, compartición de recursos y una sofisticada gestión de procesos. (p. ej.: compiladores,
utilidades de gestión de archivos, de periféricos, procesadores de telecomunicaciones).
Software de tiempo real: es un software que mide, analiza y controla sucesos del mundo real conforme
ocurren. Un sistema en tiempo real debe responder dentro de unos rangos estrictos de tiempo; frente a un
sistema interactivo, donde superar el tiempo de respuesta no produce ningún desastre.
Software de gestión: orientado al procesamiento de información comercial, siendo esta una de las áreas de
mayor aplicación del software. Este software ha evolucionado de los sistemas discretos (nominas,
contabilidades, inventarios, etc.) hacia los sistemas de información de gestión que hacen uso de grandes bases
de datos (MIS, DSS).
Software imbricado o empotrado: se utiliza para controlar productos y sistemas de los mercados industriales y
de consumo. Dicho software reside en memorias de sólo lectura. (p. ej.: microondas, videos, sistema ABS de un
automóvil, etc.).
Software de inteligencia artificial (IA): hace uso de algoritmos no numéricos para la resolución de problemas
complejos, ya que no es adecuado el cálculo o el análisis directo. Dentro de la IA podemos encontrar distintas
áreas como los sistemas expertos o sistemas basados en el conocimiento, sistemas de reconocimiento de
patrones (imágenes y voz), redes neuronales artificiales.
PERSPECTIVA HISTÓRICA.
La crisis del software se refiere a un conjunto de problemas encontrados en el desarrollo del software:
Prestaciones inadecuadas.
Los problemas anteriores pueden corregirse dando un enfoque de ingeniería al desarrollo del software, es
decir, pasar de programación a producción industrial del software, mejorando continuamente las técnicas y las
herramientas.
Producir soluciones automatizadas a gran variedad de problemas complejos, dando productos de calidad y
cuya producción sea económicamente rentable, no genere costes posteriores y se realice a tiempo.
>> Problemas:
Los productos software son de baja calidad (fiabilidad, eficiencia, ...), cuya producción conlleva grandes costes
de desarrollo, mayores costes de mantenimiento y notables retrasos.
>> Causas:
>> Soluciones:
Métodos de razonamiento formal (lógica y álgebra): lenguajes formales ejecutables, prototipado automático,
programación por transformación.
Como se puede apreciar, es necesaria una disciplina que englobe los distintos avances tanto actuales como
futuros para el desarrollo del software:
INGENIERÍA DEL SOFTWARE.
Frizt Bauer (1969) define Ingeniería del Software diciendo que “constituye el establecimiento y uso de
principios de ingeniería robustos, orientados a obtener con economía de costes, software fiable y que funcione
de manera eficiente sobre máquinas reales”.
Según Pressman [Press98] la producción de programas debe abordarse como una ingeniería más, permitiendo
controlar el proceso de desarrollo del software y suministrando a los que la practican las bases para construir
software de alta calidad y de una forma productiva.
Para ello, la Ingeniería del Software debe aportar tres elementos clave: métodos, herramientas y
procedimientos, de forma que se produzca software de gran calidad.
MÉTODOS.
Describen “como” construir técnicamente el software. Los métodos incluyen tareas de: planificación y
estimación de proyectos, análisis de los requerimientos del sistema y del software, diseño estructurado de
datos, diseño de programas, codificación, prueba y mantenimiento.
Los métodos de la ingeniería del software introducen frecuentemente una notación especial orientada a un
lenguaje o gráfica y un conjunto de criterios para la calidad del software.
Diagrama de Flujo de Datos (DFD): son una representación gráfica de los flujos de información y físicos internos y
externos a la organización.
Modelo entidad/relación: se utiliza para representar la estructura lógica de los datos. Para éstos se ha de
alcanzar siempre, y como mínimo, la tercera forma normal.
HERRAMIENTAS.
Existen herramientas automatizadas para soportar cada uno de los métodos vistos anteriormente, y sistemas
que integran las herramientas de cada fase de forma que la información creada por una herramienta sirve para
otra en el proceso de desarrollo. Estas herramientas se denominan CASE (Computer Assisted Software
Enginering), Ingeniería del Software Asistido por Computadora.
Construcción de prototipos.
Un prototipo es la primera versión de un nuevo tipo de producto, en el que se han incorporado solamente
algunas características del sistema final, o no se han realizado completamente.
La construcción de prototipos es un proceso que facilita al programador la creación de un modelo del software
que se tiene que construir. Puede tener una de las tres formas siguientes:
2. Un prototipo que implemente algunas de las funciones requeridas al producto software o un subconjunto de las
mismas.
3. Un programa que ejecute parte o toda la función deseada, pero con características por mejorar durante el
desarrollo.
Los prototipos pueden ser Totales o Parciales dependiendo de sí se hacen para el sistema completo o sólo para
un subconjunto. También pueden ser Evolutivos o Desechables dependiendo si se piensa usar como programa
final, o si simplemente sirve para captar requerimientos y funcionalidad por parte del usuario.
Primero se recogen los requisitos y se definen los objetivos globales para el software. Después se produce un
“diseño rápido”, enfocado a una representación de los aspectos del software visibles al usuario (métodos de
entradas, formato de salidas, etc.).
El técnico de desarrollo suele realizar la implementación sobre el prototipo con el objetivo de que funcione
rápidamente.
Lo correcto sería, una vez concluido el trabajo para el cual se diseño el prototipo, si no se ha utilizado una
técnica que asegure la calidad del software, es decir, el código utilizado está formado por retazos de otros
códigos y no se disponga de una herramienta que permita construir una aplicación reutilizándolo, se debe
desechar.
Aunque para Pressman las Técnicas de Cuarta Generación constituyen un Paradigma del Ciclo de Vida del
Software de la Ingeniería del Software, podemos considerar a estas técnicas como herramientas a utilizar en
otros Paradigmas como el Ciclo de Vida Clásico o el Modelo en Espiral.
Estas técnicas aparecen asociadas a los llamados Lenguajes de Cuarta Generación (4GL). En principio, estos
lenguajes buscan un nivel de especificación mayor del software frente a los 3GL (Cobol, Pascal, C,...), de forma
que permita una construcción más rápida del software. Como ejemplo tememos el SQL para acceso a bases de
datos relacionales. Pero la cuarta generación de lenguajes de programación corresponde, también, a una serie
de herramientas, que permiten construir aplicaciones sencillas combinando segmentos de programas
prefabricados.
Un entorno de 4GT puede incluir: lenguajes no procedimentales para acceso a bases de datos, lenguajes
orientados a objetos, generación de informes, definición de pantallas, generación asistida/automatizada de
código, facilidades de gráficas de alto nivel, utilización y ensamblaje de unidades funcionales de muy elevado
grado de complejidad como hojas de cálculo, procesadores de texto, etc.
Herramientas CASE.
(Computer Aided Software Engineering – Ingeniería del Software asistida por ordenador).
La creciente dificultad práctica de poner en funcionamiento ciertos procedimientos de las metodologías actuales
de desarrollo si no es con la ayuda de herramientas informáticas (diseños gráficos complejos, tareas repetitivas,
modelización o prototipado de sistemas, etc.)
La necesidad de que se realice con seriedad y rigor todo el proceso de análisis y, sobre todo, el análisis previo que
normalmente venía obviándose ante la urgencia de generar código cuanto antes.
Las herramientas CASE facilitan la diagramación para la representación de flujos de datos y procesos haciendo
más fácil el diálogo del usuario con el desarrollador tan importante para la realización de la aplicación.
La necesidad de contar con herramientas para diseñar a nivel lógico y físico la aplicación a partir del análisis.
5. Mejorar el archivo de datos (enciclopedia) de conocimientos (know-how) y sus facilidades de uso, reduciendo la
dependencia de analistas y programadores
6. Automatizar:
o La documentación.
o El chequeo de errores.
7. Permitir
o La estandarización de la documentación.
8. Integrar las fases de desarrollo (ingeniería del software) con las herramientas CASE
9. Facilitar la utilización de las distintas metodologías que desarrollan la propia ingeniería del software
Taxonomía de las herramientas CASE.
(Revisar este punto una vez estudiado los Paradigmas del Ciclo de Vida del Software).
CASE TOOLKIT
Es una colección de herramientas software integradas que permiten automatizar un conjunto de tareas de
algunas de las fases del ciclo de vida del sistema informático: Planificación estratégica, Análisis, Diseño,
Generación de programas.
CASE WORKBENCH
Son conjuntos integrados de herramientas software que dan soporte a la automatización del proceso completo
de desarrollo del sistema informático. Permiten cubrir el ciclo de vida completo. El producto final aportado por
ellas es un sistema en código ejecutable (operativo) y su documentación.
Además de compartir la BD de soporte y la interfaz de usuario, están basadas en una misma metodología.
UPPER CASE
MIDDLE CASE
Entre otros muchos productos comerciales se pueden citar Designer 2000 de Oracle, System Architect 2001 de
Popkin Software, EasyCase de Visible System Corporation
LOWER CASE
Apoyo a las últimas fases del ciclo de vida. Generación de código, pruebas, creación de documentación para la
implantación y el usuario final.
Como herramientas de bajo nivel se pueden citar todas las herramientas de RAD -Rapid Application
Development- (técnicas RAD son la combinación adecuada del prototipado con las herramientas de 4ª
generación). PowerObject de Oracle, PowerBuilder de Powersoft, Delphi de Imprise, Visual Basic de Microsoft.
PROCEDIMIENTOS.
Definen la secuencia en la que se aplican los métodos, las entregas (documentos, informes, etc.) que se
requieren, los controles que ayudan a garantizar la calidad y coordinar los cambios, y las directrices que
permiten a los gestores del software a evaluar los progresos.
Todos los métodos, herramientas y procedimientos que constituyen la Ingeniería del Software van orientados
a un único fin: producir software de gran calidad.
La garantía de calidad del software se aplica durante todo el proceso de ingeniería del software, es decir, en
Análisis, Diseño, Codificación y Pruebas.
La calidad del Software es una compleja mezcla de ciertos factores que varían para las diferentes aplicaciones y
los clientes que las solicitan.
Factores Externos.
Los factores externos son aquellos que son observables sin mirar el código del sistema. Se pueden distinguir los
siguientes:
Corrección. El grado en que un programa satisface sus especificaciones y consigue los objetivos de la misión
encomendada por el cliente.
Eficiencia. El buen uso de recursos Hw/Sw disponibles y de código requeridos por un programa para llevar a cabo
sus funciones.
Reusabilidad. Posibilidad de reutilizar el software (o una parte de él) con el consiguiente ahorro de esfuerzo.
Compatibilidad o facilidad de Interoperación. El esfuerzo que se requiere para acoplar un producto software con
otro distinto.
Verificabilidad o Facilidad de Prueba. La Calidad en el Diseño del sistema determina la facilidad de ser verificado
en cuanto a su corrección. En general, cuanto más modular sea un sistema más facilidad para aporta para
poderse comprobar su corrección.
Integridad. Un sistema íntegro será aquél que preserve las garantías frente a violaciones de su seguridad tanto
interna como externa.
Facilidad de Uso. Actualmente todos los sistemas que se desarrollan van mejorando la capacidad de interacción
para los usuarios, sobre todo para los no expertos en informática.
Factores Internos.
Modularidad. Independencia funcional de los componentes del programa. El software que es monolítico (de una
sola pieza) no puede ser fácilmente abarcado por un lector debido al gran número de variables y referencias que
incluye.
Análisis y Diseño Detallado de Aplicaciones Informáticas de Gestión
Unidad:1 Evaluación:1
Sistemas de información
Sistemas de información: - Concepto. - Componentes. - Tipos. – Realizar
esquemas – Poner ejemplos de sistemas identificando sus elementos – Definir
sistema de información basándose en su objetivo para la empresa –
Esquematizar procesos para aproximarse a la descomposición funcional con
DFDs
Unidad:2 Evaluación:1
Principales Sistemas de información en la empresa
– Actividades que realizan – Necesidades de gestión de información – Tipos de
software existente – Tipo de Software adecuado para cada subsistema de la
empresa – Realizar esquemas de las estructuras socio-organizativas de las
empresas – Identificar los principales flujos de información entre las áreas
funcionales de una empresa – Preparar por grupos las tareas y necesidades un
subsistema de la empresa y explicarlo a los compañeros – Clasificar tipos de
software – Distinguir trabajo por lotes de trabajo interactivo
Unidad:3 Evaluación:1
Ciclo de vida del software
– Etapas del ciclo de vida de una aplicación: características. – Personas
implicadas en cada etapa – Perfil, funciones y responsabilidades del analista
de sistemas – Modelos de ciclo de vida (Cascada, Incremental, Espiral, etc.) –
Identificar modelos de desarrollo que requieren los sistemas, según sus
características específicas – Describir objetivos entradas y salidas de cada
etapa del ciclo de desarrollo
Unidad:4 Evaluación:2
Metodologías de desarrollo
– Concepto de Metodología – Ventajas de aplicar una metodología al desarrollo
de software – Tipos de metodologías: - Orientadas a procesos. - Orientadas a
datos. - Orientadas a objetos. – Metodologías gubernamentales – Métrica 3 –
Apreciar las ventajas que tiene la adopción de un método estructurado para el
desarrollo de aplicaciones – Comparar características de distintas
metodologías – Estudiar la metodología Métrica 3
Unidad:5 Evaluación:2
Gestión de proyectos
– Participantes – Estimación. – Planificación. – Seguimiento y control. –
Herramientas y técnicas para gestión de proyectos. – Explicar los principales
aspectos a considerar en el desarrollo de aplicaciones. – Representar la
planificación temporal con redes PERT y Diagramas de Gantt. – Identificar las
estructuras organizativas de equipos de proyectos. – Aprender el manejo
básico de Microsoft Project – Realizar la planificación temporal de las
actividades de un proyecto informático
Unidad:6 Evaluación:2
Análisis estructurado de sistemas:
– Fundamentos del análisis de requisitos: Objetivos, entradas, salidas y fases.
– Análisis de necesidades. Técnicas de comunicación y recogida de
información. – Análisis de viabilidad: económica, técnica, legal. – Modelización
de funciones y procesos. Diagramas de flujo de datos (DFD). – Modelización
de datos. Modelo conceptual. Análisis entidad-relación. – Diccionario de datos.
Estructura y componentes. – Prestaciones de herramientas CASE en el
análisis de sistemas – Determinar la/s técnica/s de recogida de información
más adecuada/s para cada caso – Practicar técnicas de recogida de
información – Realizar DFD para diferentes sistemas propuestos – Realizar
ejercicios de modelado de datos mediante diagramas entidad-relación para
diferentes casos propuestos – Confeccionar diccionarios de datos para casos
propuestos – Realizar especificaciones de procesos utilizando diferentes
técnicas – Interpretar información descriptiva de sistemas – Estimar los costes-
beneficios de un sistema y calcular los períodos de amortización. – Manejar
alguna herramienta CASE para realizar DFDs y Diagramas entidad-relación
(EasyCASE o Visio)
Unidad:7 Evaluación:2
Diseño estructurado de sistemas:
– Objetivos, entradas, salidas y fases. – Sistemas de ficheros y de bases de
datos. – Diseño modular. Diagramas de estructuras. – Diseño de datos.
Obtención de modelo de datos lógico y físico. – Diseño procedimental. –
Diseño de interfaces. – Metodologías de diseño. – Diseño de seguridad,
auditación y recuperación del sistema. – Diseño de pruebas. – Identificar
criterios para definir subsistemas – Estudiar modos de almacenamiento de la
información – Realizar el esquema modular de una aplicación a partir de los
DFDs – Analizar el nivel de cohesión y acoplamiento entre módulos – Aplicar
especificaciones de programación estructurada al diseño de programas –
Estudiar y valorar diseños de interfaces – Diseñar pruebas sus resultados
Unidad:8 Evaluación:2
Sistemas gestores de bases de datos
– Concepto y funciones. – Arquitectura a 3 niveles ANSI/X3.SPARC. –
Interacción con el entorno operativo. – Interacción del usuario con el SGBD.
Lenguajes. – Funciones del administrador de Bases de Datos. – Diccionario de
la base de datos. – Sistema relacionales: o Estructura, terminología y
propiedades o Dependencias funcionales o Claves o Normalización –
Transformación de esquemas entidad-relación a modelos lógicos –
Prestaciones de herramientas CASE en el diseño lógico de datos –
Representar la arquitectura y funcionamiento de un sistema gestor de base de
datos – Explicar el concepto de diccionario de datos – Explicar los niveles de
protección de datos y de las técnicas utilizadas en entornos multiusuario –
Transformar esquemas entidad-relación en distintos modelos – Obtener
estructuras lógicas de datos en tercera formal – Identificar SGBDs y
herramientas CASE existentes en el mercado
Unidad:9 Evaluación:3
Control de calidad del "software"
– Factores que influyen en la calidad del "software". – Índices y métricas de
calidad. – Pruebas del “software”. Tipos, métodos y herramientas. – Tipos de
errores – Confección y documentación de las pruebas – Explicar los objetivos y
procedimientos de la prueba de aplicaciones – Explicar los métodos más
utilizados para generar casos de prueba – Elaborar casos de prueba para
verificar el comportamiento y validez funcional de las aplicaciones informáticas
– Reconocer los tipos de errores – Confeccionar especificaciones detalladas de
pruebas para un sistema propuesto – Interpretar de errores – Valorar
resultados de pruebas
Unidad:9 Evaluación:3
Control de calidad del "software"
– Factores que influyen en la calidad del "software". – Índices y métricas de
calidad. – Pruebas del “software”. Tipos, métodos y herramientas. – Tipos de
errores – Confección y documentación de las pruebas – Explicar los objetivos y
procedimientos de la prueba de aplicaciones – Explicar los métodos más
utilizados para generar casos de prueba – Elaborar casos de prueba para
verificar el comportamiento y validez funcional de las aplicaciones informáticas
– Reconocer los tipos de errores – Confeccionar especificaciones detalladas de
pruebas para un sistema propuesto – Interpretar de errores – Valorar
resultados de pruebas
Unidad:10 Evaluación:3
Construcción e implantación
– Entornos de programación: tipos y características. – Transición y puesta en
marcha. – Mantenimiento del “software – Explicar los principales aspectos a
considerar en la implantación de aplicaciones informáticas – Identificar
variables a tener en cuenta en la estimación de tiempos – Valorar la utilidad de
la documentación del sistema para llevar a cabo el mantenimiento
Unidad:11 Evaluación:3
Desarrollo de un proyecto integrador de todos los contenidos
del curso
– Desarrollar una solución informática realizada por los alumnos para algún
problema de gestión de cierta complejidad planteado, que requiera la
utilización del mayor número posible de conocimientos estudiados en el
módulo: o Manejar documentación o Interpretar el problema o Realizar el
análisis o Realizar el diseño o Realizar la especificación de programas,
pruebas y procedimientos de usuario o Elegir software para desarrollar la
aplicación o Elegir las estructuras necesarias para resolver el problema o
Construir la aplicación o Realizar pruebas o Corregir errores detectados o
Documentar el sistema o Confeccionar manuales – Consultar al profesor