Revista ii

Page 1

Del 12 al 19 de abril de 2015

FÁCIL SISTEMAS

La publicación semanal didáctica y al alcance de todos los que quieren aprender sobre Ingeniería de Sistemas

Volumen 2 Nº2

VINCULACIÓN DISEÑO-CODIGO

Diseñar un software está en la esencia técnica de la ingeniería y se aplica particularmente a cada modelo de software con el que se esté trabajando. Una vez estudiados y definidos los requerimientos, se puede proceder a diseñar, acá es

donde se genera el código y las pruebas pertinentes. El sistema se modela para que aporte soporte a los requisitos funcionales y no funcionales. ¡Disfrute aprendiendo!

EN ESTA EDICIÓN DISEÑO

2

PROCESO Y CALIDAD DE DISEÑO

3

CODIGO FUENTE

5

GUIA PARA COMUNICAR UN DISEÑO 6 CODIGO OBJETO

7

PROGRAMACIÓN DEFENSIVA

8

HERRAMIENTAS DE SOFTWARE// 8


Página 2

¿QUÉ ES EL DISEÑO?

CREATIVIDAD

DETALLES DE STRUCTURAS

¿QUÉ PROPORCIONA? ¿CUÁL ES LA IMPORTANCIA?

CALIDAD DEL SOFTWARE, ANTES DE IMPLEMENTAR

TAN SENCILLO COMO UN DISEÑO El diseño es el sitio donde manda la creatividad, donde los requisitos del cliente, las necesidades de negocio y las consideraciones técnicas se unen en la formulación de un producto o sistema.

ÉSTA ES UNA PUBLICACIÓN DEL CURSO ESPECIAL DE GRADO DE CIENCIAS DE LA COMUPTACIÓN DE LA UNIVERSIDAD DE ORIENTE, PARA LA MATERIA: LÓGICA COMPUTACIONAL., A CARGO DE LA PROFESORA YAMILA GASCÓN.

El diseño crea una diferencia del modelo de análisis ( que se enfoca en la descripción de los datos, las funciones y el comportamiento requerido), el modelo de diseño proporciona detalles acerca de las estructuras de datos, las arquitecturas, las interfaces y los componentes del software que son nece-

CONSEJO EDITORIAL FERNÁNDEZ, JAKELIN FONGARO, GRECIA

DIAGRAMACIÓN FERNÁNDEZ, JAKELIN

EDICIÓN DE TEXTOS FONGARO, GRECIA

EDITORIAL

sarios para implementar el sistema. El diseño debe proporcionar una imagen completa del software- dando dirección a los dominios de datos, funcionales y de comportamiento desde una perspectiva de la implementación. Es importante porque permite que un equipo de software


FÁCIL SISTEMAS Volumen 2 Nº2

Página 3

TÉCNICAS Y PROCESOS DE CALIDAD DEL DISEÑO

CALIDAD DEL DISEÑO El diseño del software es

ta hasta conseguir el obje-

rastrear hasta los requisitos, pero

un proceso iterativo me-

tivo específico del sistema

la conexión es más sutil.

diante el cual los requisi-

y requisitos más detallados A través del proceso del diseño, la

tos se traducen en un

de comportamiento, fun-

calidad en evolución de éste se

“plano” para construir el

cionales y datos. A medida

evalúa con na serie de revisiones

software. Al inicio, el

en que ocurren las iteracio-

técnicas formales o con revisiones

plano representa una vi-

nes de diseño, un refina-

de diseño.

sión holística del software.

miento subsiguiente con-

El diseño debe implementar

Es decir, el diseño se repre-

duce a representaciones

todos los requisitos ex-

senta en un grado alto de

del diseño a grados mucho

plícitos contenidos en el

abstracción, el cual puede

más bajos de abstracción.

modelo de análisis, y debe

rastrearse de manera direc-

Estos grados aún pueden

ajustarse a todos los requisitos implícitos que desea el cliente.

Guía de un buen Diseño

El diseño debe ser una guía legible y comprensible para quienes generan código y quienes realizan pruebas y, en consecuencia, dan soporte al software. El diseño debe proporcionar una imagen completa del software dando dirección a los dominios de datos, funcionales y de comportamiento- desde una perspectiva de implementación.

Criterios más comunes 

División en módulos con funciones independientes.

Organización jerárquica de los módulos.

Representaciones de datos y procedimientos distintas.

Minimización de la complejidad de las conexiones entre las interfaces.

Reproducibilidad del método de diseño con los datos de los requisitos.


Página 4 Viene de la página 3 Abstracción: es el proceso

Estructura jerárquica en

rarquía de control, indepen-

o el resultado de la gene-

módulos con control entre

dientemente de las decisio-

ralización de la reducción

componentes: Representa

nes y secuencias de procedi-

del contenido de la infor-

la organización jerárquica

miento.

mación de un concepto o

de los componentes del

Ocultamiento de la informa-

un fenómeno observable,

programa e implica una

ción, aplicación de métodos

por lo general, con el fin

jerarquía de control. No

sistemáticos y una revisión

de conservar únicamente

representa aspectos proce-

constante: El principio de

la información que es rele-

dimentales del software,

ocultamiento de la informa-

vante para un propósito

como secuencias de proce-

ción sugiere que los módu-

en particular. Cuando se

sos o la repetición de ope-

los se han de caracterizar

considera

raciones.

por decisiones de diseño

modular a cualquier pro-

Estructura de los datos: Es

que los oculten unos a otros.

blema se pueden exponer

una representación de la

Los módulos deben especi-

muchos grados de abstrac-

relación lógica existente

ficarse y diseñarse de forma

una

solución

ción.

que la información

Refinamiento

sucesivo:

(procedimientos

Un

complejo

datos)

problema

y

contenida

debe ser dividido en va-

dentro de un módu-

rios

más

lo sea accesible a

simples, y estos a su vez

otros módulos úni-

en

subproblemas

camente a través de

más simples. Esto debe

las interfaces forma-

hacerse hasta obtener sub-

les establecidas para

problemas lo suficiente-

cada módulo.

subproblemas otros

mente simples como para

Acercar el modelo

poder ser resueltos fácil-

entre los elementos indivi-

de análisis al modelo de

mente con algún lenguaje

duales de datos. Debido a

implementación: “Los mila-

de programación.

que la estructura de la in-

gros más comunes de la in-

Modularidad: Consiste en

formación afectará inva-

geniería del software son las

la división en forma lógica

riablemente el diseño pro-

transiciones desde el análi-

de elementos en funciones

cedimental final, la estruc-

y subfunciones. Dividien-

tura de datos es tan im-

do los componentes con

portante como la estructu-

nombre y ubicaciones de-

ra del programa en la re-

terminados, denominados

presentación de la arqui-

módulos, y que se inte-

tectura del software.

gran para satisfacer los

Procedimientos por capas

requisitos del problema.

funcionales: Define la je-

FUENTE: Pressman, Roger S., Ingeniería del Software, Sexta Edición, MCGRAW-HILL / INTERAMERICANA DE MEXICO (2005 )


FÁCIL SISTEMAS

Página 5

EL FIN DETERMINARÁ EL TIPO DE HERRAMIENTAS QUE SE DEBE ÚTILIZAR

CÓDIGOFUENTE El código es cada una de las secuencias de caracteres que transforman los elementos de un repertorio en otro.

Volumen 2 Nº2

El código fuente de un programa informático (o software) es un conjunto de líneas de texto que son las instrucciones que debe seguir la computadora para ejecutar dicho programa. Por tanto, en el código fuente

de un programa está escrito por completo

su

funcionamiento.

(Varios, 2015)

fuente de un programa informático es si su licencia permite que dicho código fuente esté disponible para que cualquiera pueda estudiarlo, modificarlo o reutili-

El área de la informática que se dedica a la creación de programas, y por tanto a la creación de su código fuente, es la programación. Un aspecto interesante a tener en cuenta cuando se habla del código

zarlo. Cuando se cumple este aspecto se dice que el programa es de Código abierto y son, en general, software libre, en contraposición al software privativo sobre el cual no se tiene ninguno de estos permisos.

ACCESO AL CODIGO FUENTE Acceder al código fuente de un programa significa acceder a los algoritmos desarrollados por sus creadores. Es la única manera de modificar eficaz y eficientemente un programa.

Traducirse a lenguaje máquina para que pueda ser ejecutado por la computadora o a bytecode para que pueda ser ejecutado por un intérprete. Este proceso se denomina compilación. Acceder al código fuente de un programa significa acceder a los algoritmos desarrollados por sus creadores. Es la única manera de modificar eficaz y eficientemente un programa. Liberar un código fuente significa compartir ese texto con cualquier persona que lo desee, esto implica que cualquiera puede analizarlo, copiarlo o modificarlo. Las aplicaciones que liberan sus códigos suelen ser gratuitas bajo licencia GNU. La liberación de un código de un programa implica ciertos riesgos en cuando a la seguridad del mismo, pues su funcionamiento exacto queda expuesto. El código fuente no suele liberarse para las aplicaciones comerciales y no puede obtenerse el código fuente original a través de los programas ya compilados.


Página 6 Viene de la página 5

GUIA PARA COMUNICAR UN DISEÑO OBJETIVO

E

l presente apunte tiene como objetivo servir

de guía para los que cursen la presente materia y necesiten comunicar el diseño de un trabajo práctico, examen, ejercicio, etc. Para ello tomamos en cuenta que no existe una única verdad pero si buenas prácticas para documentar una solución; esas prácticas

CODIGO

.Es un buen momento para recordar que el código es

una forma totalmente válida para evitar ambigüedades cuando describimos nuestra solución. Bajar a detalle las partes más relevantes nos va a permitir darnos cuenta de que determinado objeto necesite tener o recibir más información un objeto deba delegar responsabilidades a otro objeto aparezcan nuevas abstracciones que no habíamos pensado originalmente.

facilitaran la comprensión a quien este del otro lado (sean docentes o compañeros).

¿EN QUE LENGUAJE HABLAMOS CUANDO ESTAMOS DISEÑANDO?

Sintaxis del UML: los distintos diagramas (Casos de Uso, Clase, Objetos, Estado, Actividad, Secuencia, Colaboración, etc.) Semántica del UML: el paradigma orientado a objetos. UML (Unified Modeling Language) Lenguaje: herramienta de comunicación para las personas que permite representar un modelo (una idea) del sistema real. Recordemos que un modelo es una abstracción que lo expresamos a través de los distintos diagramas (el modelo no es el sistema, sino lo que me interesa representar del sistema). Herramienta para modelar con objetos (por eso lo de Unificado).

Como herramienta de comunicación, el objetivo principal de los diagramas UML es la comprensión del lector antes que su completitud. Entonces: Sólo lo que nosotros queremos comunicar debe mostrarse en un diagrama


FÁCIL SISTEMAS

Página 7

CODIGO OBJETO S

Volumen 2 Nº2

e llama código obje-

to al código que resulta de la compilación del código fuente. Consiste en lenguaje máquina o bytecode y se distribuye en varios archivos que corresponden a cada código fuente compilado. Para obtener un programa ejecutable se han de enlazar todos los archivos de código objeto con un programa llamado enlazador (linker). Los código objeto pueden ser muy útiles en muchas situaciones sin embargo consigo traen problemas que pueden generar errores muy difíciles de corregir. Por ejemplo cuando un objeto importa funciones de otro código objeto que ha sido modificado, el intento de la librería o el programa que importó la librería de ejecutar el código con parámetros incorrectos o inexistentes puede generar un error que generalmente el compilador no detecta ya que el código objeto no es verificado, únicamente unido. Este tipo de error se

puede solucionar reescribiendo el código de manera correcta y re compilarlo a código objeto. Código generado por u n c o m p i l a d o r o un ensamblador traducido por un código fuente de un programa. Casi siempre este término se refiere al código máquina que puede ejecutarse directamente en la unidad

central de proceso (CPU) del sistema, pero también puede ser código fuente de lenguaje ensamblador o una variante de código máquina. Está compuesto por un conjunto de datos escritos en un lenguaje de tipo binario o código maquina obtenidos de la traducción de un anterior código fuente, son entendidos por el ordenador directamente. Es una parte del programa listo para funcionar pero está expuesto a poseer errores y en proceso de compilación sus resultados deben enlazarse para obtener el archivo ejecutable.


Página 8

NOVEDADES EDITORIALES

PROGRAMACION DEFENSIVA rio inesperadas. Este es el principio fundamental de la programación defensiva también conocida como depuración activa. La idea es crear nuestras clases, métodos y APIs previniendo cualquier uso inadecuando que se le pueda dar. La programación defensiva consiste en defender a nuestro código de entradas inesperadas y errores “poco probables” que usualmente no tenemos en cuenta.

L

a programación defensi-

va es una forma de diseño defensivo aplicada al diseño de software que busca garantizar el comportamiento de todo elemento de una aplicación ante cualquier situación de uso por incorrecta o imprevisible que ésta pueda parecer. En general, esto supone multiplicar las comprobaciones que se realizan en todos los módulos programados, con la consiguiente penalización en carga de procesador, tiempo y aumento en la complejidad del código. Las técnicas de programación defensi-

va se utilizan especialmente en componentes críticos cuyo mal funcionamiento, ya sea por descuido o por ataque malicioso, podría acarrear consecuencias graves o daños catastróficos. La programación defensiva es un enfoque que busca mejorar el software y el código fuente, en términos de:

Calidad - reduciendo el número de fallos de software y, en consecuencia, problemas. Haciendo el código fuente comprensible - el código fuente debe ser legible y comprensible, a prueba de una auditoría de código. Hacer que el software se comporte de una manera predecible pese a entradas o acciones de usua-

La programación defensiva se basa en un conjunto de buenas prácticas basadas en la idea que no es posible saber cómo se van a utilizar nuestros programas. Con esta idea en mente el objetivo es ser tomar medidas para garantizar el funcionamiento correcto aún con información o datos inválidos. Proteger tu programa de cualquier tipo de entrada La idea de este principio es pensar que nuestro código puede ser llamado con cualquier tipo de entrada indeseada, por ejemplo, objetos nulos, listas vacías o datos numéricos inválidos. Miremos el siguiente método que opera números en una lista. Documentar y declarar el precondición y errores Si bien la validación de entradas en la aplicación previene el uso inadecuado del sistema,.


FÁCIL SISTEMAS Volumen 2 Nº2

Página 9

HERRAMIENTAS DE SOFWARE UML/OCL ARGOUML, distribuido por Tigress. org, da soporte a ULM y OCL completo, e incluye varias herramientas de ayuda para el diseño, que van más allá de la generación de diagramas UML y expresiones OCL. Desarrollo de interfaces de usuario MACROMEDIA AUTHORWARE, desarrollado por Macromedia Inc. se ha diseñado para la creación de interfaces y entornos de aprendizaje electrónico. MOTIF COMMON DESKTOP ENVIRONMENT, desarrollado por The Open Group, es una interfaz gráfica de usuario integrada para sistemas abiertos de computación de escritorio. Entrega una interfaz gráfica simple, estándar, para la administración de datos, archivos y aplicaciones. POWERDESIGNER/POWERBUILDER, desarrollo por Sybase, es un conjunto muy completo de herramientas CASE, que incluyen muchos opciones para el diseño y la construcción de interfaces graficas de usuario.

DRESDEN OCL TOOLKI, desarrollado por Frank Finger en la Universidad Tecnológico de Dresden, es un juego de herramientas basadas en un compilador OCL que abarca varios módulos que analizan, revisan el tipo y las restricciones OCL. OCL PARSER, desarrollado por IBM, está escrito en Java y está disponible gratuitamente para comunidad orientada a objeto con fin de que se estimule el uso de OCL con modeladores UML.


CONTRAPORTADA Dependiendo del diseño con el que se plantee el sistema el código será más sencillo o más complejo.

El diseño de un software es parte crucial en el desarrollo de este, es en esta etapa donde se define como se planteará el problema, que se requerirá para llegar a su solución. El código fuente es como el programador diseña el programa, en lenguaje natural o en algún lenguaje de programación. El código fuente llega a ser fundamental dentro de un sistema, su mantenimiento generará costos, dichos costos dependerán de la calidad, modularidad y escabilidad que tenga el código.

Se diseña como se quiere llevar a cabo el sistema y por medio del código es como vamos a hacer posible que la máquina entienda y ejecute esas acciones. El diseño permite transformar lo que pide un cliente en un sistema o software, este va a ser la base de la cual se partirá para así generar el producto final; luego que se tiene el diseño, entra en juego el código.

CONSULTAS

Pressman, Roger S., Ingeniería del Software, Sexta Edición, MCGRAW-HILL / INTERAMERICANA DE MEXICO (2005). Cataldi, Z. Metodología de Diseño, Desarrollo y Evaluación de Software Educativo.). Consultado el 03 de abril de 2015. Disponible en Línea: http://repositorio.utp.edu.co/dspace/ bitstream/11059/2737/2/0053L864e_anexo.pdf Calidad del Producto Software y la norma ISO/IEC 25000. Artículo en Línea. Consultado el 03 de abril de 2015. Disponible en: http://partyboy.webcindario.com/IEEE%201012.pdf Varios (2015). Wikipedia, la enciclopedia libre. Artículo en Línea. Consultado el 03 de abril de 2015. Disponible en: http://es.wikipedia.org/wiki/Programaci%C3%B3n_modular Técnicas de Diseño. Artículo en Línea. Consultado el 03 de abril de 2015. Disponible en: http://www.joomag.com/magazine/software-design-001/0423606001371824111?page=5 Sánchez F., Diana M. Proceso Unificado: Diseño. Artículo en Línea. Consultado el 04 de abril de 2015. Disponible en: http://www.kybele.etsii.urjc.es/docencia/IS_LADE/2012-2013/ Material/[IS-LADE_2012-13]T16%20-%20PU%20-%20Dise%C3%B1o%202012.pdf


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.