Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Los sistemas informáticos están compuestos por ordenadores y sus periféricos. Entre ellos
podemos distinguir dos tipos de subsistemas:
o Sistemas Hardware, son los elementos materiales, los que se pueden tocar.
o Sistemas Software, los programas que gobiernan el funcionamiento del
computador.
El objetivo de los sistemas informáticos es el tratamiento de la información:
almacenamiento, elaboración y presentación de datos. De esta forma se automatizan
determinadas acciones.
En la concepción del sistema informático no solo se decide el trabajo a realizar, sino también
cómo ha de ser utilizado por los usuarios.
Incluye fases similares a las del modelo en cascada, pero de forma jerárquica. En horizontal se
representa el avance en el desarrollo y en vertical el nivel de detalle.
VERIFICACIÓN, comprobación de que una parte del sistema cumple con sus especificaciones.
VALIDACIÓN, comprobación de que un elemento satisface las necesidades del usuario
identificadas durante el análisis.
PROTOTIPOS
En los modelos clásicos se insiste en las actividades de revisión de resultados al final de cada
fase para evitar la vuelta atrás, que no se contempla de una forma organizada y resulta muy
costosa. Están orientados a una forma de desarrollo lineal.
PROTOTIPO, es un sistema auxiliar que permite probar experimentalmente soluciones parciales
a los requisitos del sistema
Para que el coste de desarrollo del prototipo sea bajo en relación al del sistema final podemos:
o Limitar las funciones
o Limitar su capacidad
o Limitar su eficiencia
o Evitar limitaciones de diseño, utilizando un hardware más potente que el que ejecutará
el sistema final
o Reducir la parte a desarrollar
PROTOTIPOS RÁPIDOS
Su finalidad es solo adquirir experiencia, no se
aprovechan como producto (usar y tirar). Se denominan
maquetas cuando su funcionalidad o capacidad es muy
limitada.
El sistema final se codifica totalmente partiendo de cero,
no se aprovecha el código del prototipo
Lo importante de estos prototipos es que se desarrollen
en poco tiempo.
PROTOTIPOS EVOLUTIVOS
En este caso se intenta aprovechar al
máximo el código del prototipo, y para ello
se emplea el mismo hardware/software del
sistema final.
Se realizan fases de análisis y diseño parcial,
que se van ampliando hasta construir el
sistema final mediante adiciones sucesivas.
Se puede considerar un modelo en cascada en bucle, de manera que en cada iteración se va
avanzando en el desarrollo.
HERRAMIENTAS PARA EL DESARROLLO DE PROTOTIPOS, se emplean lenguajes de 4ª generación,
que son de alto nivel y de tipo declarativo. También se emplean lenguajes de especificación,
como VDM y Z. Si disponemos del compilador correspondiente podemos obtener
automáticamente el código del prototipo.
En el desarrollo de prototipos es clave la reutilización de software.
MODELO EN ESPIRAL
Puede considerarse como un refinamiento del
modelo evolutivo general que introduce el análisis
de riesgo como elemento fundamental para guiar
la evolución del proceso de desarrollo.
En la dimensión radial se representa el esfuerzo
realizado en el desarrollo (siempre creciente)
En cada iteración 4 fases:
o PLANIFICACIÓN, determina que parte del
desarrollo se abordará en ese ciclo.
o ANALISIS DE RIESGO, evaluar diferentes
alternativas para esa parte del desarrollo
seleccionando la más ventajosa y tomando precauciones para evitar los posibles
inconvenientes.
o INGENIERÍA, las actividades de los modelos clásicos
o EVALUACIÓN, se analizan los resultados de la fase de ingeniería.
ESPECIFICACIÓN DE SOFTWARE
MODELADO DE SISTEMAS
El análisis y la definición de los requisitos debe dar lugar a la especificación software, en la que
se concretan las necesidades que se desean cubrir y se fijan las restricciones con las que debe
trabajar el software.
El modelado de los sistemas tiene como objetivo entender mejor el comportamiento requerido
y facilitar la comprensión de los problemas planteados. Se trata de establecer modelos
conceptuales que reflejen la organización de la información y las diversas transformaciones que
se deben llevar a cabo con dicha información.
Las metodologías de análisis de requisitos tratan de facilitar obtención de uno o varios modelos
que detallen el comportamiento deseado del sistema.
CONCEPTO DE MODELO
Un modelo conceptual es una abstracción lógico-matemática del mundo real que facilita la
comprensión del problema a resolver. Se trata de ofrecer una visión de lato nivel, sin descender
a explicar detalles concretos del mismo. Indica QUÉ hace el sistema y no CÓMO lo debe hacer.
Los OBJETIVOS a cubrir con los modelos son:
o Facilitar la comprensión del problema
o Establecer un marco para la discusión que simplifique y sistematice el análisis
o Fijar las bases para el diseño
o Facilitar la verificación del cumplimiento de los objetivos del sistema
TÉCNICAS DE MODELADO (I)
DESCOMPOSICIÓN. MODELO JERARQUIZADO, aplica el “divide y vencerás”, y así el problema
queda dividido en un subconjunto de subproblemas. Se trata de una descomposición funcional
que se denomina horizontal o bien se descompone tratando de detallar la estructura, de forma
vertical. Para completar el modelado es necesario establecer los interfaces entre las partes del
sistema para posibilitar el funcionamiento del sistema global.
APROXIMACIONES SUCESIVAS, podemos tomar como partida el modelo de un sistema similar,
y luego mediante la experiencia del analista y el conocimiento del problema que proporciona el
experto se irán proponiendo modelos intermedios, discutiendo sus ventajas e inconvenientes.
EMPLEO DE DIVERSAS ANOTACIONES, el lenguaje natural introduce imprecisiones, repeticiones
e incluso incorrecciones en el modelo. Es recomendable emplear notaciones gráficas que sean
entendibles por todos los que participan en el proyecto. Se suele recurrir a notaciones precisas
que combinan texto, tablas, diagramas y gráficos.
TÉCNICAS DE MODELADO (II)
CONSIDERAR DISITNTOS PUNTOS DE VISTA, en la elaboración del modelo es necesario adoptar
un determinado punto de vista. Si así la descripción es insuficiente conviene adoptar más de
uno.
REALIZAR UN ANÁLISIS DEL DOMINIO, es decir en campo de aplicación en que se enmarca el
sistema a desarrollar. Hay que considerar:
o Normativa que afecta al sistema
o Otros sistemas semejantes
o Estudios recientes en el campo de la aplicación, bibliografía, etc.
Las ventajas de realizar un modelo más general son:
o Facilitar la comunicación entre el analista y el usuario del sistema, p.e. usando la misma
terminología.
o Creación de elementos realmente significativos del sistema, si se ajusta a la normativa
específica establecida.
o Reutilización posterior del software desarrollado.
ANÁLISIS DE REQUISITOS DE SOFTWARE
El análisis es la fase de definición del futuro sistema y tiene una importancia decisiva en el
desarrollo de todas las etapas posteriores.
Con el análisis de requisitos se trata de caracterizar el problema a resolver. El “cliente”
trabaja con el analista para elaborar las especificaciones y posteriormente se encargarán de
verificar el cumplimiento de las mismas (contrato).
El análisis debe producir un modelo válido necesario y suficiente para recoger todas las
necesidades y exigencias del sistema, así como las restricciones que los limiten. Para una
especificación correcta se requiere:
o Completo y sin omisiones
o Conciso y sin trivialidades
o Sin ambigüedades
o Sin detalles de diseño o implementación
o Fácilmente entendible por el cliente
o Separando requisitos funcionales u no funcionales (capacidades mínimas y
máximas, interfaces estándares, recursos necesarios, seguridad, fiabilidad,
mantenimiento, etc.
o División y jerarquía del modelo global, con el fin de simplificar su comprensión
o Incluyendo los criterios de validación del sistema, para comprobar si se ajusta al
contrato inicial.
TAREAS DEL ANÁLISIS
Dependiendo de las características y complejidad del sistema se podrán seguir los siguientes
pasos:
o ESTUDIO DEL SISTEMA EN SU CONTEXTO, análisis del dominio en un contexto
globalizador
o IDENTIFICACIÓN DE NECESIDADES, detectar necesidades de medios dentro de plazos y
presupuestos
o ANÁLISIS DE ALTERNATIVAS Y ESTUDIO DE VIABILIDAD, tanto técnica como económica
o ESTABLECIMIENTO DEL MODELO DEL SISTEMA, para lo que podemos usar técnicas
gráficas, texto, herramientas CASE, etc.
o ELABORACIÓN DEL DOCUMENTO DE ESPECIFICACIÓN DE REQUISITOS, dónde se
recogen las conclusiones del análisis y sirve de punto de partida para el diseñador.
o REVISIÓN CONTINUADA DEL ANÁLISIS, a menudo en las etapas de diseño e
implementación se hace necesaria la revisión de alguno de los requisitos, o bien por
cambios de criterio del cliente
NOTACIONES PARA LA ESPECIFICACIÓN
La especificación es una descripción del modelo del sistema a desarrollar.
Se debe usar una notación fácil de entender por el cliente:
o Lenguaje natural, utilizando explicaciones más o menos precisas y exhaustivas. Es
posible limitar precisiones y ambigüedades si se establecen reglas de uso del lenguaje.
o Diagramas de flujo de datos
o Diagramas de transición de estados
o Descripciones funcionales. Pseudocódigo. Se emplea un preciso lenguaje natural
estructurado. No se debe detallar demasiado el cómo, pues esto corresponde a la fase
de diseño, donde se usan lenguajes estructurados como PLD.
o Descripción de datos, de trata de detallar la estructura interna de los datos que maneja
el sistema. En la metodología Yourdon se conoce como diccionario de datos, incluyendo
nombre de cada dato, utilización y estructura.
o Diagramas de modelos de datos
DIAGRAMAS DE FLUJO DE DATOS (DFD)
Se trata de realizar un modelo gráfico para representar el flujo de datos que entra en el sistema,
las transformaciones que debe realizar y la salida producida. También se representan las
entidades externas la sistema que producen o consumen datos. El DFD inicial es el de contexto,
posteriormente y de forma jerárquica se van desarrollando otros DFD’s que detallan las
transformaciones, las entradas y salidas del diagrama detallado deben coincidir con el proceso
correspondiente.
Recoge de forma estática los procesos, dónde en el último nivel de refinamiento se especifican
en lenguaje natural estructurado, y su interrelación.
o En el PASO 2 se trata de encontrar una estructura del programa que se ajuste a las
estructuras de los datos de entrada y salida
PRUEBAS DE SISTEMA
Se trata de probar el sistema completo para ver si realmente cumple las especificaciones.
Se suelen emplear estrategias de caja negra. Podemos distinguir diferentes clases de pruebas:
o PRUEBAS DE RECUPERACIÓN, para comprobar la capacidad del sistema para
recuperarse ante fallos
o PRUEBAS DE SEGURIDAD, par comprobar los mecanismos de protección ante un
acceso no autorizado
o PRUEBAS DE RESISTENCIA, para comprobar el comportamiento del sistema ante
situaciones excepcionales
o PRUEBAS DE SENSIBILIDAD, para comprobar el tratamiento que da el sistema a ciertas
singularidades relacionadas casi siempre con los algoritmos matemáticos utilizados
o PRUEBAS DE RENDIMIENTO, para comprobar las prestaciones del sistema que son
críticas en tiempo
PRUEBAS ALFA Y BETA. Los usuarios también deben intervenir en las pruebas finales del
sistema
o Pruebas alfa, son las primeras pruebas que se realizan en un entorno controlado
donde el usuario tiene el apoyo de alguien del equipo de desarrollo
o Pruebas beta, los usuarios trabajan con el sistema en un entorno real y sin ayuda,
anotando los problemas que se le presentan
AUTOMATIZACIÓN DE PROCESO DE DESARROLLO
ENTORNOS DE DESARROLLO SOFTWARE
Entorno se refiere al contexto dentro del cual se desarrolla una determinada actividad, o
también a la combinación de instrumentos utilizados.
El entorno de desarrollo software, SEE, cuenta con una serie de técnicas de automatización
denominadas CASE.
Las primeras herramientas se referían a la fase de codificación, así el entorno de programación
clásico consiste en un compilador con editor, montador de enlaces, etc. Posteriormente con el
empleo del término CASE se ha extendido la automatización a las fases de análisis y diseño.
Para las pruebas de integración se puede disponer de herramientas de ensayo y para la fase
de mantenimiento se dispone de soporte de gestión de configuración, que incluye la gestión
de versiones y el control de cambios.
El futuro de las técnicas CASE está en el soporte completo de todo el ciclo de vida. Se ha
denominado IPSE, ICASE e ISEE.
FORMAS DE ORGANIZACIÓN:
o En cadena, se combinan una serie de herramientas de manera que la salida de cada
una es la entrada de la siguiente. Ej.: editor-compilador-montador
o Con repositorio, las herramientas integradas guardan su información en este almacén
común. Una parte del repositorio es el diccionario de datos
o Como una única herramienta global, capaz de realizar todas las operaciones
necesarias.
OBJETIVO Y CLASIFICACIÓN DE ENTORNOS DE DESARROLLO
Dar soporte a la programación en un lenguaje concreto
Dar soporte a una metodología de desarrollo
Ayudar al desarrollo de entornos de desarrollo (meta-entornos)
CLASIFICACIÓN, desde un punto de vista pragmático:
o ENTORNOS ASOCIADOS A UN LENGUAJE. Un primer paso lo constituyen los intérpretes
de los lenguajes de programación interactivos (BASIC, LISP, SmallTalk, ada).
o ENTORNOS ASOCIADOS A ESTRUCTURA. En ellos se almacena la información
correspondiente al programa en forma estructurada y no simplemente como texto. La
edición del programa se consigue mediante un editor de estructura, que permite
construir o modificar un programa operando sobre los elementos de su estructura. El
entorno se basa en plantillas que describen las estructuras básicas (PL/).
o ENTORNOS BASADOS EN HERRAMIENTAS. Consisten en una colección de herramientas
(toolkit o toolbox) relativamente independientes, aunque compatibles entre sí,
además deben de existir algún medio para hacerlas funcionar en forma combinada.
Suele presentar como ventaja el ser bastante abiertos, permitiendo la incorporación
de nuevas herramientas. Su inconveniente es la falta de una interfaz de usuario
interactiva y uniforme.
o ENTORNOS ASOCIADOS A UNA METODOLOGÍA. La integración de los distintos
elementos del entorno se suele conseguir mediante el empleo de un almacén único o
repositorio CASE para almacenar todos los elementos de información contemplados
en la metodología soportada. El repositorio contiene información de los diagramas de
flujo de datos, descripción de cada dato y de cada proceso.
o ENTORNOS DE 4ª GENERACIÓN. Se apoyan en un sistema de gestión de base de datos
dotado de un lenguaje de consulta con herramientas complementarias.
CLASIFICACIÓN DE ENTORNOS POR NIVELES
Nivel de servicio. Corresponde a un producto que realiza una función u operación
elemental, que una vez invocada no se interrumpe (compilador).
Nivel de herramienta. Producto software que permite invocar diferentes servicios u
operaciones correspondientes a una misma actividad individual. (editor de textos).
Nivel de banco de trabajo o equipo de herramientas. Corresponde a un producto CASE
que automatiza o soporta un perfil concreto de actividad profesional dentro del proceso
de desarrollo. Un banco de trabajo suele englobar varias herramientas, integradas con una
interfaz de usuario uniforme. En la actividad de codificación el banco de trabajo se
denomina entorno de programación.
Entorno de desarrollo. Producto CASE que soporta el proceso completo de desarrollo de
software (IPSE o ICASE).
Los dos primeros niveles se describen a veces como uno solo.
HERRAMIENTAS DE SOFTWARE
Herramientas clásicas.
Editor de texto.
Compilador
Montador de enlaces. Construye ejecutables combinando varios ficheros objeto.
Gestor de librería. Combina ficheros objeto en una librería.
Herramienta ‘MAKE’. Automatiza la actualización de los ficheros a partir de otros.
Intérprete interactivo. Casi Constituye un entorno de programación completo (si lo es se debe
clasificar a nivel de banco de trabajo y no de herramienta). Engloba funciones equivalentes a
las de edición, compilación, montaje y ejecución.
Compilador/Intérprete. Procesador de un lenguaje interpretado de forma no
interactiva.Incluye un compilador a código intermedio y un intérprete de ejecución de dicho
código intermedio con todas las librerías de soporte. No incluye funciones de editor de
programas.
Depurador absoluto. Ejecuta el programa de forma controlada. Resulta incomodo de usar ya
que hace referencia a posiciones de memoria y a los registros del procesador.
Depurador simbólico. Realiza una función análoga al anterior pero con referencia al código
fuente por lo que es más cómodo de usar.
Herramientas evolucionadas.
Editores orientados al lenguaje. Son editores de estructura.
Herramienta ‘MAKE’ automática. Se incorpora la función ‘MAKE’ al compilador.
Manejador de versiones. Almacena de forma organizada y eficiente una serie de versiones del
mismo elemento software. Se suelen usar desde las utilidades MAKE al recompilar una
aplicación en desarrollo.
Procesadores/Analizadores de código fuente. Grupo en que se pueden incluir diferentes
herramientas que procesan el texto fuente para obtener mediciones, generar tablas de
referencias, encolumnar …etc. Estas funciones podrían estar incorporadas en los
compiladores.
Procesadores de documentos. No son específicos del desarrollo pero son un soporte
fundamental.
Herramientas de control de pruebas. Ayudan a la realización de pruebas unitarias o de
integración.
Herramientas de control de cambios. Ayudan a la realización del desarrollo y al mantenimiento
de aplicaciones.
Procesadores de ficheros de texto.
Herramientas de 4º generación.
Hojas de cálculo. Procesadores de documentos
Gestores de bases de datos Lenguajes de 4ª generación.
Generadores de programas.
ENTORNOS INTEGRADOS