Download Repaso desarrollo de software Parte #1 Jorge Iván Meza Martínez

Document related concepts
no text concepts found
Transcript
Repaso desarrollo de software
Parte #1
Jorge Iván Meza Martínez
[email protected]
Especialización en Gestión de Redes de Datos
Universidad Nacional de Colombia – Sede Manizales
1/55
Contenido
●
Concepto desarrollo de software
●
Modelo de desarrollo en cascada
●
In/dependencia de plataforma
●
Concepto de algoritmo y sus elementos
●
Unidad mínima de compilación en Java
●
Manejo de la E/S estándar
●
Conversión de tipos
●
Manejo básico de excepciones
2/55
Desarrollo de software
Recibe un problema o
Situación
Planea una solución
Realiza una implementación computacional
Hardware / software
3/55
Modelo de desarrollo en cascada
Análisis
Diseño
Implementación
Pruebas
Implantación
Mantenimiento
4/55
Análisis
●
●
●
●
●
Se identifica y entiende el problema (requisitos o
requerimientos).
Qué es lo que me están solicitando ? Qué es lo
que está sucediendo ?
Se realiza en el mundo real.
No incluye entidades computacionales a no ser que
estas hagan parte intrínseca de la situación.
No incluye ningún tipo de solución al problema.
5/55
Diseño
●
●
●
●
●
Se planean diferentes soluciones al problema recién
identificado y se elige la idónea.
Cómo voy a solucionar el problema planteado ?
Puede o no incluír entidades computacionales como
bases de datos, conexiones cliente-servidor, etc que
hagan parte de la solución.
No debería estar ligado a un lenguaje de
programación específico.
Especifica las partes funcionales de la solución y
como se relacionan entre ellas.
6/55
Implementación
●
●
●
●
Llevar a cabo la solución propuesta en el diseño en
un lenguaje de programación específico.
Se escribe el código fuente del programa para
generar finalmente el ejecutable.
En las etapas de diseño e implementación se debe
tener en cuenta la modularidad para lograr la
máxima reutilización posible.
Comúnmente se utiliza un ambiente integrado de
desarrollo (IDE) para facilitar este etapa.
7/55
Pruebas
●
●
Garantizar que lo implementado está correcto.
–
Lo que hace lo hace bien: sus salidas corresponden
con sus entradas y el tipo de operación realizada.
–
Hace lo que tenía que hacer: satisface los requisitos.
Existen varios tipos de pruebas.
–
Pruebas funcionales → usuario
–
Pruebas unitarias
–
Pruebas de aceptación
–
Pruebas de regresión
–
Etc.
8/55
Implementación lenguajes dependientes
de plataforma
Código
Códigofuente
fuente(*.c)
(*.c)
Compilador
Compilador
gcc
Código
Códigoobjeto
objeto(*.o)
(*.o)
Enlazador
Enlazador
ld
Archivo
Archivoejecutable
ejecutable(*.exe)
(*.exe)
9/55
Implementación lenguajes dependientes
de plataforma
Archivo
Archivoejecutable
ejecutable(*.exe)
(*.exe)
Sistema
SistemaOperativo
Operativo
Hardware
Hardware
10/55
Implementación lenguajes
independientes de plataforma
Código
Códigofuente
fuente(*.java)
(*.java)
Compilador
Compilador
javac
Código
Códigoobjeto
objeto(*.class)
(*.class)
Empaquetador
Empaquetador
jar
Paquete
Paquetedistribuíble
distribuíble(*.jar)
(*.jar)
11/55
Implementación lenguajes
independientes de plataforma
Código
Códigoobjeto
objeto(*.class)
(*.class)
Java
JavaVirtual
VirtualMachine
Machine(JVM)
(JVM)
Sistema
SistemaOperativo
Operativo
Hardware
Hardware
12/55
Implementación lenguajes
independientes de plataforma
Bytecodes
Código
Códigoobjeto
objeto(*.class)
(*.class)
Middleware
Java
JavaVirtual
VirtualMachine
Machine(JVM)
(JVM)
Sistema
SistemaOperativo
Operativo
Hardware
Hardware
13/55
Monolítico
vs.
Modular
14/55
Diseño
Modularidad
Implementación
Acoplamiento
● Cohesión
●
15/55
Paradigmas de programación
Programación imperativa o procedimental
Programación orientada a objetos
16/55
Algoritmo
●
●
Una serie de pasos ordenados para realizar una tarea
específica.
Puede contener los siguientes elementos.
–
Expresiones → representan un valor
–
Sentencias → representan algo que hacer
–
Variables
–
Funciones
–
Objetos
–
Clases
17/55
Comentarios
// …
/* … */
/** … */
18/55
Identificadores
●
●
●
Sirven para nombrar entidades computacionales.
Su nombre debe empezar con una letra del alfabeto
o los carácteres especiales $ o _.
El resto del nombre puede tener dígitos, letras o los
carácteres mencionados.
19/55
Palabras reservadas
20/55
Tipos de datos
●
Numéricos
–
–
Valor entero
●
byte (8 bits)
●
short (16 bits)
●
int ●
long (64 bits)
(32 bits)
Valor de punto flotante
●
float
●
double
21/55
Tipos de datos
●
Booleanos
–
●
Caracter
–
●
boolean
char
Cadenas
–
String
22/55
Variables
int x;
x = 10;
int y = x;
23/55
Operadores aritméticos
*
/
%
+
­
24/55
Operadores Unarios
++
­­
+
­
~
!
(casting)
25/55
Operadores de bits
<<
>>
>>>
26/55
Arreglos n-dimensionales
●
Pueden almacenar una cantidad finita de valores.
●
Su tamaño no se puede modificar una vez definido.
●
●
●
●
Todos los elementos deben ser del mismo tipo de
datos.
Sus elementos se acceden a través de un índice
entero que empieza en cero (0).
Pueden tener varias dimensiones: 1 → arreglos, 2 →
matrices, …
Su longitud se puede consultar con el atributo
length.
27/55
Arreglos n-dimensionales
int v;
10
int[] a = new int[5];
10
20
30
40
50
0 1 2 3 4
length =28/55
5
Arreglos n-dimensionales
int[] a;
a = new int[100];
a[5] = 77;
int x = a[5];
29/55
Arreglos n-dimensionales
for (int i=0; i<a.length; i++)
{
a[i] = 0;
}
30/55
Condicionales
if(expresión)
{
}
else
{
}
31/55
Operadores de relación
<
>
<=
>=
instanceof
==
!=
32/55
Operadores lógicos
&&
||
^
33/55
Expresiones compuestas para
condicionales
if(x > 3 && (a + 1 <= c || d != !k))
{
}
34/55
Condicionales
switch(variable)
{
case v1:
// …
break;
case v2:
// …
break;
// …
default:
break;
}
// …
35/55
Iteraciones
for(variable; condición; aumento)
{
}
36/55
Iteraciones
for(int x=0; x<10; x++)
{
System.out.println(x);
}
37/55
Iteraciones
while (condición)
{
}
38/55
Iteraciones
do
{
} while (condición);
39/55
Ruptura
for(int i=0; i<10; i++)
{
if(i == 5)
break;
System.out.println(i);
}
40/55
Salto
for(int i=0; i<10; i++)
{
if(i == 5)
continue;
System.out.println(i);
}
41/55
Unidad mínima de compilación Java
// package
// imports
public class MiClase
{
public static void main(String[] args)
{
// ...
}
}
42/55
Hola Mundo
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println(“Hello World“);
}
}
HelloWorld.java
43/55
Compilar y ejecutar
$ javac HelloWorld.java
$ java HelloWorld
44/55
Flujos de E/S del sistema
System.in
System.out
System.err
45/55
Salida
System.out.print(““)
System.out.println(““)
System.err.print(““)
System.err.println(““)
46/55
Entrada estándar: Console
import java.io.Console;
class Greetings
{
public static void main(String[] args)
{
Console cons = System.console();
System.out.print("What's your name ? "); String name = cons.readLine();
System.out.println("Oh, your name is " + name);
}
}
No es compatible con el ambiente de Netbeans!
47/55
Entrada estándar: Scanner
import java.util.Scanner;
class Greetings
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.print("What's your name ? "); String name = sc.nextLine();
System.out.println("Oh, your name is " + name);
}
}
48/55
Conversión de tipos: String → otros
String s0 = "10";
String s1 = "5.123";
String s2 = "true";
int i = Integer.parseInt(s0);
float f = Float.parseFloat(s1);
boolean b = Boolean.parseBoolean(s2);
System.out.println("Integer: " + i);
System.out.println("Float: " + f);
System.out.println("Boolean: " + b);
49/55
Conversión de tipos: String → otros
String str = "This is so wrong!";
int i = Integer.parseInt(str);
System.out.println("Integer: " + i);
50/55
Conversión de tipos: String → otros
Exception in thread "main" java.lang.NumberFormatException: For input string: "This is so wrong!"
at java.lang.NumberFormatException.forInputString
(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at TypeConv.main(TypeConv.java:9)
51/55
Exceptions!
Exception in thread "main" java.lang.NumberFormatException: For input string: "This is so wrong!"
at java.lang.NumberFormatException.forInputString
(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at TypeConv.main(TypeConv.java:9)
52/55
Manejo de excepciones
String str = "This is so wrong!";
try
{
int i = Integer.parseInt(str);
System.out.println("Integer: " + i);
}
catch(NumberFormatException e)
{
System.out.println("Error convirtiendo: " +
e.getMessage());
}
53/55
Conversión de tipos: otros → String
int x = 50;
String str1 = new Integer(x).toString();
String str2 = x + ““;
54/55
Actividad
Desarrollar una aplicación en Java que solicite al
usuario la cantidad de estudiantes del curso, por cada
uno de ellos solicite su edad y la almacene en un
arreglo. Finalmente calcule el índice del alumno mas
jóven, el promedio de las edades e imprima las edades
ingresadas.
55/55