Source: https://www.slideshare.net/josefer015/introduccion-a-la-programacion-37498990
Timestamp: 2017-08-19 02:07:14+00:00

Document:
Historia de la programacion by tacubomx 12817 views
Introducción a los lenguajes - Fund... by DesarrolloWeb.com 18242 views
Users - Desarrollo PHP + MySQL by Julián Pizarro 22368 views
1 introduccion a la programacion 1 by Evelin Claudia 738 views
Unidad de medida de computacion by NikolasLozano 444 views
Introduccion a la Programacion: "Co... by anita939 113 views
Julian David Echenique Gomez , Capacitador en Fino Company at Fino Company
CArlos Arce , Ingeniero Operacion CSM at EPSA
Luis Reinoso , TSU en Gerontología y Estudiante de Medicina at Universidad Nacional Experimental Francisco de Miranda
1. AprendAAprogrAmArsinconocimientosprevios Conociendo el manejo y la confección de los programas, podremos comprender la lógica propia de la programación y trabajar en cualquier tipo de lenguaje. profesor en LÍneA Ante cualquier consulta técnica relacionada con el libro, puede contactarse con nuestros expertos: profesor@redusers.com. reDUsers.com En nuestro sitio podrá encontrar noticias relacionadas y también participar de la comunidad de tecnología más importante de América Latina. en este Libro AprenDerá: Desarrollo de aplicaciones informáticas: cuáles son los propósitos para aprender a desarrollar software y en qué ámbitos podemos aplicarlos. introducción a la programación: metodologías y ciclo de vida de un desarrollo. Análi- sis, diseño e implementación del sistema. Pseudocódigo y estructuras de control. primer proyecto en Visual basic y C++: características más importantes que encierra cada lenguaje y cómo funciona su interacción con los usuarios. estructuras de datos: un vistazo a las estructuras de datos más utilizadas en la programación de cualquier lenguaje y su desarrollo lógico. normas en la confección de interfaces: pautas útiles a tener en cuenta para lograr una interfaz funcional y armónica. introdUcciÓn A LA progrAmAciÓn Presentamos un libro ideal para todos aquellos que quieran iniciarse en el mundo de la programación y conocer las bases necesarias para generar su primer software. A lo largo de su contenido, analizaremos el contexto que impulsa el desarrollo de aplicaciones y las partes que lo constituyen. Una vez adquiridos estos conocimientos, aprenderemos la importancia del pseudocódigo, que nos permitirá trabajar con cualquier lenguaje de programación. A continuación, repasaremos la estructuración de datos para entender cómo funciona su lógica y, así, armar los prototipos de aplicaciones, ya sean de escritorio, web o móviles. A través de explicaciones sencillas, guías visuales y procedimientos paso a paso, el lector descubrirá una obra imperdible para adquirir bases sólidas en el desarrollo de aplicaciones y aprender a programar de manera eficiente. por JUAn CArLos CAsALE sobre eL AUtor Juan Carlos Casale es Analista de sistemas y Administrador de Empresas, y da clases de Informática en el Colegio Universitario IEs siglo 21, ubicado en Córdoba capital, Argentina. Allí también edita textos interactivos de estudio y trabaja como coordinador de área en los laboratorios de Informática. niVeL De UsUArio básico / intermedio CAtegorÍA Desarrollo
2. CONÉCTESE CON LOS MEJORES LIBROS DE COMPUTACIÓN >> DESARROLLO >> 320 PÁGINAS >> ISBN 978-987-1773-97-8 >> DESARROLLO >> 320 PÁGINAS >> ISBN 978-987-1773-79-4 >> DESARROLLO >> 400 PÁGINAS >> ISBN 978-987-1773-07-7 >> DESARROLLO / MICROSOFT >> 352 PÁGINAS >> ISBN 978-987-1857-38-8 313 >>> DESARROL >> 320 PÁGIN >> ISBN 978-9 >>> DESARROL >> 320 PÁGIN >> ISBN 978-9 >> DESARROL >> 400 PÁGIN >> ISBN 978-9 >> DESARROL >> 352 PÁGIN >> ISBN 978- DOMINEEL LENGUAJELÍDER ENAPLICACIONES CLIENTE-SERVIDOR ENTIENDAELCAMBIO, APROVECHESU POTENCIAL PROGRAMACIÓN DESITIOSWEB PROFESIONALES LASMEJORES PRÁCTICASPARA ELÉXITO PROFESIONAL MÁS INFORMACIÓN / CONTÁCTENOS Bombo - RT - Introduccion a la programacion.indd 1Bombo - RT - Introduccion a la programacion.indd 1 16/10/2012 18:55:1216/10/2012 18:55:12
3. INTRODUCCIÓN A LA PROGRAMACIÓN APRENDA A PROGRAMAR SIN CONOCIMIENTOS PREVIOS por Juan Carlos Casale
4. Copyright © MMXII. Es una publicación de Fox Andina en coedición con DÁLAGA S.A. Hecho el depósito que marca la ley 11723. Todos los derechos reservados. Esta publicación no puede ser reproducida ni en todo ni en parte, por ningún medio actual o futuro sin el permiso previo y por escrito de Fox Andina S.A. Su infracción está penada por las leyes 11723 y 25446. La editorial no asume responsabilidad alguna por cualquier consecuencia derivada de la fabricación, funcionamiento y/o utilización de los servicios y productos que se describen y/o analizan. Todas las marcas mencionadas en este libro son propiedad exclusiva de sus respectivos dueños. Impreso en Argentina. Libro de edición argentina. Primera impresión realizada en Sevagraf, Costa Rica 5226, Grand Bourg, Malvinas Argentinas, Pcia. de Buenos Aires en IX, MMXII. Casale, Juan Carlos Introducción a la programación. - 1a ed. - Buenos Aires : Fox Andina; Dálaga, 2012. 384 p. ; 24x17 cm. - (Manual users; 235) ISBN 978-987-1857-69-2 1. Informática. I. Título CDD 005.3 TÍTULO:	Introducción a la programación AUTOR:	Juan Carlos Casale COLECCIÓN:	Manuales USERS FORMATO:	17 x 24 cm PÁGINAS:	384 ISBN 978-987-1857-69-2
6. www.redusers.com PRELIMINARES4 Juan Carlos Casale Nacido en Salta capital, norte argentino, se trasladó a Córdoba capital para estudiar Análisis de Sistemas de Computación. Allí concretó sus estudios y continúa capacitán- dose hasta el día de hoy. Iniciado en la Informática por una gran influencia y motivación de su hermano ma- yor, creció avocándose al hardware, a las metodologías para el manejo de equipos y al ámbito de la programación en general. Actualmente, es Analista de Sistemas y Administrador de Empresas, con aspiraciones a la Licenciatura en Tecnologías de la Educación. También es docente de Informática y coordinador de área en laboratorios de Informática del Colegio Universitario IES Siglo 21, ubicado en Córdoba capital. Además, ha editado distintos textos interactivos de estudio para la institución en donde se desempeña. E-mail: johncasale@hotmail.com Dedicatoria A mi hermano mayor, Walter, con quien compartí mi primera PC, y me brindó siempre su apoyo incondicional. Agradecimientos A mí amada compañera de vida, Cecilia, por acompañarme durante todo el camino de desarrollo de este libro. A Matías Iacono, por confiar en mí y dar mis referencias; además de ser un gran modelo para seguir en la Informática. A mi súper editora Belén, con quien formamos un gran equi- po y mantuvimos siempre el optimismo.
7. www.redusers.com INTRODUCCIÓN A LA PROGRAMACIÓN 5 Prólogo Cuando tenía diez años, mi hermano llegó a casa con unas cajas y yo, sinceramente, no entendía nada de lo que veía. En ese momento, la computadora no era más que un “futuro juguete”; y pensar que hoy constituye mi herramienta de trabajo y, también, mi juguete… Después de haber quemado dos fuentes de alimentación y de sufrir algunos errores con las máquinas que tuvimos, empecé a interesarme más en su funcionamiento y a pensar qué cosas realmente productivas podía hacer con estos aparatos. Desde entonces, tomé la decisión de dedicarme a ellos, estudiando y considerando la Informática como mi vocación. De a poco fui aprendiendo sobre el desarrollo de aplicaciones –por aquellas épocas, C++–, incursionando y rompiendo cosas del hardware en varios equipos. Al recibirme, se abrieron puertas que nunca había imaginado. La docencia se presentó frente a mí, y desde entonces, encontré mi nuevo don, que es capacitar. Hasta el día de hoy, soy feliz dando clases y aprendiendo de mis alumnos. Es un gran orgullo verlos crecer y superar obstáculos. Nunca pensé en ser capacitador, motivador y, mucho menos, autor de libros. Hay oportunidades en la vida que nos sorprenden, y está en nosotros tomarlas o no. Mi consejo: es preferible alimentar nuestra experiencia de pruebas y errores y no desmotivarnos si las cosas no salen como lo esperábamos, ya que el verdadero fracaso sería no haberlo intentado. A lo largo del desarrollo, nos encontraremos con distintos inconvenientes que nos dejarán alguna enseñanza para seguir probando. Espero que esta obra sea una buena base para iniciarse en el mundo de la programación. Hoy en día, contamos con variada tecnología y muchos medios a los cuales podemos dirigirnos; está en nosotros tomar las oportunidades que ofrece el libro y continuar instruyéndonos en el desarrollo de aplicaciones. Juan Carlos Casale
8. www.redusers.com PRELIMINARES6 El libro de un vistazo En este libro encontraremos todas las bases necesarias para iniciarnos en el desarrollo de programas informáticos y, así, crear nuestro primer software. A lo largo de esta obra, iremos aprendiendo la lógica de la programación a partir de modelos prácticos que facilitarán la visualización y comprensión de los temas. DESARROLLO DE APLICACIONES Por qué deseamos realizar una aplicación de software y cuál es su funcionamiento interno. En este primer capítulo, conoceremos los ámbitos en donde podemos aplicar los desarrollos de software, qué precisamos tener en cuenta a la hora de desarrollar y qué hay detrás de las aplicaciones informáticas. INICIO DE UN DESARROLLO En este capítulo veremos las metodologías que se utilizan en el mercado del software para llevar adelante proyectos de programación. También trabajaremos sobre el análisis funcional, el ciclo de vida de un software y el diseño necesario para iniciar la programación de aplicaciones. INGRESO AL MUNDO DE LA PROGRAMACIÓN Empezaremos por la base de la programación, constituida por el pseudocódigo, es decir, el lenguaje humano que nos permite hacer “pensar” a una máquina. En este capítulo veremos las nomenclaturas que se utilizan para escribirlo y, así, determinar el funcionamiento interno de un desarrollo de software. PRIMER PROYECTO EN VISUAL BASIC En este capítulo pondremos en práctica lo aprendido en pseudocódigo, adentrándonos ya en un lenguaje de programación que es reconocido por su facilidad de uso. Veremos un entorno de desarrollo y las características del lenguaje en sí, para así comenzar con nuestra primera aplicación. PRIMER PROYECTO EN C++ Sumando una experiencia diferente al lenguaje estudiado en el capítulo anterior, trabajaremos con C++ en un entorno de desarrollo diferente. De esta forma, podremos reconocer las características más importantes que encierra este lenguaje y seguiremos confeccionando pequeñas aplicaciones.
9. www.redusers.com INTRODUCCIÓN A LA PROGRAMACIÓN 7 ESTRUCTURA DE DATOS EN LA PROGRAMACIÓN En este capítulo veremos algunas de las estructuras de datos más utilizadas en la programación de cualquier lenguaje. Aquí repasaremos las nociones de: tipos, listas, colas y pilas; y trabajaremos en el desarrollo lógico de la programación. NORMAS GENERALES EN LAS INTERFACES GRÁFICAS A la hora de utilizar diferentes dispositivos o medios que nos permitan mostrar nuestro desarrollo, debemos tener en cuenta ciertas pautas útiles. Estas nos permitirán la confección y el diseño de una interfaz funcional y armónica desde el lenguaje de programación Visual Basic. ALMACENAR INFORMACIÓN EN ARCHIVOS Para ir dando un cierre a los temas vistos a lo largo del libro, aprenderemos a almacenar datos en un archivo. De esta forma, cerraremos la generación de nuestras primeras aplicaciones en un lenguaje de programación. A lo largo de este manual podrá encontrar una serie de recuadros que le brindarán información complementaria: curiosidades, trucos, ideas y consejos sobre los temas tratados. Para que pueda distinguirlos en forma más sencilla, cada recuadro está identificado con diferentes iconos: INFORMACIÓN COMPLEMENTARIA CURIOSIDADES E IDEAS ATENCIÓN DATOS ÚTILES Y NOVEDADES SITIOS WEB
10. MEJORA TU PC Lareddeproductossobretecnologíamás importante del mundo de habla hispana Coleccionables Cursos intensivos con gran desarrollo visual Libros Desarrollos temáticos en profundidad L D p Revistas Las últimas tecnologías explicadas por expertos Newsletters El resumen de noticias que te mantiene actualizado Regístrate en redusers.com N E q R RedUSERS redusers.com Noticias al día downloads, comunidad RedUSERS PREMIUM premium.redusers.com Nuestros productos en versión digital con contenido ampliado y a precios increíbles M m on es Usershop El ecommerce de RedUSERS, revistas, libros y fascículos a un clic de distancia. Entregas a todo el mundo usershop.redusers.com
11. www.redusers.com INTRODUCCIÓN A LA PROGRAMACIÓN 9 Contenido Sobre el autor............................................................. 4 Prólogo ....................................................................... 5 El libro de un vistazo.................................................. 6 Información complementaria..................................... 7 Introducción............................................................. 12 Desarrollo de aplicaciones Desarrollo de aplicaciones.........................................14 Propósitos para aprender a desarrollar .................15 Tipos de aplicaciones ................................................18 Aplicaciones web...................................................18 Aplicaciones de escritorio......................................19 Aplicaciones móviles .............................................20 Interpretación de las aplicaciones ...........................20 Entrada/Proceso/Salida.........................................25 Primeras tareas de un desarrollador.........................26 Qué es un algoritmo...............................................27 Qué es un lenguaje de programación .....................28 Etapas en la resolución de un problema...................34 Vestirla Vestirla Comprar una nueva Elegir remera Es una remera blanca Es una remera de color Si Si No No Resumen ....................................................................35 Actividades ................................................................36 Inicio de un desarrollo Metodologías de desarrollo.......................................38 Tipos de metodologías...........................................39 Ciclo de vida de un desarrollo...................................41 Funciones del ciclo de vida....................................42 Roles profesionales ..............................................43 Modelos de ciclo de vida........................................44 Generalidades sobre metodologías ........................50 Análisis de sistema ....................................................51 Relevamiento ........................................................53 Diseño de un sistema.................................................57 Diagrama de casos de uso......................................58 Prototipos .............................................................62 Implementación del desarrollo .................................65 Prueba o testing de aplicaciones..............................65 Capacitación y formación del usuario ......................66 Resumen ....................................................................67 Actividades ................................................................68 Ingreso al mundo de la programación La lógica de un humano y de una máquina ..............70 Pseudocódigo:el lenguaje humano ..........................71 Normas para el pseudocódigo................................71 Qué son y cómo se usan las variables.....................75 Cómo se utilizan los operadores ............................80 Todo tiene un orden en la programación..................94 Estructuras de control ...........................................94 Tipos de datos estructurados..................................109
12. www.redusers.com PRELIMINARES10 Vector .................................................................110 Matriz.................................................................114 Utilizar funciones y procedimientos.......................120 Ámbito de las variables .......................................121 Funciones............................................................121 Procedimientos ...................................................127 Resumen ..................................................................129 Actividades ..............................................................130 Primer proyecto en Visual Basic Lenguajes de programación....................................132 Tipos de lenguajes...............................................132 Interfaces gráficas...................................................134 Nomenclatura en pseudocódigo y lenguajes de programación ...............................138 Lenguaje de programación: Microsoft Visual Basic.............................................140 Creación de proyectos .........................................140 Qué son y cómo se usan las variables...................146 Cómo se utilizan los operadores ..........................154 Todo tiene un orden en la programación..............159 Tipos de datos estructurados................................168 Uso de controles básicos......................................175 Resumen ..................................................................187 Actividades ..............................................................188 Primer proyecto en C++ IDE SharpDevelop ...................................................190 Funcionamiento del entorno de programación.....192 Lenguaje de programación:C++.............................195 Nombre de espacios ............................................196 Conceptos básicos del código...............................199 Primera aplicación en C++..................................201 Manejo de datos en C++ .........................................203 Tipos de datos .....................................................203 Declaración de variables .....................................204 Inicializar variables.............................................207 Formas de declarar constantes............................211 Cómo se utilizan los operadores.............................213 Asignación (=).....................................................213 Operadores aritméticos........................................214 Asignación compuesta.........................................215 Aumentar y disminuir..........................................216 Operadores relacionales y de igualdad.................216 Operadores lógicos ..............................................217 Operador condicional (?).....................................219 Operador coma (,)...............................................220 Operadores bitwise o bit a bit..............................220 Tipo de operador de conversión explícita.............221 Operador sizeof () ...............................................222 Precedencia de los operadores............................222 Interactuar con el usuario.......................................224 Cout - salida estándar..........................................224 Cin – entrada estándar ........................................226 Todo tiene un orden en la programación................230 Estructura condicional.........................................230 Estructuras selectiva (switch)..............................232 Estructuras repetitivas (loop)..............................234 Salto de declaraciones.........................................239 Datos estructurados:arrays ....................................243 Manejo de arrays ................................................243
13. www.redusers.com INTRODUCCIÓN A LA PROGRAMACIÓN 11 Sintaxis de inicialización.....................................244 Arrays multidimensionales ..................................246 Recorrer arrays...................................................248 Resumen ..................................................................249 Actividades ..............................................................250 Estructura de datos en la programación Tipos de estructuras................................................252 Datos simples y estructurados..............................253 Estructuras dinámicas y estáticas........................256 Estructuras dinámicas y punteros ........................257 Lista .........................................................................268 Listas enlazadas..................................................269 Listas doblemente enlazadas...............................293 Pila...........................................................................312 Crear una pila .....................................................313 Insertar en una pila (push)..................................316 Eliminar en una pila (pop)...................................318 Dato Sig 3 a c b c c -> Sig = Null; c -> Sig = c; Primera Parte Segunda Parte a Dato Sig 1 Null Dato Sig 2 Null c Dato Sig 3 Null Listar los elementos de una pila..........................320 Buscar elementos en una pila..............................320 Cola..........................................................................323 Crear una cola.....................................................325 Insertar en una cola ............................................327 Eliminar elementos de una cola ..........................328 Listar los elementos de una cola .........................330 Buscar elementos en una cola .............................332 Resumen ..................................................................333 Actividades ..............................................................334 Normas generales en las interfaces gráficas Normas de diseño de interfaz .................................336 Interfaces de usuario: evolución y estado del arte actual .......................................337 Fundamentos del diseño de interfaz ...................345 Interfaces de escritorio/web/móvil .........................349 Componentes usuales ..........................................349 Componentes usuales - visuales ..........................355 Confección de interfaces en Visual Basic...............357 Resumen ..................................................................365 Actividades ..............................................................366 Almacenar información en archivos Almacenar en archivo de texto (FileSystem) .........368 Resumen ..................................................................375 Actividades ..............................................................376 Servicios al lector Índice temático....................................................... 378
14. www.redusers.com PRELIMINARES12 Introducción Ante un mundo en constante innovación y descubrimiento, es el desarrollo del software el que nos permite gestionar la tecnología en hardware. Estos avances nos ofrecen un amplio abanico de posibilidades, en donde podemos desempeñarnos como desarrolladores, ya sea en la industria de los video juegos, las aplicaciones web, los sistemas informáticos de organizaciones, entre otros. Si hacemos una observación diez años atrás, veremos los cambios revolucionarios que ha traído la era digital en sus avances tecnológicos, y cómo ellos han afectado en nuestra comunicación diaria. Para dominar esta variedad de dispositivos –tanto smartphones, computadoras, tablets, Smart TV, ultranotebooks, etc.–, necesitamos desarrollar programas que nos permitan interactuar con ellos. Este libro está dirigido a todos aquellos que quieran iniciarse en el mundo de la programación y conocer las bases necesarias para crear su primer software. A lo largo de su contenido, nos plantearemos qué nos impulsa a comenzar un desarrollo de aplicaciones y qué partes lo constituyen. Cuando conozcamos el manejo y la confección de los programas, empezaremos a incursionar en la lógica misma de la programación y podremos movernos en cualquier tipo de lenguaje. En definitiva, el contenido del libro no se dirige hacia un único camino, sino que se propone brindar las herramientas necesarias para que sea el lector quien elija sobre qué escenario trabajar: escritorio, web, móvil, consola de videojuegos, etc. Todas estas oportunidades que ofrece la programación fueron alimentando la pasión y la experiencia que hoy presento en esta obra. ¡Que la disfruten!
15. Servicio de atención al lector: usershop@redusers.com Es fundamental conocer y comprender los elementos iniciales de los procesos que debemos tener en cuenta para incursionar en el mundo de la programación de aplicaciones. En este capítulo vamos a desplegar varias interfaces de soporte que utilizaremos en nuestros futuros desarrollos. Desarrollo de aplicaciones ▼▼ Desarrollo de aplicaciones........14 Propósitos para aprender a desarrollar..................................... 15 ▼▼ Tipos de aplicaciones................18 Aplicaciones web.............................. 18 Aplicaciones de escritorio................. 19 Aplicaciones móviles......................... 20 ▼▼ Interpretación de las aplicaciones ..............................20 ▼▼ Primeras tareas de un desarrollador...................26 Qué es un algoritmo.......................... 27 ▼▼ Etapas en la resolución de un problema...................................34 ▼▼ Resumen....................................35 ▼▼ Actividades................................36
16. 1. DESARROLLO DE APLICACIONES14 www.redusers.com Desarrollo de aplicaciones Como futuros desarrolladores, nos propondremos encontrar distintas soluciones posibles para resolver una situación mediante la confección de aplicaciones informáticas. En los siguientes párrafos, vamos a conocer el significado del desarrollo de aplicaciones, y la utilidad que nos ofrecen sus diferentes técnicas y herramientas. En el mundo actual, todos los días nos encontramos con distintos desarrollos de aplicaciones, como, por ejemplo, el programa que controla nuestro teléfono móvil. A su vez, contamos con programas que, en tiempo real, nos permiten traducir diferentes idiomas, conectarnos a Internet, jugar, llevar un listado de lo que compramos en el supermercado registrando su código de barras y estimando el costo total, y muchas alternativas más. Podemos notar que algunas aplicaciones son más básicas, y otras, más complejas. Si bien es posible considerar el teléfono móvil como un aparato complejo, el desarrollo de aplicaciones también impacta en otros elementos de uso cotidiano, tales como las heladeras inteligentes, el programa del microondas, las alarmas, y otros. El mundo en su totalidad se rige por programas desarrollados mediante algún lenguaje de programación. Todos los elementos electrónicos, en menor o mayor grado, contienen aplicaciones específicas para cumplir su misión. Una definición que podemos encontrar en primera instancia sobre el desarrollo de una aplicación es: confeccionar, probar y buscar errores de un programa informático. Dicho programa va a soluciona una situación o problema comúnmente llamado “modelo de negocio”, que A medida que la tecnología avanza, vamos incorporado “inteligencia” en distintos dispositivos. Es así que algunas marcas conocidas fabrican heladeras, aspiradoras, lavadoras y secarropas que incluyen comuni- cación por medio de WiFi, y otras, incluso, tienen cámaras. Todo esto permite que el usuario controle el dispositivo por medio de un software instalado en su dispositivo móvil. NUEVOS DISPOSITIVOS TODOS LOS ELEMENTOS ELECTRÓNICOS CONTIENEN APLICACIONES
17. INTRODUCCIÓN A LA PROGRAMACIÓN 15 www.redusers.com puede ser, por ejemplo, cuando nuestra empresa necesita llevar un inventario de productos. Para poder confeccionar un programa informático, precisamos emplear un lenguaje de programación que nos permita realizar la prueba o búsqueda de errores. Propósitos para aprender a desarrollar Cuando nos proponemos aprender a desarrollar y programar aplicaciones o sistemas, lo hacemos para cubrir determinadas necesidades, ya sean personales o de terceros, y así obtener un ingreso económico a cambio de nuestro trabajo. Uno de los pasos fundamentales que debemos efectuar antes de comenzar es aprender la programación lógica. Esto es importante porque, si bien los lenguajes de programación tienen sus particularidades, las soluciones lógicas son analizadas de un solo modo. De esta manera, conocer este tema claramente nos permitirá migrar a todos los lenguajes que queramos. Figura 1. Con este software, el sistema de manejo de los alimentos permite a los usuarios conocer qué hay en la heladera, dónde está cada producto y cuál es su fecha de caducidad.
18. 1. DESARROLLO DE APLICACIONES16 www.redusers.com Aprender a desarrollar aplicaciones nos ofrece muchas posibilidades, ya que podremos realizar programas en cualquier plataforma, ya sea para la Web, Windows, Linux o Macintosh; incluso, para móviles, televisión inteligente, etc. El propósito principal es tener la base lógica de programación, y luego elegir cuál es el lenguaje en el que deseamos poner nuestro mayor esfuerzo. Puede ser el que esté latente en el mercado, uno específico de un área (como para los trabajos científicos) o, simplemente, aquel en el que nos sintamos más cómodos para trabajar. Al adquirir estos conocimientos, podremos tomar cualquier modelo de negocio o problema funcional de una organización, y resolverlo mediante la programación de una aplicación. Resolver problemas: metas y objetivos Nuestra tarea principal será realizar una aplicación para resolver un problema en particular, o tal vez lo hagamos solo por diversión. Por ejemplo, podemos crear un programa para llevar en nuestro teléfono móvil una agenda que nos informe los días de estreno de nuestras series favoritas de televisión. También podemos aplicarlo en el trabajo, para agilizar la toma de decisiones y digitalizar la información referida al desempeño de los empleados. Ambos son modelos de negocios distintos que plantean un problema, y nosotros debemos encontrar una solución. Estas necesidades pueden surgir desde distintos ámbitos: •	Personal: realizar pequeñas o amplias aplicaciones para un fin que nos beneficie. Por ejemplo: elegir una aplicación que nos indique el consumo de Internet en nuestro teléfono móvil o programar una página web personal. •	Empresarial: realizar sistemas informáticos, partes o módulos que tenemos que programar; incluso, arreglar un código que haya sido En la actualidad existe una amplia variedad de sitios dedicados a presentar ofertas laborales de modo freelance, permitiendo establecer contacto con las compañías y los recursos humanos. Algunos ejemplos de ellos son: www.smartise.com, www.trabajofreelance.com, www.mercadoprofesional.com, www.stratos-ad.com y http://pcmasmas.com. TRABAJO FREELANCE
19. INTRODUCCIÓN A LA PROGRAMACIÓN 17 www.redusers.com confeccionado por otro. Por ejemplo: utilizar nuestros conocimientos para mejorar un sistema de inventario o realizar una página web para una organización que cuenta con un módulo de ventas online. Tengamos en cuenta que el ámbito empresarial es más duro, ya que requiere seguir ciertas pautas y criterios que veremos en los próximos capítulos. En cambio, cuando las metas son personales, podemos dedicarnos a desarrollar de manera freelance, siendo nosotros mismos el sustento económico, y quienes organizamos las entregas y los horarios de trabajo. Una meta personal debería ser aprender cada día más para acrecentar nuestra experiencia, y saber que, por medio de errores y pruebas, iremos optimizando nuestro trabajo. Las metas empresariales son estrictas y, en general, nos afectan, ya que, por ejemplo, nos imponen un límite de tiempo específico que debemos cumplir. Dentro del desarrollo de aplicaciones, una meta empresarial que debe influir en nuestros objetivos personales es absorber los conocimientos del grupo de trabajo, para luego aplicarlos a los nuevos desafíos que vayamos afrontando más adelante. El planteo de metas es un punto excluyente en el desarrollo de aplicaciones, porque tener en claro hacia dónde queremos llegar nos motivará a nivel personal a seguir investigando, buscando y probando. Al mismo tiempo, nos ayudará a plantearnos los objetivos buscados sobre los desarrollos a realizar. De esta forma, algo que parece tan sencillo como plantearse una meta y conocer los objetivos nos permitirá organizar y optimizar el desarrollo. BASIC originalmente fue diseñado en 1964 como un medio para facilitar el desarrollo de programas de computación a estudiantes y profesores que no se dedicaran específicamente a las ciencias. Su aparición como herramienta de enseñanza estaba diseñada para la primera computadora personal. Con los años, el lenguaje se popularizó e influyó en gran medida en otros, como Visual Basic. LENGUAJE BASIC EL PLANTEO DE METAS ES UN PUNTO EXCLUYENTE EN EL DESARROLLO DE APLICACIONES
20. 1. DESARROLLO DE APLICACIONES18 www.redusers.com En resumen, a la hora de desarrollar una aplicación que resuelva un modelo de negocio o problema, ya sea personal o empresarial, debemos tener presentes nuestras metas, evaluar si el alcance del desarrollo es a corto o largo plazo, y establecer claramente cuáles serán nuestros objetivos a seguir. Hasta aquí hemos visto cómo el desarrollo de las aplicaciones nos servirá para crear o modificar aquellos programas que permitirán realizar una o varias actividades. En los próximos capítulos, conoceremos cómo debería conformarse un equipo de desarrollo, en función del planteo de soluciones a problemas, metas y objetivos. Tipos de aplicaciones En el mercado informático actual, nos encontramos con diferentes soportes de hardware que albergan variados tipos de aplicaciones, ya sea exclusivas de Internet, del sistema operativo o de un aplicativo en particular. Así como antes comenzamos a formar el concepto de desarrollo de una aplicación, ahora vamos a reforzarlo haciendo un repaso de las aplicaciones existentes, de modo de tener una idea gráfica de qué podemos considerar para nuestro trabajo. Aplicaciones web Las aplicaciones web son herramientas muy comunes en organizaciones que desean ampliar las fronteras de sus modelos de negocios o, simplemente, alcanzar la autogestión para empleados, alumnos, docentes, etcétera. Si bien muchas veces el término software libre se confunde con freeware, es importante tener en cuen- ta que se trata de conceptos distintos. La diferencia principal reside en que este último no tiene como condición ser gratuito. La denominación de “libre” se debe a que son programas de código abierto (Open Source), y es en ese punto en donde se encuentra la esencia de su libertad. QUÉ ES EL SOFTWARE LIBRE
21. INTRODUCCIÓN A LA PROGRAMACIÓN 19 www.redusers.com Algunas páginas web que poseen una programación agradable son: •	Portal de bancos (todos tienen autogestiones completas, donde se pueden hacer extracciones, movimientos, pagos, etc.): - www.macro.com.ar - www.santanderrio.com - www.hsbc.com - www.icbc.com.cn •	Portal educativo (permite registrar usuarios y contraseñas, publicar contenidos, efectuar búsquedas, etc.): - www.educ.ar •	Portal de juegos (permite registro de usuarios, subir listas de puntuaciones, compartir comentarios, etc.): -www.armorgames.com Hay una amplia variedad de sitios web destinados a distintos rubros, como puede ser el automotriz, en donde es posible personalizar o armar autos a gusto, elegir colores, definir agregados, etc. Esto nos demuestra la variedad de trabajo que se puede realizar en los desarrollos para la Web. Aplicaciones de escritorio Las aplicaciones de escritorio son aquellas que funcionan sobre un sistema operativo de PC (computadora personal) o notebook. Los desarrollos en este ámbito también son enormes, y podemos encontrarnos con algunos muy costosos, utilizados por grandes empresas; y con otros gratuitos y útiles que pueden servirnos para diferentes tareas. Por ejemplo, podemos dar un vistazo a: •	www.softpedia.com •	www.softonic.com Veremos que muchos de estos programas cuentan con un tipo de distribución llamado trial. Se trata de una instalación de prueba, generalmente por un máximo de 30 días a partir de su instalación, que suele tener funcionalidades limitadas. Otras versiones de prueba gratuitas pueden ser shareware o freeware, que podemos instalar y utilizar en los equipos que queramos. EXISTEN DISTINTAS VERSIONES DE PRUEBA QUE SON GRATUITAS PARA NUESTRO EQUIPO
22. 1. DESARROLLO DE APLICACIONES20 www.redusers.com Debido a la amplia variedad que existe en el mercado, en este libro vamos a presentar las aplicaciones más destacadas de este momento. Una de ellas es Adobe Photoshop, reconocida por sus famosos retoques de imágenes. Frente a esto, es bueno saber que existen otras alternativas gratuitas a las que podemos recurrir, como es el caso de GIMP. Para conocer más sobre este soft, podemos ingresar en www.gimp.org. Aplicaciones móviles Son aplicaciones que se utilizan en equipos móviles, como teléfonos celulares o tabletas. Suelen ser muy similares a las de escritorio, ya que permiten realizar las mismas tareas, aunque el ingreso de datos es táctil o por voz. Para visualizar algunos ejemplos, podemos visitar la página del mercado de Android, donde hay una infinidad de opciones gratuitas y pagas: https://play.google.com/store. Interpretación de las aplicaciones Hasta aquí hemos realizado una introducción referida a lo que podemos encontrar en el mercado del software; ahora aprenderemos cómo es el funcionamiento interno de un programa y cuáles son los aspectos más importantes que debemos tener en cuenta, para así conocer el trasfondo de lo que vamos a desarrollar. El proceso de funcionamiento puede ser sencillo si lo trabajamos con ejemplos, pero se vuelve más complejo en el proceso lógico real. No obstante, todas las aplicaciones suelen tener la misma estructura de ejecución. Para comenzar, no ahondaremos en el hardware implicado, pero sí en la interpretación de un programa por medio del equipo informático. Debemos tener en cuenta la manera en que un sistema de cómputos electrónico interpreta la información y cómo nosotros, futuros desarrolladores, la vemos. Todo comienza por los famosos bits de datos. Un bit representa la unidad de medida más pequeña en información digital, y tiene dos estados: 0 o 1; generalmente, el 0 se representa como cerrado (o negativo) y el 1 como abierto (o positivo).
23. INTRODUCCIÓN A LA PROGRAMACIÓN 21 www.redusers.com Figura 2. Una forma sencilla de ver el funcionamiento del programa en la computadora. Una aplicación envía información para modificar una imagen y pixelarla Es procesado en lenguaje maquina 0101111110110 por el microprocesador Retorna un resultado En la Figura 2 se muestran diferentes agentes que debemos tener en cuenta en el uso de un dispositivo informático y la comunicación entre los equipos. Es importante saber que podemos utilizar nuestro hardware –ya sea una PC, un teléfono móvil o una tableta– gracias a un software base o aplicación base llamado sistema operativo. Sobre este sistema es posible instalar diferentes aplicativos, como: paquetes de oficina, procesadores de texto, planillas de cálculo, juegos, herramientas de desarrollo, de diseño, y otros. El sistema nos permite el uso de nuestro hardware y, además, actúa como intermediario entre la aplicación y los usuarios. Hasta aquí hemos visto que las aplicaciones se comunican con nuestro hardware por medio de un protocolo binario (0 y 1), conocido C es un lenguaje de programación creado en 1972, orientado a la implementación de sistemas operativos, concretamente, UNIX. Es el lenguaje de programación más popular para crear software de sistemas y aprecia- do por la eficiencia de su código. Fue desarrollado, originalmente, por programadores para programadores. LENGUAJE C
24. 1. DESARROLLO DE APLICACIONES22 www.redusers.com como lenguaje de máquina. Para entender la comunicación cotidiana que existe entre los usuarios y las aplicaciones, podemos decir que, en la actualidad, la interacción se da por medio de interfaces gráficas; es decir, de una manera visual, a través de iconos, colores y formas. Sin embargo, no podemos limitarnos a decir que la única interfaz es la visual, porque existen diferentes aplicaciones que utilizan varios de nuestros sentidos: tacto, oído e, incluso, olfato. Si nos detenemos un momento a revisar qué es en realidad una interfaz y cuáles son sus diferentes significados, encontraremos que existe una gran variedad que nos involucra como usuarios. A continuación, veamos algunos ejemplos. Figura 3. Esquema sencillo referido a la comunicación de los elementos en un sistema informático. SOFTWARE Aplicaciones Sistema operativo Procesador, memoria, etc. HARDWARE
25. INTRODUCCIÓN A LA PROGRAMACIÓN 23 www.redusers.com Tabla 1. Aquí se pueden ver los sentidos humanos que se involucran en diferentes componentes tecnológicos. ▼ TIPO ▼ DESCRIPCIÓN ▼ DISPOSITIVOS Tacto En la actualidad, es muy frecuente el uso de los dedos para interactuar con dispositivos para su manejo y uso. - Smartphones - Tabletas - Mesas Touch www.youtube.com/watch?v=xQzSP26vcfw - Dispositivos para no videntes: http://www.yankodesign.com/2009/06/15/ touchphone-for-the-blind/ Vista Uno de los sentidos más involucrados para interactuar con los diferentes dispositivos, en especial, para la salida de información. Existen dispositivos especiales para ciertas discapacidades, que pueden usarse para interactuar en las pantallas como puntero de mouse. - Monitores - Televisores - Webcams - Vinchas que reconocen los movimientos ocula- res: www.youtube.com/watch?v=A92WNMd46VI Movimiento psicomotriz Implica interactuar con nuestro cuerpo en diferentes dispositivos. Los videojuegos son los principales impulsores de esta interfaz. - Kinect - Wii - PS Move Olfato En desarrollo constante, se intenta involucrar este sentido en algún dispositivo para perci- bir aromas por medio de una aplicación. No hay nada concreto desarrollado LOS SENTIDOS Podemos considerar freeware a todo aquel programa que se distribuya de manera gratuita, sin ningún costo adicional. Uno de los grandes ejemplos en este rubro es la suite de navegador, cliente de correo y noticias de Mozilla, como así también el navegador y las herramientas de Google. Una página que podemos visitar al respecto es www.freewarehome.com. FREEWARE
26. 1. DESARROLLO DE APLICACIONES24 www.redusers.com Figura 4. La botonera de un ascensor, como tipo de interfaz táctil, nos permite enviar la orden al dispositivo. Tomando este tema como una pequeña introducción acerca de cómo los sentidos se involucran en distintas interfaces que podemos utilizar, en este caso nos dedicaremos a interfaces gráficas y táctiles, las que más utilizamos en nuestra vida cotidiana, al menos por ahora. Para concluir con este tema, podemos decir que la interacción humana con un dispositivo electrónico siempre va a llevarse a cabo por medio de una interfaz. A su vez, para que esto ocurra, la interfaz debe contener algún software que interactúe con el hardware del dispositivo, y así nos permita obtener el resultado deseado. Figura 5. Otro ejemplo cotidiano de interfaz táctil es el panel de un microondas, que utilizamos para programar la cocción.
27. INTRODUCCIÓN A LA PROGRAMACIÓN 25 www.redusers.com Figura 6. La interfaz de la mesa con tablero translúcido actúa al identificar el movimiento de los objetos sobre ella. Entrada/Proceso/Salida La entrada es el ingreso o comando de datos que vamos a realizar sobre un dispositivo, como, por ejemplo: tocar la pantalla, escribir, mover el puntero del mouse, hacer el movimiento con un joystick, etc. Por lo tanto, toda entrada se hará por medio de un dispositivo, como puede ser una pantalla táctil, un teclado, una webcam o un mouse. El proceso es el trabajo, la interpretación y el cálculo de la información ingresada. Esta información puede ser un movimiento del mouse, una tecla pulsada, datos para calcular enviados, y otros. Fundamentalmente, en el proceso ya entran en juego el procesador y la memoria de un dispositivo. La salida es el resultado de las acciones que se efectúan sobre la información. Por lo tanto, si pulsamos el botón del mouse, se ejecutará una aplicación (pulsar el botón Enviar de un correo), se realizará una Según la RAE (Real Academia Española, www.rae.es), el término interfaz significa conexión física y fun- cional entre dos aparatos o sistemas independientes, como puede suceder entre una persona y un dispositivo electrónico. Un ejemplo claro de esto se ve en la Figura 4, en donde utilizamos una botonera como interfaz para indicarle a un ascensor el piso al que queremos ir. ¿QUÉ ES UNA INTERFAZ?
28. 1. DESARROLLO DE APLICACIONES26 www.redusers.com acción en un juego (como disparar), se devolverá el resultado de un cálculo, se ejecutará un video, y otras opciones más. Este proceso de retroalimentación nos dará los mismos resultados, presionando ya sea uno o varios botones del teclado. Primeras tareas de un desarrollador Hasta este punto, hemos visto que la interacción con dispositivos electrónicos se presenta por medio de interfaces. Estas, a su vez, cuentan con un software que traduce nuestras acciones a un lenguaje máquina reconocido por el hardware, con lo cual se obtiene un resultado. Para lograr esto, como desarrolladores es importante que conozcamos la manera de darle al equipo informático las indicaciones necesarias. En este libro aprenderemos a confeccionarlas por medio del estudio de la lógica de programación, y a plasmarlas en líneas de código de un software específico para diagramar y tipear. A continuación, desarrollaremos dos conceptos fundamentales que debemos tener bien en claro durante el desarrollo: algoritmia y lenguajes de programación. Una vez que los dominemos, podremos lograr que el software cumpla con todas nuestras indicaciones. Figura 7. El proceso de retroalimentación comienza con el ingreso de la información y concluye con la acción emitida por el dispositivo. Retroalimentación Entrada Proceso Salida
29. INTRODUCCIÓN A LA PROGRAMACIÓN 27 www.redusers.com Qué es un algoritmo Si bien encontraremos múltiples definiciones de lo que es un algoritmo, nosotros trabajaremos con la genérica que toma la RAE, en la que se hace referencia a un conjunto ordenado y finito de operaciones que permite hallar la solución de un problema. Nosotros, como seres humanos, tenemos incorporado un “algoritmo” de decisiones. Por ejemplo, si deseamos vestir una remera, realizamos un proceso de selección de cuál o tal queremos, y terminamos por hacer la selección deseada. En un conjunto ordenado y finito de operaciones, podríamos representar, a través de un algoritmo, este proceso de selección y solución. De esta manera, podemos definir el algoritmo como una serie de pasos ordenados que debemos seguir para lograr, finalmente, la resolución de una situación o problema. En el desarrollo, para poder ejecutar una aplicación, tenemos que traducir esto a sentencias ordenadas de código que se ejecuten línea a línea. Vestirla Vestirla Comprar una nueva Elegir remera Es una remera blanca Es una remera de color Si Si No No Figura 8. Proceso de selección de una remera para vestir. Se trata de una representación de algoritmos llamado diagrama de flujo.
30. 1. DESARROLLO DE APLICACIONES28 www.redusers.com Qué es un lenguaje de programación Anteriormente presentamos la comunicación que existe entre un software y el hardware. Ahora vamos a conocer la comunicación que debemos establecer nosotros, como desarrolladores, frente a nuestro hardware, para lograr que este ejecute las tareas o procesos que deseamos. Para este fin, necesitaremos como herramienta primordial un lenguaje de programación. Existen muchos lenguajes de programación que nos permiten desarrollar, por medio de un código (protocolo), sentencias algorítmicas que luego son traducidas a lenguaje máquina. Estos cumplen la función de intermediarios entre el desarrollador y el hardware. Teniendo en cuenta esta diversidad, veremos que hay dos grupos generales. Por un lado, se encuentran los lenguajes más próximos a la arquitectura del hardware, denominados lenguajes de bajo nivel (son Figura 9. En este cuadro conceptual vemos la representación de los distintos lenguajes de programación. Desarrollador Hardware Comunicación entre: Niveles Lenguaje de programación Bajo Alto Código binario Lenguaje maquina Lenguaje humano Visual Basic Visual Basic PHPC#JavaC++
31. INTRODUCCIÓN A LA PROGRAMACIÓN 29 www.redusers.com Tabla 2. Las diferencias básicas entre los lenguajes de programación. más rígidos y complicados de aprender). Por otro lado, están aquellos más cercanos a los programadores y usuarios, denominados lenguajes de alto nivel (son más comprensibles para el lenguaje humano). En la Figura 9 vemos una representación clara de este concepto. En distintos escritos se consideran lenguajes de bajo nivel a algunos como: FORTRAN, ASSEMBLER y C. Como lenguajes de alto nivel podemos mencionar: Visual Basic, Visual C++ y Python. Si bien podemos encontrar categorizaciones más finas al respecto, que describan diferentes tipos de lenguajes, recordemos que, en términos generales, siempre se habla de lenguajes de alto nivel y de bajo nivel. ▼ LENGUAJE ▼ DESCRIPCIÓN Máquina Código interpretado directamente por el procesador. Las invocaciones a memoria, como los procesos aritmético-lógicos, son posiciones literales de conmutadores físicos del hardware en su representación booleana. Estos lenguajes son literales de tareas. Ver su ejemplo en la Figura 10. Bajo nivel Instrucciones que ensamblan los grupos de conmutadores necesarios para expresar una mínima lógica aritmética; están íntimamente vinculados al hardware. Estos lenguajes es- tán orientados a procesos compuestos de tareas, y la cantidad de instrucciones depende de cómo haya sido diseñada la arquitectura del hardware. Como norma general, están disponibles a nivel firmware, CMOS o chipset. Ver su ejemplo en la Figura 11. Medio nivel Son aquellos que, basándose en los juegos de instrucciones disponibles (chipset), per- miten el uso de funciones a nivel aritmético; pero a nivel lógico dependen de literales en ensamblador. Estos lenguajes están orientados a procedimientos compuestos de pro- cesos. Este tema se verá a continuación, en el ejemplo Código C y Basic. Alto nivel Permiten mayor flexibilidad al desarrollador (a la hora de abstraerse o de ser literal), y un camino bidireccional entre el lenguaje máquina y una expresión casi oral entre la escritura del programa y su posterior compilación. Estos lenguajes están orientados a objetos. Ver su ejemplo en la Figura 12. DISTINTOS NIVELES
32. 1. DESARROLLO DE APLICACIONES30 www.redusers.com Figura 10. Interpretación general de cómo se vería la comunicación de instrucciones al procesador. MCU Programación de microcontrolador 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 100 000 0 000 CPU Memoria de programa Ejecución de programa 10110011011100 10010010011100 00110011010101 10111101010100 10110011011101 10110001011001 11110010011010 Bin. 2FC23AA71 F43E0021A DA67F0541 Hex. Código ejecutable en formates binario y hexadecimal COMPUTADORA Figura 11. El código fuente de la izquierda representa el código en lenguaje C; y el de la derecha, el código en ASSEMBLER.
33. INTRODUCCIÓN A LA PROGRAMACIÓN 31 www.redusers.com En los cuadros que aparecen a continuación veremos el código fuente de dos lenguajes de programación muy importantes: C y Basic. Al principio no debemos asustarnos, se trata solo de ejemplos para ir conociendo cómo se vería el desarrollo aplicado en ellos. En el siguiente código veremos en detalle la declaración de variables requeridas para el lenguaje C. C int main() { /* Declaración de variables */ int ano,dia; int mes; int total; int i; int sol; } En el lenguaje de programación de Basic, el código que aparece a continuación significa: “limpia” la pantalla de cualquier texto, luego asigna valores a las variables (como el nombre y un número) y finaliza con la impresión en pantalla del resultado. BASIC CLS nombre1$=”George Kemeny” valor1=500 nombre2$=”Eugene Kurtz” valor2=350 PRINT nombre1$ PRINT valor1 PRINT nombre2$ PRINT valor2
34. 1. DESARROLLO DE APLICACIONES32 www.redusers.com Figura 12. Ejemplo sobre el conjunto de herramientas que constituyen un entorno de desarrollo visual en C#. Dentro de la amplia variedad de lenguajes de programación que mencionamos antes, en la Figura 13 podremos observar algunos de los que se presentan actualmente en el mercado. A continuación, veremos un listado que incluye otras fuentes a las que podemos acceder para conocer los rankings o tener más información sobre los distintos lenguajes de programación. •	www.tiobe.com •	http://langpop.com Los diagramas de flujo son descripciones gráficas de algoritmos que usan símbolos conectados median- te flechas para indicar la secuencia de instrucciones. Este tipo de diagramas se utilizan para representar algoritmos pequeños. Su construcción es laboriosa y son medianamente fáciles de leer para personas que no están involucradas en la programación. DIAGRAMA DE FLUJO
35. INTRODUCCIÓN A LA PROGRAMACIÓN 33 www.redusers.com •	www.genbetadev.com/desarrolladores/ranking-de-lenguajes- de-programacion-mas-usados-en-marzo-2011 •	www.realmagick.com/timeline-of-programming-languages Hasta aquí, conocimos la comunicación establecida entre un software y el hardware, y cómo debemos actuar para lograr que, por medio de algoritmos, nuestro sistema realice las tareas que nosotros deseamos. Esto es posible gracias al lenguaje de programación que elijamos, ya sea el que más nos gusta o aquel que se adapta mejor a las necesidades del mercado actual. Más allá de la decisión que tomemos, este libro nos servirá como guía y apoyo para aprender a trabajar sobre cualquier lenguaje, ya que nos brindará las bases necesarias para comprender y saber aprovechar mejor sus diferentes características. Figura 13. Algunos de los lenguajes más utilizados durante el año 2012. Fuente: www.tiobe.com Posicion Jul 2012 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Posicion Jul 2011 2 1 5 3 4 7 5 8 9 12 10 14 13 15 25 16 19 11 21 26 Delta en la posición Lenguaje de programación C Java Objective-C C++ C# (Visual) Basic PHP Python Perl Ruby JavaScript Delphi/Object Pascal Lisp Transact-SQL Visual Basic.NET Pascal Ada Lus PL/SQL MATLAB Valoración Jul 2012 18.331 % 16.087 % 9.335 % 9.118 % 6.668 % 5.695 % 5.012 % 4.000 % 2.053 % 1.768 % 1.454 % 1.157 % 0.997 % 0.954 % 0.917 % 0.837 % 0.689 % 0.684 % 0.645 % 0.639 % Delta Jul 2011 +1.05 % -3.16 % +4.15 % +0.10 % +0.45 % +0.59 % -1.17 % +0.42 % -0.28 % +0.44 % -0.79 % +0.27 % +0.09 % +0.15 % +0.43 % +0.17 % +0.14 % -0.89 % +0.10 % +0.19 % Estado A A A A A A A A A A A A A A A A A A A A
36. 1. DESARROLLO DE APLICACIONES34 www.redusers.com Etapas en la resolución de un problema Ahora que conocemos las herramientas involucradas en el desarrollo de aplicaciones, es conveniente revisar qué tareas generales debemos considerar para llevar a cabo esta labor. Como seres humanos, tenemos incorporada intuitivamente la resolución de problemas cotidianos gracias a nuestra experiencia, y para intentar afrontar un inconveniente, solemos hacer un proceso rápido de selección e intentamos buscar la opción más favorable. En el ámbito laboral, y más aún en el desarrollo de aplicaciones, debemos ser cautelosos al momento de resolver alguna tarea o proceso. Por eso, nos será de gran utilidad aplicar una herramienta del lenguaje de programación que nos permita confeccionar un programa y, así, resolver dicha situación. Si bien este esquema nos será útil para la resolución de un desarrollo sencillo, en caso de trabajar con sistemas amplios, deberemos incluir ciertas técnicas de ingeniería del software. Figura 14. En este esquema aparecen las principales etapas que se encuentran involucradas durante el desarrollo de aplicaciones. Análisis Diseño Pseudocódigo Test de ejecución Compilación Código (lenguaje de programación) Errores Errores APLICAREMOS HERRAMIENTAS DE UN LENGUAJE PARA RESOLVER LA SITUACIÓN
37. INTRODUCCIÓN A LA PROGRAMACIÓN 35 www.redusers.com En el proceso que vemos en el gráfico de la Figura 14, puede suceder que debamos retroceder y volver a analizar o replantear algunas de las acciones. Revisemos los pasos expuestos en el esquema (y en los próximos capítulos veremos cómo se desarrolla una aplicación basada en él). Los siguientes aspectos son pasos que seguiremos como desarrolladores para resolver una situación: •	Analizar el problema que vamos a resolver. •	Diseñar una solución. •	Traducir la solución a pseudocódigo. •	Implementar en un lenguaje de programación todo lo analizado. •	Compilar el programa. •	Realizar pruebas de ejecución. •	Corregir los errores que haya. En este capítulo empezamos a conocer el funcionamiento del software y revisamos la comunicación que tiene el hardware con los programas intangibles y abstractos. Vimos que esta comunicación se desarrolla por medio de un lenguaje máquina, y nosotros nos comunicamos con el equipo electrónico por medio de interfaces. Gracias al lenguaje de programación, nosotros, como desarrolladores, podemos indicar las acciones que deseamos realizar a través de algoritmos. Por último, vimos la manera en que debemos empezar a encarar la resolución de los problemas, teniendo en cuenta el lenguaje y la lógica de programación. RESUMEN
38. 1. DESARROLLO DE APLICACIONES36 www.redusers.com Actividades TEST DE AUTOEVALUACIÓN 1 ¿Qué es el lenguaje máquina? 2 ¿Cuántos niveles de lenguaje de programación existen? 3 ¿Qué es un lenguaje de alto nivel? 4 ¿Qué es un algoritmo? 5 ¿Cómo se comunica el hardware con el software? 6 ¿Qué es el código binario? 7 ¿Cuántos tipos de aplicaciones podemos encontrar? 8 ¿Qué es un lenguaje de programación? 9 ¿Qué representa en el software la entrada/proceso/salida? 10 ¿Cuáles pueden ser los propósitos para realizar un desarrollo?
39. Servicio de atención al lector: usershop@redusers.com A medida que la tecnología y la innovación en la informática progresan, algunos profesionales del ámbito consideran que es necesario seguir ciertas pautas predefinidas en el desarrollo del software, basadas en el comportamiento metódico y el intenso análisis de sistemas. Inicio de un desarrollo ▼▼ Metodologías de desarrollo......38 ▼▼ Ciclo de vida de un desarrollo..41 Funciones del ciclo de vida............... 42 ▼▼ Análisis de sistema...................51 ▼▼ Diseño de un sistema................57 ▼▼ Implementación del desarrollo............................65 ▼▼ Prueba o testing de aplicaciones..........................65 ▼▼ Capacitación y formación del usuario.................................66 ▼▼ Resumen....................................67 ▼▼ Actividades................................68
40. 2. INICIO DE UN DESARROLLO38 www.redusers.com Metodologías de desarrollo Debido a las múltiples maneras que existen para conceptualizar una metodología, es complicado llegar a un acuerdo para definir qué es una metodología de desarrollo. Sin embargo, podemos encontrar un concepto en común que la define como un framework utilizado para estructurar, planear y controlar el proceso de desarrollo. De este modo, las metodologías nos proveerán de una organización que aplicaremos a los diferentes proyectos de programación. A la hora de conceptualizar una metodología, notaremos que existe una amplia variedad de enfoques a los que podemos recurrir. Para obtener una definición clara y asegurarnos de no dejar de lado ninguna cuestión importante, vamos a crear nuestro propio significado. Para eso, seleccionaremos los conceptos fundamentales que involucran a una metodología y analizaremos sus funciones: •	Metodología: conjunto de procedimientos, técnicas, herramientas y soporte documental que utilizan los desarrolladores a la hora de tomar las decisiones sobre el software a realizar. •	Tarea: actividades elementales en las que se dividen los procesos. •	Procedimiento: forma que se define para ejecutar la tarea. •	Técnica: herramienta utilizada para aplicar un procedimiento; es posible usar una o varias. •	Herramienta: para realizar una técnica, podemos apoyarnos en las herramientas de software que automatizan su aplicación. •	Producto: resultado de cada etapa. Ahora que ya hemos comprendido estos conceptos que involucran a las metodologías de desarrollo, estamos en condiciones de analizar los distintos tipos de metodologías que existen. Dentro de la metodología de desarrollo, el framework es el enfoque del proceso con el que vamos a contar para realizar o utilizar un software. Se trata de una fuente de herramientas, modelos y métodos que podemos tomar y usar para efectuar distintas acciones, como, por ejemplo, dibujar una pantalla. Ejemplos: AJAX, .NET, Axis, y otras. FRAMEWORK
41. INTRODUCCIÓN A LA PROGRAMACIÓN 39 www.redusers.com Figura 1. En la producción de un producto, cada uno de estos aspectos influye en forma directa sobre la metodología. Metodología Tarea Procedimiento Técnica Herramienta Producto Tipos de metodologías Dentro del ámbito informático, existe una gran variedad de metodologías de desarrollo. En la tabla que aparece a continuación vamos a conocer estos tipos, para que más adelante podamos decidir correctamente cuál se aplica mejor a nuestro proyecto. ▼ CLASIFICACIÓN ▼ METODOLOGÍAS Tradicionales/Pesadas Cascada, Modelo V, RAD, MERISSE, METRICA, SSADM, RUP Iterativas/Evolutivas Prototipos, Espiral, Espiral WIN&WIN, Entrega por etapas, RUP Ágiles XP, SCRUM, CRISTAL, Desarrollo adaptable, Open Source, DSDM, Desarrollo manejado por rasgos, Code and Fix METODOLOGÍAS
42. 2. INICIO DE UN DESARROLLO40 www.redusers.com Dentro de todas estas categorías, nosotros vamos a enfocarnos en las más utilizadas por aquellas organizaciones que se dedican al desarrollo de las aplicaciones informáticas. Pero, a su vez, debido a la amplia variedad que existe en el ámbito informático, tendremos que evaluar cuáles son las que se aplican mejor a nuestros proyectos, para así adaptarlas y ejecutarlas según nuestras necesidades. En este análisis sobre qué metodología utilizar, es importante tener en cuenta que la elección diferirá según el país, la provincia o, incluso, el centro de enseñanza al que pertenezcamos. Desde el punto de vista humano, todos tenemos gustos y pensamientos diferentes acerca de cómo vemos nuestro entorno; por eso, la elección dependerá en gran medida de cuál sea nuestra situación económica, política y social. Muchas veces se pone el énfasis en que las metodologías deben planificar, controlar, capturar requisitos, realizar tareas de modelado, y promover la etapa de análisis y diseño antes de proceder a la construcción del software. Pero también es importante que seamos muy detallistas en la documentación utilizada en cada una de las etapas. Este tipo de metodología se denomina tradicional o pesada. Figura 2. Junto con el UML, constituye la metodología más utilizada para los sistemas orientados a objetos. Tecnología Web OOHDM,HDM, RNA, etc. Otras Orientada a aspectos, Sistemas de tiempo real, Basado en componentes Tabla 1. Tipos de metodologías en el desarrollo del software.
43. INTRODUCCIÓN A LA PROGRAMACIÓN 41 www.redusers.com En contraste con estas metodologías, encontraremos las ágiles. Estas sostienen que el desarrollo del software debe ser considerado como un modelo incremental, donde las entregas de este sean más pequeñas, en ciclos más cortos y rápidos. De esta manera, se elimina la burocracia de la documentación que caracteriza a las metodologías tradicionales. Esto se logra gracias a una forma más cooperativa entre el cliente y los desarrolladores, por medio de una comunicación más cercana y fluida. En las metodologías ágiles, la documentación más importante está constituida por el código fuente. Ya vimos que, dentro del ámbito de la programación, existen distintos tipos de metodologías de desarrollo. También dimos un vistazo al concepto sobre ellas, y aprendimos que el uso de una u otra dependerá de nuestro entorno, el equipo y los recursos con los que contemos. A continuación, vamos a indagar en las cuestiones que debemos tener en cuenta a nivel profesional acerca de los desarrollos de software. Podemos ampliar más sobre las metodologías consultando otro texto de nuestra editorial: Métodos Ágiles, por Sebastián Priolo. Ciclo de vida de un desarrollo Una vez que hemos determinado la necesidad de realizar un software, es importante prestar atención a su ciclo de vida; es decir, el conjunto de fases por las cuales pasa la idea inicial, desde que nace hasta que el software es retirado o reemplazado. Cuando hablamos del nacimiento de un proyecto, nos referimos a la idea o problema puntual que se presenta. Luego, esta irá creciendo gracias a la actualización y recaudación de información que surja, además de a su puesta a prueba cotidiana. De esta forma, el desarrollo va madurando hasta llegar a la muerte o reemplazo del producto. Estas tareas o actividades que debemos desempeñar en el ciclo de vida del software suelen representarse en una serie de grandes bloques: análisis, diseño, produccióny mantenimiento. LAS METODOLOGÍAS ÁGILES APLICAN ENTREGAS MÁS CORTAS Y RÁPIDAS AL SOFTWARE
44. 2. INICIO DE UN DESARROLLO42 www.redusers.com Figura 3. Bloques principales que representan las tareas por desempeñar en el ciclo de vida del software. Qué aspecto elegir Qué herramientas tomar Cómo confeccionarlo Qué hacer y para qué Qué hacerQué hacer Idea confeccionarloconfeccionarlo Análisis Mantenimiento Qué herramientasQué herramientas Construirlo Upgrades Mejoras Producción elegirelegir Diseño Funciones del ciclo de vida Entre las funciones que debe tener un ciclo de vida, desde que nace hasta que muere, podemos destacar las siguientes: •	Determinar el orden de las fases del proceso de software. •	Establecer los criterios de transición para pasar de una fase a la otra. •	Puntualizar las entradas y salidas de cada fase. •	Describir los estados por los que pasa el producto. •	Especificar las actividades a realizar para transformar el producto. •	Definir un esquema que sirva como base para planificar, organizar, coordinar y desarrollar el proceso. Como podemos observar, el ciclo de vida del desarrollo de un software es complejo si deseamos llevar a cabo todos los pasos que corresponden. Recordemos que, a la hora de elegir la metodología adecuada, es preciso tener en cuenta el ámbito donde lo desarrollaremos. Si es en una organización dedicada exclusivamente al desarrollo, es necesario mantener los estándares de calidad sobre los productos, y es en este punto donde entran en juego las normas ISO y otros estándares.
45. INTRODUCCIÓN A LA PROGRAMACIÓN 43 www.redusers.com Roles profesionales Dentro de cada fase que vayamos a realizar, hay distintos roles profesionales involucrados. A continuación, mencionaremos los más importantes y su característica fundamental: •	Analista de sistema: generalmente, puede integrarse en cualquier etapa del ciclo de vida de un software, aunque, en esencia, lo encontramos en el inicio. •	Líder de proyecto: es aquel que lleva a cabo la organización y el seguimiento de cada fase. •	Arquitecto en software / Analista funcional: son las mentes que llevarán a cabo la maquetación y el diseño, además de la documentación del proyecto. •	Desarrollador: se ocupa de codificar los prototipos y esquemas que le suministren en un lenguaje de programación. •	Soporte / Tester: brinda apoyo al cliente del software y realiza testing de las aplicaciones, lo que lleva a las pruebas exhaustivas y documentadas generalmente antes de entregar un producto. •	Calidad: revisa la documentación, para luego presentar los elementos necesarios a las organizaciones de normalización y calidad de los productos. Dentro de cada una de las etapas de un modelo de ciclo de vida, es posible definir una serie de objetivos, tareas y actividades que lo caractericen, lo que permite llevar un importante proceso administrativo. El hecho de que existan distintos modelos hace que sea tan importante su elección y el orden establecido para un proyecto determinado. La Organización Internacional para la Estandarización, ISO por sus siglas en inglés (International Organization for Standardization) es una federación mundial que establece un conjunto de reglas referidas a la calidad y la gestión continua de la norma. Su objetivo es desarrollar estándares internacionales que se apliquen a cualquier tipo de organización o actividad orientada a la producción de bienes o servicios, coordinando y unificando los usos para conseguir menores costos y una mayor efectividad. NORMAS ISO ES MUY IMPORTANTE LA ELECCIÓN DEL MODELO Y EL ORDEN ESTABLECIDO PARA UN PROYECTO
46. 2. INICIO DE UN DESARROLLO44 www.redusers.com Concepto Requerimientos Diseño Implementación Pruebas Instalación Comprobación Requerimientos Diseño Implementación Pruebas Instalación Comprobación Operación Mantenimiento Retirada Fases del ciclo de vida del proyecto Fases del ciclo de vida del Software Figura 4. En estos esquemas podemos ver las etapas del ciclo de vida de un proyecto y de un software. Modelos de ciclo de vida Los modelos de ciclo de vida son aquellos que describen las fases principales del desarrollo del software y sus fases primarias esperadas. Son de gran utilidad para la administración del proceso y proveen de un espacio de trabajo para su definición. Modelo en cascada Es el enfoque metodológico que ordena rigurosamente las etapas del ciclo de vida del software, de modo que el inicio de cada etapa debe esperar a la finalización de la inmediatamente anterior.
47. INTRODUCCIÓN A LA PROGRAMACIÓN 45 www.redusers.com Figura 5. Modelo en cascada. Después de cada etapa, se realiza una revisión para comprobar si se puede pasar a la siguiente. Requisitos Diseño Implementación Pruebas Mantenimiento Modelo en V Se desarrolló con el objeto de solucionar algunos problemas que ocasionaba el enfoque de cascada tradicional. En ese modelo, los defectos en el proceso se detectaban demasiado tarde en el ciclo de vida, ya que las pruebas no se introducían hasta el final del proyecto. Es por eso que el modelo en V sugiere que las pruebas comiencen a efectuarse en el ciclo de vida lo más pronto posible. Una de las metodologías pesadas más conocidas y utilizadas es la RUP (Rational Unified Process), que divide el desarrollo en cuatro fases que definen su ciclo de vida. Ellas son: inicio (su objetivo es determi- nar la visión del proyecto y definir lo que se desea realizar), elaboración (etapa en la que se determina la arquitectura óptima del proyecto), construcción (se obtiene la capacidad operacional inicial) y transmisión (permite obtener el producto acabado y definido). RUP (RATIONAL UNIFIED PROCESS)
48. 2. INICIO DE UN DESARROLLO46 www.redusers.com Figura 6. Modelo en V. Es aplicado por muchas compañías, debido a que se encuentra disponible públicamente. Codificación Ingeniería de requisitos Validación del sistema Diseño del sistema Verificación del sistema Diseño del Software Verificación del Software Verificar diseño Validar requisitos Modelo iterativo Es un modelo derivado del ciclo de vida en cascada, que busca reducir el riesgo que pueda surgir entre las necesidades del usuario y el producto final. Consiste en la iteración de varios ciclos de vida en cascada, en donde, al final de cada iteración, se le entrega al cliente una UML ofrece un estándar para describir un “plano” del sistema (modelo), incluyendo aspectos concep- tuales tales como: los procesos de negocio, las funciones del sistema y los aspectos concretos. Estos últimos serían las expresiones del lenguaje de programación, los esquemas de bases de datos y los componentes reutilizables (librerías y clases). Web: www.uml.org UML
49. INTRODUCCIÓN A LA PROGRAMACIÓN 47 www.redusers.com versión mejorada o con mayores funcionalidades del producto. El cliente es quien después de cada iteración evalúa el resultado y lo corrige o propone mejoras. Modelo de desarrollo incremental El modelo incremental combina elementos del modelo en cascada con la filosofía interactiva de construcción de prototipos, basándose en la incrementación de las funcionalidades del programa. Aplica secuencias lineales de manera escalonada, mientras progresa el tiempo en el calendario, y cada secuencia lineal produce un incremento del software. El primer incremento es a menudo un producto esencial que reune solo los requisitos básicos, y se centra en la entrega de un producto operativo con cada incremento. Los Figura 7. Modelo iterativo. Estas iteraciones se repiten hasta obtener un producto que satisfaga las necesidades del cliente. Versión 1 Análisis Diseño Pruebas Codificación Versión 2 Análisis Diseño Pruebas Codificación Versión 2 Análisis Diseño Pruebas Codificación El ciclo de vida indica qué es lo que hay que obtener a lo largo del desarrollo del proyecto, pero no menciona cómo hacerlo. Es la metodología la que indica cómo hay que obtener los distintos productos parciales y finales. Esta puede seguir uno o varios modelos de ciclo de vida. METODOLOGÍA VS. CICLO DE VIDA
50. 2. INICIO DE UN DESARROLLO48 www.redusers.com primeros incrementos son versiones incompletas del producto final, pero proporcionan al usuario la funcionalidad que precisa y, también, una plataforma para la evaluación. Modelo de prototipos La construcción de prototipos comienza con la recolección de requisitos, y es en esa etapa cuando se reúnen desarrollador y cliente para definir los objetivos globales del software. Este modelo se centra en una representación de los aspectos del software, que serán visibles para el usuario/cliente y llevarán a la construcción de un prototipo. Este evalúa al cliente y refina los requisitos del software, de modo de permitir que el desarrollador comprenda mejor lo que se necesita hacer. Figura 8. Modelo de desarrollo incremental. A partir de la evaluación, se planea el siguiente incremento, y así sucesivamente. 1 1 2 1 2 3 Análisis Diseño Pruebas Codificación Análisis Diseño Pruebas Codificación Análisis Diseño Pruebas Codificación Como representantes de esta escuela, podemos nombrar a Winston Royce (Royce 1970) y Edward Yourdon (Yourdon 2009), entre otros. Estas metodologías suelen denominarse tradicionales y se inspira- ron en otras disciplinas, tales como la ingeniería civil y la ingeniería mecánica. La más conocida de ellas es RUP (Rational Unified Process). METODOLOGÍAS PESADAS
51. INTRODUCCIÓN A LA PROGRAMACIÓN 49 www.redusers.com Figura 9. Modelo de prototipo. El diseño rápido se centra en representar los aspectos del software que serán visibles para el cliente. Construir y revisar la maqueta Escuchar al cliente El ciente prueba la maqueta Modelo en espiral Este modelo combina las características del modelo de prototipos y el modelo en cascada, y fue creado para proyectos largos, complejos y de costo elevado. Un ejemplo puede ser la creación de un sistema operativo. Figura 10. Modelo en espiral. Al terminar una iteración, se comprueba el cumplimiento de los requisitos establecidos y su funcionamiento. Determinar objetivos Evaluar riesgos Desarrollar y probar Planificar
52. 2. INICIO DE UN DESARROLLO50 www.redusers.com Hasta aquí hemos visto los diferentes ciclos de vida que existen dentro del desarrollo de un software, considerados como proyectos que tienen un inicio y un fin. Si nos referimos a un equipo de personas que se dedicarán al desarrollo de aplicaciones, es importante tener en claro todos estos procedimientos. Si nuestro objetivo es ser desarrollador, debemos tener en cuenta que existirán distintos tipos de actores que realizarán alguna tarea en particular. Todo lo que explicamos hasta el momento está orientado al desarrollo de aplicaciones con certificación de calidad, y nos será de gran utilidad a la hora de trabajar en equipo. A continuación, veremos las generalidades que podemos encontrar dentro de las diferentes metodologías aplicables a nuestro proyecto. Generalidades sobre metodologías En esta sección vamos a conocer las diferentes metodologías que podemos aplicar a nuestro proyecto, qué son y para qué sirven, de modo de adquirir más fundamentos en nuestra elección final. Desarrollo convencional (sin metodología) •	Los resultados finales son impredecibles. •	No hay forma de controlar lo que está sucediendo en el proyecto. •	Los cambios en la organización van a afectar en forma negativa al proceso de desarrollo. Desarrollo estructurado •	Programación estructurada •	Diseño estructurado •	Análisis estructurado •	Especificaciones funcionales •	Gráficas •	Particionadas •	Mínimamente redundantes EXISTEN DISTINTOS TIPOS DE ACTORES QUE REALIZARÁN ALGUNA TAREA EN PARTICULAR
53. INTRODUCCIÓN A LA PROGRAMACIÓN 51 www.redusers.com Desarrollo orientado a objetos Su esencia es la identificación y organización de conceptos del dominio de la aplicación, y no tanto su representación final en un lenguaje de programación. •	Se eliminan fronteras entre fases debido a la naturaleza iterativa del desarrollo orientado al objeto. •	Aparece una nueva forma de concebir los lenguajes de programación y su uso al incorporarse bibliotecas de clases y otros componentes reutilizables. •	Hay un alto grado de iteración y solapamiento, lo que lleva a una forma de trabajo muy dinámica. •	Son interactivas e incrementales. •	Es fácil dividir el sistema en varios subsistemas independientes. •	Se fomenta la reutilización de componentes. Con todo lo que hemos analizaddo con respecto a los tipos de metodologías, ahora podemos seleccionar cuál es la más conveniente para implementar en nuestros desarrollos de software actuales y futuros. Para eso, es importante prestar atención a los siguientes capítulos, que nos permitirán seguir avanzando en el análisis del ciclo de vida. Análisis de sistema Anteriormente vimos los ciclos de vida y las metodologías que podemos emplear en algunos desarrollos de aplicaciones. Ahora nos centraremos en el análisis de los sistemas y las etapas fundamentales en dicho desarrollo. Cada paso es una forma ordenada y correcta de encarar un nuevo negocio para desarrollar, y a partir de allí, cada Las metodologías ágiles se caracterizan por estar más orientadas a las personas que al proceso, y por ser mucho más sencillas. Esto se debe a que son fáciles de aprender y se adaptan muy bien al medio, con lo cual permiten efectuar cambios de último momento. Una de las metodologías ágiles más utilizadas es SCRUMM. METODOLOGÍAS ÁGILES
54. 2. INICIO DE UN DESARROLLO52 www.redusers.com empresa y programador deberán elegir alguno de estos caminos posibles. A continuación,veremos las etapas más comunes para el análisis de los sistemas, junto con un ejemplo práctico que nos ayudará a reconocerlas mejor. Supongamos que una empresa vende espacios publicitarios que figuran en revistas y diarios. La organización siempre llevó el registro de los pedidos y presupuestos en forma manual, hasta que un día, decide implementar alguna aplicación informática para lograr que el proceso de ventas resulte más rápido y fiable. Imaginemos que si por día quiere registrar a mano diez presupuestos de diferentes revistas, tendrá que recurrir a pilas de cajas llenas de papeles y archivos. Es por eso que será necesario incorporar alguna herramienta que permita mejorar las decisiones y el servicio a sus clientes, para cotejar información útil acerca de cuáles son los más activos y qué tipo de publicidades se venden mejor. Estas tareas pueden variar en el análisis de un sistema. En primera instancia, tenemos el pedido del cliente, que determinamos como requisito. Hay una situación que él desea solucionar o mejorar, y que desembocará en la planificación de un proyecto. Al haber aclarado cuál es el funcionamiento o fin de la aplicación informática, debemos realizar, como analistas, un relevamiento de la información implicada. Cuando terminamos dicha tarea, podemos generar un diagnóstico de cómo encontramos los procesos actuales en los que se ve involucrada la organización con respecto a la futura herramienta informática. Luego de recolectar la información, entramos en la etapa de prototipado o diseño del sistema, en la que volcamos dicha recolección de datos para dar un “rostro” a las aplicaciones. En esta LUEGO DE ESTABLECER EL FUNCIONAMIENTO, DEBEMOS REALIZAR UN RELEVAMIENTO Al igual que el desarrollo de software, las pruebas también tienen diferentes etapas que es importante tener en cuenta. Algunas de las más relevantes son: planificación y control, análisis y diseño, implemen- tación y ejecución, evaluación y cierre. ETAPAS DE TESTING
55. INTRODUCCIÓN A LA PROGRAMACIÓN 53 www.redusers.com fase estamos en condiciones de mostrarle a nuestro cliente una propuesta teórica acerca de cómo funcionaría el proyecto. Una vez que terminamos de documentar y mostrar al cliente los avances de las etapas de relevamiento y prototipado, ya podemos entregar a los desarrolladores la estructura del software que ellos crearán por medio de un lenguaje de programación. Cuando ellos terminen de desarrollar el software, ya sea en forma parcial o completa, seguirán las etapas de implementación y testing del proyecto. El análisis de sistema estará involucrado en cada paso, ya que lleva a cabo la documentación y controla todas las tareas necesarias para que el proyecto funcione correctamente. A continuación, vamos a desarrollar en profundidad cada una de estas partes que constituyen el análisis. Relevamiento El proceso de relevamiento es fundamental en el diseño y la confección de un software, ya que nos permitirá comprender en detalle qué tareas están involucradas en el proceso que necesitamos solucionar Figura 11. Las etapas del análisis se dirigen hacia las conclusiones de efectividad y eficiencia de los sistemas relevados. Relevamiento Diseño Implementaciòn Diagnóstico Prototipos Testing Propuesta UML Puesta en marcha Análisis
56. 2. INICIO DE UN DESARROLLO54 www.redusers.com con nuestra aplicación informática. Para concretar este objetivo, vamos a revisar distintas técnicas de las que podemos valernos. Cuando hacemos el relevamiento gracias a las visitas al cliente, debemos seguir algunos pasos, tales como: identificar las fuentes de información, realizar las preguntas apropiadas, analizar la información, confirmar con los usuarios y sintetizar los requisitos. En la organización de nuestro ejemplo, los usuarios que más realizan este proceso de presupuesto y venta de espacios publicitarios son las personas que trabajan en Ventas y Atención al cliente. No obstante, también debemos tener en cuenta al personal que integra la Gerencia de la organización, ya que ellos son quienes llevan a cabo los controles. Una vez que entramos en los procesos de negocio de un cliente u organización, veremos que no siempre encontraremos las puertas abiertas para recopilar información. Entonces, vamos a ver que existen varias técnicas que podemos utilizar. Técnicas para recolectar información •	Entrevistas: recorremos la organización y logramos un contacto directo con los actores de los procesos por relevar. Dependiendo del tipo de preguntas que planteemos, vamos a obtener más o menos información valiosa. Es importante tener en cuenta a qué personas entrevistamos, porque si es alguien ajeno al proceso, puede perjudicar los requisitos iniciales con percepciones personales referidas al proceso. Las entrevistas estructuradas se caracterizan por mantener un modelo rígido de preguntas que están planeadas de antemano, y no se permiten desviaciones. En cambio, las entrevistas no estructuradas son aquellas que pueden variar su plan original y admitir algunas variaciones em sus preguntas, en la medida en que el entrevistador lo considerere conveniente. ESTRUCTURADAS VS. NO ESTRUCTURADAS EXISTEN DISTINTAS TÉCNICAS PARA DETERMINAR QUÉ TAREAS ESTÁN INVOLUCRADAS
57. INTRODUCCIÓN A LA PROGRAMACIÓN 55 www.redusers.com Tabla 2. Aquí se ven las ventajas y desventajas principales de las entrevistas. Antes de iniciar el proceso de la entrevista, deben establecerse ciertos puntos importantes. Primero, determinar qué información se desea obtener y quién entrevistará sobre la base de los objetivos planteados, para así planificar qué preguntas deberá hacer. Luego, hay que realizar una cita por anticipado con los entrevistados, para indicarles el objetivo de la tarea. Es importante elegir el lugar y el momento adecuados para la reunión, presentando el tema de la entrevista y explicando el proyecto sobre el cual se trabajará. Para finalizar, se resume la información recopilada, se revisa que no hayan quedado dudas y se aclaran los datos faltantes. •	Observación (directa o indirecta): la ventaja principal de la observación es que recopilaremos información directamente, tomando notas que describen las actividades y cómo estas se generan. En general, el propósito de la visita del analista debe darse a conocer a los miembros de la organización por medio de los mandos superiores. El analista no interrumpe a los trabajadores, pero cuando las personas están siendo observadas directamente, tienden a mejorar las funciones que llevan a cabo o, de lo contrario, molestarse por la presencia del observador. A veces es preciso efectuar varias visitas para generar confianza en presencia del analista. La observación directa nos lleva a participar en algunas actividades que observamos; en cambio, la indirecta implica observar como tercero o ajeno a los procesos, y solo relevar la información. ▼ VENTAJAS ▼ DESVENTAJAS Es el medio más directo para obtener información. Requieren más tiempo y dinero. Las personas suelen ser más sinceras cuando hablan, que cuando escriben. Las personas que serán entrevistadas deben ser elegidas cuidadosamente. El entrevistador puede hacer preguntas abiertas y establecer una mejor relación con el entrevistado. No se pueden utilizar para obtener información en gran cantidad. LAS ENTREVISTAS
58. 2. INICIO DE UN DESARROLLO56 www.redusers.com •	Estudio de documentación: una de las tareas principales que debemos realizar, es revisar aquellos registros que se efectúan en la organización. Más allá de que se trate de escritos, fotocopias, documentos o digitales, tendremos que analizar la información para diagnosticar los procesos que se llevan a cabo. A partir de allí, se evaluará cuál es la mejor manera de manejar dicha documentación o proponer un cambio de procedimientos, en caso de ser necesario. •	Cuestionarios: herramienta útil, basada en una serie de preguntas escritas a las que hay que contestar también por escrito. ▼ VENTAJAS ▼ DESVENTAJAS Se obtiene un alto volumen de información a un costo bajo y en menor tiempo. Tienen limitaciones sobre el tipo de preguntas que se pueden realizar. Eliminan cualquier influencia sobre quien contesta. Suelen ocurrir problemas de interpretación. La información es sincera, ya que puede ser anónima. Si no hay control,pueden tener una tasa de re- torno muy baja y una muestra pequeña. CUESTIONARIOS •	Tormenta de ideas (brainstorming): es una técnica muy utilizada en distintos ámbitos profesionales, por ejemplo, en publicidad. Su trabajo grupal facilita el surgimiento de nuevas ideas sobre un tema o problema determinado, en un ambiente relajado. De esta manera, podemos vincularla a los procesos y a las mejoras de utilidad que se logran con un sistema informativo. Es posible utilizar varias herramientas para recopilar información, pero ¿cuál es la más efectiva? Eso dependerá del tipo de organización y del proceso que necesitemos relevar. En el caso de nuestro ejemplo, la aplicación es concreta y pequeña; entonces, debemos utilizar herramientas puntuales, como revisar la documentación y las entrevistas de los usuarios que llevan a cabo dichas tareas. Para seguir avanzando, vamos a desarrollar el diseño de un sistema. En este caso, será fundamental contar con el proceso del relevamiento. Tabla 3. Ventajas y desventajas de los cuestionarios.
59. INTRODUCCIÓN A LA PROGRAMACIÓN 57 www.redusers.com Diseño de un sistema A la hora de diseñar la aplicación de software, vamos a dividir el proceso en dos partes: el diseño de prototipos (las ventanas que involucra nuestro desarrollo) y el diseño del funcionamiento (el mecanismo interno de las operaciones de desarrollo). Para efectuar esta tarea, podemos utilizar herramientas de modelado que nos permitirán crear una representación que refleje aspectos de nuestro sistema. Por ejemplo, podemos trabajar con UML (lenguaje de modelado unificado), que nos facilitará el diseño del sistema, al permitirnos usar varios tipos de herramientas. Recomendamos visitar la Web y bibliografía sobre UML, ya que sus herramientas son variadas. En nuestro caso, repasaremos algunas de ellas, que nos serán de utilidad. Dentro de los programas que pueden ser prácticos para el modelado, se encuentran: Figura 12. UML se encuentra respaldado por OMG (Object Management Group). Es el lenguaje de modelado de sistemas de software más conocido y utilizado. Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema. UML ofrece un estándar para describir un “plano” del sistema (modelo). Web: www.uml.org. UML, UNIFIED MODELING LANGUAGE
60. 2. INICIO DE UN DESARROLLO58 www.redusers.com UML Tutoriales y Software: •	https://secure.nomagic.com: No Magic - MagicDraw UML •	www.borland.com: Borland’s UML TutorialCetus Links - UML Tutorials •	www.jeckle.de: Mario Jeckle - UML Tutorials •	www.sparxsystems.com: Sparx Systems’ UML 2.0 Tutorial Diagrama de casos de uso Los diagramas de casos de uso son los más empleados en los proyectos de desarrollo de sistemas informáticos. A continuación, veremos en detalle cuáles son sus componentes y, luego, los aplicaremos a un ejemplo concreto. Un diagrama de casos de uso es un esquema de comportamiento que define por medios gráficos las representaciones de casos de negocio u operaciones de una situación determinada. Por ejemplo: podemos utilizarlo para registrar las ventas, realizar un inventario de productos, registrarse en una web, etc. Los casos de uso sirven para darle al cliente una vista general y simple de un proceso de negocio, ya que suelen estar dirigidos a personas que no tienen conocimientos sobre programación. De esta forma, podemos explicarles el funcionamiento del sistema y los actores involucrados en la interacción con él. Para comprender mejor cómo están compuestos los casos de uso, es importante conocer sus diferentes componentes. En todo caso de uso siempre hay un actor que inicia y otro actor (puede ser el mismo de antes o no) que recibe algo por parte del sistema. A continuación, veremos las herramientas que nos ofrece. EL DIAGRAMA NOS MUESTRA EL FUNCIONAMIENTO Y LOS ACTORES INVOLUCRADOS Open Source, o código abierto, es el término que se utiliza para los programas distribuidos y desa- rrollados libremente. El código abierto tiene un punto de vista orientado a los beneficios prácticos de compartir el código a quien lo desee. Es diferente de las normas que tiene en cuenta el software libre. OPEN SOURCE
61. INTRODUCCIÓN A LA PROGRAMACIÓN 59 www.redusers.com Actores Los casos de uso están típicamente relacionados con los actores, que son entidades humanas o máquinas que interactúan con el sistema para llevar a cabo un trabajo significativo que ayude a alcanzar una meta. El conjunto de casos de uso de un actor define su rol global en el sistema y el alcance de su acción. Caso de uso (elipse) En la elipse ubicamos una funcionalidad o servicio provisto por el sistema, que va a interactuar con los actores u otros servicios del sistema. Por lo general, escribimos algo breve que haga referencia a una actividad, como Registrar presupuesto. Límite del sistema (escenario) En un recuadro se encierran los casos de uso, y este representa el límite del sistema. Solo contiene comportamientos generales de importancia, siendo estos los que utilizan los actores del sistema. Relaciones Los casos de uso pueden tener relaciones con otros casos de uso. Los tres tipos de relaciones más comunes entre ellos son: •	<<include>> / <<incluir>>: especifica una situación en la que un caso de uso tiene lugar dentro de otro caso de uso. •	<<extends>> / <<extender>>: especifica que, en ciertas situaciones o en algún punto (llamado punto de extensión), un caso de uso será extendido por otro. •	Generalización o herencia: un caso de uso hereda las características del «súper» caso de uso, y puede volver a especificar algunas o todas de una forma similar a las herencias entre clases. Actor Figura 13. Aquí la herramienta UML es actor. RecibirDinero Figura 14. Aquí la herramienta UML es caso de uso.
62. 2. INICIO DE UN DESARROLLO60 www.redusers.com Actor Actor Caso de uso Sistema Figura 15. En este esquema podemos ver el modelo de un caso de uso, representado por la elipse. En la Figura 15, las dos figuras en los extremos izquierdo y derecho representan a los actores que intervienen. El actor que inicia se encuentra a la izquierda del caso de uso, y el que recibe, a la derecha. Figura 16. Ejemplo de un modelo de un caso de uso, donde vemos involucradas la mayoría de las herramientas y su forma de declararlas. Cliente Restaurante Límite del sistema Título del sistema Proporcionar menú Pedir un menú Entregar menú Sistema Cenar ahora <<subsistema>> 11 Proporcionar menúProporcionar menú 2 Pedir un menúPedir un menú 2 Entregar menúEntregar menú 2 3 3 4 3 3 1- Actores 2- Caso de uso 3- Relaciones 4- Límite del sistema 3
63. INTRODUCCIÓN A LA PROGRAMACIÓN 61 www.redusers.com El nombre del actor aparece justo debajo de él, y el del caso de uso aparece dentro de la elipse o justo debajo de ella. Una línea asociativa conecta a un actor con el caso de uso, y representa la comunicación entre ellos. La línea asociativa es sólida, y el rectángulo envuelve a los casos de uso dentro del sistema. Los casos de uso son una gran herramienta para representar modelos de negocios que relevamos antes. Así, podremos mostrarles a nuestros clientes, por un medio gráfico, cómo funcionaría el sistema y quiénes estarían involucrados; y a los desarrolladores, cómo debería funcionar la aplicación según la visión de los clientes. Sobre este modelado hay mucho material gratuito para consultar en la Web. En las siguientes imágenes mostramos algunos ejemplos que podemos encontrar. Continuando con nuestro ejemplo de presupuesto y ventas de publicaciones en revistas, después del relevamiento realizado, podemos definir el siguiente caso de uso. Figura 17. En este restaurante tenemos dos actores y cuatro globos de procesos que se ven afectados por acciones sobre un sistema. Crítico de comidas Chef Probar la comida Pagar la comida Beber vino Preparar la comida Restaurante
64. 2. INICIO DE UN DESARROLLO62 www.redusers.com Figura 18. Ejemplo de Presupuestos. En este caso, los actores se ven involucrados en un mismo proceso, donde interactúan. Confección de presupuesto Cliente Vendedor Solicitud de presupuesto Generar presupuesto Impresión comprobante Prototipos Anteriormente vimos modelos que grafican los procesos de nuestro desarrollo del sistema, y que sirven para que el cliente conozca, en teoría, cómo funcionará la aplicación que vamos a confeccionar; luego, lo entregaremos a los desarrolladores. En esta sección veremos que, además de estos modelos, también podemos confeccionar prototipos de interfaces gráficas que nos demuestren cómo se verán nuestras aplicaciones luego de ser desarrolladas. Los prototipos son un ejemplo o molde en el que “fabricaremos” una figura u otra. Dentro del desarrollo del software, sería la interfaz gráfica o modelo de funcionamiento gráfico que permite mostrarle a un usuario cómo será el aspecto o el funcionamiento del futuro desarrollo. El uso de prototipos es una poderosa herramienta que nos facilitará la comunicación con el usuario de las aplicaciones, junto con sus reacciones y apreciaciones. De esta forma, veremos que este actúa como maqueta, y no precisamente como producto final.
65. INTRODUCCIÓN A LA PROGRAMACIÓN 63 www.redusers.com Podemos conceptualizar dos grupos principales de prototipos: un prototipo desechable, que sirve como una vasta demostración de los requisitos, que luego se desecha y hace un paradigma diferente; y un prototipo evolutivo, que emplea el prototipo como primera evaluación del sistema terminado. Objetivo de los prototipos Al presentar prototipos, estamos muy interesados en las reacciones de los usuarios y en los comentarios sobre cómo sería el manejo desde su punto de vista. Aquí vamos a ver en detalle la manera en que reaccionan, y cómo es el ajuste entre sus necesidades y las características del producto. Las reacciones deben recopilarse con las herramientas utilizadas para el relevamiento y diseñadas para recoger la opinión de cada persona sobre el prototipo analizado. Evaluando estas perspectivas, podemos Figura 19. En esta pantalla podemos ver un claro ejemplo de prototipos para presupuesto.
66. 2. INICIO DE UN DESARROLLO64 www.redusers.com llegar a percibir si a los usuarios les agrada o no el sistema, e incluso evaluar si habrá dificultades para su posterior venta o implementación. En general, para evaluar si una aplicación es adecuada para la creación de prototipos, basta asegurarse de que nos permita crear pantallas visuales dinámicas, interactuar intensamente con la persona, y demandar algoritmos o procesamiento de combinaciones en modo progresivo. Es preciso tener en cuenta que un prototipo puede ser desechado; por lo tanto, cualquier lenguaje de programación que nos permita graficarlo será suficiente. Podemos ampliar más sobre este importantisimo tema utilizado en el desarrollo de aplicaciones consultando otro libro de nuestra editorial: UML, por Fernando Asteasuain. Figura 20. Ejemplo de prototipos con mockingbird. Podemos utilizar las facilidades que nos brindan algunos IDE (entorno de desarrollo integrado), por ejem- plo, el de Visual Studio, para crear formularios con controles. También existen otras aplicaciones de maquetación que pueden sernos de utilidad, como: https://gomockingbird.com,http://balsamiq. com,http://pencil.evolus.vn yMicrosoft Visio. CONFECCIÓN DE PROTOTIPOS ANALIZANDO LAS PERSPECTIVAS PODEMOS EVALUAR SI EL SISTEMA ES EL ADECUADO
Unidad de medida de computacion
NikolasLozano
Introduccion a la Programacion: "Conceptos Básicos"
Fases de dasorrollo de un software Mapa Conceptual

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución