Вы находитесь на странице: 1из 33

Metodologa de la programacin

y desarrollo de software
Marta Zorrilla
Universidad de Cantabria

Marta Zorrilla Universidad de Cantabria

Metodologa de la programacin

Objetivos

Fases en la solucin de un problema de programacin. Ciclo de vida del


software.
Introducir el concepto de algoritmo y sus caractersticas.
Mostrar las diferentes tcnicas para representar algoritmos.
Introducir la programacin estructurada y el diseo descendente.

Contenidos

1.Ciclo de vida del software


2.Concepto de algoritmo.
3.Formas de describir un algoritmo.
4.Anlisis, desarrollo e implementacin de un algoritmo.

Bibliografa:

[Joy05] Cap. 2, [Ral97] Cap. 1-4,9 y 12, [Bow94] Cap. 2, [Gar02] Cap. 1

Marta Zorrilla Universidad de Cantabria

Objetivo de la programacin

Objetivo utilizar la computadora como una


herramienta para la resolucin de problemas.

Fases:

Anlisis del problema (especificacin).


Diseo o desarrollo de un algoritmo.
Transformacin del algoritmo en un programa (codificacin).
Compilacin y ejecucin del programa
Verificacin y validacin
Depuracin
Mantenimiento
Documentacin

Marta Zorrilla Universidad de Cantabria

Documentacin

Un sistema pobremente documentado carece de valor aunque


haya funcionado bien en alguna ocasin ya que resulta
inmantenible.
Documentar software es una tarea complicada y exige un
criterio de ingeniera maduro.
Documentar de forma concisa es un error habitual, pero el otro
extremo puede resultar igual de perjudicial.
Para cada etapa del proceso de desarrollo se generarn uno o
ms documentos.

Marta Zorrilla Universidad de Cantabria

Esquema de documentacin
(proyectos grandes)

Anteproyecto y/o Especificacin de requisitos


Planificacin del proyecto
Especificacin de requisitos detallada
Gestin de la configuracin
Garanta calidad
Especificacin de diseo

Modelo de datos
Modelo de interfaz
Arquitectura software (componentes)

Planes de verificacin y validacin


Manual de usuario
Manual del administrador
Anexos (documentacin de referencia)

Marta Zorrilla Universidad de Cantabria

Documentacin del cdigo

Nombres descriptivos

Indentacin coherente

Debera usar nombres nemnicos para los paquetes, los tipos, las variables y
las etiquetas de ramificacin, mediante los cuales se pudiese vislumbrar su uso
y/o significado.
Establecer convencin y ser coherente con ella. Por ejemplo: empezar en
maysculas los nombres de las funciones, en minsculas los nombres de las
variables y las constantes por completo en maysculas.

Una indentacin coherente del cdigo ayuda al lector a comprender la


estructura lgica de mismo.

Comentarios informativos

No cometer el error de escribir comentarios que no aportan conocimiento al


lector.
Ejemplos donde se justifican:

Permitir que el lector evite leer alguna parte del cdigo como averiguar el efecto de
algunas frmulas complicadas
Documentar los argumentos y los valores que devuelven las funciones, de modo que
los clientes no tengan que leer la implementacin para comprender cmo usar la
funcin.
Explicar un algoritmo o paso oscuro
Sealar deficiencias del cdigo y partes de cdigo incompleto

Marta Zorrilla Universidad de Cantabria

Concepto de algoritmo
Definiciones:

Conjunto de instrucciones que especifican la secuencia


ordenada de operaciones a realizar para resolver un
problema.
Un conjunto de instrucciones combinadas de forma
adecuada para resolver un determinado problema en una
cantidad finita de tiempo. Cada instruccin es una
indicacin sencilla y no ambigua.

Marta Zorrilla Universidad de Cantabria

Caractersticas que debe tener

Debe ser comprensible y preciso (sin ambigedades),


e indicar el orden de realizacin de cada paso.
Debe ser predecible. Si se aplica partiendo de la misma
situacin inicial, debe obtenerse siempre el mismo
resultado.
Debe ser finito. El algoritmo debe terminar en algn
momento (debe tener un nmero finito de pasos).
Debe tener un conjunto de entradas y salidas definidas y
precisas.

Marta Zorrilla Universidad de Cantabria

Algoritmo vs lenguaje programacin

Un lenguaje de programacin es tan slo un medio para


expresar un algoritmo y una computadora es slo un
procesador para ejecutarlo.
Tanto el lenguaje de programacin como la computadora
son los medios para obtener un fin

conseguir
conseguir que el algoritmo se ejecute y
se efecte el proceso correspondiente
correspondiente

Marta Zorrilla Universidad de Cantabria

Formas de describir un algoritmo

Lenguaje natural
Organigramas
Diagramas Nassi-Shneiderman (N-S)
Pseudocdigo

Marta Zorrilla Universidad de Cantabria

Lenguaje natural. Ejemplo

El algoritmo para encontrar las races de una ecuacin de


segundo grado podra describirse as:
x = (-b b2-4ac)/(2a)

1. Definir los coeficientes de la ecuacin de segundo grado: a, b y c.


2. Determinar el valor del discriminante: b2-4ac.
3. Si el discriminante es cero slo hay una solucin: -b/(2a).
4. Si el discriminante es positivo pero no cero hay dos soluciones:
(-bdiscr)/(2a).
5. Si el discriminante es negativo no hay soluciones reales.

Marta Zorrilla Universidad de Cantabria

Lenguaje natural. (cont.)

Ventaja: facilidad de comprensin

Inconvenientes:

El lenguaje natural no es universal, este algoritmo sera


completamente intil para los no hispanoparlantes.
El lenguaje natural es ambiguo y, por tanto, susceptible de
errores.
El lenguaje natural es demasiado amplio, lo que para una
persona puede ser una instruccin sencilla puede no serlo para
otra y desde luego no lo ser para un ordenador.

Marta Zorrilla Universidad de Cantabria

Organigramas

Los organigramas o diagramas de flujo permiten


describir los algoritmos de forma grfica.
Utilizan una serie de bloques que indican distintas
circunstancias y flechas que muestran bajo qu
condiciones se pasa de un bloque a otro.

Terminal

Entrada/Salida

Decisin

Proceso

Conectores

Punto de comienzo o
final de programa

Informacin introducida
para su proceso o generada
como resultado

Operacin que determina


varios caminos
alternativos a seguir

Cualquier proceso distinto a


E/S o las decisiones

Conexin entre diagramas en


la misma pgina o en otra

Marta Zorrilla Universidad de Cantabria

Organigramas (y II)

Marta Zorrilla Universidad de Cantabria

Organigramas (y III)

Comenzar
ESCRIBIR
Dame
coeficientes a, b
yc

LEER a, b, c

disc b2-4ac

disc =0

SI

s -b/2a

ESCRIBIR
Solo una
solucin, s

NO
disc > 0
NO
ESCRIBIR
No hay
soluciones reales

FIN

SI

s1 (b +discr)/(2a)
s2 (b -discr)/(2a)

ESCRIBIR
Soluciones:
s1 y s2

Marta Zorrilla Universidad de Cantabria

Organigramas (y IV)

Ventajas frente al lenguaje natural:

Los smbolos son universales.


Son menos propensos a la ambigedad.
Por estar basados en un nmero pequeo de bloques y
reglas para su empleo permiten delimitar mejor los
algoritmos.
Se aproximan ms a la forma en que trabaja el
ordenador.

Marta Zorrilla Universidad de Cantabria

Organigramas (y V)

Sin embargo:

El hecho de emplear smbolos supone que una persona que


desconozca los smbolos puede tener dificultades para comprender
el algoritmo o no entenderlo en absoluto.
Aunque los smbolos son universales, el texto que se coloca en su
interior sigue siendo lenguaje natural.
La representacin grfica puede resultar bastante tediosa y en el
caso de algoritmos complejos extremadamente confusa.
Un ordenador no es capaz de utilizar una representacin visual
como descripcin de un algoritmo.

Actualmente, los organigramas no son muy utilizados


aunque para mostrar el funcionamiento de algoritmos
sencillos siguen resultando prcticos.

Marta Zorrilla Universidad de Cantabria

Diagramas Nassi-Shneiderman

Tienen un enfoque
estructurado y menos visual
para diseo y
documentacin.
Su principal ventaja es que
adopta la programacin
estructurada y utiliza un
nmero limitado de
smbolos, de tal forma que el
diagrama de flujo ocupa
menos espacio y puede
leerse con mayor facilidad.
Existen herramientas CASE
como EasyCode.

Marta Zorrilla Universidad de Cantabria

Diagramas de N-S (y II)


EasyCode

Problemas que se encuentran


en los diagramas N-S en
relacin a los diagramas de
flujo:

No es fcil indicar cul es el


punto de inicio y fin del
algoritmo, todas las acciones se
describen en cajas sucesivas
El else nulo no es obvio.

Marta Zorrilla Universidad de Cantabria

Pseudocdigo

El pseudocdigo pretende aunar las ventajas del


lenguaje natural y de los organigramas:

Es fcilmente comprensible para una persona que lo


vea por vez primera.
Est bien delimitado.
Elimina las ambigedades del lenguaje natural (uso
gua de notacin).
Se representa de una forma compacta.

Marta Zorrilla Universidad de Cantabria

Pseudocdigo (y II)
ESCRIBIR Dame los coeficientes de la ecuacin de 2 grado
ESCRIBIR Cunto vale A?
LEER a
ESCRIBIR Cunto vale B?
LEER b
ESCRIBIR Cunto vale C?
LEER c
discr b2-4ac
SI discr=0 ENTONCES
s -b/(2a)
ESCRIBIR Slo hay una solucin:, s
SINO
SI discr>0 entonces
s1 (-b+discr)/(2a)
s2 (-b-discr)/(2a)
ESCRIBIR Las soluciones son:, s1, s2
SINO
ESCRIBIR No hay soluciones reales.
FINSI
FINSI

Marta Zorrilla Universidad de Cantabria

Anlisis, desarrollo e implementacin


de un algoritmo

A la hora de resolver un problema mediante la


utilizacin de un ordenador NO se debe codificar
directamente el programa en un lenguaje dado; si
el problema es complejo resulta muy difcil escribir
un programa en un nico paso.
Fases :

Anlisis
Diseo
Codificacin
Verificacin

Marta Zorrilla Universidad de Cantabria

Fase de anlisis

Anlisis: se trata de comprender la naturaleza del


problema y no de buscar una forma de
resolverlo:

qu datos precisan ser introducidos para obtener la


solucin
en qu consistir dicha solucin (frmulas, etc.),
qu errores puede presentar
qu datos tendr que ofrecer de salida
etc.

Marta Zorrilla Universidad de Cantabria

Fase de diseo

Diseo: se busca una forma de resolver el


problema, es decir, un algoritmo.
Tcnicas:

Diseo descendente: Arriba abajo

Se basa en el principio de divide y vencers; este mtodo


consiste en resolver el problema mediante una aproximacin
con distintos niveles de abstraccin.

Diseo ascendente: Abajo arriba

A la inversa, se resuelven los subproblemas, y las soluciones


se integran para dar lugar a la solucin del problema.

Marta Zorrilla Universidad de Cantabria

Fase de diseo (y II)

Diseo descendente:

En primer lugar se plantea el problema empleando trminos del


mismo problema (nivel de abstraccin 1).
En segundo lugar, se descompone en varios subproblemas
expresados tambin en trminos del problema y tratando de
hacerlos lo ms independientes entre s que sea posible.
Este paso se repite para cada subproblema tantas veces como
sea necesario hasta llegar a una descripcin del problema que
emplee instrucciones sencillas que puedan ser transformadas de
forma sencilla a cdigo en un lenguaje de programacin.

Marta Zorrilla Universidad de Cantabria

Fase de diseo. Ejemplo

Enunciado: Proporcionar un algoritmo que determine si un ao

indicado por el usuario es bisiesto.

Anlisis:

Entrada: El usuario debera introducir un ao, un ao es un


nmero entero positivo.
Proceso: Un ao es bisiesto si es mltiplo de 4 pero no de 100, la
excepcin son los aos mltiplos de 400.
Salida: Hay dos posibles salidas: El ao es bisiesto y El ao no
es bisiesto.
Condiciones de error: Si el dato introducido no es vlido (nmero
negativo o cero) debera indicarse: Dato no vlido.

Marta Zorrilla Universidad de Cantabria

Fase de diseo. Ejemplo. (y II)

Diseo

1. Determinar si un ao indicado por el usuario es o no un ao bisiesto.

1.1. Solicitar un ao al usuario.

1.2. Determinar si el ao es bisiesto o no.

1.1.1. Dar un mensaje al usuario solicitando un ao.


1.1.2. Leer el ao.
1.1.3. Si el ao no es vlido indicrselo al usuario.

1.2.1. Si el ao no es mltiplo de 4 no es bisiesto.


1.2.2. Si el ao es mltiplo de 4 pero no de 100 es bisiesto.
1.2.3. Si el ao es mltiplo de 400 es bisiesto.

1.3. Indicar al usuario el resultado obtenido.

1.3.1. Si el ao es bisiesto dar el mensaje El ao es bisiesto.


1.3.2. Si el ao no es bisiesto dar el mensaje El ao no es bisiesto.

Marta Zorrilla Universidad de Cantabria

Fase de diseo. Ejemplo. (y III)


ESCRIBIR Por favor, dme un ao
LEER AO
SI AO <= 0 ENTONCES
escribir El ao no es vlido
SINO
SI el ao es mltiplo de 4 ENTONCES
SI el ao es mltiplo de 400 ENTONCES
BISIESTO si
SINO
SI el ao es mltiplo de 100 ENTONCES
BISIESTO no
SINO
BISIESTO si
FINSI
FINSI
SINO
BISIESTO no
FINSI
SI BISIESTO = si entonces
escribir El ao es bisiesto
SINO
escribir El ao no es bisiesto
FINSI
FINSI

Marta Zorrilla Universidad de Cantabria

Diseo Descendente vs. Diseo


Ascendente

En el diseo descendente se dispone siempre de versiones


incrementales del programa
... pero es ms sensible a los cambios que surgen en los
subprogramas durante su implementacin.
Por su parte, el diseo ascendente es menos sensible a los cambios
(puesto que se parte ya de subprogramas implementados)
... pero no se dispone de las versiones incrementales del programa.
El diseo descendente facilita la prueba del programa global
... mientras que el ascendente facilita las pruebas individuales de los
mdulos.

Marta Zorrilla Universidad de Cantabria

Ejercicio

Escribir el algoritmo que convierte una longitud


expresada en centmetros en su equivalente
expresada en pulgadas
Comenzar
CM_INCH =0.39

INICIO
CM_INCH = 0.39
ESCRIBIR Dame longitud a convertir
LEER longitud_cm
long_inch longitud_cm * CM_INCH;
ESCRIBIR la longitud en pulgadas es, long_inch
FIN

ESCRIBIR
Dame long_cm
LEER
long_cm
long_inch= CM_INCH * long_cm

ESCRIBIR
long_inch

FIN

Marta Zorrilla Universidad de Cantabria

Ejercicio

Escribir el algoritmo que dado 3


nmeros permita saber si la suma de
cualquier pareja de ellos es igual al
tercero.
ESCRIBIR Dame a,b,c
LEER a,b,c
SI a+b=c ENTONCES
escribir IGUALES
SINO
SI a+c=b ENTONCES
escribir IGUALES
SINO
SI b+c=a ENTONCES
escribir IGUALES
SINO
escribir DISTINTAS
FINSI
FINSI
FINSI
FINSI

Comenzar
ESCRIBIR
Dame a, b y c
LEER a, b, c
SI
a+b =c
NO
SI

a+c =b
NO

SI

b+c=a
NO
ESCRIBIR
DISTINTAS

FIN

ESCRIBIR
IGUALES

Marta Zorrilla Universidad de Cantabria

Ejercicio

Comenzar

Escribir el algoritmo que imprima y


sume la serie 3, 6, 9, 99

numero=3
suma=0
indicador=1

INICIO
ESCRIBIR
numero* indicador

numero=3
suma=0
indicador=1
MIENTRAS (indicador<=11)
ESCRIBIR indicador * numero
suma=suma + (indicador*numero)
indicador = indicador +1
FIN MIENTRAS
ESCRIBIR suma
FIN

suma=suma+(indicador * numero)

indicador=indicador+1
SI

indicador
<= 11
NO
ESCRIBIR
suma

FIN

Marta Zorrilla Universidad de Cantabria

Puntos a recordar

Un algoritmo es una descripcin detallada, paso a


paso, de cmo realizar una tarea.

Preciso, definido y finito

Antes de programar, hay que disear un algoritmo


eficiente.
El objetivo del ingeniero de software es producir
software fiable, comprensible, rentable, adaptable y
reutilizable.