iwg-101: introducción a la ingenieríasoftware de desarrollo un lenguaje de programación es un...

45
Departamento de Informática, UTFSM 1 IWG-101: Introducción a la Ingeniería

Upload: others

Post on 11-Mar-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Departamento de Informática, UTFSM 1

IWG-101: Introducción a la

Ingeniería

Page 2: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

¿Qué es Programación?

Definiciones de Programación en la web:

Programación es el acto de crear un programa de computadora, unconjunto concreto de instrucciones que una computadora puedeejecutar. El programa se escribe en un lenguaje de programación,aunque también se pueda escribir directamente en lenguaje demáquina, con cierta dificultad. Un programa se puede dividir endiversas partes, que pueden estar escritas en lenguajes distintos.es.wikipedia.org/wiki/Programaci%C3%B3n

La acción de escribir un programa de computación.www.laopinion.com/glossary/p.html

Page 3: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Software de desarrollo

Un lenguaje de programación es un conjunto de

símbolos, instrucciones y enunciados que están sujetos

a una serie de reglas.

Utilizan un léxico, una sintaxis y una semántica.

Léxico: conjunto de símbolos conocido como vocabulario

Sintaxis: reglas para construir el lenguaje

Semántica: conjunto de significados de un lenguaje

Page 4: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Software de desarrollo

1. Lenguaje máquina (lenguaje de bajo nivel)

Es el que entiende la computadora.

Las instrucciones se expresan en forma binaria.

Los programas creados en lenguaje máquina solo pueden

ejecutarse en los procesadores para los que fueron creados.

Categorías de los Lenguajes de Programación

Page 5: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

2. Lenguaje Ensamblador (lenguaje

de nivel medio)

Emplea representación simbólica

y utiliza procedimientos

mnemotécnicos de funciones

matemáticas. Los datos se

identifican con nombres y

permiten la introducción de

comentarios para entender el

programa con mayor facilidad y

optimiza los recursos del

hardware.

Software de desarrolloCategorías de los Lenguajes de Programación

Page 6: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

3. Lenguaje de alto nivel

Lenguajes más acorde con el lenguaje humano.

Utilizan palabras y frases (por lo general en inglés).

Permiten modificar los códigos de los programas con facilidad.

Son independientes de la estructura física de la computadora, contando con

instrucciones de uso frecuente como las funciones matemáticas.

Son lenguajes de programación alejados del lenguaje máquina lo cual necesitan ser

traducidos antes de ejecutarse y esta tarea se realiza por medio de los intérpretes o

los compiladores.

Software de desarrolloCategorías de los Lenguajes de Programación

Page 7: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

¿Qué es un Framework?

Un framework, en el desarrollo de software, es una estructura de soporte

definida, mediante la cual otro proyecto de software puede ser organizado y

desarrollado. Típicamente, puede incluir soporte de programas, bibliotecas

y un lenguaje interpretado entre otros software para ayudar a desarrollar y

unir los diferentes componentes de un proyecto.

Representa una arquitectura de software que modela las relaciones

generales de las entidades del dominio. Provee una estructura y una

metodología de trabajo la cual extiende o utiliza las aplicaciones del

dominio.

Fuente: Wikipedia

Departamento de Informática, UTFSM 7

Page 8: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

¿Qué es un framework?

Es como un “lego” especial:

Tiene definidas algunas

piezas.

Con esas piezas puedes

construirte nuevas piezas.

Agrega la metodología y

patrones de diseño.

Tienes herramientas que te

ayudan a armar más fácil.

Java y .NET no son solamente

lenguajes de programación,

son Frameworks de desarrollo.

Departamento de Informática, UTFSM 8

Page 9: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Framework J2EE: Arquitectura

Departamento de Informática, UTFSM 9

Page 10: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Framework J2EE: Patrones de diseño

Departamento de Informática, UTFSM 10

Page 11: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Framework J2EE: IDE de desarrollo

Departamento de Informática, UTFSM 11

Page 12: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Otros Ejemplos de Frameworks

.NET: http://msdn.microsoft.com/en-us/netframework/default.aspx

Eclipse: www.eclipse.org

OpenGl: www.openGL.org

OSGI: www.osgi.org

Departamento de Informática, UTFSM 12

Page 13: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Introducción a Java

Descripción de la Tecnología

Descripción de IDE Eclipse

Page 14: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

¿Qué es Java?

Java es un lenguaje de programación orientado a objetos

desarrollado a principios de los años 90 por Sun

Microsystems.

El lenguaje en sí mismo toma mucha de su sintaxis de C y

C++, pero tiene un modelo de objetos más simple y elimina

herramientas de bajo nivel.

Es independiente de la plataforma. Las primeras

implementaciones de Java rezaban:“write once, run

anywhere”.

Posee un sistema de administración de memoria automático.

Page 15: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

La plataforma Java 2

Page 16: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

.16

Características Principales

Sencillo

Orientado a objetos

Distribuido

Interpretado

Robusto

Seguro

Arquitectura neutra

Portable

Altas prestaciones

Multithread (multihilo)

Dinámico

Page 17: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

.17

Características: Sencillo

Elimina algunas de las características de C y C++:

No aritmética de punteros.

No existen referencias.

No existe typedef ni #define.

No sobrecarga operadores.

No herencia múltiple.

Posee clase String.

No necesidad de asignar y liberar memoria (Garbage Collector).

Page 18: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

.18

Características: Orientado a objetos

Java trabaja con sus datos como objetos y con interfaces a

esos objetos.

Implementa:

Encapsulación. - Interfaces.

Herencia simple. - Paquetes.

Abstracción.

Reutilización.

Polimorfismo.

Page 19: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Características: Distribuido

Concebido para trabajar en un entorno conectado en red.

En sí no es distribuido, proporciona librerías y herramientas

para que los programas puedan ser distribuidos, que los

programas corran en varias máquinas interactuando.

Page 20: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

.20

Características: Interpretado

Compilador tradicional

Traslada sentencias alto-nivel a múltiples instrucciones.

Creación de librerías como resultado de compilaciones previas.

Juntando, se crea programa ejecutable.

Intérprete de ByteCodes

Compilador Java

Traduce código fuente a código intermedio.

Interprete de Java

Virtual Machine(JVM)

(ByteCodes interpretados (ejecutados))

Page 21: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Características: Robusto

No se interrumpe fácilmente.

Evita sobreescribir o corromper memoria mediante punteros.

Manejo de excepciones.

Verificación de ByteCodes (por ejemplo no acceso ilegal de

memoria).

Page 22: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Características: Seguro

Aplicaciones seguras ya que no acceden a zonas delicadas

de memoria o de sistema

No existen punteros, no acceso a zonas delicadas de memoria.

Una applet no puede acceder al sistema, a los archivos de la

persona que lo está viendo.

Page 23: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Características: Arquitectura neutra

Java compila el código a un fichero objeto de formato

independiente de la arquitectura de la máquina en que se

ejecutará.

Cualquier plataforma donde exista una JVM se puede

ejecutar el código objeto independientemente de la máquina

en el que ha sido generado.

Page 24: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

.java, .class, JVM???

En Java el código fuente se escribe en un archivo de texto plano

con extensión .java.

Luego, el código es compilado a archivos .class. Un archivo .class

no contiene código nativo a un tipo de procesador, en cambio

contiene bytecodes.

Finalmente, la aplicación es interpretada por la maquina virtual de

Java, transformando los bytecodes en código nativo en tiempo de

ejecución.

Page 25: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Bytecode

El bytecode es lenguaje nativo de cualquier implementación de la

maquina virtual de Java. De esta forma se logra que un programa

Java corra en cualquier plataforma que disponga de una JVM.

Page 26: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

La plataforma Java

Una plataforma es el ambiente de software o hardware en el que

corre un programa.

La plataforma Java consta de dos componentes

La maquina virtual de Java

La API de Java (Application Programming Interface)

• La API de Java es una vasta colección de componentes

de software que proveen un conjunto de funciones útiles.

Page 27: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Características: Arquitectura neutra

Código fuente se compila

a un código de bytes

independientemente

de la máquina.

Los ByteCodes se

ejecutan en una

máquina hipotética

que se implementa

por un sistema

run-time, que es

dependiente

de la máquina.

Tiempo de compilaciónTiempo de ejecución

Page 28: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Características: Arquitectura neutra

Elementos que forman parte de arquitectura de Java

sobre una plataforma genérica.

Dependiente del sistema:

JVM.

Librerías fundamentales.

APIs de Java que

entren en contacto

directo con el hardware.

Page 29: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

.29

Características: Portable

Más allá de la portabilidad básica

por ser de arquitectura

independiente.

Page 30: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Características: Altas prestaciones

Compiladores JIT (Just in time): Compilan en el momento de

ejecución.

Traslada los bytecodes al

código máquina de la plataforma

según los va leyendo, realizando

cierto grado de optimización.

JIT no pierde tiempo en

optimizar código que no se ejecutará.

Page 31: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Características: Multithread

Ejecución de varias tareas a la vez. Permite muchas

actividades simultáneas en un programa.

Posee una serie de clases que facilitan su utilización.

Mejor rendimiento interactivo y mejor comportamiento en

tiempo real.

Page 32: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Características: Dinámico

No conecta todos los módulos que comprenden una

aplicación hasta el mismo tiempo de ejecución.

Las librerías nuevas o actualizadas no paralizan la ejecución

de las aplicaciones siempre que mantengan la API anterior.

Page 33: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Características: Dinámico

Capaz de traer automáticamente cualquier pieza

que el sistema necesite para funcionar.

Page 34: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Estructura de un programa Java

La programación orientada a objetos se basa en que cada

programa es una simulación de un mundo real o virtual.

Cada uno de estos mundos esta compuesto de objetos.

Los objetos se comunican a través de mensajes

Por lo tanto, un programa orientado a objetos no es mas que

una configuración de un conjunto de objetos y los

mensajes que se envían entre ellos.

El “molde” que guarda la descripción de todos los objetos de

un mismo tipo e lo que conocemos como clase.

A su vez, las clases con propósitos similares pueden

agruparse en paquetes.

La ejecución de un programa comienza en el método “main”

de una clase.

Page 35: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Ejemplo de paquete

Page 36: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Estructura de una clase

Page 37: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Ejemplos de paquetes Java

java.io

El paquete de entrada/salida contiene las clases de acceso a

archivos: FileInputStream y FileOutputStream, etc.

java.lang

Incluye las clases del lenguaje Java propiamente dicho: Object,

Thread, Exception, System, Integer, Float, Math, String, etc.

java.util

Miscelánea de clases útiles para muchas cosas en

programación.

Incluyen, Date (fecha), Dictionary (diccionario), Random

(números aleatorios) y Stack (pila FIFO).

Page 38: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Java Development Kit (JDK)‏

El JDK consiste de lo siguiente: El Java development tools, incluyendo el compilador, debugger

y el intérprete Java.

Las Java class libraries organizadas como una colección de

paquetes.

Un número importante de programas de demostración.

Varias herramientas de soporte y componentes, incluyendo el

código fuente de las clases en la biblioteca.

URL: java.sun.com/javase/downloads

Page 39: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Ambientes de desarrollo Java (IDEs)‏

Un IDE (del inglés Integrated Development Enviroment). Es un

ambiente que integra un conjunto de herramientas (editor con

prestaciones especiales, compilador, administración de proyectos,

debugger,etc) que permiten realizar todo el proceso de desarrollo

dentro del mismo.

Si bien es posible escribir nuestros programas java en cualquier

editor de texto y compilarlos desde una consola con javac, es mas

cómodo y recomendable trabajar desde un IDE.

Page 40: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

¿Y que tiene un IDE que no tenga mi bloc

de notas?

En general, todos los editores de los IDEs mas modernos proveen:

Un editor language aware: indentación de código, resaltador de

sintáxis, matching de variables y llaves, etc.

Parsing en tiempo de ejecución: corrección de errores,

remarcado de ocurrencias, tips, arreglos sencillos, etc.

Generación automática de código y funciones para completar

código mientras escribimos.

Administración de proyectos

Debugger

Múltiples opciones de configuración

Page 41: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Hola Mundo en Java

/** * Ejemplo Hola Mundo para Introducción a la

Ingeniería*/

class HolaMundo {

public static void main(String[] args) {

System.out.println(“Hola Mundo!"); // Muestra el mensaje

}

}

Departamento de Informática, UTFSM 41

Page 42: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Hola Mundo en .NET

Departamento de Informática, UTFSM 42

using System;

class Hola {

public static void Main() {

Console.WriteLine(“Hola desde C#”);

}

}

Page 43: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Algunos de los IDEs mas utilizados

Page 44: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Aprender Java en la web

Tutorial Java de Sun

http://java.sun.com/docs/books/tutorial/

Learning Connection

http://learningconnection.sun.com

Tutorial Eclipse

http://eclipsetutorial.sourceforge.net/

Page 45: IWG-101: Introducción a la IngenieríaSoftware de desarrollo Un lenguaje de programación es un conjunto de símbolos, instrucciones y enunciados que están sujetos a una serie de

Aprender .Net en la Web

GotDotNet: The Microsoft .NET Framework Community: http://www.gotdotnet.com/

.NET home page: http://www.microsoft.com/net/

MSDN .NET Framework site: http://msdn.microsoft.com/netframework/

Website con ejemplos y ayuda en programación C#: http://www.c-sharpcorner.com/

http://www.csharphelp.com/

http://www.csharp-station.com/

Implementación Open Source .NET (Proyecto mono): http://www.go-mono.com/