Académique Documents
Professionnel Documents
Culture Documents
on II
An
alisis y Dise
no en
Programaci
on
Objetivos
Analisis y Dise
no en Programacion
Analisis y Dise
no en Programacion
Analisis y Dise
no en Programacion
Ingeniera de Sistemas
Analisis
Dise
no
Implementaci
on
Prueba
Mantenimiento
Anlisis
Problema
Implementacin
Diseo
Especificacin
de requisitos
Arquitectura
Software
Analisis y Dise
no en Programacion
Programa
Prueba
Mantenimiento....
Producto
Software
Analisis y Dise
no en Programacion
Analisis y Dise
no en Programacion
Paradigma de programaci
on: Conjunto de principios y reglas seg
un los cuales se deben aplicar los
elementos de un lenguaje de programaci
on para desarrollar buenos programas.
Principales paradigmas de programaci
on:
Procedimental
Modular
Abstracci
on de Datos
Orientada a objetos
Generica
Analisis y Dise
no en Programacion
1.6.1
Programaci
on An
arquica
Analisis y Dise
no en Programacion
10
1.6.2
Programaci
on Procedimental
Analisis y Dise
no en Programacion
11
Ejemplo: Funci
on para el calculo de una raz
cuadrada.
double raiz_cuadrada(double x)
{
// Calculo de la raiz cuadrada de x
}
...
double x = 4.0;
double y = raiz_cuadrada(x);
Analisis y Dise
no en Programacion
12
1.6.3
Programaci
on Modular
13
Analisis y Dise
no en Programacion
14
1.6.4
Programaci
on basada en
la Abstracci
on de Datos
Analisis y Dise
no en Programacion
15
Analisis y Dise
no en Programacion
16
class Matriz {
public:
/// @brief Constructor.
Matriz(n);
/// @brief Operador de suma.
Matriz operator+(const Matriz & m);
/// @brief Calculo del rango.
int rango() const;
private:
...
};
int main()
{
int a, b, c;
a = 2;
b = 5;
c = a + b;
Matriz(2) M,
M = {{1, 0},
N = {{2, 3},
O = M + N;
cout << M <<
N, O;
{0, 1}};
{4, 5}};
" + " << N << " = " << O << endl;
Analisis y Dise
no en Programacion
17
1.6.5
Programaci
on Orientada a Objetos
Analisis y Dise
no en Programacion
18
Analisis y Dise
no en Programacion
19
1.6.6
Programaci
on Gen
erica
Se basa en la creaci
on de algoritmos que se
pueden aplicar no s
olo a datos distintos del mismo
tipo, sino a distintos tipos de datos. Son esquemas
de algoritmos parametrizados que se pueden usar
con datos de distintos tipos y no s
olo de un tipo
u
nico preespecificado como ocurra en el paradigma
procedimental.
C++ soporta la programaci
on gen
erica mediante plantillas e iteradores
Ejemplo: Ordenaci
on de vectores de datos
/**
@brief Ordena un vector de enteros.
@param v: vector a ordenar. Debe tener tam
elementos.
@param tam: dimensi
on de v. tam > 0.
Dispone los elememos te v en sentido creciente.
*/
void ordena_enteros(int v[], int tam)
{
...
}
Analisis y Dise
no en Programacion
20
/**
@brief Ordena un vector de elementos T
@param v: vector a ordenar. Debe tener tam
elementos.
@param tam: dimensi
on de v. tam > 0.
@precondition Los datos del tipo T deben tener
definida una operacion de comparaci
on:
bool operator < (const T &, const T &);
Dispone los elememos te v en sentido creciente.
*/
template <class T>
void ordena_generica(T v[], int tam)
{
...
}
int main() {
int ve[10] = { ... };
string vs[10] = { ... };
ordena_enteros(ve, 10);
ordena_generica(ve, 10);
ordena_generica(vs, 10);
}
Analisis y Dise
no en Programacion
21
Analisis y dise
no estructurado: Modelo orientado
al flujo de datos y a componentes, pudiendo aplicar los paradigmas procedimental, modular, abstracci
on de datos e incluso programaci
on generica
Analisis y dise
no orientado a objetos: Modelo
orientado a objetos, aplicando la programaci
on
orientada a objetos
Analisis y dise
no basado en modelos entidadrelaci
on: Programaci
on de bases de datos.
Vamos a considerar el analisis y dise
no basado en el
desarrollo de software secuencial lineal.
Analisis y Dise
no en Programacion
22
1.8 Analisis
Analisis y Dise
no en Programacion
23
1.8.1
Problemas y consideraciones en el An
alisis
Informaci
on incompleta.
Existencia de contradicciones en la informaci
on.
Las soluciones de los subproblemas, deben posibilitar la combinaci
on de las mismas para la
obtenci
on de la soluci
on general del problema.
Los subproblemas deben ser lo suficientemente
genericos, para poder ser reutilizados en otros
problemas, y modificables con peque
no coste
Generalmente deben evitarse los detalles sobre
dise
no e implementaci
on.
Se utilizaran guiones (secuencia de pasos para
conseguir objetivos)
Contemplar los casos excepcionales
Contemplar la posibilidad de modificaciones.
Analisis y Dise
no en Programacion
24
1.8.2
Pasos en el An
alisis
Analisis y Dise
no en Programacion
25
1.9 Diseno
En la etapa de Dise
no de forma general, se elabora
c
omo se realizara el producto
Se descompone la soluci
on en m
odulos: partes
independientes con una comunicaci
on muy bien
definida con el resto de la aplicaci
on.
Se debe definir de forma clara y precisa, que hace
cada m
odulo y c
omo debe hacerlo.
Deben definirse las entradas y las salidas con el
maximo detalle.
Se especificaran los algoritmos y las estructuras
de datos que se utilizaran en cada m
odulo
Analisis y Dise
no en Programacion
26
1.9.1
Descomposici
on Modular
27
Analisis y Dise
no en Programacion
28
1.9.2
Beneficios de la descomposici
on modular
Analisis y Dise
no en Programacion
29
1.9.3
Pasos en el Dise
no
Descomposici
on modular
Dise
no de m
odulos a nivel general y relacion
entre ellos.
Dise
no de interfaces con el usuario, el propio
sistema u otros sistemas.
Dise
no Modular
Selecci
on/Dise
no de tipos de datos
Selecci
on/Dise
no de estructuras de datos necesarias
Selecci
on/Dise
no de algoritmos para procesar
la informaci
on
Analisis y Dise
no en Programacion
30
1.10 Implementacion
La implementaci
on debera ser casi directa, si se
ha realizado un buen dise
no.
Debe seguirse un buen estilo de codificaci
on en
aras de una buena legibilidad, unificando criterios
como el de los nombres de identificadores.
Equilibrio entre eficiencia y legibilidad.
Inclusi
on de comentarios no redundantes.
Inclusi
on de parte del dise
no en el c
odigo que
permita una mayor comprensi
on, utilizando alguna
herramienta del tipo doxygen.
Analisis y Dise
no en Programacion
31
Ejemplo de An
alisis
Problema:
A partir del radio de un crculo, calcular y mostrar el
area del crculo y la longitud de su circunferencia.
An
alisis:
Claramente la entrada es el radio del crculo, que
debe ser un valor real positivo. Se piden dos valores
de salida: el area del crculo y la longitud de la circunferencia, que tambien son valores reales positivos.
Necesitaremos conocer las f
ormulas para el calculo
del area del crculo y la longitud de la circunferencia.
area = radio2
longitud = 2 radio
con = 3,14159.
Interfaz: la comunicaci
on con el usuario sera en
modo consola.
Casos excepcionales: no se aceptaran valores negativos de los datos de entrada.
Analisis y Dise
no en Programacion
32
Ejemplo de Dise
no
Tipos de datos para entradas y salidas:
Entrada del problema:
radio: Tipo real (radio de un crculo).
Salidas del problema:
area: Tipo real (area del crculo)
longCircun: Tipo real (long. de la circunf.)
Una vez identificadas las entradas y las salidas
del problema, debemos enumerar la serie de pasos a
seguir para resolver el problema.
Algoritmo inicial:
1.
2.
3.
4.
Analisis y Dise
no en Programacion
33
Ejemplo de Codificaci
on
/// @file: circulo.cpp
/// @brief Calcula y muestra el
area de un c
rculo y
/// @brief la long. de la circunferencia
#include <iostream>
using namespace std;
int main()
{
const double PI = 3.14159;
double radio;
// entrada: radio del c
rculo
double area;
// salida:
area del c
rculo
double longCircun; // salida: long. de circunf.
// Obtener el c
rculo del radio
cout << "Introducir el radio del c
rculo:";
cin >> radio;
// Calcular el
area del c
rculo
area = PI * radio * radio;
// Calcular la longitud de la circunferencia
longCircun = 2 * PI * radio;
// Mostra
area y longitud
cout << "El
area del c
rculo es " << area << endl;
cout << "La longitud de la circunferencia es "
<< longCircun << endl;
return 0;
}
Analisis y Dise
no en Programacion
34
Ejemplo de Prueba
35
Segundo ejemplo de An
alisis
n(n 1)
2
36
37
#include <iostream>
using namespace std;
int main()
{
int tel, tel_adic, lin, lin_adic;
Analisis y Dise
no en Programacion
38
Identificaci
on de grupos de entradas: Las entradas
correctas son pares de enteros positivos. Las clases
que resultan son:
Pares
Pares
Pares
Pares
de enteros positivos
con la primera componente negativa
con la segunda componente negativa
con una componente no entera (p.ej. real)
Analisis y Dise
no en Programacion
39