Sie sind auf Seite 1von 46

Programación

Vamos a escribir nuestro programa

1
Otras definiciones
 Codificación

 Implementación

2
Definición de unidades
 Parte más pequeña de la programación a la
que se le dará mantenimiento por separado

 Puede ser un método individual o una clase

3
Metas…
 Satisfacer los requerimientos de la manera
que especifica el diseño detallado

4
Necesidades
 Evaluar todos los documentos anteriores al
mismo tiempo para ayudar a disminuir las
inconsistencias entre los mismos

5
Mapa conceptual
Arquitectura
Definir estándares
del código
Para cada … paquete de marco de trabajo
… paquete de aplicación

Requerimientos Para cada clase:

2. Codificar métodos

5 Liberar para
Diseño detallado integración
•¿Seudocódigo?
•¿Diagramas de flujo de datos? 3. Inspeccionar 4. Realizar pruebas
clase de unidades

6
Preparando la programación
1. Confirmar los diseños detallados que deben programarse
Sólo código a partir de un diseño escrito (Parte de la DDS)

2. Preparar la medición del tiempo dedicado

3. Preparar para registrar los defectos usando una forma

4. Comprender los estándares requeridos

5. Estimar el tamaño y el tiempo con base en sus datos anteriores

6. Planear el trabajo en segmento de ±100 LDC

7
Preparando la programación
1. Confirmar los diseños detallados que deben programarse

2. Preparar la medición del tiempo dedicado


Diseño detallado residual
Revisión del diseño detallado
Codificación
Revisión del código
Compilación
Reparación de defectos de sintaxis
Prueba de unidades

3. Preparar para registrar los defectos usando una forma

4. Comprender los estándares requeridos

5. Estimar el tamaño y el tiempo con base en sus datos anteriores

6. Planear el trabajo en segmento de ±100 LDC


8
Preparando la programación
1. Confirmar los diseños detallados que deben programarse

2. Preparar la medición del tiempo dedicado

3. Preparar para registrar los defectos usando una forma


Severidad: Importante, trivial, ninguno
Tipo: Error, nombre, entorno, sistema, datos, otro

4. Comprender los estándares requeridos

5. Estimar el tamaño y el tiempo con base en sus datos anteriores

6. Planear el trabajo en segmento de ±100 LDC

9
Preparando la programación
1. Confirmar los diseños detallados que deben programarse

2. Preparar la medición del tiempo dedicado

3. Preparar para registrar los defectos usando una forma

4. Comprender los estándares requeridos


Para codificación
Para la documentación personal que debe guardar

5. Estimar el tamaño y el tiempo con base en sus datos anteriores

6. Planear el trabajo en segmento de ±100 LDC

10
Preparando la programación
1. Confirmar los diseños detallados que deben programarse

2. Preparar la medición del tiempo dedicado

3. Preparar para registrar los defectos usando una forma

4. Comprender los estándares requeridos

5. Estimar el tamaño y el tiempo con base en sus datos anteriores

6. Planear el trabajo en segmento de ±100 LDC

11
Preparando la programación
1. Confirmar los diseños detallados que deben programarse

2. Preparar la medición del tiempo dedicado

3. Preparar para registrar los defectos usando una forma

4. Comprender los estándares requeridos

5. Estimar el tamaño y el tiempo con base en sus datos anteriores

6. Planear el trabajo en segmento de ±100 LDC

12
Actualizando nuestro diseño
Código
ERS DDS fuente con
comentarios
Arquitectura
Diseño Detallado
1 2

Jerarquía de clases completa; 3


lista de métodos; Ingeniería inversa
seudocódigo

13
¿Revisión en el proyecto?

 PROPUESTA

 ERS

 DDS (ARQUITECTURA)

14
Programación y estilo…
 Meta real:
CREAR CODIGO CORRECTO

Programador profesional
con alta responsabilidad

15
Una manera de programar
1. Planear la estructura y el diseño residual para el código
 Complete los diseños detallados que faltan, si los hay
 Note las precondiciones y postcondiciones
 Registre el tiempo dedicado

2. Autoinspeccione su diseño y/o estructura

3. Teclee su código

4. Autoinspeccione el código; no compile todavía

5. Compile su código

6. Pruebe su código
16
Una manera de programar
1. Planear la estructura y el diseño residual para el código

2. Autoinspeccione su diseño y/o estructura


 Observe el tiempo dedicado, tipos de defectos, severidad

3. Teclee su código

4. Autoinspeccione el código; no compile todavía

5. Compile su código

6. Pruebe su código

17
Una manera de programar
1. Planear la estructura y el diseño residual para el código

2. Autoinspeccione su diseño y/o estructura

3. Teclee su código
 No compile todavía
 Inserte los métodos
 Aplique estándares requeridos
 Codifique de manera que la verificación sea sencilla

4. Autoinspeccione el código; no compile todavía

5. Compile su código

6. Pruebe su código
18
Una manera de programar
1. Planear la estructura y el diseño residual para el código

2. Autoinspeccione su diseño y/o estructura

3. Teclee su código

4. Autoinspeccione el código; no compile todavía


 Asegúrese que el código realiza el trabajo requerido
 Registre tiempo dedicado, defectos encontrados en la forma
 Verifique cumplimiento de estándares y normatividad

5. Compile su código

6. Pruebe su código
19
Una manera de programar
1. Planear la estructura y el diseño residual para el código

2. Autoinspeccione su diseño y/o estructura

3. Teclee su código

4. Autoinspeccione el código; no compile todavía

5. Compile su código
 Repare errores de sintaxis
 Registre tiempo dedicado, tipo de defectos, severidad y líneas
de codigo

6. Pruebe su código
20
Una manera de programar
1. Planear la estructura y el diseño residual para el código

2. Autoinspeccione su diseño y/o estructura

3. Teclee su código

4. Autoinspeccione el código; no compile todavía

5. Compile su código

6. Pruebe su código
 Aplique los métodos de pruebas de unidades

21
Principios generales de
una programación
acertada

INTENTE EL REUSO
CUMPLA LOS PROPOSITOS

22
Principios
 Diseñe sus propias aplicaciones de manera que permitan el
reuso de las componentes que construye

 Cumpla las intenciones


• Use calificadores en su clases tal como abstract o final

• Haga que las constantes, variables y clases sean lo mas locales


posibles

• Haga que los miembros sean inaccesibles si no hay una intención


específica de tener acceso directo a ellos private o public

• Incluya ejemplos en la documentación

• Enumere los métodos en orden alfabético

23
Consideraciones de la programación
 Programación confiable

 Programación segura

 Manejo de excepciones

 Tolerancia a fallos

 Práctica:
ctica Lectura y discusión de temas
Ingeniería del software, Ian Summerville, 7ª
Edición
24
Recomendación en los:
Indicadores y referencias
Si el lenguaje lo permite usa referencias no
apuntadores

Si es necesario usar apuntadores úselos


adecuadamente

Recolecte su basura

Tenga siempre consciencia de los recursos en


uso durante la ejecución
25
Recomendación en los:
Funciones
Evite la búsqueda por tipo use funciones
virtuales (A menos que sea obvio su uso)

Maneje adecuadamente la sobrecarga

Evite la sobrecarga de operadores

26
Recomendación en los:
Excepciones
 Use solo las excepciones que sabe manejar
 Si el método actual no puede manejar una excepción, debe
haber un manejador en contexto externo que pueda hacerlo
 Si puede manejar parte de una excepción, hágalo y después
vuelva a invocar la excepción para manejarla en un contexto
externo
 Sus expectativas acerca de la aptitud de las llamadas para
manejar las excepciones que maneja deben ser razonables
 Tenga cuidado de no usar excepciones en situaciones que
deben estar sujetas a prueba
 Si debe elegir entre invocar una excepción o continuar con
un cálculo, continúe si puede
27
Recomendación en los:
Manejo de errores
 Establezca un enfoque disciplinado
 Seleccione, establezca

 Entiendan, respeten

 Prevenga, NO CORRIJA

 Patrones de diseño adecuados

 Valores de parámetros restringidos

 Interactúe con la fuente de datos hasta obtener un


dato legal
28
Códigos correctos

Programas con demostración formal de


que son correctos

29
Demostración formal …
 Se proporciona una demostración
matemática para mostrar que el programa
satisface sus requerimientos

30
Demostrando…

 Precondiciones
 Todas las suposiciones hechas al invocar la
función

 Poscondiciones
 El estado requerido a la conclusión de la ejecución
de la función

 Requerimiento para función f()


 Pre: g es un arreglo de enteros de longitud n
 Pos: r = max{g[0],g[1], … ,g[n-1]}

INVARIANTES
31
Manera usual de demostrar
 Idee una relación I entre las variables que sea fácil de establecer
y una relación r de manera que I y r juntas lleven a la
poscondición.

 Escriba el código que hace que I sea cierta.

 Siga con un código de la forma


while (!r)
{
Realice las operaciones que
* mantienen I invariante y
* ocasionan que el ciclo termine en algún momento.
}

 Demuestre que el ciclo while termina

32
Demostrando formalmente
// Definir I: 0≤j≤n-1≤100 y r=max{g[0],g[1],…,g[j]}
// Después de los comandos I es cierta:
int r=g[0];
int j=0;

//Este bloque mantiene a I cierta


while ( j < n-1 )
{ /* Suponiendo que el ciclo termina, en este punto se sabe que j<n-1 ya no
if ( g[j+1] > r) es cierta. También se ha mantenido la invariante I cierta. Al unir
esto,
r = g[j+1];
• j < n-1 es falso AND
++j;
• j <= n-1 (de la afirmación 1) AND
} • r = r=max{g[0],g[1],…,g[j]} (de la afirm. 1)
de manera que j = n-1 y r = r=max{g[0],g[1],…,g[j]} (Esta era la meta)

Solo queda demostrar que el ciclo while termina. Como I se mantiene


invariante, la cantidad de n-j es siempre positiva; además n-j
disminuye en 1 cada iteración. La única manera en que esto puede
ocurrir es si el ciclo termina.
33
Ejemplo
 Revisar ejemplo de la copia

34
Estándares de
programación

Disciplina
Legibilidad
Portabilidad

35
Definiendo…

 Convenciones de nombres
 Documentación de atributos
 Designación de constantes
 Inicialización de atributos

36
Convenciones de nombres (Java)

 Las entidades se nombran con palabras concatenadas


 longitudCilindro
 Nombres de clases inician con mayúscula
 Alumnos
 Preceder los nombres de clase con una letra
 CAlumnos
 Nombre las constantes con mayúsculas separando con _
 SOY_UNA_CONSTANTE
 Inicie o termine las variables de instancias de clase con _
 _horaDelDia horaDelDia horaDelDiaI
 Considere una notación para distinguir las variables estáticas de una clase
 numAutosConstrS
 Use nombres estándarizados en sus métodos
 obtenerNombre establecerNombre esNombre insertarNombre
 nuevoNombre removerNombre removerDeNombre

37
Documentaciones descriptivas

 Qué hace el método?


 Porque lo hace
 Que parámetros debe pasar?
 Excepciones que lanza
 Razón para la elección de visibilidad
 Maneras en que cambian las variables de instancias
 Fallas conocidas
 Descripción de pruebas, ¿Método probado?, localización de su texto de
prueba
 Historia de cambios
 Ejemplo de cómo trabaja el método
 Documentación especial para métodos de hilos y sincronización

38
Documentación de atributos
 Proporcione todas las invariantes

 Establezca el propósito

39
Constantes
 Asegúrese que las variables finales
realmente lo sean

 Use un método para representar una


constante en lugar de la constante

40
Inicialización de atributos

 Cuando inicializar los atributos


private float saldoI = 0;
private Cliente clienteI = new Cliente (“René”)

 ¿Y si hay cambios?

 Inicializar solo cuando se tiene acceso al


valor por primera vez
MiClase
obtenerPredeterminadoMiClase()
41
TAREA
 Investiga y lee los estándares de programación propios
de tu lenguaje seleccionado
Nombres
Atributos
Constantes
Inicialización
Etc.

 En sus equipos de proyectos definir los estándares que


van a aplicar de acuerdo a las investigaciones
efectuadas para su lenguaje

Entrega: ____________ 42
Herramientas
y
entornos de programación

¿Qué podemos usar para programar?

43
Lenguajes de programación

 Lenguajes especializados
 Lenguajes generales de orden superior
 Lenguajes orientados a objetos

 La metodología de ing. de software seleccionada


tiene un alto impacto en la elección del lenguaje
 PROPUESTA
 ERS

 DDS (ARQUITECTURA)
44
Entornos de desarrollo interactivos
IDE
 Componentes y funcionalidad
 Drag-Drop (Arrastrar y soltar)
 Debuggers (Depuración)
 Wizards (Asistentes)
 Helpers (Ayuda)
 Otros

45
Otras herramientas en el desarrollo

 Acceso y soporte de bases de datos


 Herramientas de documentación
 Frameworks y bibliotecas
 Acceso de red
 Plantillas y ejemplos
 Repositorios y control de versiones
 Otros

46

Das könnte Ihnen auch gefallen