Você está na página 1de 7

CMO SE DESARROLLA SOFTWARE?

PROCESOS TCNICOS
Hoy en da, el proceso de desarrollar software tiene muchos ms componentes que el mero acto de escribir cdigo. Es posible que hace algunos aos (Y no pocos realmente), una sola persona pudiera generar productos de software de alta calidad trabajando de manera aislada y confiando en un proceso informal. Sin embargo, esto no es cierto hoy en da. Para que un proyecto de software de una complejidad media sea llevado a buen trmino en estos momentos, es necesario tener en cuenta un conjunto de subprocesos, fases y alternativas, que requieren que un desarrollador tenga claridad no solamente del detalle tcnico que est implementando, sino de cmo esa parte del cdigo interactuar con las dems de tal manera que se convierta en un componente productivo de una solucin de software. Las aplicaciones de software modernas son productos altamente complejos que comprender en muchas ocasiones un conjunto complejo de partes que interactan y se interrelacionan de maneras no triviales. Los productos finales de un desarrollo tienen que ser desplegados en ambientes complejos y cambiantes a los que deben adaptarse y cuyas caractersticas deben ser tenidas en cuenta cuando se piensa en la solucin al problema original. An despus de que un producto de software est en funcionamiento, es muy posible que sea necesario modificarlo, y esta circunstancia debe ser tenida en cuenta desde el principio del proceso de desarrollo para que los cambios sean lo menos traumticos que sea posible. Si en un proceso de desarrollo participa ms de un desarrollador (Que como se dijo con anterioridad es lo usual hoy en da), es necesario que todos compartan la misma visin del resultado final, y se coordinen en trminos del desarrollo para asegurar que el producto entregado funcione de la mejor manera posible y el cdigo escrito por todos interacte eficazmente. Todos estos factores, y muchos otros que no son expresados aqu no tienen por qu ser motivo de desolacin para el lector. El hecho de que existan retos dentro del proceso de desarrollo solo es un recordatorio de que los procesos deben ser llevados con un mnimo de formalismo y orden. Es necesario tener respeto por la profesin, por las responsabilidades que conlleva, y aplicar de manera adecuada el aprendizaje adquirido a lo largo de la formacin. No pretendemos desanimar al futuro desarrollador. De hecho se trata de todo lo contrario. El mensaje aqu es: Estos son los posibles retos a los que tendr que enfrentarse. Sin embargo, el mero hecho de tenerlos claros es una ventaja, y existe la garanta de que el proceso de enseanza que comienza le dar las herramientas para enfrentarlos y vencerlos.
System Politcnico Grancolombiano-en alianza con Whitney International University

!!

University

As pues, abordemos el tema con confianza. Ya que no se pretende en esta lectura condensar de manera adecuada todo aquello que se ver con mucho ms detalle en mdulos venideros, baste decir que vamos a contemplar y describir los procesos tcnicos que comprende el desarrollo de software, junto con los conceptos y procesos que se encuentran en su base. Se deja para lecturas posteriores el abordar otros aspectos, como los organizacionales y corporativos. Comencemos diciendo que el proceso de desarrollo de software (Entendido ya no solamente como el proceso de escribir instrucciones en un lenguaje determinado, sino como el proceso que arrancando de un problema, genera una solucin en forma de uno o varios programas de software), tiene varias facetas, y puede contemplarse de varias maneras. De una manera inicial, es posible caracterizarlo como un proceso de resolucin de problemas. Desde esta perspectiva, el objetivo fundamental de un proceso de desarrollo es encontrar la mejor manera de resolver un problema dado a travs de la escritura de cdigo. Sin embargo, para poder generar una solucin en cdigo a un problema es necesario haber entendido dicho problema; dadas las caractersticas complejas de muchos de los problemas a los que se enfrenta un desarrollador, esto exige en muchas ocasiones la utilizacin de modelos que simplifiquen el mundo de tal manera que pueda ser analizado y entendido con un nivel de detalle suficiente como para estar seguro de que la solucin propuesta es adecuada, pero con un nivel de simplificacin adecuado para poder generar una solucin efectiva sin verse frenado por los niveles excesivos de complejidad. En tercer lugar, es posible que aun despus de la generacin de modelos que permitan comprender el problema planteado, sea necesario completar la informacin de la que se dispone. De esta manera, pueden existir procesos de investigacin que se hagan necesarios para poder contar con todo el conocimiento necesario para comprender el problema, o plantear una solucin determinada. As pues, un desarrollador de software debe tener capacidad de abstraccin para poder elaborar un modelo del problema que se le presenta, habilidades de consecucin de informacin para completar las partes de dicho modelo que resulten incompletas, y criterio y habilidades de solucin de problemas para poder definir cul es la mejor solucin e implementarla de manera que se convierta en un producto de software. Todo esto antes de empezar a escribir una lnea de cdigo. Desde luego que el proceso de generar el cdigo que se convertir en la solucin final al problema es muy importante y sofisticado, y es justamente por eso que debe dedicarse el tiempo y atencin suficientes a los procesos previos. Para que en el punto de escribir el cdigo, se tenga la claridad suficiente de que no se estn desperdiciando las habilidades y el esfuerzo del desarrollador.

Politcnico

Grancolombiano-en

alianza

con

Whitney

International

System

"!

Veamos pues, en un poco ms mencionados con anterioridad:


System

de detalle cada uno de los aspectos

MODELADO Un modelo es una representacin abstracta de un sistema que


ofrece informacin sobre el mismo, de tal manera que permite responder preguntas sobre el sistema real. Los modelos son extremadamente tiles cuando se est lidiando con sistemas que son demasiado complejos, grandes o costosos para ser examinados de manera directa. A pesar de que los modelos no contienen toda la informacin que contiene el sistema original, si contienen informacin suficiente para que sea posible tomar decisiones y hacer predicciones bastante acertadas acerca del comportamiento del sistema original. Dadas las caractersticas de la mayor parte de los problemas que se solucionan con software hoy en da, es muy probable que el desarrollador deba lidiar con conceptos y medios que no le son familiares. En ese caso, resulta ms que til poder generar un modelo que describa la situacin o el ambiente, sin tener que convertirse en un experto absoluto en el rea del problema. INVESTIGACIN Y ADQUISICIN DE CONOCIMIENTO Este es un proceso que se da a lo largo de todo el desarrollo de software. Informacin puede llegar al final del proceso que haga necesario repensar el diseo desde el principio, de manera que es necesario que el desarrollador tenga la habilidad y la disposicin de enfrentarse a hechos y datos que le hagan reevaluar su postura y sus intenciones dentro del marco del proceso de desarrollo.

Grancolombiano-en

alianza

con

Whitney

International

University

SOLUCIN DE PROBLEMAS. Ya se ha dicho que el ejercicio de desarrollo de software es un ejercicio de solucin de problemas. En su manera ms simple, un proceso de solucin de problemas podra seguir estos pasos: 1. 2. 3. 4. 5. Se formula el problema Se analiza el problema Se buscan posibles soluciones Se decide una solucin apropiada Se implementa la solucin

Politcnico

En el rea del desarrollo de software las condiciones no son muy diferentes. Se podran enunciar las siguientes fases: 1. 2. 3. 4. Levantamiento de requerimientos Anlisis Diseo Implementacin

Describamos cada una de ellas con un poco de detalle:

#!

Grancolombiano-en

alianza

LEVANTAMIENTO DE REQUERIMIENTOS El objetivo fundamental de esta actividad es aclarar, en conjunto con el cliente y los usuarios, que es lo que se espera y desea de la aplicacin de software. La idea es que se defina el problema en conjunto, y en conjunto tambin se describa la solucin al mismo, siempre desde la perspectiva del usuario del sistema. El proceso debe llevarse a cabo con el mayor detalle y cuidado, pues resulta no solo conveniente sino necesario tener la mayor certeza posible de que las dos partes del proceso, el cliente y el desarrollador tienen la misma visin y el mismo conjunto de expectativas respecto al producto de software fruto del proceso de desarrollo. Cualquier tipo de desacuerdo o confusin debe ser subsanado o aclarada de inmediato, pues las divergencias de criterio en este punto se propagarn a travs de todo el proceso, resultando en un producto que no cumple con las expectativas del cliente, o que no tiene las caractersticas tcnicas esperadas por el desarrollador. Los principales elementos que se definen al terminar esta fase son los actores que interactuarn con el sistema, las descripciones de dichas interacciones, y las relaciones que existen entre ellas. Ningn tipo de detalle tcnico o caracterstica no visible al usuario sern tenidos en cuenta en este punto. Este tipo de detalles se tratarn ms adelante. Sin embargo, no se puede insistir suficiente en que el hecho de que no se trate de un proceso tcnico no le resta importancia al levantamiento de requerimientos. Siendo los requerimientos definidos en esta fase la base de todas las dems fases del proceso, es extremadamente importante que se verifique constantemente que sean completos, correctos, consistentes, no ambiguos y realistas. El cumplimiento de estas caractersticas en una fase temprana como esta, facilitar el resto del proceso de desarrollo. ANLISIS. El proceso de anlisis busca generar modelos que sean precisos, lo ms completos posible, y sobre todo tiles, tanto del problema en cuestin como de las soluciones posibles al mismo. El punto de partida de este subproceso es el conjunto de requerimientos que se han definido para el software, y el proceso implica la documentacin y formalizacin de dichos requerimientos. Es necesario alcanzar un nivel de comprensin del problema que permita extraer la informacin relevante e incluirla en el modelo. As mismo, es necesario definir un modelo propuesto de solucin que satisfaga los requerimientos planteados y que sea funcional dentro del modelo de problema encontrado. Es posible que el resultado final de la fase de anlisis no se comprensible para el cliente, pero su funcin es ser claro para los desarrolladores, pues solamente de esta manera podr luego trasladarse a un diseo y una implementacin adecuadas que satisfagan las necesidades iniciales. Otra ventaja de tener un modelo resultante del anlisis que sea detallado y comprensible es que se facilita la toma de decisiones pues se tiene una visin real y clara del software a desarrollar. Una de las principales causas de aplazamiento en la toma de decisiones (Que despus se convierte en una fuente de demoras, problemas y sobrecostos), es la falta de informacin

Politcnico

con

Whitney

International

University

System

$!

completa, detallada, clara y consistente. Un buen modelo de anlisis reduce en gran medida este riesgo. La salida fundamental de un buen proceso de anlisis es un modelo que contenga los elementos que interactan para dar solucin al problema por medio de una aplicacin de software, as como los atributos que describen cada uno de esos elementos y las relaciones que existen entre ellos, todo esto desde la perspectiva del usuario. Existen muchas maneras de documentar un proceso de anlisis, sin embargo, uno de los mecanismos preferidos en el campo del desarrollo de software es utilizar UML Unified Modeling Language, o Lenguaje Unificado de Modeladoque es el estndar de facto para la representacin de modelos de anlisis y diseo de software. DISEO. En este punto, se busca obtener el detalle de la solucin planteada, de tal manera que se tenga claridad respecto a las partes que la componen y las relaciones que existen entre ellas. Esta vez la preocupacin est en definir esta estructura desde el punto de vista interno de la solucin. El nivel de detalle aqu es importante, pues es con el resultado de esta fase que se abordar el proceso de implementacin, y todo aquello que haya sido ignorado en este subproceso, quedar por fuera de la solucin final implementada, a no ser que se hagan revisiones ms adelante. Es importante recalcar sin embargo, que modificaciones hechas durante la implementacin son ms costosas que aquellas hechas durante el diseo, que a su vez son mucho ms costosas que aquellas correcciones realizadas durante la fase de anlisis. Deben definirse en esta fase guas acerca de cmo se manejarn elementos comunes a todos los subsistemas del software desarrollado, incluyendo manejo de datos, configuraciones de hardware, estrategias de control de acceso, etc. El resultado final de la fase de diseo consiste en tener un conjunto de metas de diseo que guiarn el proceso de aqu en adelante, as como una descomposicin de la solucin desde el punto de vista estructural en trminos de cdigo. Esto ltimo corresponde a una divisin en subsistemas, haciendo nfasis en la ubicacin, responsabilidades y relaciones que cada uno de dichos subsistemas presenta. IMPLEMENTACIN. La implementacin es la fase en la que un diseo detallado se convierte en una solucin de software real y completamente funcional. Esta fase abarca todo el tiempo y los procesos que sean necesarios para traducir una especificacin de solucin tal como fue diseada en la fase anterior a un ejecutable que solucione los problemas planteados durante la fase de levantamiento de requerimientos. Si el proceso completo fue llevado de manera adecuada, los cambios y contratiempos en esta fase deberan ser mnimos, sin embargo, una fase de implementacin llevada a cabo de una manera organizada incluye puntos de control en los que se verifica que el
System Politcnico Grancolombiano-en alianza con Whitney International University

%!

System

software desarrollado coincide con lo que el cliente espera y el diseo dicta, y que el comportamiento de la aplicacin en el punto en que se encuentra el proceso de desarrollo es adecuada y no presenta fallos. Sobra decir que en el momento en que dichos fallos o divergencias aparezcan, deben ser tratados y solucionados de inmediato. El resultado principal de una fase de implementacin llevada de una manera adecuada es el software desarrollado en un estado completamente funcional, en plena coincidencia con los requerimientos planteados durante la primera fase del proyecto, entregado a satisfaccin del cliente, y dentro de los marcos de tiempo y presupuesto pronosticados. Desde luego, buena parte de estas condiciones no dependen de circunstancias meramente tcnicas, por lo que no puede garantizarse que seguir las fases y recomendaciones esbozadas en este documento redunde en el cumplimiento de todos los aspectos mencionados. El proceso de construir un producto software comprende otras actividades adems de las meramente tcnicas.

Politcnico

Grancolombiano-en

alianza

con

Whitney

International

University

&!

BIBLIOGRAFA
System

BRUEGGE B., DUTOIT, A.(2003), Object-Oriented Software Engineering, Prentice Hall,

Politcnico

Grancolombiano-en

alianza

con

Whitney

International

University

'!

Você também pode gostar