Está en la página 1de 5

Tipos de errores

Los errores de compilacin son debidos a errores sintcticos en el cdigo,


como puede ser escribir mal un comando o usarlo mal o no poner un ;.

Los errores en tiempo de ejecucin son errores que aparecen mientras se


ejecuta el programa cuando intenta una operacin que es imposible que se lleve a cabo.

1. Bucle infinito es un error que consiste en realizar un ciclo que se repite de forma
indefinida ya que su condicin para finalizar nunca se cumple
2. Resultado incorrecto es un error que se da cuando se escribe matemticamente
incorrecto y dan resultados imposibles, como dividir entre 0

Los errores lgicos se dan por un fallo a la hora de programar, son difciles de
encontrar porque no los detecta el compilador, por ejemplo

Proceso de compilacin
El proceso de compilacin consiste en traducir las instrucciones escritas en un determinado
lenguaje de programacin (lenguaje de alto nivel) a lenguaje mquina.
El proceso de traduccin se compone internamente de varias etapas o fases, que realizan
distintas operaciones lgicas.

Fase de anlisis
Anlisis lxico
Esta es la primera fase, aqu se lee el programa fuente de izquierda a derecha y se agrupa
en componentes lxicos (secuencias de caracteres con un significado) y se comprueba que los
smbolos del lenguaje (palabras clave,operadores, etc.) se han escrito correctamente.

Anlisis sintctico
En esta fase los componentes lxicos se agrupan jerrquicamente en frases gramaticales
que el compilador utiliza para sintetizar la salida. Se comprueba si lo obtenido de la fase anterior es
sintcticamente correcto y se genera un rbol sintctico.

Anlisis semntico
En esta etapa se comprueba la validez semntica de las sentencias aceptadas en la fase de
Anlisis Sintctico.
Fase de sntesis
Consiste en generar el cdigo objeto equivalente al programa fuente, siempre que est libre
de errores de anlisis. El cdigo objeto resulta de la compilacin del cdigo fuente.

Generacin de cdigo intermedio


En esta etapa se traduce la entrada a una representacin independiente de la mquina pero
fcilmente traducible al lenguaje ensamblador. Algunas de las representaciones ms comunes son:
- rboles de representacin intermedia
- Cdigo de tres direcciones,
- Cdigo de dos direcciones,
- Cdigo de pila
- Etc

Generacin de cdigo objeto


Una vez obtenido el cdigo intermedio, es necesario generar el cdigo objeto. Por lo general
este no se genera directamente sino que se genera un cdigo en ensamblador y despus se utilice
un ensamblador.

Esta fase es totalmente dependiente de la arquitectura concreta para la que se est


desarrollando el compilador. Hay que enfrentarse a problemas como:
- Seleccin de instrucciones teniendo en cuenta su eficiencia.
- Eleccin de los modos de direccionamiento adecuados.
- Utilizacin eficiente de los registros.
- Empleo eficiente de la cach.
- Otros...

Optimizacin de cdigo
La fase de optimizacin de cdigo consiste en mejorar el cdigo intermedio, de modo que
resulte un cdigo mquina ms rpido de ejecutar. Esta fase de la etapa de sntesis es posible sobre
todo si el traductor es un compilador.
Roles en el Desarrollo del Software
Administrador de Proyecto
Controla y administra los recursos para cumplir con el plan y objetivo fijados enlos proyectos.

Es un administrador temporal de los recursos, no es dueo de nada, por ello debe centrarse
en controlar y coordinar los diferentes eventos y actividades que surjan en el proyecto y para ello es
necesario tener clara la misin y la visin del mismo.
Incluso en los proyectos de desarrollo que no cuentan con un gerente de proyecto, es
conveniente asignar el rol de gerente de proyecto a alguien, para que quede claro quin es
responsable de la ejecucin del mismo.

Analista
Es el responsable de entender las necesidades del cliente y llevar el conocimiento necesario
al equipo para que puedan entenderlo y desarrollar el software necesario para satisfacer al cliente.
Para especificar el problema se utiliza metodologa de anlisis, de tal forma que se pueda
traducir entre las necesidades del cliente y los objetivos del equipo de desarrolladores.

Arquitecto de Software
Es el encargado de traducir los requisitos planteados por el analista del equipo en una
solucin tcnica con la que pueda trabajar el desarrollador de software.
Hay muchas formas de plantear la arquitectura que se va a seguir a la hora del desarrollo, el
arquitecto es el que decide qu camino se va a tomar (en funcin de la estructura global del proyecto)
y tambin debe supervisar el proyecto para comprobar que se est cumpliendo ese camino.

Desarrollador de Software
Es el encargado de traducir a cdigo la especificacin del sistema (la solucin al problema o
necesidades planteados por el analista). Tambin es su obligacin documentar el cdigo, con el
objetivo de aclarar el porqu de aquellas partes de cdigo que no resulten evidentes a partir de su
lectura.

Tester
Es el encargado de probar (testear) el software para asegurar que funciona de la forma que
debera.
Normalmente quien cumple este papel son los mismos desarrolladores (aspectos tcnicos) y
los usuarios (aspectos funcionales).

Antipatrones
Los anti-patrones, tambin llamados trampas, son ejemplos bien documentados de malas
soluciones para problemas. Se estudian a fin de poderlos evitar en el futuro.

Golden Hammer (Martillo de Oro): Asumir que nuestra solucin favorita es


universalmente aplicable, haciendo bueno el refrn a un martillo, todo son clavos.
Ejemplo: A la hora de crear una pgina web, el utilizar siempre el lenguaje HTML
tambin para guardar informacin mientras una mejor solucin sera utilizar XML y poder
acceder a este siempre que sea necesario.

Reinventing the Wheel (Reinventar la Rueda): Enfrentarse a las situaciones buscando


soluciones desde cero, sin tener en cuenta otras que puedan existir ya para afrontar los
mismos problemas.
Ejemplo: En vez de usar libreras,programas que ya hemos usado antes, decidimos
empezar de cero, lo cual no solo puede dar pie a nuevos errores, si no que estamos
perdiendo un tiempo que quizs no tenemos.

Boat Anchor (Ancla del Barco) / Lava Flow (Lava Seca): Retener partes del sistema
que ya no tienen utilidad y son inamovibles.

Spaghetti Code (Cdigo Espagueti): Se dice de una pieza de cdigo fuente no


documentado, donde cualquier pequeo movimiento convulsiona la estructura completa del
sistema.

Copiar y Pegar: Se trata de que a la hora de crear una nueva clase o mtodo copiemos y
peguemos cdigo para ello, lo cual es una mala prctica.
Ejemplo: A la hora de programar una condicin que se repite por ejemplo 10 veces
copiamos y pegamos cdigo en lugar de refactorizar el cdigo, como bien podra ser crear un
bucle, evitando ms lneas de cdigo.

Infierno de las Dependencias: Usar demasiado las libreras y componentes de un


entorno de desarrollo deriva en posibles problemas causados por las diferentes versiones de
las dependencias.

Manejo de Excepciones Intil: Establecer condicionales para evitar que salgan


excepciones lanzando manualmente una excepcin es intil, estamos creando cdigo
innecesario ya que el propio control de excepciones del lenguaje nos brinda esta
funcionalidad sin tener que crear condicionales.

Magic Strings (Cadenas Mgicas): A veces incluimos cadenas de caracteres a la hora


de realizar llamadas o comparaciones de manera recurrente. El problema que presenta esta
prctica es la necesidad de modificar y recompilar el cdigo en caso de que se necesite
cambiar la cadena de caracteres.
Fuentes
Roles en el Desarrollo del Software:
http://www.marioperez.com.mx/equipos-de-desarrollo/roles-y-responsabilidades/
https://es.slideshare.net/SebastianRamrez2/roles-desarrollo-del-software
Antipatrones:
https://sourcemaking.com/antipatterns/software-development-antipatterns
Proceso de compilacin:
https://www.wikipedia.com

También podría gustarte