<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SAGASOFT</title>
	<atom:link href="http://www.blog.sagasoft.es/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blog.sagasoft.es</link>
	<description>CoNqUeR tHe WoRlD!!</description>
	<lastBuildDate>Sun, 06 Sep 2009 16:05:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Diseño y Evaluación de Configuraciones: Ejercicios de autoevaluación (II)</title>
		<link>http://www.blog.sagasoft.es/2009/09/diseno-y-evaluacion-de-configuraciones-ejercicios-de-autoevaluacion-ii/</link>
		<comments>http://www.blog.sagasoft.es/2009/09/diseno-y-evaluacion-de-configuraciones-ejercicios-de-autoevaluacion-ii/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 16:05:55 +0000</pubDate>
		<dc:creator>SalMax</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.blog.sagasoft.es/?p=77</guid>
		<description><![CDATA[Indicar qué tipo de medidas sueles tomar para medir las prestaciones de un ordenador
Depende mucho del uso que le vaya a dar. Por ejemplo:

Para jugar uso mi PC de sobremesa. Ahí me importa mucho el rendimiento de la tarjeta gráfica y el procesador. Así que desde el punto de vista hardware, me fijo en qué [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Indicar qué tipo de medidas sueles tomar para medir las prestaciones de un ordenador</p></blockquote>
<p>Depende mucho del uso que le vaya a dar. Por ejemplo:</p>
<ul>
<li>Para jugar uso mi PC de sobremesa. Ahí me importa mucho el rendimiento de la tarjeta gráfica y el procesador. Así que desde el punto de vista hardware, me fijo en qué cantidad de memoria dedicada tiene la tarjeta de vídeo, tipo de procesador gráfico, memoria RAM disponible en mi PC y velocidad del procesador. Luego, alguna vez he ejecutado 3DMark como benchmark para medir el rendimiento gráfico de mi ordenador.</li>
<li>Cuando comencé a programar en Java y con Netbeans como entorno de desarrollo aplicaciones medianas, noté como el rendimiento de mi PC dejaba mucho que desear, así que comencé a monitorizar la CPU y la memoria RAM para ver dónde estaba el problema, tomando medidas cuando desplegaba el IDE, la aplicación que estaba desarrollando, etc, descubriendo que el 1GB de RAM de que disponía no era suficiente.</li>
</ul>
<blockquote><p>Indicar en qué casos de los que te encuentras en tu trabajo (u otro quehacer) diario necesitarás medir las prestaciones del ordenador.</p></blockquote>
<p>Bueno, hace no mucho estuve trabajando en una empresa de desarrollo de aplicaciones informáticas con software libre. Varios de nosotros trabajábamos sobre una máquina virtual. Dicha máquina virtual estaba alojada en un servidor UNIX. El problema, relacionado con la pregunta anterior, era que el rendimiento del entorno de desarrollo en Java (Netbeans) era muy pobre, hasta el punto de que en ocasiones simplemente escribir lineas de código era tedioso por los tiempos de espera.</p>
<p>Como los recursos de que disponía el servidor estaban limitados, tanto el administrador de sistemas como cada uno de los usuarios, tuvimos que empezar a tomar medidas de consumo de memoria  e ir haciendo pruebas hasta que encontramos un equilibrio razonable entre el rendimiento del IDE y la asignación de memoria RAM a la máquina virtual.</p>
<blockquote><p>Indicar en qué casos percibes una falta de prestaciones de los ordenadores que sueles manejar.</p></blockquote>
<p>Está claro que durante los juegos y cuando lanzo una aplicación tipo netbeans (memoria), básicamente porque mi PC tiene ya más de 4 años (un Pentium IV). Ni siquiera tengo puerto PCI Express para la tarjeta gráfica. En cuanto a la memoria RAM, aparte de tener solamente 1GB, el bus va a 266 Mhz, con lo que se acentúa el problema.</p>
<blockquote><p>Mirar qué servicios hay activos en nuestro ordenador personal y en algún otro ordenador al que tengamos acceso. ¿Qué usas para saber los servicios que hay activos? ¿Sabes lo que hacen? ¿Si suprimes alguno de ellos, qué pasa?</p></blockquote>
<p>Voy a centrarem en Windows. Normalmente sí que estoy pendiente de los servicios que tengo activos en mi PC, y procuro que haya sólo los justos, servicios de Microsoft, antivirus, servicios de la tarjeta gráfica y poco más. Procuro prescindir de servicios adicionales, ya que estoy escaso de memoria RAM y todos los recursos recursos que puedo liberar aumentan el rendimiento de mi PC.</p>
<p>En Windows Para ver los servicios que hay activos suelo usar el msconfig, y para ver los procesos que desencadenan dichos servicios, el administrador de tareas.</p>
<p>Cuando suprimimos algún servicio importante, que suelen ser los de Microsoft, lo que ocurre básicamente es que Windows se jode. Lo mismo te desaparece la barra de tareas, que te quedas sin internet&#8230; algunos no se pueden siquiera suprimir &#8220;en caliente&#8221; (hay que reinciar), y otros se vuelven a ejecutar automáticamente (como el servicio explorer).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.sagasoft.es/2009/09/diseno-y-evaluacion-de-configuraciones-ejercicios-de-autoevaluacion-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diseño y Evaluación de Configuraciones: Ejercicios de autoevaluación (I)</title>
		<link>http://www.blog.sagasoft.es/2009/03/diseno-y-evaluacion-de-configuraciones-ejercicios-de-autoevaluacion-i/</link>
		<comments>http://www.blog.sagasoft.es/2009/03/diseno-y-evaluacion-de-configuraciones-ejercicios-de-autoevaluacion-i/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 16:48:07 +0000</pubDate>
		<dc:creator>SalMax</dc:creator>
				<category><![CDATA[DEC]]></category>

		<guid isPermaLink="false">http://www.blog.sagasoft.es/?p=74</guid>
		<description><![CDATA[Mencionar sistemas operativos que no estén entre los que ya mencionados (Unix/Linux, WindowsNT/2K/XP/Vista, BSD)y el nicho de mercado que suelen cubrir.
Como hasta ahora las clasificaciones que he visto están hechas en función de la plataforma (Mainframes, Pcs de sobremesa, Plataformas móviles&#8230;), mi clasificación va a ser en función del tipo de núcleo.
Hay cuatro grandes tipos de [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Mencionar sistemas operativos que no estén entre los que ya mencionados (Unix/Linux, WindowsNT/2K/XP/Vista, BSD)y el nicho de mercado que suelen cubrir.</p></blockquote>
<p>Como hasta ahora las clasificaciones que he visto están hechas en función de la plataforma (Mainframes, Pcs de sobremesa, Plataformas móviles&#8230;), mi clasificación va a ser en función del tipo de núcleo.</p>
<p>Hay cuatro grandes tipos de núcleos:</p>
<ul>
<li>Los <strong>núcleos monolíticos</strong> facilitan abstracciones del hardware subyacente realmente potentes y variadas.</li>
<li>Los <strong>micronúcleos</strong> (en inglés <strong>microkernel</strong>) proporcionan un pequeño conjunto de abstracciones simples del hardware, y usan las aplicaciones llamadas <a title="Servidor" href="http://es.wikipedia.org/wiki/Servidor">servidores</a> para ofrecer mayor funcionalidad.</li>
<li>Los <strong>núcleos híbridos</strong> (<em>micronúcleos modificados</em>) son muy parecidos a los micronúcleos puros, excepto porque incluyen código adicional en el espacio de núcleo para que se ejecute más rápidamente.</li>
<li>Los <strong>exonúcleos</strong> no facilitan ninguna abstracción, pero permiten el uso de <a class="mw-redirect" title="Biblioteca (programa)" href="http://es.wikipedia.org/wiki/Biblioteca_(programa)">bibliotecas</a> que proporcionan mayor funcionalidad gracias al acceso directo o casi directo al hardware.</li>
</ul>
<p>Algunos ejemplos de micronúcleos:</p>
<ul>
<li><a class="mw-redirect" title="AIX" href="http://es.wikipedia.org/wiki/AIX">AIX</a></li>
<li>La familia de micronúcleos <a class="mw-redirect" title="L4 (microkernel)" href="http://es.wikipedia.org/wiki/L4_(microkernel)">L4</a></li>
<li>El micronúcleo <a title="GNU Mach" href="http://es.wikipedia.org/wiki/GNU_Mach">Mach</a>, usado en <a title="GNU" href="http://es.wikipedia.org/wiki/GNU">GNU</a> <a class="mw-redirect" title="Hurd" href="http://es.wikipedia.org/wiki/Hurd">Hurd</a> y en <a title="Mac OS X" href="http://es.wikipedia.org/wiki/Mac_OS_X">Mac OS X</a></li>
<li><a title="BeOS" href="http://es.wikipedia.org/wiki/BeOS">BeOS</a></li>
<li><a title="Minix" href="http://es.wikipedia.org/wiki/Minix">Minix</a></li>
<li><a title="MorphOS" href="http://es.wikipedia.org/wiki/MorphOS">MorphOS</a></li>
<li><a title="QNX" href="http://es.wikipedia.org/wiki/QNX">QNX</a></li>
<li><a title="RadiOS" href="http://es.wikipedia.org/wiki/RadiOS">RadiOS</a></li>
<li><a class="new" title="VSTa (aún no redactado)" href="http://es.wikipedia.org/w/index.php?title=VSTa&amp;action=edit&amp;redlink=1">VSTa</a></li>
<li><a class="mw-redirect" title="Hurd" href="http://es.wikipedia.org/wiki/Hurd">Hurd</a></li>
</ul>
<div>Monolíticos:</div>
<div>
<ul>
<li>Núcleos tipo <a title="Unix" href="http://es.wikipedia.org/wiki/Unix">Unix</a>
<ul>
<li><a title="Linux (núcleo)" href="http://es.wikipedia.org/wiki/Linux_(n%C3%BAcleo)">Linux</a></li>
<li><a title="Syllable" href="http://es.wikipedia.org/wiki/Syllable">Syllable</a></li>
<li><a title="Unix" href="http://es.wikipedia.org/wiki/Unix">Unix</a>
<ul>
<li><a title="Berkeley Software Distribution" href="http://es.wikipedia.org/wiki/Berkeley_Software_Distribution">BSD</a>
<ul>
<li><a title="FreeBSD" href="http://es.wikipedia.org/wiki/FreeBSD">FreeBSD</a></li>
<li><a title="NetBSD" href="http://es.wikipedia.org/wiki/NetBSD">NetBSD</a></li>
<li><a title="OpenBSD" href="http://es.wikipedia.org/wiki/OpenBSD">OpenBSD</a></li>
</ul>
</li>
<li><a title="Solaris (sistema operativo)" href="http://es.wikipedia.org/wiki/Solaris_(sistema_operativo)">Solaris</a></li>
<li><a title="Advanced Interactive Executive (AIX)" href="http://es.wikipedia.org/wiki/Advanced_Interactive_Executive_(AIX)">AIX</a></li>
</ul>
</li>
</ul>
</li>
<li>Núcleos tipo <a title="DOS" href="http://es.wikipedia.org/wiki/DOS">DOS</a>
<ul>
<li><a title="DR-DOS" href="http://es.wikipedia.org/wiki/DR-DOS">DR-DOS</a></li>
<li><a title="MS-DOS" href="http://es.wikipedia.org/wiki/MS-DOS">MS-DOS</a>
<ul>
<li>Sistemas operativos Microsoft Windows 9x (<a title="Windows 95" href="http://es.wikipedia.org/wiki/Windows_95">95</a>, <a title="Windows 98" href="http://es.wikipedia.org/wiki/Windows_98">98</a>, <a title="Windows 98" href="http://es.wikipedia.org/wiki/Windows_98">98SE</a>, <a class="mw-redirect" title="Windows Me" href="http://es.wikipedia.org/wiki/Windows_Me">Me</a>)</li>
</ul>
</li>
</ul>
</li>
<li>Núcleos del <a title="Mac OS" href="http://es.wikipedia.org/wiki/Mac_OS">Mac OS</a> hasta <a title="Mac OS 8" href="http://es.wikipedia.org/wiki/Mac_OS_8">Mac OS 8.6</a></li>
<li><a title="OpenVMS" href="http://es.wikipedia.org/wiki/OpenVMS">OpenVMS</a></li>
<li><a class="new" title="XTS-400 (aún no redactado)" href="http://es.wikipedia.org/w/index.php?title=XTS-400&amp;action=edit&amp;redlink=1">XTS-400</a></li>
</ul>
</div>
<div>Ejemplos de núcleos híbridos</div>
<div>
<ul>
<li><a title="Microsoft" href="http://es.wikipedia.org/wiki/Microsoft">Microsoft</a> <a title="Windows NT" href="http://es.wikipedia.org/wiki/Windows_NT">Windows NT</a>, usado en todos los sistemas que usan el código base de Windows NT</li>
<li><a title="XNU" href="http://es.wikipedia.org/wiki/XNU">XNU</a> (usado en <a title="Mac OS X" href="http://es.wikipedia.org/wiki/Mac_OS_X">Mac OS X</a>)</li>
<li><a class="mw-redirect" title="DragonFlyBSD" href="http://es.wikipedia.org/wiki/DragonFlyBSD">DragonFlyBSD</a></li>
<li><a title="ReactOS" href="http://es.wikipedia.org/wiki/ReactOS">ReactOS</a></li>
</ul>
</div>
<div><span style="font-size: 11px;"> Vía | <a href="http://es.wikipedia.org/wiki/Núcleo_(informática)">Wikipedia</a></span></div>
<div><span style="font-size: 11px;"><br />
</span></div>
<p><strong> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.sagasoft.es/2009/03/diseno-y-evaluacion-de-configuraciones-ejercicios-de-autoevaluacion-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Definición general de algoritmo y tipos de problemas</title>
		<link>http://www.blog.sagasoft.es/2009/01/definicion-general-de-algoritmo-y-tipos-de-problemas/</link>
		<comments>http://www.blog.sagasoft.es/2009/01/definicion-general-de-algoritmo-y-tipos-de-problemas/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 08:24:05 +0000</pubDate>
		<dc:creator>SalMax</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Algoritmos]]></category>

		<guid isPermaLink="false">http://www.blog.sagasoft.es/?p=60</guid>
		<description><![CDATA[Desde el punto de vista de la computación, podemos aceptar la siguiente definición de algoritmo:
Secuencia ordenada de datos exentos de ambigüedad y determinísticos tal que al llevarse a cabo con fidelidad dan como resultado que se realice la tarea para el que sea ha diseñado en un tiempo finito (se obtiene la solución del problema [...]]]></description>
			<content:encoded><![CDATA[<p>Desde el punto de vista de la computación, podemos aceptar la siguiente definición de algoritmo:</p>
<blockquote><p>Secuencia <span style="FONT-WEIGHT: bold">ordenada</span> de datos <span style="FONT-WEIGHT: bold">exentos de ambigüedad</span> y <span style="FONT-WEIGHT: bold">determinísticos</span> tal que al llevarse a cabo con fidelidad dan como resultado que se realice la tarea para el que sea ha diseñado en un <span style="FONT-WEIGHT: bold">tiempo finito</span> (se obtiene la <span style="FONT-WEIGHT: bold">solución</span> del problema planteado)</p></blockquote>
<p>Existen también algoritmos lingüísticos, pero quedan fuera del ámbito de este artículo.</p>
<p>Los algoritmos  en los que nos vamos a centrar son determinísticos, esto es, para unos mismos datos de entrada, producen siempre una salida y además es la misma. Existen también algoritmos no determinísticos o aleatorios.</p>
<p><span style="FONT-WEIGHT: bold">Propiedades</span> de los algoritmos:</p>
<ul>
<li><span style="FONT-WEIGHT: bold">Finitud:</span> Siempre acaban después de un número finito de etapas</li>
<li><span style="FONT-WEIGHT: bold">Precisión:</span> Cada etapa está debe estar definida de forma precisa y las acciones a realizar rigurosamente especificadas</li>
<li><span style="FONT-WEIGHT: bold">Entrada:</span> Necesita unos datos de entrada</li>
<li><span style="FONT-WEIGHT: bold">Salida:</span> Siempre produce una salida
</li>
<li><span style="FONT-WEIGHT: bold">Efectividad:</span> Todas las acciones que hay que realizar deben ser tan básicas como para que se puedan realizar exacatamente y en un tiempo finito.</li>
</ul>
<p>Pasos genéricos para la resolución de problemas de computación:</p>
<ul>
<li>Entender el problema</li>
<li>Análisis del problema</li>
<li style="FONT-WEIGHT: bold">Diseñar un algoritmo para el problema</li>
<li>Expresar el algoritmo como un programa</li>
<li>Ejecutar el programa correctamente
</li>
</ul>
<p>Estudio/Clasificación de problemas:</p>
<ul>
<li>Década 30: <span style="FONT-WEIGHT: bold">Problemas computables y no computables</span>. ¿Cuáles son los problemas abordables por un informático?<br />
Ejemplo de problema no abordable: Programa que tenga como entrada otro programa y sus datos de entrada y que responda en la salida a si el programa terminará algún día de hacer el cálculo. Es imposible resolver este problema, se conoce como &#8220;<span style="FONT-WEIGHT: bold">Problema de la parada</span>&#8221;
</li>
<li>Década 50: <span style="FONT-WEIGHT: bold">Complejidad de los problemas computables</span> (búsqueda de algoritmos más eficaces). ¿Presentan todos los problemas la misma dificultad? NO.<br />
Ejemplo: <span style="FONT-WEIGHT: bold">Problema del viajante de comercio</span> que tiene que visitar un número finito de ciudades. ¿Cómo hacerlo en un tiempo mínimo? Si tratamos de abordar el problema intuitivamente, buscando todas las rutas posibles y eligiendo luego la más corta, para n ciudades, tenemos n-n! rutas posibles. Es un número inabordable, de ahí la necesidad de buscar algoritmos más eficaces.</li>
<li>Década 70: Clasificación de los problemas computables: <span style="FONT-WEIGHT: bold">P y NP</span></li>
</ul>
<p>Problemas P y NP:</p>
<ul>
<li><span style="FONT-WEIGHT: bold">Problemas P</span>: Problemas para los que conozco un algoritmo que lo resuelve en un tiempo polinomial, asumiendo que es un tiempo eficiente.
</li>
<li><span style="FONT-WEIGHT: bold">Problemas NP</span>: Problemas no determinísticos. Sólo se pueden resolver de manera polinomial realizando una etapa aleatoria.</li>
</ul>
<p>
Vía | <a href="http://etsiit.ugr.es/planes/index.php?id=3&#038;id2=123">Teoría de Algoritmos [ETSIIT]</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.sagasoft.es/2009/01/definicion-general-de-algoritmo-y-tipos-de-problemas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sagasoft</title>
		<link>http://www.blog.sagasoft.es/2008/09/hola-mundo/</link>
		<comments>http://www.blog.sagasoft.es/2008/09/hola-mundo/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 09:40:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.blog.sagasoft.es/?p=1</guid>
		<description><![CDATA[

import es.sagasoft.salmax
import es.sagasoft.ronin
import es.sagasfot.palcraft

/**
* @Author SagaSoft
*/

public class Blog extends SagaTec {

public Post (Author autor){

autor.displayContent();
}

]]></description>
			<content:encoded><![CDATA[<pre name="code" class="java">

import es.sagasoft.salmax
import es.sagasoft.ronin
import es.sagasfot.palcraft

/**
* @Author SagaSoft
*/

public class Blog extends SagaTec {

public Post (Author autor){

autor.displayContent();
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.sagasoft.es/2008/09/hola-mundo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sistema de archivos: Directorios</title>
		<link>http://www.blog.sagasoft.es/2008/03/sistema-de-archivos-directorios/</link>
		<comments>http://www.blog.sagasoft.es/2008/03/sistema-de-archivos-directorios/#comments</comments>
		<pubDate>Sat, 08 Mar 2008 17:05:00 +0000</pubDate>
		<dc:creator>SalMax</dc:creator>
				<category><![CDATA[SOII]]></category>

		<guid isPermaLink="false">http://www.blog.sagasoft.es/2008/03/sistema-de-archivos-directorios/</guid>
		<description><![CDATA[*Nota: Para los directorios podíamos usar registros de tamaño fijo o variable. Como a efectos de lo que vamos a ver nos da igual, vamos a suponer registros de tamaño fijo.
Lo primero que vamos a ver es que hay dos formas de guardar la información en un directorio. La primera forma, o forma A es [...]]]></description>
			<content:encoded><![CDATA[<p>*Nota: Para los directorios podíamos usar registros de tamaño fijo o variable. Como a efectos de lo que vamos a ver nos da igual, vamos a suponer registros de tamaño fijo.</p>
<p>Lo primero que vamos a ver es que hay dos formas de guardar la información en un directorio. La primera forma, o forma A es guardar en cada entrada del directorio el nombre o identificador del archivo junto a sus atributos. La otra forma o forma B es guardar el nombre y una referencia a una estructura que mantiene los metadatos y que ya vamos a llamar por su nombre, <a href="http://es.wikipedia.org/wiki/Inodo">inodo</a>.</p>
<p>En un disco duro, donde el espacio es asignado en bloques, si elegimos la modalidad A, deberá haber siempre en todos los sistemas una cosa que vamos a llamar &#8216;/&#8217; y que se corresponde con el directorio inicial, el directorio raíz del sistema que ya explicaremos más detalladamente y a partir del cuál construiremos toda la jerarquía de directorios. Este nodo raíz, dependiendo de la modalidad, en este caso la A, en cada registro tendré o un directorio o un archivo (por ahora prescindiremos de los archivos de dispositivo), en el caso de los directorios con un atributo que lo identifique como tal, y todos sus atributos, incluyendo la localización. ¿Qué serán los metadatos de ese directorio? Pues &#8230;
<div class="blogger-post-footer"><img width='1' height='1' src='http://res1.blogblog.com/tracker/5015849064577464973-1432696520611348783.gif?l=diarioetsiit.blogspot.com'/></div>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.sagasoft.es/2008/03/sistema-de-archivos-directorios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sistema de archivos: Introducción</title>
		<link>http://www.blog.sagasoft.es/2008/02/sistema-de-archivos-introduccion/</link>
		<comments>http://www.blog.sagasoft.es/2008/02/sistema-de-archivos-introduccion/#comments</comments>
		<pubDate>Wed, 27 Feb 2008 12:08:00 +0000</pubDate>
		<dc:creator>SalMax</dc:creator>
				<category><![CDATA[SOII]]></category>

		<guid isPermaLink="false">http://www.blog.sagasoft.es/2008/02/sistema-de-archivos-introduccion/</guid>
		<description><![CDATA[Tema 1: Implementación del sistema de archivos


Introducción
Implementacion
Estructura de almacenamiento secundario

En la introducción, por si alguno tiene todavía la visión del usuario, intentaremos entender que un archivo realmente es una estructura de datos que tiene un sistema operativo para gestionar la información en disco. 
En cuanto a la implementación, hablaremos de las distintas maneras que hay [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Tema 1: Implementación del sistema de archivos</strong></p>
<p>
<ol>
<li><strong>Introducción<br /></strong></li>
<li><strong>Implementacion<br /></strong></li>
<li><strong>Estructura de almacenamiento secundario</strong></li>
</ol>
<p>En la <strong>introducción</strong>, por si alguno tiene todavía la visión del usuario, intentaremos entender que un archivo realmente es una estructura de datos que tiene un sistema operativo para gestionar la información en disco. </p>
<p>En cuanto a la <strong>implementación</strong>, hablaremos de las distintas maneras que hay de implementar este concepto de archivo y de dos cosas que son fundamentales en el sistema de archivos, que será algo parecido a la memoria que estudiamos en <span style="font-weight: bold;">SOI</span>.<br />Por una parte tenemos que saber como se gestiona el espacio en disco. Pensad en la analogía de proceso-archivo. Si en un proceso teníamos una estructura del siguiente tipo:</p>
<p><span style="font-family:courier new;"><span style="font-weight: bold;">STRUCT</span>{</span><br /><span style="font-family:courier new;">- MEMORIA:</span><br /><span style="font-family:courier new;">· Asignar(paginación, segmentación)</span><br /><span style="font-family:courier new;">· Gestionar (fragmentación, gestión de espacio libre)</span><br /><span style="font-family:courier new;">etc&#8230;</span><br /><span style="font-family:courier new;">}<span style="font-weight: bold;">PROCESO</p>
<p></span></span>En un archivo tendremos una estructura similar, de la siguiente forma:</p>
<p><span style="font-family:courier new;"><span style="font-weight: bold;">STRUCT</span>{</span><br /><span style="font-family:courier new;">- MEMORIA:</span><br /><span style="font-family:courier new;">· Asignar espacio en disco (bloque físico de disco, similar a paginación)</span><br /><span style="font-family:courier new;">- Campo1</span><br /><span style="font-family:courier new;">- Campo2</span><br /><span style="font-family:courier new;">&#8230;</span><br /><span style="font-family:courier new;">- CampoN</span><br /><span style="font-family:courier new;">(Aprenderemos qué hay en cada uno de estos registros)</span><br /><span style="font-family:courier new;">}<span style="font-weight: bold;">ARCHIVO</span></span></p>
<p>Esta estructura es la que hay que entender. Los campos nos permitirán gestionar u organizar los archivos mediante el sistema operativo. ¿Qué campos nos encontraremos? Lo iremos viendo a lo largo del tema. Un campo muy importante es de la memoria; volviendo a la analogía con los procesos, en el tema de la memoria vimos dos cosas muy claras: una cómo se asigna y otra cómo se gestiona. En los procesos, el campo de la memoria se encargaba de asignar un espacio en memoria principal, ya sea mediante paginación, segmentación o segmentación paginada, para que pudiera ejecutarse. En los archivos, en el campo de la memoria debemos tener igualmente alguna cosa que nos permita asignarle un espacio en disco.</p>
<p>En el espacio en disco, lo que varía con respecto a la memoria es que es mucho más inteligible en la organizacion porque si recordamos de SOI, la memoria estaba dividida en páginas o segmentos que conformaban el bloque de memoria; aquí en cambio, el bloque de memoria es el bloque físico, eso significa que cualquier medio de asignación de espacio en disco va a asignar espacio libremente por sectores de disco. Siempre lo asigna en unidades de bloque y podemos ver una analogía total entre bloque de disco y espacio en sistemas con paginación, porque realmente es cada una de las unidades en que se divide el espacio asignable y que tiene un tamaño fijo determinado por el sistema. </p>
<p>Con respecto a la asignación de espacio en disco, si hemos dicho que es totalmente análogo a la paginación, simplemente habrá que marcar, o habrá que tener una tabla de qué bloques están ocupados y qué bloques están libres.</p>
<p>Muchos campos se comparten con el proceso. Nomrbre, tamaño, memoria, protección&#8230;</p>
<p>Por último en cuanto a implementación, además de tener muy claro cómo se rellenan todos los campos, hay que tener una cosa adicional en cuenta, y es que desgraciadamente la organización de archivos se hace mediante directorios, aunque afortunadamente cada vez está más en deshuso. El directorio no es más que un tipo de archivo especial para organizar otros archivos, incluidos otros de tipo directorio.</p>
<p>
<p>La estructura de almacenamiento secundario no es más que una visión general para que entendamos la problemática, digamos, cómo se diseñan los algoritmos del sistema operativo teniendo en cuenta las características del dispositivo de almacenamiento. No vamos a hablar de flash ni de otra estructura de almacenamiento sino del clásico disco duro (digamos que las otras presentan menos problemas). El disco duro, si lo hemos estudiamos someramente un poco por encima veremos cómo se comportan las tasas de transferencia dentro del disco duro y cuándo se comporta mejor y peor. Intentaremos ver qué algoritmos, basándonos en esta información, podemos hacer para hacer lo más eficiente posible el acceso al a información en disco.</p>
<p><strong>1. INTRODUCCIÓN:</strong></p>
<p>De acuerdo con la transparencia el concepto de archivo viene definido de la siguiente forma:</p>
<ul>
<li>Colección de información relacionada y almacenada en un dispositivo de almacenamiento secundario. </li>
</ul>
<p>Empezaremos hablando de un atributo fundamental que falta en esta definición, el identificador. El nombre es tan importante que es un campo de la estructura Archivo. Ya tenemos la primera cosa relevante a rellenar. En un directorio tenemos los archivos identificados por el nombre. </p>
<ul>
<li>Espacio de direcciones lógicas contiguas</li>
</ul>
<p>Esto es muy interesante porque vuelve a ser una analogía cono lo visto en SOI. ¿Cómo separo el conjunto de direcciones lógicas del conjunto de direcciones virtuales de un proceso? En SOI vimos el conjunto de direcciones lógicas eran aquellas que podíamos colocar directamente en el contador de programa de la cpu para trabajar con ese programa. Respecto a las virtuales -> bloques <<min>></p>
<p>Para un programador de sistemas un archivo es una secuencia de bytes de tamaño N. Eso es lo que quiere decir espacio de direcciones lógicas contiguas. Y con eso podemos trabajar como nos dé la gana. Un programador de aplicaciones deberá tener en cuenta el tipo de codificación para un archivo (UTF-8,binario&#8230;) para nosotros, como programadores de sistemas, simplemente es una secuencia de bytes. Esto tiene que quedar muy claro, porque si por ejemplo hacemos un OPEN de un archivo y consideramos que el archivo se divide, por ejemplo en bloques de 4 bits, la información que extraigamos no tendrá ningún sentido. Por eso la unidad de información que usaremos será el byte.</min></p>
<ul>
<li>Estructura interna (lógica)<br />- Secuencia de bytes: El tipo de archivo determina su estructura (texto->caracteres,líneas y páginas; código fuente->secuencia de subrutinas y funciones).<br />- Secuencia de registros de longitud fija.<br />- Secuencia de registros de longitud variable.</li>
</ul>
<p>Como acabamos de decir, un archivo tendrá interpretaciones diferentes para el usuario final o para el programador de aplicaciones; para nosotros simplemente es una secuencia de bytes.<br />Lo de secuencia de registros de longitud fija y longitud variable es análogo a lo que vimos en memoria. Lo que tenemos que tener en cuenta es qué implica que yo, como programador de aplicaciones, tenga un archivo de registros de longitud fija o archivos de registros de longitud variable: Que, al igual que en paginación y segmentación, si tenemos bloques de tamaño variable, tenemos que tener asociado a cada bloque el tamaño del mismo. Eso es lo único que nos interesa.</p>
<ul>
<li>Tipos de archivos: regulares, directorios, de dispositivo</li>
</ul>
<p>Esto sí que es interesante, porque son los tres tipos de archivos que existen para un programador de sistemas. En primer lugar, todos los archivos de cualquier tipo son regulares.<br />¿Qué es un directorio entonces? Es un tipo especial de archivo que lo único que contiene es organización. Sólo contiene unos registros especiales que contienen el nombre y los atributos de cada archivo (o inodos, que ya veremos más adelante). Por cierto que todos estos registros son de longitud variable, ya que así lo es la longitud de los nombres de los archivos.</p>
<p>El tercer tipo ya tiene que ver un poco con otra cosa, ya que eso de los archivos de dispositivo es una abstracción. Es utilizar el sistema de archivos para contar una nivel, una capa superflua con respecto a los drivers. </p>
<p>&#8230; en el hardware debe haber un controlador. Cuando ya entramos en la parte del sistema operativo, debe haber un driver [min 19]. Normalmente el driver implementa una interfaz independiente de dispositivo. Esto es lo que necesita el núcleo del SO para trabajar. ¿Por qué es idnependiente? [19:45]. Ejemplo con read. [21]. Los archivos son la abstracción para el programador de aplicaciones. Tú puedes hacer que determinados archivos representen un dispositivo concreto.</p>
<p>[extensión, inciso prácticas 26]</p>
<p><strong>Atributos (metadatos):</strong></p>
<p>Los atributos o metadatos son los campos que yo relleno en la estructura tipo archivo para que el sistema operativo gestione los mismos.</p>
<ul>
<li>Nombre: Única información en formato legible</li>
</ul>
<p>Aquí ya vemos lo que faltaba en la definición incial, el nombre. Tan importante es el nombre que es el único elemento que es visible para el usuario.</p>
<ul>
<li>Tipo: Cuando el sistema soporte diferentes tipos</li>
</ul>
<p>Por ejemplo, ¿qué tipos de archivos soporta linux o windows? En general los tipos regulares, que ya sabemos que son todos, o por ejemplo los tipos &#8220;acceso directo&#8221;, que todos intuitivamente sabemos lo que son. Los de dispositivo, los directorios&#8230; </p>
<ul>
<li>Localización: Información sobre su localización en el dispositivo.</li>
</ul>
<p>Esto es muy importante. &#8230; esto es lo que hablábamos de la memoria en SOI [?28] . Esto depende del tema de la asignación de espacio en disco. Es un campo tan importante como el de memoria.</p>
<ul>
<li>Tamaño: Tamaño actual del archivo.</li>
</ul>
<p>Esto está claro. Normalmente usamos &#8220;size&#8221; para referirnos a ese campo.</p>
<ul>
<li>Protección: Controla quién puede leer, escribir y ejecutar.</li>
</ul>
<p>Esto está claro. Realmente esta definición no está del todo bien pero sirve para aprender.  La protección dice <strong>quién</strong> puede hacer <strong>qué</strong> operaciones. Las operaciones clásicas que se permiten hacer sobre un archivo son leer, escribir y ejecutar (r,w,x)</p>
<ul>
<li>Tiempo, fecha e identificación del usuario: necesario para protección, seguridad y monitorización</li>
</ul>
<p><span style="font-weight: bold;">Operaciones de gestión</span>:</p>
<p>Llamamos operaciones de gestión a las que son típicas que yo construiría con un tipo de tipo abstracto (pila, cola&#8230;) ¿cuáles?
<ul>
<li>Crear</li>
</ul>
<p>Se crea un archivo, que es una estructura, y me pongo a rellenar campos.
<ul>
<li>Borrar</li>
</ul>
<p>Obviamente puedo eliminar cualquier tipo de archivo.
<ul>
<li>Renombrar</li>
</ul>
<p>Esto es una operación superchorra que nos permite cambiar el nombre del archivo, simplemente
<ul>
<li>Copiar</li>
</ul>
<p>Es necesario que tengamos esto claro para cuando veamos los archivos tipo enlace. Requiere encontrar un sitio nuevo, un nombre nuevo y cada uno de los bloques de disco asignados al primer archivo tendrán que estar asociados al segundo archivo. Hay que reservar un montón de bloques nuevos. &#8230; problemas de inconsistencia [35-38]
<ul>
<li>Establecer y obtener atributos</li>
</ul>
<p>Esto es lo típico de los datos abstractos cuando hacemos &#8220;get&#8221; o &#8220;set&#8221;.</p>
<p><span style="font-weight: bold;">Operaciones de procesamiento:</span></p>
<p>Esto es más difícil, es la administración. Una cosa es crearle la estructura, cambiarle el nombre, hacer una copia. Ahora cuidado, ¿qué se hace con los archivos? Esto son operaciones generales
<ul>
<li>Abrir y cerrar</li>
</ul>
<p>¿Abrir y cerrar por qué? Es simplemente una corriente entre el dispositivo de almacenamiento del archivo y la memoria RAM. Implica que una vez que he abierto un archivo, como la información está en disco tengo que traérmela a memoria. Mientras tengo el archivo abierto lo mantendré en memoria, y cuando lo cierre lo devolveré al disco duro.
<ul>
<li>Leer y escribir</li>
</ul>
<p>Escribir engloba que puedes modificar, que puedes insertar, si el archivo no es de acceso secuencial no vas a poder hacerlo en cualquier sitio. Si lo pudieras hacer, para nosotros, que un archivo es una secuencia de bytes con un puntero de lectura y escritura que nosotros podemos colocar donde queramos. Esto da problemas que ya contaremos.<br />Leer entonces será leer alguno de los bytes del archivo y escribir será escribir alguno de los bytes de nuestro archivo.</p>
<p>
</p>
<div class="blogger-post-footer"><img width='1' height='1' src='http://res1.blogblog.com/tracker/5015849064577464973-418488947655078312.gif?l=diarioetsiit.blogspot.com'/></div>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.sagasoft.es/2008/02/sistema-de-archivos-introduccion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FTC: Agrupaciones de elementos</title>
		<link>http://www.blog.sagasoft.es/2007/10/ftc-agrupaciones-de-elementos/</link>
		<comments>http://www.blog.sagasoft.es/2007/10/ftc-agrupaciones-de-elementos/#comments</comments>
		<pubDate>Mon, 29 Oct 2007 15:34:00 +0000</pubDate>
		<dc:creator>SalMax</dc:creator>
				<category><![CDATA[FTC]]></category>

		<guid isPermaLink="false">http://www.blog.sagasoft.es/2007/10/ftc-agrupaciones-de-elementos/</guid>
		<description><![CDATA[- Resistencias:

Serie
Paralelo

- Condensadores:

Serie
Paralelo

- Fuentes de tensión en serie- Fuentes de intensidad en paralelo
- Resistencias en serie: Están en serie si al intensidad que pasa por ellas es la misma y las podemos sustituir por una resistencia equivalente cuyo valor es:

- Resistencias en paralelo:Están en paralelo si tienen la misma diferencia de potencial

]]></description>
			<content:encoded><![CDATA[<p>- Resistencias:
<ul>
<li>Serie</li>
<li>Paralelo</li>
</ul>
<p>- Condensadores:
<ul>
<li>Serie</li>
<li>Paralelo</li>
</ul>
<p>- Fuentes de tensión en serie<br />- Fuentes de intensidad en paralelo</p>
<p>- Resistencias en serie:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_MBtX4xp51RM/RyYBXoaOYoI/AAAAAAAAADc/6U_4l8fOTSw/s1600-h/resistencias_serie.PNG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_MBtX4xp51RM/RyYBXoaOYoI/AAAAAAAAADc/6U_4l8fOTSw/s400/resistencias_serie.PNG" alt="" id="BLOGGER_PHOTO_ID_5126786731303920258" border="0" /></a> Están en serie si al<span style="font-weight: bold;"> intensidad</span> que pasa por ellas es la misma y las podemos sustituir por una resistencia equivalente cuyo valor es:
<div style="text-align: center;"><img src="http://www.forkosh.dreamhost.com/mimetex.cgi?%5Cnormalsize%20R_eq%20=%20R_1%20+%20R_2%20+%20R_3" align="middle" border="0" /></div>
<p>- Resistencias en paralelo:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_MBtX4xp51RM/RyYcCYaOYpI/AAAAAAAAADk/N195rhtB7n0/s1600-h/resistencias_paralelo.PNG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_MBtX4xp51RM/RyYcCYaOYpI/AAAAAAAAADk/N195rhtB7n0/s400/resistencias_paralelo.PNG" alt="" id="BLOGGER_PHOTO_ID_5126816053045650066" border="0" /></a>Están en paralelo si tienen la misma diferencia de potencial
<div class="blogger-post-footer"><img width='1' height='1' src='http://res1.blogblog.com/tracker/5015849064577464973-985311698189812404.gif?l=diarioetsiit.blogspot.com'/></div>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.sagasoft.es/2007/10/ftc-agrupaciones-de-elementos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ISI 18-10-2007: Principios de diseño:</title>
		<link>http://www.blog.sagasoft.es/2007/10/isi-18-10-2007-principios-de-diseno/</link>
		<comments>http://www.blog.sagasoft.es/2007/10/isi-18-10-2007-principios-de-diseno/#comments</comments>
		<pubDate>Sat, 20 Oct 2007 18:41:00 +0000</pubDate>
		<dc:creator>SalMax</dc:creator>
				<category><![CDATA[ISI]]></category>

		<guid isPermaLink="false">http://www.blog.sagasoft.es/2007/10/isi-18-10-2007-principios-de-diseno/</guid>
		<description><![CDATA[PRINCIPIOS DE DISEÑO:


Hay que tener en cuenta enfoques alternativos.
Debemos poder rastrear el diseño hasta el modelo del análisis.
No hay que reinventar lo ya inventado (patrones de diseño).
La separación entre dominio del problema y dominio de la solución debe ser minimizada.
El diseño debe ser uniforme e íntegro.
Se tiene que estructurar el diseño para facilitar los cambios.
Debe [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-weight: bold;">PRINCIPIOS DE DISEÑO:</span>
<div>
<ul>
<li>Hay que tener en cuenta enfoques alternativos.</li>
<li>Debemos poder rastrear el diseño hasta el modelo del análisis.</li>
<li><span style="font-weight: bold;">No hay que reinventar lo ya inventado (patrones de diseño)</span>.</li>
<li>La separación entre dominio del problema y dominio de la solución debe ser minimizada.</li>
<li>El diseño debe ser uniforme e íntegro.</li>
<li>Se tiene que estructurar el diseño para facilitar los cambios.</li>
<li>Debe ser flexible para que pueda admitir los cambios con facilidad.</li>
<li>El diseño no es escribir código y escribir código no es diseñar.</li>
<li>La calidad de un diseño hay que evaluarla durante su realización, no una vez terminado.</li>
<li>Es importante revisar el diseño en busca de errores conceptuales (semánticos)</li>
</ul>
<p> La I.S. tiene estos principios universales en los que basarse. Lo más destacable es que tenemos que plantearnos si el problema está ya resuelto y documentado: &#8220;no inventes lo que ya está inventado&#8221;.<br />Principios específicos de diseño: son cuatro (trans):
<ul>
<li>Modularidad</li>
<li>Abstracción</li>
<li>Independencia funcional</li>
<li>Ocultamiento de información</li>
</ul>
<p>Hay que tratar de conseguirlos.</p>
<p><span style="font-weight: bold;">Modularidad:</span><br />¿Qué es la modularidad? ¿Cómo tienen que ser nuestros diseños? Nuestro diseños debe de componer de piezas y sus relaciones entre ellas.<br />Es necesario dividir el software, de manera lógica, en un conjunto de módulos, donde cada uno realiza una sola actividad y con una interfaz bien definida.<br />Estos módulos tienen una serie de características:
<ul>
<li>Debe de tener un nombre que lo identifique.</li>
<li>Debe tener algo que diga donde empieza y donde acaba</li>
</ul>
<p>Lo mínimo que nos podemos encontrar con forma de módulo es una función. Una pieza un poco más grande sería una clase, ya que incluye un conjunto de funciones. Lo siguiente que nos podemos encontrar son los paquetes, que son un conjunto de clases relacionadas y en las que definimos relaciones de jerarquía. Por encima de estos están los componentes, conjuntos de paquetes que representan nuestros subsistemas.<br />Beneficios de la modularidad:
<ul>
<li>Son mas fáciles de entender y de documentar.</li>
<li>Facilitamos los cambios.</li>
<li>Reducimos la complejidad.</li>
<li>Obtenemos implementación mas sencillas.</li>
<li>Posibilitamos el desarrollo en paralelo.</li>
<li>Posibilitamos la prueba independiente.</li>
</ul>
<p>¿Qué grado de modularidad es necesario?<br />Mientras más módulos tengamos, menos esfuerzo tendremos que emplear para hacer cada módulo. Sin embargo más esfuerzo tendremos que emplear en la comunicación entre tantas piezas. Esta relación la podemos ver en la siguiente gráfica.</p>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_MBtX4xp51RM/Rx4imnWQWHI/AAAAAAAAADU/siJsGZo3q40/s1600-h/2-1_Modularidad.PNG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_MBtX4xp51RM/Rx4imnWQWHI/AAAAAAAAADU/siJsGZo3q40/s400/2-1_Modularidad.PNG" alt="" id="BLOGGER_PHOTO_ID_5124571472786905202" border="0" /></a><span style="font-weight: bold;">Abstracción:</span><br />Mediante la abstracción vamos destacando los elementos importantes del sistema, para después ir detallándolos en distintos niveles de abstracción, volviendo a identificar los elementos importantes en cada nivel. Es decir, la abstracción es el mecanismo que nos permite determinar qué es relevante y qué no lo es en un nivel de detalle determinado.<br />Mecanismos de abstracción en el diseño:
<ul>
<li><span style="font-weight: bold;">Abstracción procedimental</span>: Estructura modular basada en procedimientos. Se abstrae sobre el funcionamiento. Describimos a grandes rasgos qué hace nuestro módulo, sin decir cómo lo hace.</li>
<li><span style="font-weight: bold;">Abstracción de datos:</span> Abstraemos el estado de nuestro módulo (atributos) y su funcionamiento. Aquí definimos por ejemplo las clases.</li>
<li><span style="font-weight: bold;">Abstracción de control:</span> Abstrae el flujo de control de cualquier proceso en general. Por ejemplo, los iteradores son un mecanismo de abstracción de control sobre estructuras repetitivas. De hecho las mismas estructuras repetitivas son una abstracción de control</li>
<li><span style="font-weight: bold;">Refinamiento por pasos:</span> Desarrollar un programa paso a paso partiendo de sentencias macroscópicas hasta llegar a nivel de sentencia en un lenguaje de programación</li>
</ul>
<p><span style="font-weight: bold;">Independencia funcional:</span><br />Está referido a las piezas y a que sean lo más independientes posibles entre ellas. Que cada módulo se ocupe de una tarea específica o un conjunto de tareas relacionadas entre ellas.<br />¿Por qué independencia funcional?
<ul>
<li>Se pueden compartir las funciones.</li>
<li>Es más fácil de reutilizar.</li>
<li>Son mas fáciles de mantener y probar.</li>
<li>Se reduce la propagación de errores.</li>
<li>Se simplifican las interfaces.</li>
</ul>
<p>La independencia funcional se mide mediante dos parámetros:
<ul>
<li>COHESIÓN.</li>
<li>ACOPLAMIENTO.</li>
</ul>
<p><span style="font-weight: bold;">Ocultamiento de información:</span><br />Que a los datos privados de cada módulo sólo tenga acceso el propio módulo. Entre módulos se comunican mediante envío de mensajes, nunca dejando acceso directo a los datos privados. Es conveniente distinguir entre encapsulación y ocultamiento de de información. Encapsulación es el concepto de coger determinados elementos y agruparlos como una entidad, mientras que el oculta miento consiste en hacer que parte de esos elementos no sean accesibles desde fuera del módulo.<br />Ventajas del ocultamiento de información:
<ul>
<li>Reduce la probabilidad de “efectos colaterales”.</li>
<li>Limita el impacto global de las decisiones de diseño local.</li>
<li>Enfatiza la comunicación a través de interfaces controladas.</li>
<li>Disminuye el uso de datos globales.</li>
<li>Conduce al encapsulamiento (un atributo de diseño de alta calidad).</li>
<li>Produce software de alta calidad</li>
</ul>
</div>
<div class="blogger-post-footer"><img width='1' height='1' src='http://res1.blogblog.com/tracker/5015849064577464973-5401075456935529713.gif?l=diarioetsiit.blogspot.com'/></div>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.sagasoft.es/2007/10/isi-18-10-2007-principios-de-diseno/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ISI 18-10-2007: Diseño de Interfaces</title>
		<link>http://www.blog.sagasoft.es/2007/10/isi-18-10-2007-diseno-de-interfaces/</link>
		<comments>http://www.blog.sagasoft.es/2007/10/isi-18-10-2007-diseno-de-interfaces/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 18:01:00 +0000</pubDate>
		<dc:creator>SalMax</dc:creator>
				<category><![CDATA[ISI]]></category>

		<guid isPermaLink="false">http://www.blog.sagasoft.es/2007/10/isi-18-10-2007-diseno-de-interfaces/</guid>
		<description><![CDATA[El otro día terminamos el diseño arquitectónico. Hoy veremos el diseño de interfaces:
DISEÑO DE INTERFACES:

El diseño de la interfaz de la base de datos lo dejamos fuera ya que se ve con más detalle en la asignatura de Bases de Datos.
- Interfaz de usuario:Permite la comunicación entre el sistema y el usuario. Para diseñarla tenemos [...]]]></description>
			<content:encoded><![CDATA[<p>El otro día terminamos el diseño arquitectónico. Hoy veremos el diseño de interfaces:</p>
<p><span style="FONT-WEIGHT: bold">DISEÑO DE INTERFACES:</span></p>
<p>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_MBtX4xp51RM/RxjMQHWQWCI/AAAAAAAAACs/GFhncUQl_2U/s1600-h/2-1_Interfaces_Design.PNG"><img id="BLOGGER_PHOTO_ID_5123069153356306466" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_MBtX4xp51RM/RxjMQHWQWCI/AAAAAAAAACs/GFhncUQl_2U/s400/2-1_Interfaces_Design.PNG" border="0" /></a>El diseño de la interfaz de la base de datos lo dejamos fuera ya que se ve con más detalle en la asignatura de Bases de Datos.</p>
<p><span style="FONT-WEIGHT: bold">- Interfaz de usuario</span>:<br />Permite la comunicación entre el sistema y el usuario. Para diseñarla tenemos muchas herramientas que nos ayudan, de las cuales una de las más usadas el diseño de prototipos:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_MBtX4xp51RM/RxjNiHWQWDI/AAAAAAAAAC0/6EYkwN3wD-k/s1600-h/2-1_Interfaz+de+usuario.PNG"><img id="BLOGGER_PHOTO_ID_5123070562105579570" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_MBtX4xp51RM/RxjNiHWQWDI/AAAAAAAAAC0/6EYkwN3wD-k/s400/2-1_Interfaz+de+usuario.PNG" border="0" /></a><br />Casi todos los elementos de la interfaz se colocan dentro de ese diseño usando determinados símbolos. Automáticamente diseñamos la interfaz en un entorno gráfico sin necesidad de programar código (jbuilder), definiendo las características de la ventana, menús, botones, acciones&#8230; etc. En definitiva tenemos muchas facilidades para el diseño de la interfaz y el esquema de prototipos permite un desarrollo rápido.</p>
<p><span style="FONT-WEIGHT: bold">- El diseño de los datos:</span><br />Tenemos que partir del análisis, de donde obtenemos un esquema u otro en el que esté representada la arquitectura de información que hay en el problema. En el análisis vamos a tener el conjunto de entidades y relaciones, por ejemplo. En el diseño nos preocupamos de ese esquema y de traducirlo, en este caso a un modelo relacional, que es un diseño de tablas donde contemplamos esas relaciones y entidades.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_MBtX4xp51RM/RxpGmHWQWFI/AAAAAAAAADA/3MFGVWcxXds/s1600-h/2-1_Datos_Design.PNG"><img id="BLOGGER_PHOTO_ID_5123485146708727890" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_MBtX4xp51RM/RxpGmHWQWFI/AAAAAAAAADA/3MFGVWcxXds/s400/2-1_Datos_Design.PNG" border="0" /></a> Ya nos queda implementar esas tablas haciendo uso de algunas herramientas de bases de datos relacionales. Obviamente esto funciona cuando usamos un modelo entidad-relación, con otros son diferentes.</p>
<p><span style="FONT-WEIGHT: bold">- El diseño de componentes:</span><br />¿Donde se quedo el diseño arquitectónico? En el diseño de componentes, identificando cada uno de los subsistemas. ¿Ahora qué nos queda? Tenemos que definir esas piezas, y eso es lo que hace el diseño de componentes. Ahí tenemos cosas más elementales, en las que podamos usar herramientas de este tipo:<img id="BLOGGER_PHOTO_ID_5123488204725442658" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_MBtX4xp51RM/RxpJYHWQWGI/AAAAAAAAADI/Ys6rZfRMU28/s400/2-1_Componentes_Design.PNG" border="0" /></p>
<p>En la imagen podemos ver el uso de dos herramientas (pseudocódigo y diagramas de flujo de control) para describir un módulo concreto (proceso de un registro). Formalmente el diseño de componentes se define como la descripción procedimental de cada uno de los componentes elementales de la arquitectura.</p>
<p>Y con esto acabamos con todas las tereas que hay que hacer en el diseño: Disepo <strong>arquitectónico</strong>, diseño <strong>de datos</strong>, de la <strong>interfaz de usuario</strong> y diseño de cada uno de los <strong>componentes</strong> del diseño arquitectónico.</p>
<div class="blogger-post-footer"><img width='1' height='1' src='http://res1.blogblog.com/tracker/5015849064577464973-7749076207911056294.gif?l=diarioetsiit.blogspot.com'/></div>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.sagasoft.es/2007/10/isi-18-10-2007-diseno-de-interfaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FTC : Ejercicios con elementos lineales I</title>
		<link>http://www.blog.sagasoft.es/2007/10/ftc-ejercicios-con-elementos-lineales-i/</link>
		<comments>http://www.blog.sagasoft.es/2007/10/ftc-ejercicios-con-elementos-lineales-i/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 17:33:00 +0000</pubDate>
		<dc:creator>SalMax</dc:creator>
				<category><![CDATA[FTC]]></category>

		<guid isPermaLink="false">http://www.blog.sagasoft.es/2007/10/ftc-ejercicios-con-elementos-lineales-i/</guid>
		<description><![CDATA[




-  Es la intensidad que baja por la resistencia de 2k



]]></description>
			<content:encoded><![CDATA[<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_MBtX4xp51RM/RxefMHWQWBI/AAAAAAAAACk/DxUYL7_IBYA/s1600-h/ejercicio1%282%29.GIF"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_MBtX4xp51RM/RxefMHWQWBI/AAAAAAAAACk/DxUYL7_IBYA/s400/ejercicio1%282%29.GIF" alt="" id="BLOGGER_PHOTO_ID_5122738131636869138" border="0" /></a><br /><span style="text-decoration: underline;"></span></p>
<p><span style="text-decoration: underline;"><br /></span><img src="http://www.forkosh.dreamhost.com/mimetex.cgi?V_%7B1K%7D%20=%20%281V%20-%200V%29%20=%20I_%7B1K%7D%201K%20=%201mA" align="middle" border="0" /></p>
<p><img src="http://www.forkosh.dreamhost.com/mimetex.cgi?99I_b%20+%20I_b%20=%20I_%7B1K%7D%20=%201mA" align="middle" border="0" /></p>
<p><img src="http://www.forkosh.dreamhost.com/mimetex.cgi?I_b%20=%200%2701mA" align="middle" border="0" /></p>
<p><img src="http://www.forkosh.dreamhost.com/mimetex.cgi?99I_b%20%5Capprox%201mA" align="middle" border="0" /></p>
<p>- <img src="http://www.forkosh.dreamhost.com/mimetex.cgi?I_2" align="middle" border="0" /> Es la intensidad que baja por la resistencia de 2k</p>
<p><img src="http://www.forkosh.dreamhost.com/mimetex.cgi?I_2%20=%2099I_b" align="middle" border="0" /></p>
<p><img src="http://www.forkosh.dreamhost.com/mimetex.cgi?%285V%20-%20V_0%29%20=%201mA%202K%20%5Clongrightarrow%20V_0%20%5Capprox%203V" align="middle" border="0" />
<div class="blogger-post-footer"><img width='1' height='1' src='http://res1.blogblog.com/tracker/5015849064577464973-958692943186944001.gif?l=diarioetsiit.blogspot.com'/></div>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.sagasoft.es/2007/10/ftc-ejercicios-con-elementos-lineales-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
