gar cia civil engineering thesis

Upload: javy89

Post on 08-Apr-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    1/106

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    2/106

    Dedicatoria

    Al seor Ricardo Mendoza Mamani y la seora Inelia Garca Rojas: mis padres;

    quienes, sin exigirme nada, me ensearon a dar lo mximo.

    I

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    3/106

    Agradecimientos

    A mis padres, mis hermanos Ruth y Victor, mi cuado Frankie, y sobrinitos Tamara

    y Lucas: mi familia, y al profesor Ral Sapiain Araya, quienes me animaban

    permanentemente a concluir el presente trabajo, cuando la situacin dificultaba su

    desarrollo.

    A la seorita Magdalena Dobrajska, mi compaera, quien se ha encargado de mantener

    mi salud mental y quien ha sacrificado incontables horas de su tiempo libre, para

    hacerme compaia durante el desarrollo del proyecto.

    A todo el resto de mi familia, en el extranjero y en Chile, quienes siempre se han

    encargado de atenuar la melancola que peridicamente aparece al encontrarme tan

    distante de mi tierra natal.

    A mi permanente grupo de amigos con quienes he compartido penas y alegras y a los

    que tengo siempre presente al momento de forjar mi futuro.

    Al seor John Hffner, mi supervisor en la compaa que dio soporte econmico

    durante un largo perodo de tiempo a mis estudios: Damixa; quien, sin obligacin

    alguna, siempre soport mis demandas; especialmente cuando la memoria consuma

    gran parte de mi tiempo.

    A mi profesor gua, el seor Ramn Guirriman Carrasco, y a mi profesor informante,

    el seor Ral Sanhueza Hormazabal, quienes tuvieron la paciencia de guiar, revisar, y

    corregir un trabajo a distancia; y durante un perodo de tiempo excepcional.

    A la seorita Magdalena Campusano Vergara, siempre dispuesta a resolver los

    problemas de los alumnos de la carrera de Ingeniera Civil Elctrica-Electrnica.

    A todos los profesores que confiaron en m al momento de seleccionar uno de los

    alumnos que viajaran a perfeccionar sus conocimientos al extranjero, y que hicieron

    posible concluir mi proyecto final de carrera.

    II

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    4/106

    ndice general

    Dedicatoria I

    Agradecimientos II

    Resumen VIII

    1. Introduccin 1

    1.1. Motivacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    1.1.1. El plus de las universidades . . . . . . . . . . . . . . . . . . . 1

    1.1.2. De la teora a la prctica . . . . . . . . . . . . . . . . . . . . . 2

    1.1.3. Linux: el camino legal . . . . . . . . . . . . . . . . . . . . . . 3

    1.2. Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    1.3. Alcances del Proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2. Linux y la Electrnica 5

    2.1. Linux y el usuario final . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.2. Alternativas gratuitas . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2.2.1. Oficina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2.2.2. Matemtica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2.2.2.1. Clculo numrico . . . . . . . . . . . . . . . . . . . 7

    2.2.2.2. Clculo simblico . . . . . . . . . . . . . . . . . . . 7

    2.2.3. Electrnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    2.2.3.1. Grupos EDA . . . . . . . . . . . . . . . . . . . . . . 8

    II I

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    5/106

    NDICE GENERAL IV

    2.2.3.2. Captura esquemtica . . . . . . . . . . . . . . . . . . 8

    2.2.3.3. Diseo de placas impresas . . . . . . . . . . . . . . . 9

    2.2.3.4. Simulacin electrnica . . . . . . . . . . . . . . . . 10

    2.3. Captura esquemtica y simulacin electrnica . . . . . . . . . . . . . . 11

    2.3.1. Oregano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    2.3.2. Qucs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    2.3.3. KTechlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    3. Orientacin a Objetos 15

    3.1. Principios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    3.1.1. Abstraccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    3.1.1.1. Abstraccin de un objeto . . . . . . . . . . . . . . . 16

    3.1.1.2. Clases de objetos . . . . . . . . . . . . . . . . . . . 18

    3.1.1.3. Composicin de clases . . . . . . . . . . . . . . . . 18

    3.1.2. Herramientas . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    3.1.2.1. Encapsulacin . . . . . . . . . . . . . . . . . . . . . 19

    3.1.2.2. Herencia . . . . . . . . . . . . . . . . . . . . . . . . 21

    3.1.2.3. Polimorfismo . . . . . . . . . . . . . . . . . . . . . 22

    3.2. Metodologa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    3.2.1. Enfoque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    3.2.2. Procesos de desarrollo . . . . . . . . . . . . . . . . . . . . . . 25

    3.2.3. Pautas a seguir . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    4. Rational Unified Process - RUP 28

    4.1. Principios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    4.1.1. Proceso de desarrollo iterativo . . . . . . . . . . . . . . . . . . 29

    4.1.2. Administracin de los requerimientos . . . . . . . . . . . . . . 29

    4.1.3. Estructura del RUP . . . . . . . . . . . . . . . . . . . . . . . . 31

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    6/106

    NDICE GENERAL V

    4.2. Metodologa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    4.2.1. Fases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    4.2.1.1. Concepcin . . . . . . . . . . . . . . . . . . . . . . 31

    4.2.1.2. Elaboracin . . . . . . . . . . . . . . . . . . . . . . 32

    4.2.1.3. Construccin . . . . . . . . . . . . . . . . . . . . . . 32

    4.2.1.4. Transicin . . . . . . . . . . . . . . . . . . . . . . . 33

    4.2.2. Iteraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    4.2.3. Disciplinas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    4.2.3.1. Administracin del Proyecto . . . . . . . . . . . . . 34

    4.2.3.2. Requerimientos (Anlisis) . . . . . . . . . . . . . . . 35

    4.2.3.3. Modelo de Negocio (Anlisis) . . . . . . . . . . . . . 35

    4.2.3.4. Diseo . . . . . . . . . . . . . . . . . . . . . . . . . 35

    4.2.3.5. Implementacin . . . . . . . . . . . . . . . . . . . . 35

    4.2.4. Artefactos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    4.2.4.1. Modelo de Casos de Uso . . . . . . . . . . . . . . . 36

    4.2.4.2. Plan de Iteracin . . . . . . . . . . . . . . . . . . . . 41

    4.2.4.3. Modelo del Dominio . . . . . . . . . . . . . . . . . . 424.2.4.4. Modelo del Diseo . . . . . . . . . . . . . . . . . . 46

    4.2.4.5. Modelo de la Implementacin . . . . . . . . . . . . . 54

    5. Desarrollo de SpiceX 55

    5.1. Concepcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    5.1.1. Disciplina de Requerimientos . . . . . . . . . . . . . . . . . . 555.1.1.1. Modelo de Casos de Uso . . . . . . . . . . . . . . . 55

    5.1.2. Disciplina de Administracin del Proyecto . . . . . . . . . . . 59

    5.1.2.1. Plan de Iteracin . . . . . . . . . . . . . . . . . . . . 59

    5.2. Elaboracin: Primera Iteracin . . . . . . . . . . . . . . . . . . . . . . 60

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    7/106

    NDICE GENERAL VI

    5.2.1. Disciplina de Modelo de Negocio . . . . . . . . . . . . . . . . 60

    5.2.1.1. Modelo del Dominio . . . . . . . . . . . . . . . . . . 60

    5.2.2. Disciplina de Diseo . . . . . . . . . . . . . . . . . . . . . . . 62

    5.2.2.1. Modelo del Diseo: Diagramas de Interaccin . . . . 62

    5.2.3. Disciplina de Implementacin . . . . . . . . . . . . . . . . . . 66

    5.2.3.1. Modelo de la Implementacin . . . . . . . . . . . . . 66

    5.2.4. Disciplina de Administracin del Proyecto . . . . . . . . . . . 67

    5.2.4.1. Plan de Iteracin . . . . . . . . . . . . . . . . . . . . 67

    5.2.5. Disciplina de Requerimientos . . . . . . . . . . . . . . . . . . 67

    5.2.5.1. Modelo de Casos de Uso . . . . . . . . . . . . . . . 67

    5.3. Elaboracin: Segunda Iteracin . . . . . . . . . . . . . . . . . . . . . . 69

    5.3.1. Disciplina de Modelo de Negocio . . . . . . . . . . . . . . . . 695.3.1.1. Modelo del Dominio . . . . . . . . . . . . . . . . . . 69

    5.3.2. Disciplina de Diseo . . . . . . . . . . . . . . . . . . . . . . . 69

    5.3.2.1. Modelo del Diseo: Diagramas de Interaccin . . . . 69

    5.3.3. Disciplina de Implementacin . . . . . . . . . . . . . . . . . . 72

    5.3.3.1. Modelo de la Implementacin . . . . . . . . . . . . . 72

    5.3.4. Disciplina de Administracin del Proyecto . . . . . . . . . . . 74

    5.3.4.1. Plan de Iteracin . . . . . . . . . . . . . . . . . . . . 74

    5.3.5. Disciplina de Requerimientos . . . . . . . . . . . . . . . . . . 74

    5.3.5.1. Modelo de Casos de Uso . . . . . . . . . . . . . . . 74

    5.4. Elaboracin: Tercera Iteracin . . . . . . . . . . . . . . . . . . . . . . 76

    5.4.1. Disciplina de Modelo de Negocio . . . . . . . . . . . . . . . . 76

    5.4.1.1. Modelo del Dominio . . . . . . . . . . . . . . . . . . 76

    5.4.2. Disciplina de Diseo . . . . . . . . . . . . . . . . . . . . . . . 76

    5.4.2.1. Modelo del Diseo: Diagramas de Interaccin . . . . 76

    5.4.3. Disciplina de Implementacin . . . . . . . . . . . . . . . . . . 78

    5.4.3.1. Modelo de la Implementacin . . . . . . . . . . . . . 78

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    8/106

    NDICE GENERAL VI I

    6. Conclusiones 82

    6.1. EDA en Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

    6.2. Webometrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

    6.3. Alcances logrados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

    Apndice 86

    A. Cdigo de SpiceX 86

    B. Diagramas de Interaccin 87

    Bibliografa 96

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    9/106

    Resumen

    El siguiente trabajo implementa una interfaz grfica para asistir la creacin de

    topologas de circuitos electrnicos en formato de texto: netlist; que satisfagan la

    sintaxis especfica de diversos ncleos de simulacin de lnea de comandos disponibles

    en Linux.

    Adems, el contenido trata de graficar, en general, el estado actual de los programas

    para la automatizacin del diseo electrnico en Linux, y de presentar el marco terico

    necesario para entender y mejorar el sistema a futuro.

    La metodologa de desarrollo seguida al momento de implementar la aplicacin es el

    Rational Unified Process, el cual aborda los requerimientos del proyecto de una forma

    rpida, directa, organizada y eficaz.

    Independiente del pequeo avance alcanzado en las fases del proceso de desarrollo,

    y gracias a las pautas de implementacin propuestas por el mismo, la arquitectura

    principal de la aplicacin est prcticamente finalizada. Es as que el programa es

    funcional, puede ser y ha sido fcilmente testeado, y permite recibir realimentacin

    efectiva. Todo esto, en conjunto con un cdigo y funcionalidad de fcil expansin por

    parte de los usuarios.

    Los alcances tcnicos logrados son: implementacin de circuitos electrnicos de forma

    grfica y asistida, con posibilidades de modificacin y almacenado; simulacin de

    anlisis transiente de los circuitos, disponiendo para ello de una librera de componentesbsicos, pero suficientes para una amplia gama de configuraciones; el soporte de

    los ncleos de simulacin Spice y Ngspice, para efectuar dichas simulaciones; y

    la posibilidad de incrementar la cantidad de componentes soportados, mediante la

    importacin de libreras de componentes para Spice.

    VIII

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    10/106

    Captulo 1

    Introduccin

    1.1. Motivacin

    1.1.1. El plus de las universidades

    Es de conocimiento general la preocupacin de las universidades por mejorar y destacar

    sus carreras, logrando as prestigio y distincin entre sus pares. As como algunas

    universidades se destacan por la sobresaliente capacidad administrativa que presentan

    los alumnos que egresan de stas, otras lo hacen por el bagaje tecnolgico que poseen

    los profesionales que en ellas se forman.

    Mirando los criterios de evaluacin de excelencia, aplicados por importantes medios

    de comunicacin al momento de elaborar rankings de universidades a nivel mundial,

    queda de manifiesto la importancia de las publicaciones generadas en las instituciones

    de educacin superior[7]. En este contexto, no existe una ley que limite el desarrollo y

    proliferacin de investigaciones, manuales y cualquier tipo de publicaciones cientfico-

    tcnicas, a los acadmicos de las universidades.

    Asumiendo esto, el alumno tiene la capacidad de aportar en forma directa al

    prestigio que posee la institucin que a futuro respaldar su nivel de educacin,

    usando como herramienta la publicacin del conocimiento[4]. Es decir, el estudiante

    tiene la posibilidad de generar ese plus tan conveniente, tomando en sus manos la

    responsabilidad hasta ahora delegada a las administraciones universitarias.

    1

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    11/106

    CAPTULO 1. INTRODUCCIN 2

    1.1.2. De la teora a la prctica

    Cmo lograr esto? La respuesta a esta interrogante es tema de interesantes debates.

    Una medida inicial puede ser la generacin de espacios de tiempo para desarrollar

    esta capacidad, tan limitada por la saturacin de asignaturas presente en las carreras

    de Ingeniera. Sin embargo, con un alumno desmotivado, cualquier optimizacin

    curricular sera infructuosa. Independiente de la forma como se impulse este macro

    objetivo, sea como resultado de una buena poltica de accin de parte de losacadmicos o como producto de la motivacin interna del estudiante, ste ltimo

    debera incursionar, en el transcurso de su formacin profesional, en el mbito de

    la investigacin, innovacin y publicacin. Posteriormente, si la consecuencia del

    esfuerzo son buenas crticas, es muy probable que el afn de superacin genere en

    el alumno una motivacin extra.

    Sin embargo, se debe tener presente que llevar a cabo una publicacin en formato

    electrnico requiere una serie de programas, entre los cuales estn: sistema operativo,

    editores de texto, hojas de clculo, editores de ecuaciones, editores grficos, sistemas

    para administracin de bases de datos, etctera. Si la publicacin est relacionada con el

    mundo de la Ingeniera Electrnica, se podran necesitar, adems, programas para rea-

    lizar las siguientes tareas: clculo simblico, clculo numrico, captura esquemtica,

    diseo de PCBs, y simulacin electrnica, entre otros.

    No se puede pensar en reconocimiento institucional, partiendo de una base ilegal.

    Lamentablemente, muchas universidades carecen de recursos suficientes para la

    adquisicin de las licencias necesarias para que sus alumnos realicen publicaciones.

    De ms esta decir, que para un alumno en particular esto resulta imposible.

    Esto ltimo significa un gran impedimento para el objetivo propuesto, siempre y

    cuando, se considere la utilizacin de programas comerciales como herramientas de

    trabajo.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    12/106

    CAPTULO 1. INTRODUCCIN 3

    1.1.3. Linux: el camino legal

    Es en este punto donde hace su aparicin Linux. Este sistema operativo provee todas

    las herramientas necesarias para llevar a cabo cualquier tipo de publicacin en forma

    totalmente gratuita, sin temor a enfrentar problemas de patentes y demandas tanto a

    nivel personal como institucional.

    Tambin es cierto que la migracin hacia un sistema operativo distinto supone una curva

    de aprendizaje, la cual se relaciona con el proceso de adaptacin a una nueva forma de

    hacer las cosas; no ms difcil, pero s diferente. Por tal motivo, en la actualidad, la

    mayora de las aplicaciones en Linux disponen de interfaces grficas, similares a las

    que utiliza Windows; las cuales facilitan la migracin y el acercamiento a las nuevas

    herramientas informticas.

    Sin embargo, existe una excepcin, que la conforman las aplicaciones CAD1,

    particularmente, las de uso en Ingeniera Elctrica y Electrnica. Estas herramientasde lnea de comandos, si bien han sido el ncleo de muchas aplicaciones comerciales

    de Windows, an son poco intuitivas.

    La posibilidad de eliminar esa carencia presente en Linux, muchas veces clave en la

    decisin de un electrnico de no utilizar este sistema operativo, y el sueo de aportar

    con algo al mejoramiento de la excelencia acadmica en la universidad; no slo por la

    institucin, sino, adems, por el pas y la regin. . . es motivante.

    1.2. Objetivo General

    Por todo lo expuesto anteriormente, el objetivo principal de este proyecto es la creacin

    de una interfaz grfica para el simulador electrnico Spice2 de Linux: SpiceX; que se

    familiarice con las herramientas de trabajo actuales de los estudiantes de Ingeniera

    Electrnica.1CAD: Computer Aided Design.2Spice es la herramienta de simulacin electrnica que dio origen a Pspice, un popular simulador

    electrnico para Windows, considerado un standard en la industria.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    13/106

    CAPTULO 1. INTRODUCCIN 4

    1.3. Alcances del Proyecto

    Se desea poner a disposicin del alumno, todas las herramientas necesarias para llevar

    a cabo un trabajo de investigacin, sin producir cambios drsticos en su metodologa

    de trabajo. Considerando la complejidad del objetivo, el desarrollo deber enfocarse de

    tal forma que el programa presente las siguientes caractersticas:

    1. cdigo de fcil desarrollo y mantencin,

    2. funcionalidad suficiente para comenzar su distribucin,

    3. y libreras electrnicas de fcil expansin por parte de los usuarios.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    14/106

    Captulo 2

    Linux y la Electrnica

    Al momento de escribir el presente captulo, Linux se encuentra compitiendo

    seriamente con otros sistemas operativos que, por haberse enfocado desde su gnesis

    en la facilidad de uso, continan ocupando la mayora de los escritorios de usuarios.

    2.1. Linux y el usuario final

    En Enero del 2006, la organizacin de consumidores y usuarios de Espaa, public

    un interesante artculo que compara las ventajas y desventajas de los sistemas

    operativos: Windows XP, Mac OS X, y Ubuntu Linux, al momento de ser utilizados

    en computadores personales[3].

    Independiente de los resultados finales de aquella comparacin, queda de manifiesto

    que Linux est dejando de ser el sistema operativo utilizado nicamente por expertos

    en informtica. De hecho, la distribucin1 evaluada busca facilitar el acercamiento del

    usuario final, el cual no est dispuesto a dedicar mucho tiempo a la solucin de tareas

    triviales.

    1Existen diversas compaias o agrupaciones, las cuales empaquetan el kernel Linux con distintos

    tipos de programas, para as ser distribuido a los usuarios. Dicho conjunto de programas, presentando

    pequeas diferencias en torno a la gestin del sistema, recibe el nombre de distribucin.

    5

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    15/106

    CAPTULO 2. LINUX Y LA ELECTRNICA 6

    Aportando al mismo objetivo de las distribuciones orientadas al escritorio, cierto tipo

    de pginas web2 se dedica a reunir informacin de inters para usuarios que desean

    comenzar a utilizar opciones gratuitas, frente a los programas de pago que les presiona

    a utilizar la popularidad del sistema operativo Windows.

    Dichas herramientas informticas, conocidas generalmente como alternativas libres, si

    bien no se restringen al sistema operativo Linux, en muy pocos casos lo excluyen.

    2.2. Alternativas gratuitas

    Sera imposible mencionar todas las aplicaciones gratuitas que estn disponibles para el

    sistema operativo Linux. Es por eso que en esta seccin se mencionarn, nicamente,

    algunas de las alternativas disponibles en las reas que competen a un estudiante de

    Ingeniera Elctrica y Electrnica.

    2.2.1. Oficina

    Al momento de escribir reportes que acompaen trabajos prcticos o de laboratorio,

    se dispone del conjunto ofimtico: OpenOffice3. Este grupo de programas, que

    comenz como un proyecto privado y comercial de Sun Microsystems, presenta todos

    los componentes disponibles en su anloga comercial Microsoft Office; incluyendo:

    procesador de texto, hoja de clculo, editor y presentador de diapositivas, editor de

    ecuaciones, editor de grficos y base de datos.

    Aunque no perfecta, la compatibilidad con la contra parte comercial es casi total,

    permitiendo la lectura y escritura de los archivos generados por cada uno de los

    mdulos que componen Microsoft Office.

    2.2.2. Matemtica

    En el estudio de la ingeniera, existen dos importantes reas de las matemticas que

    demandan el uso del computador para agilizar su aplicacin: el clculo numrico y el

    clculo simblico.2http://alts.homelinux.net/, http://www.linuxrsp.ru/win-lin-soft/index-spanish.html, entre otras.3http://www.openoffice.org/

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    16/106

    CAPTULO 2. LINUX Y LA ELECTRNICA 7

    2.2.2.1. Clculo numrico

    Para agilizar el clculo numrico, el estudiante necesita de un programa estilo Matlab,

    y las alternativas presentes son: Scilab4 y Octave5. En los dos casos, la interaccin con

    el usuario se efecta de manera similar a Matlab, a travs de sentencias de lnea de

    comandos, y utilizando prcticamente el mismo grupo de instrucciones.

    Cabe mencionar que Scilab dispone de SciCos, un mdulo estilo Simulink de Matlab,

    que podra determinar una ventaja con respecto a Octave. Sin embargo, ambos

    programas buscan ambiciosamente, y para beneficio de los usuarios insertos en

    entornos comerciales, la compatibilidad con Matlab; apuntando principalmente, a la

    ejecucin de programas escritos para esta aplicacin.

    2.2.2.2. Clculo simblico

    Para agilizar el clculo simblico, el estudiante necesita de un programa estilo

    Mathematica, y las alternativas presentes son: Maxima6 y Mupad7. Nuevamente, la

    interaccin con el usuario se efecta a travs de un intrprete de comandos, pero se

    debe tomar en cuenta que, en esta ocasin, los lenguajes utilizados por las alternativas

    gratuitas difieren entre ellos y del lenguaje implementado en su anlogo comercial.

    Sin embargo, Maxima es la evolucin de uno de los primeros programas creados para el

    clculo simblico: Macsyma; del cual tambin derivan algunos programas comerciales,entre ellos Mathematica. Por esta razn, los lenguajes implementados en Maxima y

    Mathematica presentan ciertas similitudes, lo que podra ser un punto a favor de esta

    alternativa libre.

    Lamentablemente, Mupad ha descontinuado la entrega de licencias gratuitas para

    estudiantes, y en estos momentos se trata de un programa de pago ms. No obstante,

    algunas versiones antiguas pueden continuar siendo utilizadas de forma gratuita.

    4http://www.scilab.org/5http://www.octave.org/6http://maxima.sourceforge.net/7http://www.mupad.de/

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    17/106

    CAPTULO 2. LINUX Y LA ELECTRNICA 8

    2.2.3. Electrnica

    En el mundo de la electrnica, Linux puede ser utilizado de dos formas: como sistema

    operativo incorporado en un dispositivo electrnico (embedded), o como plataforma

    para la ejecucin de tareas relacionadas con la automatizacin del diseo electrnico:

    EDA8.

    Considerando los alcances del proyecto, en esta seccin se analizarn las aplicaciones

    EDA para Linux, sin considerar el grupo de programas con funcionalidades similares a

    SpiceX: a los cuales se dedicar una seccin en detalle.

    2.2.3.1. Grupos EDA

    Frente a la preponderante necesidad de contar con un conjunto completo de

    herramientas para realizar tareas de EDA en Linux, se han formado varios grupos de

    programadores que buscan proveer la tan solicitada suite informtica. De entre estos

    grupos se pueden nombrar: gEDA9 y Open Circuit Design10.

    La diferencia entre estos grupos est determinada por el conjunto de programas que

    se han seleccionado, para suplir las diferentes necesidades que aparecen durante los

    procesos de diseo, prueba, e implementacin de circuitos electrnicos.

    Lamentablemente, ms all de reunir los paquetes, empaquetarlos bajo un nico

    nombre, y promocionarlos de manera insuficiente, el trabajo de desarrollo de cada unode los componentes de software sigue siendo una tarea, prcticamente, individual.

    2.2.3.2. Captura esquemtica

    Los programas de captura esquemtica son aplicaciones creadas para esbozar circuitos

    electrnicos y exportar los esquemas como archivos netlist; los cuales satisfacen la

    sintaxis de algn ncleo de simulacin en particular.

    8EDA: Electronic Design Automation.9http://www.geda.seul.org/

    10http://opencircuitdesign.com/

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    18/106

    CAPTULO 2. LINUX Y LA ELECTRNICA 9

    Dentro de este grupo de programas, que delegan al usuario la tarea de enlazar los

    archivos netlist generados con el ncleo de simulacin, se encuentran: XCircuit11, y

    gschem12; pertenecientes a los grupos Open Circuit Design y gEDA, respectivamente.

    La principal caracterstica de ambos programas, es que pueden generar dibujos de

    circuitos de gran calidad, debido a la tecnologa utilizada en su implementacin: el

    lenguaje Postscript para la descripcin de diagramas.

    Sin embargo, se aprecia una ligera diferencia entre estas dos aplicaciones, lo cual podraayudar a discriminar entre una y otra. Por una parte, el autor de gschem reconoce que

    XCircuit produce mejores salidas grficas; y por otra, gschem esta ms orientado al

    diseo de circuitos que a dibujos de calidad en s, lo cual se aprecia en su funcionalidad.

    Lamentablemente, la desventaja de programas de este tipo, es el hecho de tener

    que enlazar explcitamente el ncleo de simulacin; lo cual incrementa la curva de

    aprendizaje de usuarios provenientes de ambientes ms amigables.

    2.2.3.3. Diseo de placas impresas

    Al momento de disear las placas impresas que conectarn elctricamente los circuitos

    diseados, se puede recurrir a programas como: PCB13 o MUCS-PCB14. PCB forma

    parte de ambos grupos EDA: gEDA y Open Circuit Design; mientras que MUCS-PCB

    es soportado nicamente por gEDA.

    El principal objetivo de ambos programas es la creacin de layouts, que son esquemas

    de rutas que sealizarn la trayectoria a seguir por el cobre en un sustrato. Considerando

    esto, la principal funcionalidad provista es la automatizacin en la creacin de las rutas,

    dejando unos pocos segmentos del circuito a ser detallados de forma manual por el

    diseador.

    Los archivos generados por estas herramientas pueden especificar las dimensiones de

    la placa y los lugares donde se taladrarn los hoyos, entre otras caractersticas. Adems,

    es importante destacar que las placas diseadas pueden ser exportadas como archivos

    Gerber, el cual es el formato estndar utilizado por los fabricantes de placas impresas.

    11http://opencircuitdesign.com/xcircuit/index.html12http://www.geda.seul.org/tools/gschem/index.html13http://pcb.sourceforge.net/14http://www.cs.manchester.ac.uk/apt/projects/tools/mucs-pcb/

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    19/106

    CAPTULO 2. LINUX Y LA ELECTRNICA 10

    La gran diferencia entre ambos programas radica en la interfaz de usuario, siendo

    grfica en el caso de PCB, y de lnea de comandos en el caso de MUCS-PCB. Esto

    ltimo determina una ventaja para PCB, al momento de ser utilizado por usuarios

    provenientes de ambientes grficos.

    Otra ventaja a favor de PCB es la posibilidad de importar un tipo especial de

    archivos netlist, los cuales difieren ligeramente de los archivos netlist generados por

    los programas de captura esquemtica, para las herramientas de simulacin. De esta

    forma, no es difcil encontrar aplicaciones de captura esquemtica con la habilidad de

    exportar esquemas de circuitos como archivos netlistpara PCB:XCircuites un ejemplo.

    2.2.3.4. Simulacin electrnica

    Una etapa fundamental en el diseo de un circuito electrnico es la prueba del

    funcionamiento. En los aos previos a la aparicin de los primeros programas de

    simulacin electrnica, los diseadores tenan que lidiar con lentos y costosos procesos

    de prueba, en los cuales se utilizaba directamente un prototipo del hardware a

    producir[1].

    De entre los programas para realizar simulacin electrnica en Linux, se pueden

    mencionar: Spice15, Xspice16, y Ngspice17.

    Spice es un simulador de circuitos de propsitos generales, cuyas siglas significan

    Simulation Program with Integrated Circuit Emphasis. Esta aplicacin fue uno de los

    primeros programas de simulacin electrnica disponibles en el mercado, lo que la

    llev a convertirse en un estndar de la industria en los aos ochenta.

    Entre las capacidades de Spice se encuentran los anlisis: DC, de pequea seal

    AC, transiente, de polos y ceros, de distorsin de pequea seal, de sensibilidad,

    y de ruido. Adems, los circuitos pueden contener resistencias, condensadores,

    inductores, inductores mutuos, fuentes independientes de voltaje y corriente, cuatro

    tipos de fuentes dependientes, lneas de transmisin con prdida y sin prdida (dos

    implementaciones separadas), interruptores, lneas RC uniformemente distribuidas,

    15http://bwrc.eecs.berkeley.edu/Classes/IcBook/SPICE/16http://users.ece.gatech.edu/ mrichard/Xspice/17http://ngspice.sourceforge.net/

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    20/106

    CAPTULO 2. LINUX Y LA ELECTRNICA 11

    y cinco de los ms comunes dispositivos semiconductores: diodos, BJTs, JFETs,

    MESFETs, y MOSFETs[12].

    Sin embargo, se debe tener en mente las limitaciones de Spice, como son: el grado de

    precisin de las simulaciones de circuitos depende de los comportamientos modelados

    en los componentes; las simulaciones estn libres de ruido e interferencia, a no ser

    que se modelen explcitamente; y, finalmente, el simulador no predice el fallo de los

    componentes, aunque se excedan los parmetros de tolerancia mxima[5].

    Continuando, Xspice es una extensin de Spice que provee la habilidad de usar

    tcnicas de modelado por cdigo para la adicin de nuevos modelos. La librera de

    modelos de Xspice contiene ms de cuarenta nuevos bloques funcionales, incluyendo:

    sumadores, multiplicadores, integradores, modelos magnticos, limitadores, funciones

    de transferencia en el dominio S, compuertas digitales, elementos de almacenamiento

    digital, y una mquina de estados digitales generalizada.

    Finalmente, Ngspice es una mezcla entre Spice, Xspice, y Cider. Esta ltima aplicacin

    mejora la precisin de las simulaciones de dispositivos crticos, soportando la

    descripcin de estos ltimos en trminos de estructuras y materiales.

    En todos los casos, la interaccin con el usuario se realiza a travs de archivos de

    descripcin de circuitos: netlist; los cuales incluyen una descripcin textual de los

    circuitos a simular, las instrucciones que indican el tipo de simulacin a realizar, y

    los parmetros necesarios para efectuar los anlisis.

    2.3. Captura esquemtica y simulacin electrnica

    MicroSim Corporation, compaa que actualmente pertenece a Cadence Design

    Systems, el ao 1984 introdujo la primera versin de Spice para PCs18: Pspice. Siendo

    esto un gran avance, este visionario grupo de ingenieros tuvo un logro que podracalificarse an ms significativo el ao 1991.

    Bajo el lema de diseo desde el principio a fin, Microsim elabor DesignLab; el

    primer sistema integrado para EDA, uniendo la captura esquemtica con la simulacin

    electrnica, entre otras etapas del diseo de circuitos.

    18PCs: Personal Computers.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    21/106

    CAPTULO 2. LINUX Y LA ELECTRNICA 12

    En esta seccin se nombrarn las ventajas y desventajas de los programas disponibles

    para realizar captura esquemtica y simulacin electrnica de forma integrada en

    Linux; siendo sta, la misma tarea que busca asistir SpiceX.

    2.3.1. Oregano

    Oregano19 ha pasado por dos grandes ciclos de desarrollo durante su existencia. El

    primer perodo transcurri desde su creacin el ao 1999 hasta su abandono el ao

    2001; y el segundo perodo comenz el ao 2003, cuando el grupo LUGFI20 retom su

    desarrollo hasta el da de hoy.

    Esta aplicacin tiene caractersticas que se acercan bastante a los alcances propuestos

    por SpiceX: es sencillo de utilizar, presenta una obvia similitud con la interfaz de

    Pspice-Schematics, y dispone de una buena cantidad de componentes en sus libreras.

    Adems, esta diseado para trabajar con cualquiera de los siguientes ncleos desimulacin derivados de Spice: Ngspice o Gnucap21.

    Su principal desventaja, sin embargo, es el lenguaje de programacin utilizado en su

    implementacin: C. Esta caracterstica hace difciles y tediosas las modificaciones del

    cdigo fuente, obstaculizando el impulso grupal del proyecto.

    El problema a llegado a tal punto que, actualmente, su desarrollo se encuentra detenido.

    Los programadores del grupo LUGFI estn evaluando el rendimiento de segmentos

    de cdigo en Python y C#, para as decidir el posible lenguaje a utilizar en futuras

    versiones del programa. Los resultados parciales indican una ventaja para el segundo

    lenguaje evaluado[10].

    Lamentablemente, el abandono del proyecto es otra de las posibilidades a seguir por el

    grupo de programadores, debido, principalmente, a la carencia de una metodologa de

    diseo en la gnesis del programa[10].

    19http://oregano.gforge.lug.fi.uba.ar/index.php20Grupo de Usuarios de GNU/Linux de la Facultad de Ingeniera de la Universidad de Buenos Aires.21http://www.gnu.org/software/gnucap/

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    22/106

    CAPTULO 2. LINUX Y LA ELECTRNICA 13

    2.3.2. Qucs

    Qucs22 es otro intento por crear un entorno integrado de trabajo para la esquematizacin

    y simulacin de circuitos electrnicos en Linux. Su desarrollo se encuentra en etapas

    iniciales, debido a los ambiciosos objetivos propuestos por su grupo de desarrolladores.

    A diferencia de SpiceX, Qucs no busca ser una interfaz de captura esquemtica para

    ser utilizado con uno de los ncleos de simulacin actualmente disponibles; ste busca

    la implementacin de un ncleo propio de simulacin, con toda la complejidad que

    esto implica. A futuro, Qucs podra ser una opcin a considerar por electrnicos ya

    acostumbrados al sistema operativo Linux.

    En la actualidad, la aplicacin presenta las siguientes funcionalidades: anlisis AC,

    anlisis DC, anlisis transiente, anlisis de ruido AC, entre otras. Adems, ya es posible

    efectuar algunas simulaciones mixtas, entre componentes anlogos y digitales. Todo lo

    anterior de forma grfica y asistida.

    Finalmente, vale decir que el cdigo de Qucs est implementado en el lenguaje de

    programacin C++, con todas las ventajas que esto acarrea desde el punto de vista de

    evolucin del software.

    2.3.3. KTechlab

    KTechlab23 es un nuevo intento por crear un entorno integrado de trabajo para la

    esquematizacin y simulacin de circuitos electrnicos en Linux. Su desarrollo se

    encuentra en etapas iniciales, debido a los objetivos propuestos por su grupo de

    desarrolladores: los cuales son incluso ms ambiciosos que los de Qucs.

    Esta aplicacin, est orientada a la simulacin anloga y digital mixta, con especial

    nfasis en la inclusin de dispositivos microcontroladores PICs24 en los circuitos.

    Adems se pretende interactuar con dispositivos de hardware directamente conectadosal computador mediante los puertos serie y paralelo.

    22http://qucs.sourceforge.net/index.html23http://ktechlab.org/24http://www.microchip.com/

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    23/106

    CAPTULO 2. LINUX Y LA ELECTRNICA 14

    El tipo de simulacin realizada por este programa se aleja de los profundos anlisis

    efectuados por las aplicaciones de simulacin electrnica previamente vistas. El

    anlisis as realizado se conoce como: simulacin de tiempo real. Dicha simulacin

    podra compararse con el tipo de simulacin conseguida mediante otro de los programas

    pioneros en la simulacin electrnica: Electronic Workbench.25

    Actualmente, la aplicacin presenta las siguientes caractersticas: simulacin electr-

    nica mixta, incluyendo la simulacin de PICs; disponibilidad de un osciloscopio para

    la visualizacin de seales elctricas; simulacin lgica de alta velocidad; interaccin

    con hardware a travs de los puertos serie y paralelo; y la programacin de microcon-

    troladores PIC, mediante los lenguajes FlowCode26 o Microbe.

    25http://www.electronicsworkbench.com/26Diagrama de flujos.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    24/106

    Captulo 3

    Orientacin a Objetos

    El primero de los alcances del proyecto enfatiza que SpiceX debe disponer de un

    cdigo de fcil desarrollo y mantencin. Se pretende que la comunidad electrnica, con

    conocimientos de programacin, pueda continuar su desarrollo; convirtindolo en la

    utilidad que pretende ser, ms all del resultado parcial elaborado con fines acadmicos.

    3.1. Principios

    Un programa es un conjunto de instrucciones, escritas en un lenguaje de programacin,

    destinadas a satisfacer distintas necesidades de usuarios. Cuando se implementa una

    aplicacin en particular, se relaciona el entorno donde se presenta el problema y el

    computador, que es la herramienta ejecutora de las acciones que proveen la solucin.

    El entorno que agrupa todos los objetos o entidades1, que son administrados,

    monitoreados o controlados por un sistema, recibe el nombre de dominio del problema.

    De igual forma, el entorno donde se modela el problema, por ejemplo un computador,

    recibe el nombre de dominio de la solucin[11].

    El paradigma orientado a objetos es un enfoque de anlisis, diseo, e implementacinde una aplicacin, que provee una manera distinta de relacionar el dominio del

    problema con el dominio de la solucin, produciendo las siguientes ventajas:

    1Colectividad considerada como unidad. Lo que constituye la esencia o la forma de una cosa.

    15

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    25/106

    CAPTULO 3. ORIENTACIN A OBJETOS 16

    facilidad de mantencin en las aplicaciones,

    expansibilidad del cdigo implementado,

    simplificacin del proceso de desarrollo;

    lo cual concuerda con el primer alcance precisado para SpiceX.

    3.1.1. Abstraccin

    Las capacidades de los lenguajes de programacin imperativos, paradigma que precede

    a la orientacin a objetos, inducen a relacionar el problema que se quiere solucionar con

    la solucin en s, pensando en trminos de instrucciones computacionales. El esfuerzo

    requerido para realizar esta asociacin, y el hecho de que esto es extrnseco al lenguaje

    de programacin, produce programas difciles de escribir y mantener[6].

    Por otra parte, los lenguajes orientados a objetos proveen herramientas para representar

    objetos del problema que se est atacando, mediante objetos de software. Es decir,

    se describe el problema a solucionar en trminos del problema, y no en trminos de

    instrucciones computacionales.

    La asociacin necesaria entre los dominios del problema y la solucin, recibe el nombre

    de abstraccin. La abstraccin producida mediante lenguajes orientados a objetos es

    ms flexible y poderosa que la producida mediante los lenguajes precedentes, debido

    a que cuando se lee el cdigo describiendo la solucin, se estn leyendo palabras que

    tambin expresan el problema. Esto ltimo se traduce en facilidad de mantencin y

    expansin del software.

    3.1.1.1. Abstraccin de un objeto

    Si se observa por algunos segundos un entorno cualquiera, se puede identificar la vastacantidad de objetos que lo componen. Una lmpara, una mesa, una cama, dos espejos,

    una puerta, etc. Pensando en modelar objetos de software, se puede enfocar la atencin

    en solo un objeto, por ejemplo: la lmpara. Una posible descripcin de ste objeto,

    basada en la figura 3.1, puede ser:

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    26/106

    CAPTULO 3. ORIENTACIN A OBJETOS 17

    La lmpara es de color azul, tiene 30 cm de altura, y puede ser encendida

    o apagada posicionando el interruptor en on u off, respectivamente.

    Esta descripcin se basa en las caractersticas (datos), y comportamientos (funciona-

    lidades) del objeto lmpara. Si bien los lenguajes imperativos proveen herramientas

    para describir grupos de caractersticas (variables miembro) en una sola entidad:

    la estructura; los lenguajes orientados a objetos aaden la capacidad de incluir

    comportamientos (funciones miembro) a esas estructuras. Este nuevo tipo de entidad

    de software recibe el nombre de clase.

    La figura 3.2 muestra la abstraccin computacional del objeto lmpara. Esta abstraccin

    no profundiza en otras caractersticas de la lmpara como son: voltaje, peso, volumen,

    etc. La seleccin de caractersticas y comportamientos a ser modelados recibe el

    nombre de nivel de abstraccin.

    El nivel de abstraccin requerido, para relacionar objetos del dominio del problema

    con objetos del dominio de la solucin, depender de la aplicacin en particular. Si se

    quiere modelar una lmpara para un sistema de ventas en una tienda comercial, puede

    ser necesario abstraer slo el modelo y el precio; en cambio, si se quiere modelar la

    lmpara en el contexto de una aplicacin para administrar cargas en una compaa de

    envo de paquetes, puede resultar necesario modelar, adems, el peso y volumen de la

    lmpara.

    Figura 3.1: Lmpara real.

    Lampara

    -color

    -altura

    -encendido

    +encender()

    +apagar()

    Figura 3.2: Representacin en software.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    27/106

    CAPTULO 3. ORIENTACIN A OBJETOS 18

    3.1.1.2. Clases de objetos

    La lmpara utilizada para realizar la abstraccin fue comprada en una tienda de

    artculos para el hogar. Es as que existen cientos de lmparas con el mismo modelo en

    el mercado, y sta viene a ser una ms entre tantas. Se puede decir que la abstraccin

    realizada al objeto lmpara fue de la clase o modelo de sta, y no del elemento en

    particular; ya que no se especifican las caractersticas propias del objeto en observacin:

    color azul, altura igual a 30 cm, etc.

    La ventaja de esto ltimo es que se pueden crear tantas lmparas como se desee

    en nuestro programa, con el mismo patrn de caractersticas y comportamientos, y

    utilizando una misma porcin de cdigo. As como existen los tipos de variables

    predefinidos (por ejemplo: int), ahora se pueden crear clases de objetos (por ejemplo:

    Lampara). Cuando se crea un objeto de la clase lmpara con caractersticas especficas,

    as como se crean variables intque almacenan nmeros enteros especficos, se dice que

    se crea una instancia de la clase. La instancia de una clase es lo que se conoce como

    objeto.

    3.1.1.3. Composicin de clases

    El tratamiento que los lenguajes orientados a objetos dan a estas instancias de clases

    es similar al de las variables normales; posibilitando la creacin de arrays de objetos,

    objetos como parmetros de funciones o procedimientos, etctera. Incluso se pueden

    utilizar objetos de una clase escrita previamente, en la composicin de nuevas clases.

    Estos objetos reciben el nombre de objetos miembros de una clase.

    Esta capacidad es un paso ms en la optimizacin de la abstraccin del dominio del

    problema, ya que, generalmente, los objetos presentan esta caracterstica. La lmpara

    esta compuesta por distintos objetos: ampolleta, enchufe, cable, pedestal, pantalla,

    etctera. El nombre de esta caracterstica es composicin o agregacin, y determina

    un tipo de relacin tiene-un, como en la frase: una lmpara tiene una ampolleta.

    La diferencia entre los trminos composicin y agregacin esta determinada solo por

    la utilidad del objeto miembro cuando no pertenece a la clase.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    28/106

    CAPTULO 3. ORIENTACIN A OBJETOS 19

    Si la clase del objeto miembro fue diseada solo para pertenecer a una clase, y no

    tiene utilidad alguna trabajando de forma aislada, se dice que la caracterstica es una

    agregacin. Un ejemplo de esto es el objeto cuello, el cual no tiene utilidad al no

    pertenecer a la clase camisa. Por el contrario, si la clase del objeto miembro presenta

    utilidad propia, se dice que la caracterstica es una composicin. Un ejemplo de esto es

    el objeto trabajador, el cual tiene utilidad propia, independiente si pertenece o no a la

    clase compaa.

    En este punto se justifica que la orientacin a objetos produzca programas ms fciles

    de entender, debido a la abstraccin mediante objetos; ms compactos, debido a la

    reutilizacin del cdigo que proveen las clases; y, finalmente, ms fciles de programar,

    debido a la posibilidad de descomponer el problema en objetos sencillos de entender

    que luego pueden componer clases ms complejas.

    3.1.2. Herramientas

    Las herramientas que diferencian los lenguajes orientados a objetos de los lenguajes

    imperativos, buscan proveer medios realistas de representacin para los objetos que

    componen el entorno habitual de las personas, lugar donde se presentan los problemas

    a solucionar.

    3.1.2.1. Encapsulacin

    Cuando se utiliza una lmpara, generalmente, no es necesario conocer en detalle el

    mecanismo interno que gobierna el funcionamiento del objeto. Desde el punto de vista

    del usuario de la lmpara, solo es necesario saber como conseguir o prescindir de

    iluminacin: interruptor en On o interruptor en Off, respectivamente.

    Los lenguajes orientados a objetos proveen un mecanismo para representar esta

    simplicidad en el manejo de la informacin, al momento de trabajar con objetos: la

    encapsulacin. As como en el dominio del problema existen usuarios y creadores 2 de

    objetos, en el dominio de la solucin existen programadores clientes y creadores de

    clases.2Se utiliza la palabra creadores y no fabricantes, debido a la existencia de objetos que no son producto

    de procesos de fabricacin. Personas, animales, etc.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    29/106

    CAPTULO 3. ORIENTACIN A OBJETOS 20

    La encapsulacin separa la interfaz de la implementacin de una clase. La interfaz

    es la informacin accesible por el programador cliente, necesaria para conocer la

    funcionalidad que presenta el objeto. Por otra parte, la implementacin es el conjunto de

    instrucciones que determinan las acciones a realizar, para entregar dicha funcionalidad.

    Lampara

    +encender()+apagar()

    Figura 3.3: Interfaz del objeto de software Lmpara.

    Esta caracterstica adiciona dos ventajas ms al simple hecho de mejorar la abstraccin

    del mundo real. La primera es la de controlar el acceso de los programadores clientes a

    la informacin crucial que mantiene la coherencia del objeto. Los clientes solo pueden

    obtener o modificar caractersticas de un objeto: las variables miembro; mediante

    procedimientos bien definidos previamente por el creador de la clase: las funciones

    miembro. Para lograr este control se hace uso de los especificadores de acceso: private,

    protected, public, al momento de programar una clase.

    Los miembros, variables o funciones que conforman una clase, son los bloques de

    cdigo que pueden ser marcados con alguno de los modificadores de acceso. Si el

    miembro es una variable, por ejemplo la altura, se puede controlar el acceso a la

    informacin; por otra parte, si el miembro es una funcin, por ejemplo la funcin

    encender, se puede controlar el acceso a la funcionalidad.

    Si el miembro esta marcado como private, el programador cliente no tiene acceso

    directo a ste. Si el miembro esta marcado como protected, slo los programadores que

    utilicen la clase como base3 para programar otras clases, podrn acceder directamente a

    ste. Si el miembro esta marcado como public, todos los programadores clientes podrn

    acceder directamente a ste.

    3Las clases bases se utilizan mediante la herencia, mecanismo explicado en la siguiente seccin.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    30/106

    CAPTULO 3. ORIENTACIN A OBJETOS 21

    Finalmente, la segunda ventaja extra de la encapsulacin, es la de permitir la

    modificacin u optimizacin de la implementacin, manteniendo intacta la interfaz. De

    esta forma, las aplicaciones de los programadores clientes no se vern afectadas, por

    mejoras en cualquiera de los algoritmos que conforman la funcionalidad del objeto.

    3.1.2.2. Herencia

    Hasta ahora, se sabe que a travs de las clases de objetos se puede reutilizar cdigopreviamente escrito; aprovechando la similitud en las caractersticas y funcionalidades

    de los distintos elementos que componen el mundo real. Pero, qu sucede si se

    quiere modelar un objeto ligeramente distinto, es decir, con alguna caracterstica y/o

    funcionalidad extra?.

    Para reutilizar cdigo y expandir caractersticas y funcionalidades de un objeto, los

    lenguajes orientados a objetos disponen de la herencia. Siguiendo con el ejemplo de

    la lmpara, se puede decir que sta hereda las caractersticas y funcionalidades de un

    electrodomstico. ste ltimo se puede enchufar, desenchufar, presenta un voltaje de

    operacin, etctera. Es as que se podra haber creado una clase electrodomstico,

    agrupando todas las caractersticas y comportamientos comunes de este tipo de

    elementos, y despus heredar los miembros en futuras clases especializadas, como la

    lmpara.

    La clase de la cual se heredan las caractersticas y funcionalidades recibe el nombre de:

    clase base, super clase, o clase padre. Asimismo, la clase que hereda las caractersticas

    o funcionalidades recibe el nombre de: clase derivada, clase heredada, subclase, o clase

    hija.

    La herencia posibilita no slo la adicin de nuevos miembros a las clases, reutilizando

    el cdigo de las clases bases, sino que tambin permite la modificacin de miembros

    ya existentes. Si se quiere cambiar alguna caracterstica o comportamiento de un objetoderivado, solo hace falta sobreescribir 4 el miembro, en la implementacin de la nueva

    clase.

    4Por ejemplo, en algunos lenguajes de programacin esto se logra mediante la utilizacin de las

    palabras claves override o new (C++ o C#, respectivamente).

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    31/106

    CAPTULO 3. ORIENTACIN A OBJETOS 22

    La relacin que la herencia determina entre la clase base y la derivada recibe el nombre

    de relacin es-un, en el caso de mantener intacta la interfaz de la clase derivada;

    y el nombre de relacin es-como-un, en el caso de adicionar nuevos miembros a

    la interfaz de la clase derivada. Obviamente, se asume que en el caso de presentarse

    una relacin es-un, se sobreescribe algn miembro. De no ser as la aplicacin de la

    herencia no tendra sentido.

    Al igual que la encapsulacin, esta herramienta de los lenguajes orientados a objetos

    tambin adiciona dos ventajas extras a la inherente mejora en la abstraccin de la

    realidad. La primera de stas es la obvia reutilizacin de cdigo por parte de los

    creadores de clases, los cuales implementan nuevas clases a travs de la herencia; y la

    segunda es que posibilita la aplicacin del polimorfismo, herramienta de la orientacin

    a objetos explicada en la siguiente seccin.

    Generalmente se utiliza la frase reutilizacin de la implementacin, haciendo referencia

    a la ventaja de implementar clases con objetos miembros, adems de la creacin de

    objetos a partir de clases genricas; y la frase reutilizacin de la interfaz, para hacer

    referencia a la ventaja de heredar las caractersticas y funcionalidades de un objeto.

    3.1.2.3. Polimorfismo

    Previamente, se dijo que la lmpara es un electrodomstico. Una de las funcionalidades

    comunes en cada uno de estos elementos es que se pueden prender o apagar, y aunque

    no todos los electrodomsticos operan de la misma forma, se tiene una idea general de

    como proceder para lograr estas funcionalidades.

    Generalmente, no es necesario describir a los usuarios de una sala de computadores:

    Cuando se abandone la sala, apagar: el computador presionando el botn rojo en

    la torre, el monitor presionando el botn blanco, los parlantes girando la perilla en

    contra sentido de reloj, y la luz de la habitacin posicionando el interruptor en off.Un instructivo de uso ms realista podra ser: Cuando se abandone la sala, dejar todo

    apagado.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    32/106

    CAPTULO 3. ORIENTACIN A OBJETOS 23

    Los lenguajes orientados a objetos disponen del polimorfismo para abstraer esta

    versatilidad de accin en las personas, con la diferencia de que en el dominio de la

    solucin, las acciones son efectuadas por el computador. Esto ltimo permite escribir

    cdigo (el instructivo de operacin en el mundo real) independiente de tipos o clases

    especficas (cada uno de los equipos electrnicos en la sala de computadores).

    Pensando en trminos del dominio de la solucin, se podra crear un array de objetos

    tipo electrodomstico, y despus aplicar la funcin apagar a cada uno de los objetos

    que componen el vector. Lo increble en esta funcionalidad, es que los objetos que

    conforman el array podran pertenecer a diferentes clases derivadas de la clase base

    electrodomstico, con acciones especficas en la implementacin del procedimiento de

    apagado.

    Para lograr esto, al momento de implementar una clase base, que se piensa presentar

    una funcin genrica pero diferente en cada una de las clases derivadas, se debe marcar

    dicha funcin miembro como virtual. Luego, al aplicar herencia para crear las clases

    derivadas, se debe implementar las funciones virtuales con acciones especficas que se

    adapten a cada objeto.

    La diferencia entre esta forma de implementacin y la simple sobre-escritura de

    funciones, adems de la posibilidad de aplicar polimorfismo, radica en la determinacin

    de la funcin a ejecutar. Mientras que en la simple sobre-escritura de funciones se

    decide en tiempo de compilacin, en la sobre-escritura de funciones virtuales, se decideen tiempo de ejecucin. Por lo tanto, al momento de implementar polimorfismo, se debe

    considerar el costo en velocidad que determina la aplicacin de este mecanismo.

    La principal ventaja del polimorfismo es que: as como se podra adicionar un nuevo

    electrodomstico a la sala de computadores, sin necesidad de modificar el instructivo

    de uso; se podra adicionar una nueva clase derivada al array de electrodomsticos, sin

    modificar las funciones que operan con la clase base del vector original. Es decir, se

    facilita la evolucin del software.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    33/106

    CAPTULO 3. ORIENTACIN A OBJETOS 24

    3.2. Metodologa

    La metodologa a seguir ser aplicada dentro de las distintas disciplinas que conforman

    el proceso de desarrollo, es por esto que conviene tener claro los objetivos de cada

    una de stas. Primero que nada, se conoce por anlisis a la investigacin enfocada al

    problema y sus requerimientos. Para seguir, el trmino diseo enfatiza una solucin

    conceptual que satisface dichos requerimientos5. Y finalmente, la programacin es la

    implementacin, mediante algn lenguaje de programacin, del diseo previamente

    creado6.

    3.2.1. Enfoque

    El programador que pretenda sacar provecho a los lenguajes orientados a objetos,

    debera comenzar por cambiar el enfoque de anlisis, diseo, e implementacin de

    las aplicaciones a desarrollar. De no ser as, los programas implementados carecen de

    ventajas frente a los desarrollados mediante lenguajes imperativos7.

    A continuacin se presentan cinco consejos de enfoque para aplicar la orientacin a

    objetos[6]:

    1. Cada cosa es un objeto: En teora, se puede tomar cualquier componente

    conceptual del problema y representarlo como un objeto en el programa.

    2. Un programa es un manojo de objetos intercambiando instrucciones, mediante

    el envo de mensajes: Para solicitar alguna funcionalidad a un objeto, se debe de

    enviar un mensaje a ste.

    3. Cada objeto est compuesto por otros objetos: De esta forma, se puede

    implementar la complejidad de un programa, escondida detrs de la simplicidad

    de los objetos.5Se dice que en el anlisis se construye un modelo del dominio del problema, mientras que en el

    diseo se construye un modelo del dominio de la solucin.6Generalmente, la programacin recibe el nombre de implementacin.7La carencia de ventajas es especialmente cierta cuando se trabaja con lenguajes orientados a objetos

    que permiten, adems, la programacin imperativa. C++ es un ejemplo.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    34/106

    CAPTULO 3. ORIENTACIN A OBJETOS 25

    4. Cada objeto pertenece a una clase: La principal caracterstica que distingue a una

    clase es: Qu mensajes se pueden enviar a sta?.

    5. Todos los objetos de una clase en particular pueden recibir los mismos mensajes:

    La capacidad de reemplazar los objetos es uno de los conceptos ms poderosos

    de la orientacin a objetos.

    3.2.2. Procesos de desarrollo

    Para comenzar el desarrollo de cualquier programa informtico, se debe elegir una

    metodologa de trabajo que se adecue a los alcances del proyecto. Informalmente, un

    proceso de desarrollo de software es una metodologa para la construccin, entrega8, y

    posible mantencin del software[9].

    Cuando se programa en lenguajes imperativos, es difcil efectuar cambios en el cdigo

    una vez que se ha comenzado la implementacin. Es por esto que se requiere de

    metodologas detallistas, al momento de analizar y disear aplicaciones complejas. El

    problema surge cuando se presenta una parlisis del anlisis, debido a que hay detalles

    en la aplicacin que no sern observables sino hasta el diseo, la implementacin, e

    inclusive la prueba del programa[9].

    Por el contrario, los lenguajes orientados a objetos facilitan la comprensin, reutiliza-

    cin, y expansin del cdigo, simplificando los procesos de desarrollo requeridos. Lasiteraciones, pequeos ciclos de anlisis, diseo, implementacin, y prueba de mdu-

    los de la aplicacin final, conforman, hoy en da, el mecanismo de trabajo ms reco-

    mendado. Los metodologas basadas en iteraciones, reciben el nombre de procesos de

    desarrollo iterativos.

    Gracias a la orientacin a objetos, al trabajar con iteraciones se produce informacin

    relevante y cdigo utilizable en los siguientes ciclos de desarrollo, es decir, en las

    futuras iteraciones.8Entrega de versiones de una aplicacin.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    35/106

    CAPTULO 3. ORIENTACIN A OBJETOS 26

    3.2.3. Pautas a seguir

    La experiencia acumulada por programadores experimentados en orientacin a objetos,

    genera ciertas pautas a considerar al momento de aplicar el paradigma[6].

    1. Primero se debe hacer que el cdigo trabaje, luego que sea rpido. Esto es cierto

    an si se sabe que una pieza de cdigo es realmente importante y que ser uno de

    los principales cuellos de botella del sistema. Se debera comenzar a trabajar conel diseo ms simple que se pueda; luego, si el cdigo no es lo suficientemente

    rpido, se debera mejorar. Casi siempre se descubrir que el cuello de botella no

    es lo importante. Se debe ocupar el tiempo en las cosas realmente importantes.

    2. Recordar el principio "divide y conquistars". Si el problema que se est

    tratando de solucionar es demasiado confuso, se debe intentar imaginar cul es la

    operacin bsica que el programa debera llevar a cabo, suponiendo la existencia

    de una pieza mgica del programa que manejar las partes complicadas. Esa pieza

    de programa ser un objeto. Se debe escribir el cdigo que utilizar ese objeto,

    y despus, al enfocarse en ste, se deben encapsular sus partes complicadas en

    otros objetos, etctera.

    3. El control de acceso permite modificar la clase tanto como sea posible, sin daar

    el cdigo del cliente en el cual la clase est siendo utilizada. Con esto en mente,

    se debe hacer private cada cosa que sea posible, y hacer slo la interfaz de la

    clase public, usando funciones en vez de datos. Los datos deberan ser public solo

    cuando sea totalmente necesario. Si una clase no necesita acceder a una funcin,

    se debera hacer private. Si una parte de la clase ser expuesta a la herencia como

    protected, se debe proveer una interfaz de funciones mejor que exponer los datos.

    De esta forma, los cambios en la interfaz tendrn un mnimo impacto en las clases

    derivadas.

    4. No caer en la parlisis del anlisis. Hay algunas cosas que no se comprendern

    hasta que se comience a codificar y/o tener algn tipo de sistema corriendo. Los

    errores en una clase o un set de clases no destruirn la integridad del sistema

    completo.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    36/106

    CAPTULO 3. ORIENTACIN A OBJETOS 27

    5. El anlisis y diseo debe producir, al menos, las clases del sistema, sus interfaces

    pblicas, y sus relaciones con otras clases; especialmente las clases bases. Si

    la metodologa de diseo produce ms que esto, se debe cuestionar si todas

    las piezas producidas por esa metodologa tienen valor durante el ciclo de vida

    del programa. Si no la tienen, la mantencin de stas tendr un costo para el

    programador. Los miembros de grupos de desarrollo tienden a no mantener nada

    que no contribuya a su productividad; es totalmente cierto que muchos mtodos

    de diseo no valen la pena.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    37/106

    Captulo 4

    Rational Unified Process - RUP

    El segundo de los alcances del proyecto enfatiza la utilidad de SpiceX al momento

    de finalizar la memoria. Aunque la aplicacin no pretende cubrir cada una de las

    posibilidades del ncleo de simulacin, desde el punto de vista de libreras electrnicas

    disponibles en Spice, sta debera ser una interfaz ejecutable, testeable, y funcional.

    4.1. Principios

    En el captulo 3, se menciona que la orientacin a objetos necesita ser presentada

    en el contexto de un proceso de desarrollo. El Rational Unified Process, ofrece una

    metodologa de desarrollo de software para construir sistemas orientados a objetos, lacual satisface las caractersticas de un proceso de desarrollo iterativo y adaptativo1.

    Entre sus ventajas se encuentran:

    mitigacin temprana de riesgos importantes,

    progreso de la aplicacin visible desde un comienzo,

    realimentacin y adaptacin a los requerimientos de usuario, durante todo elproceso de desarrollo,

    simplicidad en la administracin del proyecto,

    mejoramiento del proceso de desarrollo en s, iteracin por iteracin;

    1Adaptativo, va: adj. Perteneciente o relativo a la adaptacin o la capacidad de adaptacin. Artculo

    nuevo. Avance de la vigsima tercera edicin del diccionario de la Real Academia Espaola.

    28

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    38/106

    CAPTULO 4. RATIONAL UNIFIED PROCESS - RUP 29

    lo cual concuerda con los dos primeros alcances precisados para SpiceX.

    4.1.1. Proceso de desarrollo iterativo

    El ciclo de desarrollo de una aplicacin, es el perodo de tiempo que transcurre desde

    que se comienza la planificacin del proyecto, hasta que se libera una versin estable

    o lista para la produccin. En el RUP, el ciclo de desarrollo est basado en la sucesiva

    ampliacin y refinamiento de un sistema a travs de mltiples iteraciones, las cuales

    establecen sus bases en la realimentacin y adaptacin cclica para converger a un

    sistema que satisfaga al usuario.

    Figura 4.1: Desarrollo Iterativo e Incremental.

    4.1.2. Administracin de los requerimientos

    La metodologa del RUP se enfoca principalmente en afrontar cambios de los

    requerimientos, los cuales son capacidades y condiciones que conforman un sistema.

    Esta caracterstica en un proceso de desarrollo se denomina: administracin de los

    requerimientos[9].

    Los procesos de desarrollo utilizados por los lenguajes imperativos, tratan de obtener

    los requerimientos finales de usuario cuando se comienza la planificacin del sistema.

    Es por esto que se comienza con un largo perodo de anlisis de requerimientos, lo cual

    acarrea dos inconvenientes:

    el riesgo de caer en la parlisis del anlisis, y

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    39/106

    CAPTULO 4. RATIONAL UNIFIED PROCESS - RUP 30

    la inflexibilidad frente a los cambios en los requerimientos de usuario, una vez

    comenzado el desarrollo.

    Por el contrario, el RUP provee una muestra de lo que se est haciendo al usuario, para

    ver si coincide con lo que realmente desea. El proceso de desarrollo est preparado para

    enfrentar los cambios en las exigencias del usuario, debido a:

    las facilidades de mantencin y expansin del software que provee el paradigmaorientado a objetos, y

    al mecanismo de trabajo basado en iteraciones.

    Esto no quiere decir que la direccin a la cual apunta el proyecto cambiar de forma

    continua durante todo el desarrollo. Slo se tiene conciencia de la posibilidad de haber

    malentendido los requerimientos iniciales del usuario, y del cambio en las exigencias,

    una vez iniciado el desarrollo del sistema2. Al final del ciclo de desarrollo, la aplicacin

    debera satisfacer completamente al usuario.

    En el caso de haberla, la diferencia entre lo que tiene en mente el usuario y lo

    que se est desarrollando, debera ser ms grande en un comienzo del ciclo de

    desarrollo; perodo en el cual se obtienen las primeras realimentaciones y se realizan

    las primeras adaptaciones. Esta caracterstica determina una temprana mitigacin de

    riesgos importantes.

    Adems, no es necesario sobre dimensionar el anlisis de los requerimientos, ya

    que las iteraciones proveen la flexibilidad para comenzar un desarrollo confiado y

    abierto a las correcciones. Esto disminuye enormemente los gastos en la administracin

    del proyecto, la cual se encarga, principalmente, de realizar exhaustivos procesos de

    visualizacin de futuros requerimientos. En el RUP los requerimientos futuros no slo

    se visualizan, sino que tambin se acogen.

    2Una vez que el usuario tiene las acceso a los adelantos del sistema final producidos por las

    iteraciones, podra, fcilmente, cambiar o adicionar exigencias que no visualiz en un comienzo.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    40/106

    CAPTULO 4. RATIONAL UNIFIED PROCESS - RUP 31

    4.1.3. Estructura del RUP

    Para el RUP, un ciclo de desarrollo consta de cuatro fases: Concepcin, Elaboracin,

    Construccin y Transicin; cada una compuesta por una serie de iteraciones. A la

    vez, en cada iteracin se ejecutan disciplinas o work-flows, las cuales utilizan varios

    artefactos para lograr sus objetivos. Aunque no se conozca el significado y objetivo

    de cada uno de los trminos aqu mencionados, se presentan de forma adelantada para

    estructurar el proceso, como se muestra en la figura 4.2.

    Figura 4.2: Fases e iteraciones en el RUP.

    4.2. Metodologa

    4.2.1. Fases

    Las fases que componen el RUP se diferencian entre s, bsicamente, por la importancia

    de los requerimientos abordados. A continuacin se presenta la descripcin de cada una

    de las etapas que componen un ciclo de desarrollo:

    4.2.1.1. Concepcin

    En esta fase se establece un punto vista comn de los objetivos del proyecto, se

    determina si es factible de realizar, y se decide si merece una investigacin ms seria

    en la fase de elaboracin. Se dice que en esta fase se mitigan los riesgos de negocios de

    la aplicacin; aqullos relacionados con la factibilidad econmica del proyecto.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    41/106

    CAPTULO 4. RATIONAL UNIFIED PROCESS - RUP 32

    Si se ha decidido con anterioridad que el proyecto ser realizado, y es claramente

    factible, entonces la fase de concepcin podra ser sumamente corta3. En este caso,

    podra incluir las primeras actividades de anlisis de requerimientos, y los planes a

    seguir durante la primera iteracin. Despus de esto, se debera comenzar de inmediato

    la fase de elaboracin.

    Los artefactos que se comiencen a utilizar en concepcin se completarn slo de forma

    parcial, debido a que sern refinados, una y otra vez, en las siguientes iteraciones.

    4.2.1.2. Elaboracin

    Esta fase est compuesta por la serie inicial de iteraciones, durante las cuales el

    grupo realiza una investigacin seria, implementa (programa y prueba) la arquitectura

    principal de la aplicacin, clarifica la mayora de los requerimientos, y aborda los

    asuntos de alto riesgo. Se dice que en esta fase se mitigan los riesgos tcnicos del

    programa.

    La elaboracin a menudo consiste entre dos a cuatro iteraciones; cada una con una

    duracin recomendada entre dos a seis semanas, al menos que se trate de un grupo

    de desarrolladores masivo. Adems, cada iteracin debera terminar siempre con una

    versin estable y probada de los requerimientos que implemente.

    4.2.1.3. Construccin

    Es la fase donde se abordan los riesgos menos importantes que quedan en el proyecto,

    y se prepara la entrega de la aplicacin. Durante la construccin, la mayor parte del

    tiempo se dedica al perfeccionamiento del diseo y de la implementacin, y a detallados

    tests de la aplicacin; para as, finalmente, converger a un sistema completo.

    Se debe recordar que hasta ahora, muchos casos de uso no han sido implementados, y

    los que han sido abordados, se han completado solo de forma parcial; lo suficiente para

    validar algunas hiptesis, o mitigar los riesgos principales. Se han definido subsistemas

    e implementado interfaces; sin embargo, slo una pequea parte del cdigo final ha

    sido escrito (principales escenarios de casos de uso, flujos alternativos de eventos, y

    manejo de errores). Es por esto que la mayor parte del trabajo an no est hecho[8].

    3Esta es la situacin en la que se encuentra SpiceX.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    42/106

    CAPTULO 4. RATIONAL UNIFIED PROCESS - RUP 33

    Los requerimientos implementados en construccin no deberan variar mayormente la

    arquitectura del sistema; de no ser as, se ha hecho un mal trabajo durante la etapa de

    elaboracin. Debido a que se desarrolla un cdigo de alta calidad, la mayor parte del

    tiempo se dedica a la fase de construccin; usualmente entre tres a seis iteraciones, de

    menor duracin que las iteraciones de la fase de elaboracin.

    4.2.1.4. Transicin

    La fase de construccin termina con una versin beta del sistema, la cual debera ser

    completamente funcional, e incluir: instalador, documentacin de ayuda, y algunos

    ejemplos de uso del programa. Sin embargo, se sabe que esta versin no es el producto

    final, y que necesita ser refinada en cuanto a funcionalidad, rendimiento y calidad en

    general.

    Durante la transicin normalmente se desarrollan una o dos iteraciones que incluyen:

    tests del producto, preparndolo as para la primera entrega; y ajustes menores basados

    en la realimentacin de los usuarios. En esta fase tambin se pueden completar

    funcionalidades remanentes, que han sido postergadas debido a los plazos fijos de

    tiempo determinados para las iteraciones.

    4.2.2. Iteraciones

    En un proceso de desarrollo iterativo, el trabajo es organizado en iteraciones, las cuales

    son una serie de pequeos mini proyectos de duracin fija. El producto de cada una de

    estas iteraciones es un sistema probado, integrado, y ejecutable. Cada iteracin incluye

    sus propias actividades de anlisis, diseo, implementacin, y prueba[9].

    El resultado de cada iteracin es un sistema ejecutable pero incompleto; ste no est

    listo para la produccin. El sistema puede necesitar varias iteraciones antes de estar

    listo para la produccin; por ejemplo, 10 o 15 iteraciones. Sin embargo, el resultado

    producido por cada iteracin no es descartable, ste se reutilizar, mejorar o ampliar

    en las siguientes iteraciones. La orientacin a objetos posibilita la aplicacin de este

    mecanismo de trabajo.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    43/106

    CAPTULO 4. RATIONAL UNIFIED PROCESS - RUP 34

    La duracin de cada iteracin debera ser de entre dos a seis semanas. Menos tiempo,

    implicara producir sistemas carentes de suficiente informacin para obtener una

    realimentacin de valor; ms tiempo, implicara aumentar los riesgos del proyecto, al no

    recibir realimentacin a tiempo. En el caso de prever que no se alcanzarn a cumplir los

    objetivos planteados para la iteracin en curso, es conveniente posponer el tratamiento

    de algunos requerimientos para futuras iteraciones. Nunca se debe posponer la fecha

    de trmino de la presente iteracin.

    Aunque, en general, cada iteracin aborda nuevos requerimientos e incrementalmente

    extiende el sistema, una iteracin puede ocasionalmente revisar el software existente y

    mejorarlo.

    4.2.3. Disciplinas

    Las disciplinas son conjuntos de actividades, y artefactos relacionados con stas,enfocados a tratar un mismo tema en particular; por ejemplo, todas las actividades

    enfocadas a analizar los requerimientos del sistema. Todas las pautas de trabajo del

    RUP, caen dentro de alguna disciplina. Un artefacto es el trmino general empleado

    para describir el producto de algn trabajo; por ejemplo, esquemas de bases de datos,

    documentos de texto, diagramas, modelos, etctera.

    Existe una variada cantidad de disciplinas orientadas a diferentes reas del desarrollo

    de un sistema; sin embargo, y basndose en las pautas de desarrollo presentadas en el

    captulo 3, slo se mencionarn las que van a ser utilizadas durante el desarrollo de

    SpiceX.

    4.2.3.1. Administracin del Proyecto

    Es el conjunto de todas las actividades enfocadas a organizar el trabajo a realizar

    durante la ejecucin del RUP.

    No se debe confundir esta disciplina con un calendario estricto de actividades. No es el

    detalle todos los pasos a seguir durante la completa ejecucin del ciclo de desarrollo.

    Para lograr esto, se deberan conocer por adelantado todos los requerimientos que

    tienen y tendrn los usuarios, lo cual contradice los principios del RUP.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    44/106

    CAPTULO 4. RATIONAL UNIFIED PROCESS - RUP 35

    Ms bien se trata de dos clases de actividades agrupadas en una sola disciplina: las

    que describen los macro-objetivos del proyecto, dejando abiertas las especificaciones

    de cmo lograr esto; y las que describen los micro-objetivos del proyecto, qu son los

    pasos a seguir en el corto plazo para implementar requerimientos y funcionalidades.

    Estas dos clases de actividades se relacionan directamente, ya que los micro-objetivos

    buscan satisfacer de forma adaptativa e incremental los macro-objetivos.

    4.2.3.2. Requerimientos (Anlisis)

    Es el conjunto de todas las actividades enfocadas al anlisis de requerimientos de una

    aplicacin, como son la escritura de casos de usos y la identificacin de requerimientos

    no-funcionales.

    El primer objetivo de un trabajo en el rea de los requerimientos es encontrar,

    comunicar, y recordar lo que es realmente necesario, de forma clara para el usuarioy el desarrollador.

    4.2.3.3. Modelo de Negocio (Anlisis)

    Es el conjunto de todas las actividades enfocadas a modelar el contexto del negocio, y

    el alcance del sistema.

    4.2.3.4. Diseo

    Es el conjunto de todas las actividades enfocadas al diseo del proyecto, incluyendo la

    totalidad de la arquitectura, objetos, bases de datos, redes, etctera.

    4.2.3.5. Implementacin

    Es el conjunto de todas las actividades enfocadas a la programacin y construccin del

    sistema, dejando de lado la entrega de la aplicacin.

    A medida que se avanza en las fases del desarrollo, las disciplinas cambian su nivel

    de importancia. Por ejemplo, en la fase de elaboracin, puede que las disciplinas

    de requerimientos y diseo sean las ms importantes; sin embargo, en la fase

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    45/106

    CAPTULO 4. RATIONAL UNIFIED PROCESS - RUP 36

    de construccin, cuando los riesgos ms importantes ya han sido mitigados y la

    arquitectura principal no se espera vare mucho, la disciplina de implementacin toma

    mayor importancia.

    4.2.4. Artefactos

    Como se mencion con anterioridad, los artefactos son herramientas que ayudarn

    a cumplir los objetivos planteados por cada disciplina. Las iteraciones hacen uso

    reiterado de las distintas disciplinas para el desarrollo de cada mini-sistema; es por

    esto que sera incorrecto asociar una disciplina, y por ende, determinados artefactos a

    una fase en particular.

    Se debe tener claro que los artefactos son una ayuda para el desarrollo del proyecto, y

    no una obligacin. En la prctica, se debera seleccionar un subconjunto determinado de

    artefactos a implementar, los cuales aportarn valor al proyecto. Ni siquiera es necesarioterminar en su plenitud los artefactos en curso; slo se deberan madurar hasta un nivel

    suficiente, el cual permita tomar decisiones acertadas en base a stos[8].

    A continuacin se presentarn algunos artefactos, y se indicar las disciplinas a las

    cuales asisten4.

    4.2.4.1. Modelo de Casos de Uso

    Este artefacto, utilizado dentro de la disciplina de requerimientos, describe los

    requerimientos funcionales de un sistema. Adems, es utilizado para obtener los

    requerimientos no funcionales relacionados con stos ltimos.

    Antes de profundizar en la descripcin del artefacto, resulta conveniente dar a conocer

    algunas definiciones relacionadas con ste:

    Actor: Es algo con comportamiento, como una persona (identificada por un rol), un

    sistema computacional, o una organizacin; por ejemplo, un cajero.

    Escenario: Es una secuencia especfica de acciones e interacciones entre actores y

    el sistema bajo discusin; tambin se conoce como instancia de caso de uso.

    4Para ejemplos, dirigirse al Captulo 5: Desarrollo de SpiceX.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    46/106

    CAPTULO 4. RATIONAL UNIFIED PROCESS - RUP 37

    Pensando en SpiceX, simular con xito un circuito electrnico, o fallar una

    simulacin debido a una conexin elctrica errnea, son ejemplos de escenarios.

    Segn el RUP, un caso de uso es un conjunto de escenarios, donde cada uno de stos es

    una secuencia de acciones que un sistema realiza para otorgar un resultado observable

    y de inters para algn actor. Sabiendo esto, el modelo de casos de usos es el conjunto

    de todos los casos de usos de un sistema; un modelo de la funcionalidad del sistema y

    su contexto.

    De acuerdo con la visibilidad en la descripcin de un caso de uso, estos pueden

    clasificarse en los tipos: black-box y white-box. Los casos de uso del tipo black-

    box son los ms usados y recomendados, y especifican lo que debe hacer el sistema

    (requerimientos funcionales) sin preocuparse de como lo har (diseo). En los casos de

    uso con visibilidad white-box se describen, adems, detalles que corresponden a la fase

    de diseo.

    Debido a que este artefacto se presenta dentro de un proceso de desarrollo iterativo que

    busca construir sistemas orientados a objetos, resulta adecuado escribir los casos de uso

    con visibilidad del tipo black-box; la cual presenta una similitud directa con el concepto

    de encapsulacin, estudiado en el capitulo 3.

    Por otra parte, de acuerdo a las necesidades, los casos de usos pueden ser escritos con

    distintos grados de formalidad, los cuales se describen a continuacin:

    Breve: conciso resumen en un prrafo, que describe usualmente el escenario principal

    ejecutado con xito.

    Casual: varios prrafos informales, los cuales cubren varios escenarios.

    Completo: formato ms elaborado, que cubre todos los pasos y variaciones en detalle.

    Presenta secciones de soporte, como precondiciones y xitos garantizados.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    47/106

    CAPTULO 4. RATIONAL UNIFIED PROCESS - RUP 38

    Descubriendo casos de uso

    Cuando se trabaje con casos de uso, los esfuerzos deberan enfocarse en responder

    Cmo se puede proveer valor observable al usuario, o satisfacer sus objetivos,

    utilizando el sistema?, en vez de pensar en los requerimientos del sistema como una

    simple lista de caractersticas o funciones.

    Existen innumerables interacciones entre los usuarios y un sistema. A continuacin sedescribe una estrategia para discriminar casos de uso de poca utilidad, y seleccionar

    aqullos que conformarn el grupo de casos de uso base.

    Un Proceso de Negocio Elemental, o EBP5, es un trmino del rea de ingeniera de

    procesos de negocio, definido como:

    Una tarea realizada por una persona, en un lugar, y en un momento

    determinado, en respuesta a un evento de negocios, el cual adiciona

    valor de negocio medible y deja los datos en un estado consistente.

    Por ejemplo, la aprobacin de crdito o una orden de precio.

    Dicho esto, la pauta a seguir en el RUP, es: para el anlisis de los requerimientos de

    una aplicacin computacional, se deben enfocar los casos de uso a nivel de proceso de

    negocio elemental[9].

    Aunque la pauta debera seguirse de forma literal para encontrar los casos de uso base,

    existen algunas excepciones que llevan a considerar como casos de uso a interacciones

    de bajo nivel y que no satisfacen la descripcin de un EBP.

    Entre estas interacciones podran considerarse: subfunciones comnmente utilizadas

    por casos de uso base, y as evitar la duplicacin de texto; y aquellas subfunciones que

    podran formar parte de las precondiciones de casos de uso base, en repetidas ocasiones.

    Por ejemplo, el medio de pago a travs de tarjeta de crdito, o la identificacin de unusuario, en cada caso.

    5Elementary Business Process.

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    48/106

    CAPTULO 4. RATIONAL UNIFIED PROCESS - RUP 39

    Casos de uso y objetivos de usuario

    Pensando en satisfacer los objetivos de usuarios, los pasos recomendados para la

    escritura de casos de uso son:

    1. escoger los lmites del sistema,

    preguntndose si el sistema es slo una aplicacin de software, hardware y

    software como una unidad, todo esto ms una persona usando el sistema, o una

    organizacin completa;

    2. identificar los actores primarios,

    que son aqullos que tienen objetivos de usuario satisfechos directamente a travs

    del uso de servicios del sistema;

    3. identificar los objetivos de los actores primarios,

    llevando stos a un nivel que satisfaga la pauta del EBP;

    4. y finalmente, definir los casos de usos,

    los cuales satisfarn los objetivos de usuario. Los casos de uso deberan ser

    nombrados de acuerdo a su objetivo, y comenzando por un verbo. Por ejemplo,

    para el objetivo: procesar una venta, el nombre del caso de uso podra ser:

    Procesar Venta.

    Casos de uso y fases del RUP

    Los casos de uso son centrales y de vital importancia para el RUP, el cual anima un

    desarrollo dirigido por stos. Esto implica que:

    los requerimientos son primeramente capturados en casos de uso (en el modelode casos de uso);

    los casos de uso son parte importante del plan de iteracin. De hecho, el trabajo

    de una iteracin es, en parte, definido por la eleccin de algunos escenarios, o

  • 8/6/2019 Gar CIA Civil Engineering Thesis

    49/106

    CAPTULO 4. RATIONAL UNIFIED PROCESS - RUP 40

    casos de uso completos6. Adems, los casos de uso son la fuente de informacin

    principal para realizar una estimacin;

    la realizacin de casos de uso gua el diseo. Esto significa, que el grupo de

    desarrolladores disea objetos y subsistemas colaborando entre s, para ejecutar

    o realizar casos de uso;

    los casos de uso a menudo influencian la organizacin de los manuales de usuario.

    A continuacin se describe el grado de formalidad que deberan presentar los casos de

    uso, a medida que se completan las fases del RUP.

    Concepcin: dentro de esta fase, la mayora de los casos de uso y actores son

    identificados. Adems, se escribe entre el 10 y 20% de los casos de usos en

    forma completa y detallada.

    Elaboracin: dentro de esta fase se escribe entre el 80 y 90% de los casos de uso

    en forma completa y detallada. Los casos de uso abordados s