Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
Introducción
Pgina 1
Al finalizar el curso el alumno podr escribir sistemas estructurados de manera modular utilizando para ello los lenguajes C, Ensamblador y Mquina, usando herramientas de plataforma cruzada y aplicando conceptos de Ingeniera Inversa
Pgina 2
Razones para seguir utilizando lenguajes de bajo nivel Para construir un sistema genuinamente confiable, se necesita verificar el cdigo mquina el cual puede ser creado a mano o que es obtenido por la salida de un compilador. [Jensen, Jonas B.]. Una motivacin para verificar cdigo de bajo nivel es que los sistemas reales estn construidos de componentes escritos en diferentes lenguajes; el cdigo mquina es la nica lingua franca que resulta de la composicin de todos estos lenguajes. El cdigo mquina se presenta casi sin tipo. Cualquier palabra en la memoria o un registro se puede tratar como un valor escalar, un apuntador o un apuntador a cdigo debido a que los patrones de codificacin hacen posible esta flexibilidad.
Pgina 3
Objetivo de portabilidad
[Logan, Syd] La razn principal para utilizar un estndar y compartir sistemas construidos es que los desarrolladores pueden moverse entre mquina mientras se encuentran el la fase de desarrollo Los ambientes de desarrollo integrado (Integrated development environment IDE) tal como los que utiliza Microsoft Visual Sutdio .NET o Apples Interface Builder inhiben el desarrollo de sistemas portables, sin mencionar la generacin de cdigo portable.
Pgina 4
CVS permite que los desarrolladores que trabajan por separado, funcionen como un equipo. La historia de la versin es almacenada en un servidor central nico y los clientes poseen una copia de todos los archivos que los desarrolladores estn trabajando. Debe existen una red entre el servidor y los clientes para que se puedan realizar transacciones CVS (tal como verificaciones o modificaciones) pero no necesitan estar conectadas para editar o manipular las versiones actuales de los archivos. SVN est destinado a ser mejor que CVS, debido a que tiene ms estructuras que CVS. Generalmente las interfaces de SVN para una estructura en particular son similares a CVS excepto en donde existen razones convincentes para no hacerlo.
Pgina 5
Estndares de Plataforma Cruzada (Portabilidad) [Logan, Syd] Portabilidad es la medida de la facilidad en la que el software puede ser desarrollado para ser ejecutado con xito en ms de un sistema operativo o plataforma. El lenguaje C ha sido considerado portable desde 1970 cuando fue escrito por K&R y es bien conocido que el sistema operativo UNIX se le puede encontrar en diferentes plataformas debido a que la mayora de los sistemas operativos han sido escritos en lenguaje C. Los esfuerzos de estandarizacin (el estndar ms reciente C99) han hecho ms portable al lenguaje de programacin. Programando con los estndares ANSI y evitando las extensiones introducidas por el compilador, es un paso importante para eliminar los problemas de portabilidad en C. Se puede instruir al compilador para que acepte construcciones del lenguaje basadas en estndares y rechace cualquier extensin proporcionada por el compilador
Pgina 6
La funcionalidad de un sistema portable no nativo puede ser convertida a portable utilizando interfaces estndar y bibliotecas de portabilidad tales como NSPR. La portabilidad puede ser mejorada tambin utilizando los estndares POSIX, IEEE1003 para las interfaces de sistemas operativos, el estndar SVID y finalmente XPG La familia de compiladores GCC soporta tres de los anteriores estndares. Si se desarrolla con Cygwin y GCC sobre el sistema operativo Microsoft Windows tambin se asegura la portabilidad [Logan, Syd]
Pgina 7
Cada plataforma proporciona su propio juego de herramientas para construir interfaces grficas nativas de usuario (graphical user interface GUI). Ninguna de estas herramientas es cdigo compatible. Sin embargo, existen herramientas tales como Qt, Gtk+ y wxWidget que se pueden encontrar en diferentes sistemas operativos y que permiten desarrollar GUI.
Pgina 8
El patrn Fachada
Una clase que utiliza el patrn Facade proporciona una interfaz unificada para un conjunto de interfaces en un subsistema. El patrn Facade define una interfaz a alto nivel que hace que el subsisema sea ms fcil y seguro de utilizar. [Gamma, Erik et al] Cuando una interfaz es muy complicada de utilizar de manera efectiva (ayuda con el uso impropio) o no se utiliza un estilo de programacin bien definido para desarrollar sobre una plataforma extensa, se debe considerar el uso del patrn fachada. Una fachada es una clase con una interfaz simple y clara la cual encapsula y oculta un conjunto complicado de clases y/o funciones [Ezust, Alan et al]
Pgina 10
Pgina 11
Pgina 13
Actividad 1.1
Instalar y documentar Cygwin Instalar y documentar wxWidget sobre Cygwin Probar y documentar el compilador cruzado x86_64-w64mingw32-gcc en Cygwin Probar y documentar nasm con los ejemplos del manual sobre Cygwin Probar y documentar svn para Cygwin Durante el resto del curso se desarrollar en Cygwin. No debe ser necesario mencionar que todas las actividades sern realizadas en esta plataforma. Probar y documentar Eclipse CDT sobre Cygwin
Pgina 14
Referencia
1. [Allen Christopher T. S.] Eclipse.org CDT and Cygwin: A Tutorial on Instalation and Functionality. University of Rhode Island. 2010 [Blochinger, Wolfgang] Cross-Platform Development of High Performance Applications Using Generic Programming. BOOKTITLE = {Proc.\ of the IASTED Intl.\ Conference Parallel and Distributed Computing and Systems ({PDCS} 2003)} [Ezust, Alan et al] An Introduction to Design Patterns in C++ with Qt 4, 2nd Edition. ISBN 978-0-13282645-7. 2012 [Gamma, Erik et al] Desing Patterns; ISBN: 0201633612. 1995 [Jensen, Jonas B. et al] High-level separation logic for low-level code. ITU Copenhagen 2012 [Logan, Syd] Building Cross-Platform Development in C++. Building Mac OS X, Linux and Windows Applications ISBN: 0-321-24642-X. 2008 [Smart, Julian et al] Cross-Platform GUI Programming with wxWidgets. ISBN 0-13-147381-6. 2006 [Telea, Alexandru et al] Architecting an Open System for Querying Large C and C++ Code Bases. CiteSeer 2008 [Worth, D. J. et al] Comparison of CVS and Subversion. Technical Report. 2006
2.
3.
4. 5. 6.
7. 8.
9.
Pgina 15