Documente Academic
Documente Profesional
Documente Cultură
INTEGRANTES:
HUASASQUICHE TORREALVA ERIKA
HUAROTO BARRIOS JOSE
MUOZ CISNEROS LUIS
DOMINGUEZ MENDOZA DELFOR
VILLENA CANDELA DANNY
FACULTAD DE INGENIERA DE SISTEMAS
UNIVERSIDAD NACIONAL SAN LUIS GONZAGA
Anlisis y diseo
DEDICATORIA
Quiero
dedicarle
este
trabajo
A Dios que me ha dado la vida y fortaleza
para terminar este trabajo de investigacin,
A nuestros Padres por estar ah cuando ms
los necesitamos; en especial a las madres por
su ayuda y constante cooperacin y
A al Docente
por ensearnos sus
conocimientos adquiridos y en base de ello
hacer de nosotros grandes profesionales.
Pgina 1
Anlisis y diseo
Contenido
1.- ANLISIS Y DISEO ................................................................................................................. 6
1.1.- ANLISIS.............................................................................................................................. 6
1.1.1.- LO QUE NO ES EL ANLISIS DE SISTEMA ......................................................... 6
1.1.2.- EN QUE CONSISTE El TRABAJO DEL ANLISIS DE SISTEMA ...................... 6
1.1.3.- CALIDAD EN EL ANLISIS ....................................................................................... 9
1.2.- DISEO .............................................................................................................................. 10
1.2.1.- ETAPAS DEL DISEO DEL SISTEMA .................................................................. 11
1.2.2.- CRITERIOS TCNICOS PARA UN BUEN DISEO............................................ 14
1.2.3.- PRINCIPIOS DEL DISEO: ..................................................................................... 14
1.2.4.- SIMPLICIDAD EN EL DISEO ................................................................................ 15
2.- ESTRUCTURA INTERNA DEL SOFTWARE....................................................................... 16
2.1.- DEFINICIN ARQUITECTURA DE SOFTWARE ........................................................ 17
2.2.-ARQUITECTURA DE SOFTWARE EN EL PROCESO DE DESARROLLO ............ 17
2.3.- CARACTERSTICAS DE UNA ARQUITECTURA DE SOFTWARE EXITOSA ....... 17
3.- CONSIDERACIONES DEL DISEO DEL SOFTWARE .................................................... 22
3.1.- DISEO DE SOFTWARE ................................................................................................ 22
3.1.1.- DISEO PRELIMINAR.............................................................................................. 22
3.1.2.- DISEO DETALLADO .............................................................................................. 24
3.2 DISEO DE SOFTWARE INTERNACIONALIZADO .................................................... 25
3.2.1.- UNIFORMIDAD DE TERMINOLOGA EN LA DOCUMENTACIN DEL
SOFTWARE: ........................................................................................................................... 25
3.2.2.- EXPANSIN DE INTERFACES GRFICAS: ....................................................... 25
3.2.3.- DISEO INTERNACIONAL DE INTERFACES DE USUARIO:.......................... 25
3.2.4.- SEPARAR LA CAPA DE DATOS DE LA CAPA DE PRESENTACIN: ........... 26
3.2.5.- OPTIMIZAR LOS ESQUEMAS DE LA BASE DE DATOS PARA QUE
SOPORTEN LA INTERNACIONALIZACIN: .................................................................... 26
3.3.- FUNDAMENTOS DE DISEO .................................................................................................. 27
3.3.1 MODULARIDAD ................................................................................................................ 27
3.3.2 ARQUITECTURA DEL SOFTWARE ...................................................................................... 27
3.3.3 JERARQUA DE CONTROL ................................................................................................. 29
3.3.4 ESTRUCTURA DE DATOS. .................................................................................................. 29
Pgina 2
Anlisis y diseo
4.- BUENAS PRACTICAS DE DISEO ................................................................................................... 29
4.1.- CONCEPTOS........................................................................................................................... 29
4.2.- QUE LAS ESTRUCTURAS DE DATOS DEBEN ESTAR OCULTAS EN UN
SISTEMA SOFTWARE. ............................................................................................................ 32
4.3.- Y QUE HAY INCLUSO LISTAS DE MALOS OLORES QUE TE PUEDEN DAR
PISTAS DE QUE PROBLEMAS DE CALIDAD SOFTWARE TE PUEDES
ENCONTRAR. ............................................................................................................................ 33
5.- CONCLUSIONES ..................................................................................................................... 38
6.- RECOMENDACIONES .................................................................................................................... 39
7.- BIBLIOGRAFIA ............................................................................................................................... 40
Pgina 3
Anlisis y diseo
Tabla de Ilustraciones
Ilustracin 1: Diseo y su Importancia .............................................................................................. 10
Ilustracin 2: Diseo de los datos ..................................................................................................... 11
Ilustracin 3: Diseo Arquitectnico ................................................................................................. 11
Ilustracin 4: Diseo de Interfaz ....................................................................................................... 12
Ilustracin 5: Diseo de Procedimientos .......................................................................................... 13
Ilustracin 6: Intangibles de estructura Interna ................................................................................ 18
Ilustracin 7: Investigacion y Desarrollo ........................................................................................... 20
Ilustracin 8: Modularidad - Fundamentos de diseo ...................................................................... 27
Ilustracin 9: Arquitectura del software Evolucion de la Estructura ............................................. 28
Ilustracin 10:Arquitectura del software - Diferentes Estructuras ................................................... 28
Ilustracin 11: Estracto de la Clase ................................................................................................... 35
Ilustracin 12: Reemplace el mtodo con el mtodo de objeto ....................................................... 35
Ilustracin 13: Reemplace el cdigo Type con la estrategia del Estado ........................................... 35
Pgina 4
Anlisis y diseo
INTRODUCCIN
La esencia del diseo del software es la toma de decisiones sobre la organizacin
lgica del software. Algunas veces, usted representa esta organizacin lgica
como un modelo en un lenguaje definido de modelado, tal como UML y otras
veces usted simplemente utiliza notaciones informales y esbozos para representar
el diseo.
Por su puesto raramente empieza desde cero cuando toma decisiones sobre la
organizacin
del software sino que basa su diseo sobre experiencias de diseos anteriores.
del
cliente
traducindolas
en
especificaciones
concretas
Pgina 5
Anlisis y diseo
ANLISIS Y DISEO
1.- ANLISIS Y DISEO
1.1.- ANLISIS
Para que el desarrollo de un software concluya con xito, es de importancia que
antes de la codificacin de los programas que constituirn el software completo, se
tenga una plena y completa comprensin de los requisitos del software.
Pgina 6
Anlisis y diseo
unin de las partes. Un mtodo, plan o procedimiento de clasificacin para hacer
algo. Tambin es un conjunto o arreglo de elementos para realizar un objetivo
predefinido
en
el
procesamiento
de
la
Informacin.
sistemas
informticos
se
deben
observar
ciertos
principios:
Pgina 7
Anlisis y diseo
Software, que son Programas de computadora, con estructuras de
datos y su documentacin que hacen efectiva la logstica
metodologa o controles de requerimientos del Programa.
Hardware,
dispositivos
electrnicos
electromecnicos,
que
son
los
operadores
usuarios
directos
de
las
Manuales,
formularios,
otra
informacin
Pgina 8
Anlisis y diseo
Para lograr estos objetivos se requiere tener un gran conocimiento y dominio del
Hardware y el Software, as como de la Ingeniera humana (Manejo y
Administracin de personal), y administracin de base de datos.
1.1.3.- CALIDAD EN EL ANLISIS
1.1.3.1.- Calidad de atributos
Varios atributos son generalmente considerados importantes que
permiten obtener un diseo de software con alta calidad, existen
algunas caractersticas que son ( mantenible, portabilidad, probable)
y (correctos, robusto). Cabe destacar que existen diferencias entre
calidad de atributos que son (rendimiento, seguridad, funcionalidad y
usabilidad), y los que son (portabilidad, reutilizacin, integralidad y
pruebas), y las caractersticas relacionadas con la arquitectura
(integridad conceptual, correcto, completo).
1.1.3.2.- Calidad en anlisis y evaluacin de tcnicas
Pgina 9
Anlisis y diseo
1.2.- DISEO
La calidad del software se puede observar en una caracterstica o atributo. Como
un atributo, la calidad se refiere a caractersticas mensurables, es decir cosas que
se pueden comparar para conocer estndares, como longitud, color, propiedades
elctricas y maleabilidad. Sin embargo, el software que es una entidad intelectual,
tiene la complejidad de caracterizar los objetos fsicos. No obstante, existen
mediciones que nos permiten evaluar las caractersticas de un programa. Dichas
propiedades incluyen complejidad psicosomtica, nmero de puntos de funcin,
lneas de cdigo, etctera.
Pgina 10
Anlisis y diseo
1.2.1.- ETAPAS DEL DISEO DEL SISTEMA
La etapa del Diseo del Sistema encierra cuatro etapas:
1.2.1.1.- El Diseo de los datos
Trasforma el modelo de dominio de la informacin, creado durante el
anlisis, en las estructuras de datos necesarios para implementar el
Software.
Pgina 11
Anlisis y diseo
1.2.1.3.- El diseo de la Interfaz.
Describe como se comunica el Software consigo mismo, con los sistemas
que operan junto con el y con los operadores y usuarios que lo emplean.
Pgina 12
Anlisis y diseo
Pgina 13
Anlisis y diseo
1.2.2.- CRITERIOS TCNICOS PARA UN BUEN DISEO
Para evaluar la calidad de una presentacin del diseo, se deben establecer
criterios tcnicos para un buen diseo como son:
Un diseo debe presentar una organizacin jerrquica que haga un
uso inteligente del control entre los componentes del software.
El diseo debe ser modular, es decir, se debe hacer una particin
lgica del Software en elementos que realicen funciones y
subfunciones especficas.
Un diseo debe contener abstracciones de datos y procedimientos.
Debe conducir a interfaces que reduzcan la complejidad de las
conexiones entre los mdulos y el entorno exterior.
Estos criterios no se consiguen por casualidad. El proceso de Diseo del Software
exige buena calidad a travs de la aplicacin de principios fundamentales de
Diseo, Metodologa sistemtica y una revisin exhaustiva.
Pgina 14
Anlisis y diseo
1.2.3.2.- Retroalimentacin
Cada accin con el sistema debe tener una clara reaccin. Se puede hacer
con sonido, de forma tctil, verbal, visualmente o combinadas.
1.2.3.3.- Restriccin
Es la limitacin de la interaccin del usuario en un momento determinado.
Las limitaciones pueden ser de tres tipos:
1.2.3.4.- Mapeo
Es la relacin entre los controles y su efecto.
1.2.3.5.- Consistencia
Consiste en disear usando operaciones y elementos similares.
1.2.3.6.-Claridad
Es el atributo que permite a las personas saber cmo usar un diseo.
Puede ser de dos tipos:
Pgina 15
Anlisis y diseo
1.2.4.1.- La simplicidad se fabrica
La simplicidad ni se inventa ni es producto de la intuicin, sino del trabajo:
Pgina 16
Anlisis y diseo
procesadores de palabra para escribir, juegos para divertirse, hojas de clculo
para trabajo financiero, browsers para navegar por la red.
Pgina 17
Anlisis y diseo
proceso de desarrollo, los ciclos de trabajo, el hardware, la garanta de calidad y
los requerimientos.
Pgina 18
Anlisis y diseo
Investigacin y desarrollo
Para quienes tienen una imagen de investigacin asociada a laboratorios de
cientficos vestidos de delantal y con guantes blancos, esto de la investigacin en
la industria del software suena un poco extrao. Incluso quienes saben que
existen industrias que, en sus departamentos de I+D, realizan prototipos de sus
productos para probar su factibilidad tcnica, tambin se suelen sentir
contrariados.
Sin embargo, para quienes consideramos que la ingeniera del software es una
ingeniera como la que ms, no es tan raro. Al fin y al cabo, la industria del
software genera productos (productos intangibles, si se quiere que haga la
aclaracin, pero productos al fin). Y hacer I+D para evaluar factibilidad de un
producto de software no debera tener nada de raro. Tampoco debera tenerla la
investigacin en ciencias de la computacin, como se hace investigacin en la
matemtica, por ejemplo para determinar mejores algoritmos.
Por lo tanto, una primera clasificacin de las investigaciones relacionadas con el
software sera:
I+D relacionada con ciencias de la computacin: algoritmos, lenguajes,
estructuras de datos, paradigmas, etc.
I+D orientada a desarrollo de software: prototipos de procesos y productos.
Lo que es importante entender de cualquier proyecto de I+D, es que debe
necesariamente tener varios hitos de evaluacin y posible interrupcin. Esto puede
ser as en muchos proyectos de desarrollo, pero muy especialmente si se trata de
I+D.
Efectivamente, como ya dije, la misin principal de I+D, en cualquiera de sus
variantes, es analizar factibilidad. Esto, obviamente, no siempre tiene un resultado
positivo; me atrevera a decir que muy pocas veces lo tiene. En este sentido, es
importante poder interrumpir un proyecto de I+D apenas se lo vea como no
factible.
Pgina 19
Anlisis y diseo
Y de hecho, es preferible contar con un rea de I+D, de la cual no se esperan
resultados econmicos directos, para probar factibilidades que, si no, costaran
dinero de proyectos puntuales.
Intangibles vs Indicadores
ACTIVOS INTANGIBLES
Capacidad de
organizacin
innovacin
INDICADORES
de
la
Creatividad
Nmero de patentes
Investigacin y desarrollo
Organizacin
informacin
de
sus
sistemas
de
Tipo de direccin
Pgina 20
Anlisis y diseo
2.5.- ESTRUCTURA INTERNA (SOFTWARE) DEL PC:
Sistemas operativos: es el software bsico de una computadora que provee una
interfaz entre el resto de programas del ordenador, los dispositivos hardware y el
usuario.
Software aplicativo: son los programas que nos permiten trabajar despus de
tener el sistema operativo ya montado
Free Software: es la denominacin del software que respeta la libertad de los
usuarios sobre su producto adquirido y, por tanto, una vez obtenido puede ser
usado, copiado, estudiado, modificado y redistribuido libremente.
Open Source: se define por la licencia que lo acompaa, que garantiza a cualquier
persona el derecho de usar, modificar y redistribuir el cdigo libremente
Licencia GPL: Licencia creada por la Free Software Foundation y orientada
principalmente a los trminos de distribucin, modificacin y uso de software libre.
Software de dominio pblico: no est protegido por las leyes de derechos de autor
y puede ser copiado por cualquiera sin costo alguno.
Freeware: Cualquier software que no requiere pago ni otra compensacin
(como adwares) por parte de los usuarios que los usan.
Sharware: Un tipo de software que es distribuido gratuitamente exclusivamente
para
ser
probado,
pero
posee
restricciones
en
su
funcionalidad
disponibilidad. Por lo general son limitados a 30 das de uso, pero tambin algunos
desactivan opciones como Guardar, o tienen limitado el nmero de veces que
pueden ejecutarse.
Pgina 21
Anlisis y diseo
construida ms adelante.
Esta etapa se suele dividir en dos:
3.1.1.- DISEO PRELIMINAR
Se centra en la transformacin de los requisitos de los datos y la
arquitectura del software. Consiste en desarrollar una estructura funcional y
modular del sistema, definir interfaces
estructuras de datos.
Una actividad importante
Pgina 22
Anlisis y diseo
Desarrollar y utilizar, si existe, una librera de estructura de
datos de forma que se puedan reusar en el desarrollo de la
aplicacin.
El diseo de software y el lenguaje de programacin deben
soportar
de datos.
3.1.1.2.- Diseo Arquitectnico:
Su objetivo es desarrollar una estructura modular del software y
representar las relaciones de control entre los mdulos. El diseo
arquitectnico mezcla la estructura del programa y la de los datos, y
define las interfaces.
3.1.1.3.- Diseo de la Interfaz Hombre-Mquina:
Pgina 23
Anlisis y diseo
3.1.2.- DISEO DETALLADO
Se ocupa del refinamiento de la representacin arquitectnica que conduce
a una estructura de datos detallada y la representacin algortmica del
software o diseo procedimental.
Diseo Procedimental: Define los detalles algortmicos de cada uno de los
mdulos producidos durante el diseo arquitectnico, es decir produce de
diagrama de cada mdulo as como especificaciones procedimentales.
Durante esta etapa es aconsejable un modelo de interfaz de usuario (diseo
preliminar) para que la evale el usuario y modificar su diseo conforme a
esta evaluacin.
El resultado de esta etapa es un Documento de Diseo Detallado que
incorpora un diseo detallado a los datos, del diccionario de datos, de la
interfaz hombre-mquina y de la arquitectura modular del sistema,
configurando todo ello el Documento de Diseo Final.
R.S Pressman aconseja usar el siguiente esquema de Especificacin de
diseo del Software:
a. mbito.- Incluye los objetivos del sistema, hardware, software e
interfaces de usuario, principales funciones del software, base de datos y
restricciones de diseo.
b. Documento de Referencia.-
Pgina 24
Anlisis y diseo
3.2 DISEO DE SOFTWARE INTERNACIONALIZADO
El diseo de software se describe como el proceso de definir la arquitectura,
componentes, interfaces de un sistema. El rea donde se analizan los
requerimientos para producir la descripcin de la estructura interna del software.
3.2.1.- UNIFORMIDAD DE TERMINOLOGA EN LA DOCUMENTACIN
DEL SOFTWARE:
Se debe garantizar que los autores de los textos incluidos en men, dilogos,
botones, etc. y de la documentacin (manuales, ayuda en lnea, etc.) mantengan
una terminologa consistente en el tema y las secciones del software. As mismo la
presentacin de la documentacin al usuario fina es vital para garantizar que el
software tenga calidad. Es inaceptable la utilizacin de ciertos trminos y que en
otra seccin del software se utilice otra palabra para hacer referencia al mismo.
Para cumplir con sta recomendacin, se debe considerar la creacin de un
glosario terminolgico relacionado con la aplicacin del software.
3.2.2.- EXPANSIN DE INTERFACES GRFICAS:
Se debe garantizar que las interfaces grficas de usuario admitan una expansin
para permitir que el texto incluido en ellas se adapte correctamente una vez se
haya localizado, de manera que no se afecte la presentacin ni la funcionalidad de
dichas interfaces.
Esta recomendacin es necesaria cuando el software ser utilizado a nivel
internacional, se debe considerar el espacio adicional debido a la traduccin del
programa de un idioma u otro, ya que hay casos de duplicidad de caracteres,
afectando el diseo de las interfaces por el desborde del texto de sus posiciones
iniciales.
3.2.3.- DISEO INTERNACIONAL DE INTERFACES DE USUARIO:
Todas las interfaces de usuario deben ser diseadas para que tengan aceptacin
por parte de un pblico internacional.
Pgina 25
Anlisis y diseo
Las interfaces de usuario son el medio principal mediante el cual el usuario final
interacta con el software; si un usuario percibe que la interfaz
predisposicin
cultural
no
se
puede
afirmar
que
el
tiene cierta
software
est
internacionalizado.
3.2.4.-
SEPARAR
LA
CAPA
DE
DATOS
DE
LA
CAPA
DE
PRESENTACIN:
La capa de presentacin es la que define cmo se va a mostrar la informacin al
usuario final.
Desde la fase de diseo del software se debe definir una estrategia clara para
lograr separar la capa de presentacin de la de datos, ya que en el proceso de
localizacin generalmente slo es necesario adaptar la capa de datos y no se
modifica la capa de presentacin en las interfaces.
Para cumplir con sta recomendacin se debe considerar o definir si se puede
usar un patrn de arquitectura de software que permita separar las capas.
3.2.5.- OPTIMIZAR LOS ESQUEMAS DE LA BASE DE DATOS PARA
QUE SOPORTEN LA INTERNACIONALIZACIN:
Para disear una base de datos que soporte el almacenamiento de contenido
localizado se debe identificar qu valores se deben almacenar de forma
dependiente de la cultura y cules valores se deben almacenar en una
representacin uniforme que posteriormente se pueda convertir por la lgica de la
aplicacin.
La representacin de datos contenidos en la base de datos debe ser
independiente del local y la conversin de datos a partir de la presentacin original
debe ser realizada sin que haya prdida de informacin.
Pgina 26
Anlisis y diseo
3.3.- FUNDAMENTOS DE DISEO
3.3.1 MODULARIDAD
El software se divide en componentes con nombres determinados que se
denominan mdulos. Un programa compuesto de un solo mdulo no puede ser
fcilmente manejado intelectualmente. Es ms fcil resolver problemas complejos
cuando se descomponen en trozos ms manejables. Puede concluirse que si
partiramos el software indefinidamente el esfuerzo para desarrollarlo sera
insignificantemente pequeo. Sin embargo existen otros factores que hacen
invlida esta conclusin. Debemos modularizar, pero debemos evitar tanto una
excesiva modulizacin como una pobre.
Pgina 27
Anlisis y diseo
Pgina 28
Anlisis y diseo
3.3.3 JERARQUA DE CONTROL
La jerarqua de control, tambin denominada estructura del programa, representa
la organizacin de los componentes del programa (mdulos). Esto no representa
aspectos procedimentales del software, tales como la secuencia de procesos, la
ocurrencia u orden de las decisiones o la repeticin de operaciones.
3.3.4 ESTRUCTURA DE DATOS.
La estructura de datos es una representacin de la relacin lgica existente entre
los elementos individuales de datos. Debido a que la estructura de la informacin
afectar invariablemente al diseo procedimental final, la estructura de datos es
tan importante como la estructura del programa en la representacin de la
arquitectura del software.
Pgina 29
Anlisis y diseo
Fallos en las etapas iniciales de desarrollo de Software (anlisis, requisitos,
etc.).
Etc.
Pgina 30
Anlisis y diseo
Por qu es necesario hacer pruebas?
Adems, como toda buena inversin, ahorra tiempo a largo plazo. Si trasladamos
por ejemplo los conceptos al entorno mvil, para asegurar el correcto
funcionamiento de las aplicaciones en cada tipo de terminal y sistema operativo, el
equipo de pruebas debe realizar diversos test a diferentes niveles (como veremos
en siguientes entregas). Excepto Google Play, las grandes compaas de
distribucin de apps (AppsStore y Microsoft Marketplace) suelen someter a
diversas pruebas las apps candidatas, para comprobar que se encuentran dentro
de unos umbrales mnimos de calidad. Este proceso puede ser de varios das
antes de recibir el visto bueno o el rechazo, con lo que el proceso debera volver a
comenzarse. Esta es una de las razones por las que someter cualquier aplicacin
a una buena batera de pruebas de forma interna.
Pgina 31
Anlisis y diseo
A nivel de cdigo o diseo, no olvides que:
Como todo en esta vida, esto tambin tiene una razn, o varias. Si un
mdulo pudiera acceder, leer atributos o estructuras de datos de otro,
entonces principalmente ocurriran dos cosas
A Si un da queremos cambiar las estructuras de datos nos ser muy
complicado.
Porque tendramos que modificar a todo aquel mdulo al que se le permiti
acceder a ellas. Pongamos un ejemplo, imaginemos que un mdulo o un
objeto tiene un dato edad, que est almacenado en una estructura simple
(un atributo tipo entero), pero tiempo despus nos da por querer almacenar
las 10 ltimas edades y para ello sustituir el entero por un array de
enteros tendramos entonces que buscar a todos aquellos mdulos que
accedan directamente al dato simple edad y modificarlos para que ahora
lean un array.
Pgina 32
Anlisis y diseo
B El mdulo externo que acede a la estructura de datos de otro
podra leer datos no actualizados.
Por ejemplo, un mdulo podra guardar el dato edad y no tenerlo
actualizado. Si se accede directamente a una estructura de datos nadie se
responsabiliza de que lo que lee est actualizado. Pero si accedemos a
travs de una interfaz, de un servicio, un mtodo, un getEdad, este puede
asegurarse de actualizar el dato en el momento en que se pide. Adems de
que una cosa son las estructuras de datos y otra la informacin que un
mdulo nos puede proporcionar, que es sus estructuras de datos o atributos
+ los clculos que puede hacer con ellos.
Mtodo Largo. Los programas que viven ms y mejor son aquellos con mtodos
cortos, que son ms reutilizables y aportan mayor semntica
Clase Grande. Clases que hacen demasiado y por lo general con una baja
cohesin, siendo muy vulnerables al cambio.
Pgina 33
Anlisis y diseo
Obsesin Primitiva. Uso excesivo de tipos primitivos. Existen grupos de tipos
primitivos (enteros, caracteres, reales, etc.) que deberan modelarse como objetos.
Debe eliminarse la reticencia a usar pequeos objetos para pequeas tareas,
como dinero, rangos o nmeros de telfono que debieran muchas veces ser
objetos.
Clase de Datos. Clases que slo tienen atributos y mtodos tipo get y set. Las
clases siempre deben disponer de algn comportamiento no trivial.
Atributo Temporal. Algunos objetos tienen atributos que se usan slo en ciertas
circunstancias. Tal cdigo es difcil de comprender ya que lo esperado es que un
objeto use todas sus variables.
Generalidad Especulativa. Jerarquas con clases sin utilidad actual pero que se
introducen por si en un futuro fuesen necesarias. El resultado es jerarquas
difciles de mantener y comprender, con clases que pudieran no ser nunca de
utilidad.
Cadena de Mensajes. Un cliente pide algo a un objeto que a su vez lo pide a otro
y este a otro, etc.
Clase Perezosa. Una clase que no est haciendo nada o casi nada debera
eliminarse.
Pgina 34
Anlisis y diseo
Cambios en Cadena. Un cambio en una clase implica cambiar otras muchas. En
estas circunstancias es muy difcil afrontar un proceso de cambio.
Pgina 35
Anlisis y diseo
Una de las razones para refactorizar es ayudar al cdigo a mantenerse en buena
forma, ya que con el tiempo los cambios en el software hacen que este pierda su
estructura, y esto hace difcil ver y preservar el diseo. Refactorizar ayuda a evitar
los problemas tpicos que aparecen con el tiempo, como, por ejemplo, un mayor
nmero de lneas para hacer las mismas cosas o cdigo duplicado.
Existen incluso posturas, como a la que comenta la metodologa gil XP, que
afirman que la refactorizacin puede ser una alternativa a disear, codificando y
refactorizando directamente, sin ms. Sin llegar a extremos tan radicales y poco
recomendables, s que es cierto que una buena refactorizacin cambia el rol del
tradicional del diseo planificado, pudiendo relajar la presin por conseguir un
diseo totalmente correcto en fases tempranas, buscando slo una solucin
razonable.
Otro aspecto importante es que ayuda a aumentar la simplicidad en el diseo. Sin
el uso de refactorizaciones se busca la solucin ms flexible para el futuro, siendo
estas soluciones, por lo general, ms complejas y, por tanto, el software resultante
ms difcil de comprender y por ello de mantener. Adems, ocurre que muchas
veces toda esa flexibilidad no es necesaria, ya que es imposible predecir qu
cambiar y dnde se necesitar la flexibilidad, forzado poner mucha ms
flexibilidad de la necesaria (sntoma de esto es la sobrecarga de patrones). Con la
refactorizacin en lugar de implantar soluciones flexibles antes de codificar se
hace despus, tratando con diseos ms simples sin sacrificar la flexibilidad.
Pgina 36
Anlisis y diseo
refactorizacin. Si el comportamiento cambia entonces ser imposible
asegurar que la refactorizacin no ha estropeado algo que antes ya
funcionaba.
4.3.2.- UN USO RIGUROSO DE LAS PRUEBAS.
No se debera comenzar un proceso de refactorizacin si no se dispone de
un buen conjunto de pruebas. Las pruebas son necesarias porque permiten
comprobar que una vez refactorizado el software mantiene su funcionalidad.
4.3.3.- REFACTORIZAR EN DIFERENTES MOMENTOS DEL CICLO DE
VIDA.
Se aconseja refactorizar antes de aadir nueva funcionalidad (haciendo
ms fcil aadirla) o despus (simplificando el cdigo una vez introducida),
cuando se necesita reparar un error o al revisar el cdigo.
4.3.4.- USAR LOS BAD SMELLS (MALOS OLORES).
Los bad smells pueden ser una buena ayuda a la hora de detectar dnde
aplicar refactorizaciones.
Por otro lado, hay que considerar que llevar a cabo la refactorizacin manual
supondr una tarea larga y tediosa. Tokuda y Batory presentaron un caso de
estudio en el que se aplicaron 800 refactorizaciones a un programa de 500k lneas
de cdigo y que llevo dos semanas de trabajo hacindolo de manera manual y
dos das de manera automatizada. Por ello, desde hace aos se ha estado
trabajando en herramientas de refactorizacin, siendo Smalltalk Refactoring
Browser de 1999, desarrollada bajo del marco de la Tesis de Roberts, la que se
considera primera herramienta de refactorizacin. Pero, sin embargo, an hoy, el
problema de automatizar la refactorizacin sigue siendo complejo, ya que aunque
hay refactorizaciones que apenas necesitan analizar la estructura del software,
como, por ejemplo, aquellas que se encargan de renombrar, pero la mayora debe
analizar y manipular el rbol del programa, y en ocasiones esto es complejo, por lo
que an queda camino por recorrer en la automatizacin de la refactorizacin.
Pgina 37
Anlisis y diseo
5.- CONCLUSIONES
En una organizacin o Empresa, el anlisis y Diseo de Sistemas, es el proceso
de estudiar su Situacin con la finalidad de observar como trabaja y decidir si es
necesario realizar una mejora; el encargado de llevar a cabo estas tareas es el
analista de sistemas.
el funcionamiento del
Pgina 38
Anlisis y diseo
6.- RECOMENDACIONES
El Anlisis y diseo de software es de demasiada importancia, dado que sin ello,
sin el arte de analizar y plasmar ideas, objetivos de lo que se quiere lograr no
llegaremos al objetivo general.
Un buen anlisis nos ayuda a poder entender el entorno de la cual se est
realizando un estudio, obteniendo como resultados lo requerimientos,
entendimiento de sus procesos, etc. para luego hacer un diseo donde
plasmaremos todo ello tanto sus requerimientos como sus procesos, funciones y
todo que nos lleve y sirva para lograr los objetivos del software que se desea
implementar.
Sin un buen anlisis y diseos obtendremos como resultado un mal software, que
no cumple las expectativas del cliente.
En las buenas prcticas de diseo de software nos daremos cuenta que tan
necesario es hacer pruebas en lo que se est desarrollando para ver si tenemos
brechas en nuestro sistema o producto si vamos por buen camino hacia el objetivo
del software o sistema que tiene que tener calidad y eficiencia etc.
Pgina 39
Anlisis y diseo
7.- BIBLIOGRAFIA
Calidad de diseo:
http://www.eumed.net/tesis-doctorales/2014/jlcv/calidad-software.htm
Etapas del diseo de sistemas:
http://eduardoummma.galeon.com/cvitae1770705.html
Criterios tcnicos del Diseo:
http://eduardoummma.galeon.com/cvitae1770707.html
Principios del Diseo:
http://albertolacalle.com/diseno/principios.htm
Simplicidad en el Diseo:
http://albertolacalle.com/diseno/simple.htm
Calidad de atributos y calidad en anlisis y evaluacin de tcnicas:
http://www.monografias.com/trabajos73/diseno-software/diseno-software2.shtml
Estructura Interna del Software
http://www.voigtmann.de/es/desarrollo-de-software/arquitectura-de-software/
http://redes.webs.uvigo.es/ffi/complementos/perifericos/Partes%20de%20un%20computador.ht
m
http://es.slideshare.net/jcfdezmx2/cadena-valor-de-los-intangibles-presentation
https://books.google.com.pe/books?id=rXUWS4UatYC&pg=PA441&lpg=PA441&dq=QUe+es+la+Estructura+interna+de+un++software&source
=bl&ots=vvtKw64p2U&sig=YQhhi73jI2xPCyrboVjSfyttUs&hl=es&sa=X&ved=0CCYQ6AEwAmoVChMIrfDAy4aCyQIVBCQmCh2jYQvh#v=onepage&q=QUe
%20es%20la%20Estructura%20interna%20de%20un%20%20software&f=false
https://joshdead.wordpress.com/2011/11/01/estructura-internasoftware-del-pc/
http://www.monografias.com/trabajos94/sistema-informacion-gerencial-estrategico/sistemainformacion-gerencial-estrategico.shtml
https://es.wikipedia.org/wiki/Activo_intangible
Consideraciones del diseo del software
http://indalog.ual.es/mtorres/LP/FundamentosDiseno.pdf
Pgina 40
Anlisis y diseo
Buenas prcticas de diseo:
http://www.javiergarzas.com/calidad-software
https://prezi.com/pe4mkalxy9yr/buenas-practicas-de-desarrollo-de-software/
http://docplayer.es/3182121-Buenas-practicas-en-diseno-de-software-albertolacalle-com-esi.html
Pgina 41