Protocolos de Comunicación.
Blog Maria
Competencias Universitarias
sábado, 10 de diciembre de 2016
viernes, 27 de noviembre de 2015
Proceso de Desarrollo de Software, Desarrollo del Software II
El
proceso de desarrollo de software "es aquel en que las necesidades del
usuario son traducidas en requerimientos de software, estos requerimientos
transformados en diseño y el diseño implementado en código, el código es
probado, documentado y certificado para su uso operativo". Concretamente
"define quién está haciendo qué, cuándo hacerlo y cómo alcanzar un cierto
objetivo" [Jacobson 1998].
Para
desarrollar software es necesario:
·
Entender la
naturaleza del software naturaleza del software.
·
Utilizar un proceso
de desarrollo proceso de desarrollo bien definido y probado (adaptado a las
características del software a desarrollar).
·
Gestionar el
desarrollo Gestionar el desarrollo de software como un proyecto de ingeniería.
Codificación del Software.
Una
vez que los algoritmos de una aplicación han sido diseñados, ya se puede
iniciar la fase de codificación. En esta etapa se tienen que traducir dichos
algoritmos a un lenguaje de programación específico; es decir, las acciones
definidas en los algoritmos hay que convertirlas a instrucciones.
Para
codificar un algoritmo hay que conocer la sintaxis del lenguaje al que se va a
traducir. Sin embargo, independientemente del lenguaje de programación en que
esté escrito un programa, será su algoritmo el que determine su lógica.
La
lógica de un programa establece cuáles son sus acciones y en qué orden se deben
ejecutar. Por tanto, es conveniente que todo programador aprenda a diseñar
algoritmos antes de pasar a la fase de codificación.
Durante
la fase de programación, el código puede adoptar varios estados, dependiendo de
la forma de trabajo y del lenguaje elegido, a saber:
Código fuente: es el escrito directamente por los programadores en
editores de texto, lo cual genera el programa. Contiene el conjunto de
instrucciones codificadas en algún lenguaje de alto nivel. Puede estar
distribuido en paquetes, procedimientos, bibliotecas fuente, etc.
Código objeto: es el código binario o intermedio resultante de procesar
con un compilador el código fuente. Consiste en una traducción completa y de
una sola vez de éste último. El código objeto no es inteligible por el ser
humano (normalmente es formato binario) pero tampoco es directamente ejecutable
por la computadora. Se trata de una representación intermedia entre el código
fuente y el código ejecutable, a los fines de un enlace final con las rutinas
de biblioteca y entre procedimientos o bien para su uso con un pequeño
intérprete intermedio.
El código objeto no existe si el programador trabaja con un lenguaje a
modo de intérprete puro, en este caso el mismo intérprete se encarga de
traducir y ejecutar línea por línea el código fuente (de acuerdo al flujo del
programa), en tiempo de ejecución. En este caso tampoco existen el o los
archivos de código ejecutable. Una desventaja de esta modalidad es que la
ejecución del programa o sistema es un poco más lenta que si se hiciera con un
intérprete intermedio, y bastante más lenta que si existen el o los archivos de
código ejecutable.
Código ejecutable: Es el código binario resultado de enlazar uno o más
fragmentos de código objeto con las rutinas y bibliotecas necesarias.
Constituye uno o más archivos binarios con un formato tal que el sistema
operativo es capaz de cargarlo en la memoria RAM (eventualmente también parte
en una memoria virtual), y proceder a su ejecución directa. Por lo anterior se
dice que el código ejecutable es directamente «inteligible por la computadora».
El código ejecutable, también conocido como código máquina, no existe si se
programa con modalidad de «intérprete puro».
Procesamiento de Errores.
A
la hora de tratar los errores los errores que nuestro programa genere nos
surgen generalmente tres grandes escenarios:
·
Que el usuario
comenta un error a la hora de comunicarse con el programa (por ejemplo en la
entrada de datos).
·
Que el programador no
diseñe bien el programa y esté por tanto mal programado o bien que el sistema
sobre el que se ejecuta el programa sea inestable o no esté funcionando correctamente.
Efectos de software con defectos.
Tenemos
que tener claro que cuando hablamos de prevenir las cosas lo que vamos a
prevenir son los defectos en el software. Los defectos del software no son
simples “molestias”:
- Un
producto con defectos deja de usarse
- Puede
producir enormes pérdidas (incluso de vidas humanas, si muchos accidentes la
NASA son por este motivo un software desarrollado con defectos)
- Producen
retrasos en las entregas, enormes dificultades técnicas… y son responsables de
muchas horas extraordinarias.
Debemos
tener claro que nuestro objetivo es evitar producir programas defectuosos
mediante 4 pasos:
· - Fundamentos del
desarrollo (análisis, diseño, buena codificación).
· - Depuración.
· - Buen tratamiento de
errores.
· - Pruebas y
documentación.
Mecanismos.
Un
mecanismo para controlar los errores de ejecución debe ser:
Robusto:
El mecanismo debe obligar al programador a escribir código para manejar los
errores de ejecución. Por ejemplo: ¿qué sucede si un archivo no se puede abrir?
Reusable:
Podemos reutilizar el código, implementando diferentes manejadores de error en
diferentes escenarios o siguiendo nuestra terminología, estos mecanismos los
podremos utilizar en todas nuestras clases.
Extensible:
Permita añadir nuevos tipos de errores y extender los ya existentes (nosotros
esto ya sabemos como hacerlo: con la herencia).
Procesos de Validación.
Validación
es el proceso de evaluación intensa que se lleva a cabo justo antes de entregar
el producto al cliente, su objetivo es determinar si el producto en su totalidad
satisface sus especificaciones.
Dentro
del proceso de verificación y validación se utilizan dos técnicas de
comprobación y
análisis
de sistemas:
· Inspecciones del
software: analizan y comprueban las representaciones del sistema
como el documento de requerimientos, los diagramas de diseño y el código fuente
del programa. Las inspecciones de software y los análisis automatizados son técnicas
estáticas puesto que no requieren que el sistema se ejecute.
· Las pruebas del
software: Llevan a cabo una implementación del software con losdatos de prueba
y examinan las salidas del software y su comportamiento operacional para
comprobar que se desempeñe conforme a lo requerido.
Pruebas.
·
Prueba de interfaz:
Muchas fallas de aplicaciones se deben a problemas con las interfaces, por lo
que es recomendable la aplicación de estas pruebas.
·
Prueba del sistema: La
prueba del sistema es la culminación de las pruebas de integración. Consiste en
pruebas que validan la aplicación completa, contra sus requerimientos.
·
Prueba de utilidad:
Una buena interfaz puede mejorar mucho el valor de una aplicación. La prueba de
utilidad valida la aceptación de la aplicación por los usuarios.
·
Prueba para los requerimientos de interfaz de usuario: La tarea principal de las pruebas de utilidad es
asegurar que la aplicación satisface los requerimientos establecidos.
·
Pruebas de instalación:
El hecho de que se haya probado la aplicación en el entorno propio no asegura
que trabaje de marera apropiada.
Documentación de Software.
La
documentación de sistemas es el conjunto de información que nos dice qué hacen
los sistemas, cómo lo hacen y para quién lo hacen.
La
documentación consiste en material que explica las características técnicas y
la operación de un sistema. Es esencial para proporcionar entendimiento de un
sistema a quien lo vaya a usar para mantenerlo, para permitir auditoria del
sistema y para enseñar a los usuarios como interactuar con el sistema y a los
operandos como hacerlo funcionar.
Manual
Administrativo.
Sirve
como punto de partida al Sistema propuesto, ya que será función de la gerencia,
de acuerdo con los usuarios de dicho Sistema, determinar silo expuesto en él
satisface los requerimientos del propio sistema. Una vez lograda la aprobación,
se estará en condiciones de iniciar el desarrollo del Sistema propuesto e ir
integrando el resto de la documentación.
El
manual tiene como finalidad el permitir a la alta gerencia tener la información
necesaria y suficiente sobre un sistema en particular y servir como fuente dc
consulta una vez que el Sistema ha sido implantado.
Contenido
- Nombre del sistema.
- Describir el nombre del sistema a implantar en la empresa.
-Equipo
Encargado Del Sistema.
- Nombre
del personal encargado del análisis y diseño del sistema.
- Resumen
Administrativo.
Manual De Usuario
Expone
los procesos que el usuario puede realizar con el sistema implantado. Para
lograr esto, es necesario que se detallen todas y cada una de las
características que tienen los programas y la forma de acceder e introducir
información. Permite a los usuarios conocer el detalle de qué actividades ellos
deberán desarrollar para la consecución de los objetivos del sistema. Reúne la
información, normas y documentación necesaria para que el usuario conozca y
utilice adecuadamente la aplicación desarrollada.
Objetivos
- Que el usuario conozca cómo preparar los datos de
entrada.
- Que el usuario aprenda a obtener los resultados y los
datos de salida.
- Servir como manual de aprendizaje.
- Servir como manual de referencia.
- Definir las funciones que debe realizar el usuario.
- Informar al usuario de la respuesta a cada mensaje de
error.
Contenido.
Diagrama
general del sistema.
Muestra
en forma condensada el flujo general de la información y de las actividades que
se realizan en el sistema. Proporciona una visión general del sistema.
Representar los diagramas utilizando para ello diagramas de bloques.
Diagrama
particular detallado.
Presentar
gráficamente todos los pasos que se efectúen dentro del departamento usuario a
quien está dirigido este manual. Deben especificarse los archivos de entrada,
salida, los resultados, revisiones y procesos manuales.
Explicación
Genérica De Las Fases Del Sistema,
En
este punto se explica en forma específica y detallada todas las operaciones que
aparecen representadas en forma gráfica en el diagrama particular. Se analizan
cada una de las fases señalando:
- El proceso principal que se desarrolla.
- La entrada de la información.
- La obtención de un resultado parcial.
- El envío de información a otra dependencia.
Manual De Captación.
Permite
tener una clara visión del proceso de Captación de los datos fuentes previo al
procesamiento electrónico de los mismos.
Objetivos.
- Documentar al usuario a cerca del recorrido a través de
las pantallas del sistema.
- Conocer la forma cómo el usuario puede utilizar el equipo
necesario para la ejecución del sistema.
Contenido.
- Diagrama General Del Sistema.
Este
diagrama debe ser presentado gráficamente y en forma sencilla. Representar los
diagramas utilizando para ello diagramas de bloques ( es el mismo diagrama que
se presenta en el Manual Administrativo).
- Diagramas De Pantalla.
Presentar
en este punto el flujo del sistema en las pantallas utilizadas por cada módulo.
Plan de Mantenimiento.
El
estándar IEEE 1219 [IEEE, 1993] define el Mantenimiento del Software como “la modificación
de un producto software después de haber sido entregado [a los usuarios o clientes]
con el fin de corregir defectos, mejorar el rendimiento u otros atributos, o
adaptarlo a un cambio en el entorno”.
Tipos
de Mantenimiento.
Mantenimiento Correctivo: El mantenimiento correctivo tiene por objetivo
localizar y eliminar los posibles defectos de los programas. Un defecto en un
sistema es una característica del sistema con el potencial de causar un fallo.
Un fallo ocurre cuando el comportamiento de un sistema es diferente del establecido
en la especificación.
Entre otros, los fallos en el software pueden
ser de:
Procesamiento, por ejemplo, salidas incorrectas de un programa.
Rendimiento, por ejemplo, tiempo de respuesta demasiado alto en una búsqueda de
información.
Programación, por ejemplo, inconsistencias en el diseño de un programa.
Documentación, por ejemplo, inconsistencias entre la funcionalidad de un
programa y el manual de usuario.
Mantenimiento Adaptativo:
Este
tipo de mantenimiento consiste en la modificación de un programa debido a cambios
en el entorno (hardware o software) en el cual se ejecuta.
Mantenimiento Perfectivo: Algunos autores dividen este tipo de mantenimiento en
dos:
Mantenimiento de Ampliación: orientado a la incorporación de nuevas
funcionalidades.
Mantenimiento de Eficiencia: que busca la mejora de la eficiencia de ejecución.
Este tipo de mantenimiento aumenta cuando un producto software tiene éxito
comercial y es utilizado por muchos usuarios, ya que cuanto más se utiliza un software,
más peticiones de los usuarios se reciben demandando nuevas funcionalidades o
mejoras en las existentes.
Mantenimiento Preventivo: consiste en la modificación del software para mejorar sus
propiedades (por ejemplo, aumentando su calidad y/o su mantenimiento) sin
alterar sus especificaciones funcionales.
domingo, 22 de noviembre de 2015
Representación del Conocimiento.
La IA busca
representar generalizaciones, es decir, no representar cada situación
individual, sino agrupar las situaciones que comparten propiedades importantes.
De tal forma que pueda:
a a)
Ser entendido por las
personas que lo provean.
b b)
Ser modificado para corregir
errores y reflejar cambios en el mundo.
c c)
Usarse en muchas situaciones
aun sin ser totalmente exacto o completo.
d d) Usarse superando su propio
volumen y disminuir el rango de posibilidades que deben
considerarse.
e e)
Caracterizarse las técnicas de
IA con independencia del problema a
tratar.
El
conocimiento puede ser de tipo procedimental, declarativo o heurístico.
· Conocimiento procedimental:
es aquel que es compilado y se refiere a la forma de realizar una cierta tarea.
· Conocimiento declarativo: es
conocimiento pasivo, sentencias que expresan hechos del mundo que nos rodea. Por
ejemplo, la información en una base de datos.
· Conocimiento heurístico: es
algo especial para resolver problemas complejos. Es un criterio, estrategia, método
o proceso que simplifica resolver problemas.
Jerarquía del Conocimiento.
§ Metaconocimiento:
conocimiento acerca del conocimiento y la experiencia.
§ Conocimiento:
información especializada que nos es útil.
§ Información:
datos procesados que resultan de interés.
§ Datos:
elementos de interés potencial.
§ Ruido:
elementos de poco interés que ocultan datos.
Existen 2 tipos de conocimiento:
·
Formal:
o Reglas
de producción.
o Lógica
de predicados.
·
No
formal:
o Redes
Semánticas.
o Frames.
o Scripts.
o Dependencia
Conceptual.
Lógica
de Predicados.
Está
basada en la idea de que las sentencias realmente expresan relaciones entro
objetos, así como también cualidades y atributos de tales objetos.
Los
objetos pueden ser personas, objetos físicos o conceptos.
Las
cualidades, relaciones o atributos, se denominan predicados. Los objetos se
conocen como argumentos o términos del predicado.
Al
igual que las proposiciones, los predicados tienen un valor de veracidad, pero
a diferencia de las preposiciones, su valor de veracidad, depende de sus
términos. Un predicado puede ser verdadero para un conjunto de términos, pero
falso para otro.
Conocimiento Mediante Reglas.
Permite
lograr una búsqueda de aserciones lógicas en el estudio de los sistemas basados
o encaminados en una serie de instrucciones permitiendo de este modo lograr las
vías de ejecución del programa de forma similar a las construcciones
tradicionales de control como If, Then, Else. Las cuales definen los caminos de
ejecución de los programas tradicionales.
Inteligencia artificial
emparejamiento:
Búsqueda
inteligente Saber elegir entre las diferentes reglas que se pueden aplicar emparejamiento
entre el estado actual y las precondiciones de las reglas.
Clases de
emparejamiento.
Indexación: Realiza una búsqueda sencilla a
través de todas las reglas, comparando las precondiciones de cada con el estado
actual
Emparejamiento con
variables: En los
sistemas basados en reglas se necesita calcular todo el conjunto de reglas que
emparejan con la descripción del estado actual.
Razonamiento Estadístico. (teorema
Bayesiano).
La metodología
bayesiana está basada en la interpretación subjetiva de la probabilidad y tiene
como punto central el Teorema de Bayes.
El objetivo de la
estadística, y en particular de la estadística Bayesiana, es proporcionar una
metodología para analizar adecuadamente la información con la que se cuenta
(análisis de datos) y decidir de manera razonable sobre la mejor forma de
actuar (teoría de decisión).
Tipos de inferencia:
clásica y bayesiana
• La toma de
decisiones es un aspecto primordial en la vida de un profesional, por ejemplo,
un médico debe de tomar decisiones.
• La metodología
estadística clásica se puede ver como un conjunto de recetas que resultan apropiadas
en determinados casos y bajo ciertas condiciones.
Sin embargo, existe
una metodología unificada y general que se deriva de analizar el proceso lógico
que debe de seguirse para tomar una decisión (teoría de la decisión), y que
incluye como caso particular al conjunto de recetas clásicas.
• La estadística está
basada en la teoría de probabilidades. Formalmente la probabilidad es una
función que cumple con ciertas condiciones, pero en general puede entenderse
como una medida o cuantificación de la incertidumbre.
Lógica Difusa.
La lógica difusa es
una rama de la inteligencia artificial que se funda en el concepto "Todo es
cuestión de grado", lo cual permite manejar información vaga o de difícil
especificación si quisiéramos hacer cambiar con esta información el funcionamiento
o el estado de un sistema específico. Es entonces posible con la lógica borrosa
gobernar un sistema por medio de reglas de 'sentido común' las cuales se refieren
a cantidades indefinidas. Las reglas involucradas en un sistema borroso, pueden
ser aprendidas con sistemas adaptativos que aprenden al ' observar ' como
operan las personas los dispositivos reales, o estas reglas pueden también ser
formuladas por un experto humano. En general la lógica borrosa se aplica tanto
a sistemas de control como para modelar cualquier sistema continuo de
ingeniería, física, biología o economía.
Ventajas.
- La principal ventaja de este sistema de control es su facilidad de implementación.
- Este tipo de sistemas están dando muy buenos resultados en procesos no lineales y de difícil modelación.
- El modo de funcionamiento es similar al comportamiento humano. Es una forma rápida y económica de resolver un problema.No se necesita conocer el modelo matemático que rige su funcionamiento.
Desventajas
- Mútiples difiniciones de operadores y reglas de inferencia difusas.
- Dificultad de interpretación de valores difusos (semántica no clara).
- No hay una buena justificación de operadores difusos.
- En las redes neuronales se precisa de un tiempo de aprendizaje para obtener los mejores resultados en la salida. (Al igual que ocurre con los humanos).
- Ante un problema que tiene solución mediante un modelo matemático, obtenemos peores resultados usando Lógica Difusa.
Suscribirse a:
Entradas (Atom)