You are on page 1of 0

1

Capitulo 1 Anlisis y diseo Orientado a Objetos con aplicaciones-


Complejidad

1.1 La complejidad inherente al software: las propiedades de los sistemas de
software simples y complejos.
Mucha de la complejidad que debe manejar un ingeniero de software es complejidad
arbitraria.
Un sistema de software creado por un programador aficionado o desarrollador
profesional que son especificados, construidos y mantenidos por el mismo, no son
complejos Son aplicaciones altamente intranscendentes -. Tales sistemas tienden a
tener un propsito muy limitado y un ciclo de vida muy corto.
Las caractersticas del software de dimensin industrial es que resulta sumamente
difcil, sino imposible, para el desarrollador individual comprender todas las
sutilidades de su diseo. La complejidad de tales sistemas excede la capacidad
humana. La complejidad parece ser una propiedad esencial de todos los sistemas de
software de gran tamao (puede dominarse pero no ser eliminada).

Porque el software es complejo de forma innata?
Esta complejidad inherente se deriva de cuatro elementos:
La complejidad del dominio del problema
La dificultad de gestionar el proceso de desarrollo
La flexibilidad que se puede alcanzar a travs del software
Los problemas que plantea la caracterizacin de sistemas discretos

La complejidad del dominio del problema: se refiere a la complejidad que
conlleva el entendimiento del problema en base a los requisitos proporcionados
por el cliente (algunas veces estos compiten entre si o se contradicen).
Considrese los requisitos para el sistema electrnico de un avin multimotor,
un sistema de conmutacin para telfonos celulares o un robot autnomo. La
funcionalidad pura de tales sistemas es difcil incluso de comprender, pero
adanse adems de todos los requisitos no funcionales, tales como facilidad de
uso, rendimiento, coste, capacidad de supervivencia y fiabilidad, que a menudo
estn implcitos. Esta ilimitada complejidad externa es la que causa la
complejidad arbitraria.
Los usuarios y los desarrolladores suelen tener perspectivas diferentes sobre la
naturaleza del problema y realizan distintas suposiciones sobre la naturaleza de
la solucin.
Los requisitos de un sistema de software cambian frecuentemente durante su
desarrollo.
Es mantenimiento cuando se corrigen errores.
Es evolucin cuando se responde a requerimientos que cambian.

La dificultad de gestionar el proceso de desarrollo: El equipo de software debe
ofrecer ilusin de simplicidad al usuario. Nadie puede comprender
completamente el sistema a titulo individual. La cantidad de trabajo exige la
utilizacin de un equipo de desarrolladores y de forma ideal se utiliza un equipo
tan pequeo como sea posible. Con un equipo de desarrolladores, el reto clave
de la direccin es siempre mantener una unidad e integridad en el diseo.

2
La flexibilidad que se puede alcanzar a travs del software: el software ofrece la
flexibilidad mxima por lo que un desarrollador puede expresar casi cualquier
abstraccin. Esta flexibilidad resulta ser una propiedad que seduce
increblemente.

Los problemas que plantea la caracterizacin de sistemas discretos: Los
sistemas discretos por su propia naturaleza tienen un numero finito de estados
posibles; en sistemas grandes hay una explosin combinatoria que hace este
numero enorme. El principal problema reside en tratar de caracterizar sistemas
analgicos como el movimiento de la pelota lanzada (ya que es un sistema
continuo) . Cuando se afirma que un sistema que un sistema se describe con
una funcin continua, quiere decirse que no puede tener sorpresas ocultas.

Las consecuencias de la complejidad ilimitada: Cuanto ms complejo sea el
sistema mas abierto esta al derrumbamiento total. Nuestro fracaso en dominar
la complejidad del software lleva a proyectos retrasados, que exceden el
presupuesto y que son deficientes respecto a los requerimientos fijados. A esta
situacin se la llama la Crisis del software.


1.2 La estructura de los sistemas complejos.
Comportamiento emergente: el comportamiento del todo es mayor que la suma de
sus partes.
Los cinco atributos de un sistema complejo:
1. La complejidad toma la forma de una jerarqua.
Un sistema complejo se compone de subsistemas relacionados que tienen a
su vez sus propios subsistemas, y as sucesivamente, hasta que se alcanza
algn nivel nfimo de componentes elementales.
2. La eleccin de que componentes de un sistema son primitivos es
relativamente arbitraria y queda en gran medida a decisin del observador.
Lo que es primitivo para un observador puede estar a un nivel de
abstraccin mucho ms alto para otro.
3. Los enlaces internos de los componentes suelen ser ms fuertes que los
enlaces entre componentes.
Se relaciona con las mtricas de Alta Cohesin y Bajo Acoplamiento
4. Los sistemas jerrquicos estn compuestos usualmente de unas pocas clases
diferentes de subsistemas en varias combinaciones y disposiciones.
Los sistemas complejos tienen patrones comunes, estos pueden conllevar la
reutilizacin de componentes pequeos. Ej. Clulas que se encuentran en
plantas y animales.
5. Un sistema complejo que funciona ha evolucionado de un sistema simple
que funcionaba.
Complejidad organizada y desorganizada
El descubrimiento de abstracciones y mecanismos comunes facilita en gran medida la
comprensin de los sistemas complejos.
La mayora de los sistemas interesantes no contienen una sola jerarqua, en lugar de eso,
se encuentra que en un solo sistema complejo suelen estar presentes muchas jerarquas
diferentes.
Jerarqua estructural parte de, jerarqua de tipos es un.
3
Ej. El motor turbofan es un tipo de motor de propulsin a chorro, el cual forma parte
de un Jet.
Se llaman a esas jerarquas Estructuras de clases y Estructuras de objetos,
respectivamente.
Cada jerarqua esta dividida en capas, con las clases y objetos ms abstractos
construidos a partir de otros ms primitivos.
Existen colaboraciones estrechas entre objetos del mismo nivel de abstraccin.
De forma conjunta nos referimos a la estructura de clases y de objetos de un sistema
como su arquitectura.

1.3 Imponiendo orden al caos

Dijkstra sugiere Divide y vencers es esencial descomponer el problemas en
subproblemas que sean ms manejables - .
Descomposicin Algortmica.
o Diseo estructurado descendente. Cada modulo del sistema
representa a un paso importante del proceso global.
Descomposicin Orientada a Objetos.
o Cada objeto modela algn objeto del mundo real. Un objeto no es
mas que una unidad tangible que muestra un comportamiento bien
definido.

Categoras de mtodos de diseo
Un mtodo es un proceso disciplinado para generar un conjunto de modelos que
describen varios aspectos de un sistema de software en desarrollo. Una metodologa es
una coleccin de mtodos aplicados a lo largo del ciclo de vida del desarrollo del
software.
DOO Se deberan modelar sistemas de software como colecciones de objetos que
cooperan.
Ventajas de la descomposicin orientada a objetos
Produce sistemas ms pequeos a travs de la reutilizacin de mecanismos
comunes.
Sistemas ms resistentes al cambio, mejor preparados para evolucionar en el
tiempo.
El papel (rol) de la abstraccin
A travs de abstracciones los humanos somos capaces de comprender mecanismos y/o
cosas complejas Newton lo admiti secretamente a algunos amigos: comprenda
cmo se comportaba la gravedad, pero no cmo funcionaba -. De hecho el lenguaje es
una abstraccin necesaria para poder llevar a cabo una comunicacin.
El papel (rol) de la jerarqua
La estructura de clases resalta la estructura y comportamientos comunes dentro de un
sistema.
La identificacin de jerarquas en un sistema de software complejo suele ser fcil,
porque requiere que se descubran patrones entre muchos objetos.

1.4 Del diseo de los sistemas complejos.

El propsito del diseo es crear una estructura clara y relativamente simple

4
Los elementos de los mtodos de diseo del software
Notacin: Lenguaje para expresar cada modelo.
Proceso: Actividad que encamina a la construccin ordenada de los modelos
del sistema.
Herramientas: Artefactos que eliminan el tedio de construir el modelo.

El Diseo Orientado a Objetos es un mtodo que lleva a una descomposicin
Orientada a Objetos.

You might also like