<?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>Computacion e Informatica &#187; Ingenieria de Software</title>
	<atom:link href="http://www.rodolfoquispe.org/blog/category/ingenieria-de-software/feed" rel="self" type="application/rss+xml" />
	<link>http://www.rodolfoquispe.org/blog</link>
	<description>Ingenieria de Software (Ingenieria Web); Sistemas y Tecnologias de la Informacion para la Gestion Empresarial …</description>
	<lastBuildDate>Tue, 31 Jan 2012 05:47:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>¿Que son los Metodos Formales?</title>
		<link>http://www.rodolfoquispe.org/blog/que-son-los-metodos-formales.php</link>
		<comments>http://www.rodolfoquispe.org/blog/que-son-los-metodos-formales.php#comments</comments>
		<pubDate>Sun, 15 Feb 2009 15:53:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ingenieria de Software]]></category>

		<guid isPermaLink="false">http://www.rodolfoquispe.org/blog/?p=141</guid>
		<description><![CDATA[Como citar este artículo: Rodolfo Quispe-Otazu. ¿Que son los Metodos Formales?. Blog de Rodolfo Quispe-Otazu [Internet]. Febrero 2009. Disponible en: http://www.rodolfoquispe.org/blog/que-son-los-metodos-formales.php Introduccion La calidad del software es una de las problematicas mas importantes en los procesos de desarrollo de software. Garantizar el correcto funcionamiento bajo situaciones no determinadas es una tarea que tiene que ser [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Como citar este artículo:</strong><br />
<em>Rodolfo Quispe-Otazu. ¿Que son los Metodos Formales?. Blog de Rodolfo Quispe-Otazu [Internet]. Febrero 2009. Disponible en: http://www.rodolfoquispe.org/blog/que-son-los-metodos-formales.php</em></p>
<p style="text-align: center;"><img class="aligncenter" src="/img/post/img-post141.jpg" alt="¿Que son los Metodos Formales?" /></p>
<p><strong>Introduccion</strong></p>
<p>La <a href="http://www.rodolfoquispe.org/blog/que-es-la-calidad-de-software.php" target="_self">calidad del software</a> es una de las problematicas mas importantes en los procesos de desarrollo de software. Garantizar el correcto funcionamiento bajo situaciones no determinadas es una tarea que tiene que ser realizada con cuidado extremo. En algunos casos, este tipo de pruebas son de mayor importancia, ya que involucran ambientes sensibles e informacion critica en donde es necesario garantizar que cada uno de los componentes involucrados (hardware, software y componentes humanos) actue de manera correcta ante situaciones especificas, con una variedad de ejemplos que cubren areas tan diversas como planeacion de trafico, aplicaciones militares  y sistemas medicos, entre muchas otras.</p>
<p>Los modelos formales presentan una alternativa practica para solucionar estos problemas. Constituyen un enfoque analitico para la especificacion, diseño y verificacion de sistemas de hardware y software. Su caracteristica principal es la rigurosidad en la que sus modelos se encuentran basados, con fundamentos en solidos principios matematicos que permiten definir con precision y sin temor a ambiguedades las necesidades de un sistema. Gracias a estos fundamentos, el software generado mediante metodos formales puede ser verificado mediante el cumplimiento de propiedades derivadas de la especificacion. Este enfoque ha resultado ser exitoso frente a otras tendencias, encontrando errores en diseño que dificilmente habrian podido ser considerados usando otras tecnicas.</p>
<p><strong>Definiciones: Metodos Formales</strong></p>
<p>Una de las metas de la <a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria del Software</a> es lograr que los desarrolladores construyan sistemas confiables independientemente de su complejidad. Una forma de alcanzar esta meta es a través del uso de Métodos Formales (MF): técnicas, lenguajes y herramientas definidos matemáticamente, para especificar y verificar tales sistemas. El uso de MF propicia la confiabilidad y la seguridad de un sistema, al aumentar la comprensión acerca de un sistema revelando inconsistencias, ambigüedades e incompletitudes, que de otra manera pasan desapercibidas. [L. Mendoza, M. Pérez y M. Capel]</p>
<p>Los métodos formales que se utilizan para desarrollar sistemas de computadoras son técnicas de base matemática para describir las propiedades del sistema. Estos métodos formales proporcionan marcos de referencia en el seno de los cuales las personas pueden especificar, desarrollar y verificar los sistemas de manera sistemática, en lugar de hacerlo ad hoc. [John J. Marciniak]</p>
<p>Los metodos formales representan un conjunto de tendencias de desarrollo de software y hardware en donde la especificacion, verificacion y diseño de componentes se realiza mediante notaciones, lenguajes, herramientas y tecnicas basadas en teorias con solida fundamentacion matematica. El uso de notaciones y lenguajes formales permite plantear de manera clara los requerimientos de un sistema, generando especificaciones que definen el comportamiento en terminos del &#8220;que debe hacer&#8221; y no del &#8220;como lo hace&#8221;. [Hugo A. Lopez A.]</p>
<p>Los metodos formales permiten al ingeniero del software crear una especificación sin ambigüedades que sea más completa y constante que las que se utilizan en los métodos convencionales u orientados a objetos. La teoría de conjuntos y las notaciones lógicas se utilizan para crear una sentencia clara de hechos (o de requisitos). Esta especificación matemática entonces se puede analizar para comprobar que sea correcta y constante. Como esta especificación se crea utilizando notaciones matemáticas inherentemente es menos ambigua que los nodos informales de presentación. [Roger Pressman]</p>
<p>En <a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria del Software</a> un método formal es un camino a la construcción y análisis de modelos matemáticos que permitan una automatización del desarrollo de sistemas informáticos. Los métodos formales se caracterizan por emplear técnicas y herramientas matemáticas para lograr una facilitación a la hora de encarar la construcción o el análisis de un modelo matemático de un sistema. [Wikipedia]</p>
<p><strong>Los diez mandamientos de los metodos formales</strong></p>
<p>La decisión de hacer uso de los métodos formales en el mundo real no debe de adoptarse a la ligera. Bowen y Hinchley  han acuñado los diez mandamientos de los métodos formales, como guía para aquellos que estén a punto de embarcarse en este importante enfoque de la <a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria del Software</a>.</p>
<ol>
<li><strong>Seleccionarás la notación adecuada.</strong> Con objeto de seleccionar eficientemente dentro de la amplia gama de lenguajes de especificación formal existente, el ingeniero del software deberá considerar el vocabulario del lenguaje, el tipo de aplicación que haya que especificar y el grado de utilización del lenguaje.</li>
<li><strong>Formalizarás, pero no de más.</strong> En general, resulta necesario aplicar los métodos formales a todos los aspectos de los sistemas de cierta envergadura. Aquellos componentes que sean críticos para la seguridad serán nuestras primeras opciones, e irán seguidos por aquellos componentes cuyo fallo no se pueda admitir (por razones de negocios).</li>
<li><strong>Estimarás los costes.</strong> Los métodos formales tienen unos costes de arranque considerables. El entrenamiento del personal, la adquisición de herramientas de apoyo y la utilización de asesores bajo contrato dan lugar a unos costes elevados en la primera ocasión. Estos costes deben tenerse en cuenta cuando se esté considerando el beneficio obtenido frente a esa inversión asociada a los métodos formales.</li>
<li><strong>Poseerás un experto en métodos formales a tu disposición.</strong> El entrenamiento de expertos y la asesoría continua son esenciales para el éxito cuando se utilizan los métodos formales por primera vez.</li>
<li><strong>No abandonarás tus métodos formales de desarrollo.</strong> Es posible, y en muchos casos resulta deseable, integrar los métodos formales con los métodos convencionales y/o con métodos orientados a objetos. Cada uno de estos métodos posee sus ventajas y sus inconvenientes. Una combinación de ambos, aplicada de forma adecuada, puede producir excelentes resultados.</li>
<li><strong>Documentarás suficientemente.</strong> Los métodos formales proporcionan un método conciso, sin ambigüedades y consistente para documentar los requisitos del sistema. Sin embargo, se recomienda que se adjunte un comentario en lenguaje natural a la especificación formal, para que sirva como mecanismo para reforzar la comprensión del sistema por parte de los lectores.</li>
<li><strong>No comprometerás los estándares de calidad.</strong> Los métodos formales no tienen nada de mágico, y por esta razón, las demás actividades de SQA deben de seguir aplicándose cuando se desarrollen sistemas.</li>
<li><strong>No serás dogmático.</strong> El ingeniero de software debe reconocer que los métodos formales no son una garantía de corrección. Es posible (o como algunos probablemente dirían) que el sistema final, aun cuando se haya desarrollado empleando métodos formales, siga conteniendo pequeñas omisiones, errores de menor importancia y otros atributos que no satisfagan nuestras expectativas.</li>
<li><strong>Comprobarás, comprobarás y volverás a comprobar.</strong> Los métodos formales no absuelven al ingeniero del software de la necesidad de llevar a cabo unas comprobaciones exhaustivas y bien planeadas.</li>
<li><strong>Reutilizarás cuanto puedas.</strong> A la larga, la única forma racional de reducir los costes del software y de incrementar la calidad del software pasa por la reutilización. Los métodos formales no modifican esta realidad. De hecho, quizás suceda que los métodos formales sean un enfoque adecuado cuando es preciso crear componentes para bibliotecas reutilizables.</li>
</ol>
<p><strong>Los siete mitos sobre los metodos formales</strong></p>
<p>Los siete mitos mas generalizados sobre los metodos formales son variaciones de los siguientes:</p>
<ol>
<li><strong>Los metodos formales garantizan que el software esta perfecto.</strong> El mito mas importante es que los metodos formales serian todopoderosos, si nosotros humildes mortales pudiesemos aplicarlos. Este mito es pernicioso porque nos lleva a expectativas irreales y a la idea de que los metodos formales son de alguna forma todo o nada.</li>
<li><strong>Los metodos formales se centran en demostrar correccion.</strong> En los Estados Unidos, gran parte del trabajo desarrollado en metodos formales se ha concentrado en la verificacion de programas. Esto ha hecho que los metodos formales parezcan muy dificiles y no muy relevantes para la vida real.</li>
<li><strong>Los metodos formales son utiles solo para sistemas criticos.</strong> Esta creencia se basa en la percepcion de la dificultad que implica la aplicacion de metodos formales. La verdad es que los sistemas criticos requieren un uso mas acucioso de metodos formales, pero cualquier sistema puede beneficiarse con el uso de algunas tecnicas de especificacion formal.</li>
<li><strong>Los metodos formales requieren matematicos entrenados.</strong> Los metodos formales se basan en notaciones matematicas, y muchas personas creen que esto los hace dificiles para la practica de los ingenieros de software. Este mito, a su vez, se basa en la percepcion de que las matematicas son intrinsicamente dificiles.</li>
<li><strong>Los metodos formales aumentan el costo del desarrollo.</strong> Se acostumbraba decir que a pesar que el costo que significaba usar metodos formales era muy alto, de todas formas era conveniente porque resultaba en menores costos de mantenimiento del software.</li>
<li><strong>Los metodos formales son incomprensibles para los usuarios.</strong> Una especificacion formal esta llena de simbolos matematicos que resultan incomprensibles para cualquiera que no este familiarizado con la notacion. De ahi que se suponga que son inutiles para clientes no matematicos.</li>
<li><strong>Los metodos formales no se usan en grandes proyectos reales.</strong> Los metodos formales se asocian comunmente con departamentos academicos y organizaciones de investigacion. Se piensa que solo estas organizaciones tienen la capacidad necesaria para usar metodos formales y que estos solo son apropiados para las aplicaciones idealizadas que estos grupos desarrollan.</li>
</ol>
<p><strong>Principales Metodos Formales utilizados en el desarrollo de software</strong></p>
<ul>
<li>Metodos formales basados en Lógica de Primer Orden: Z, B, VDM, Object-Z, Z++ y VDM++.</li>
<li>Metodos formales basados en Formalismos Algebraicos: HOSA (Hidden Order Sorted Algebras), TROLL, OBLOG, Maude y AS-IS (Algebraic Specifications with Implicit States).</li>
<li>Metodos formales basados en Redes de Petri: CO-OPN (Concurrent Object-Oriented Petri Nets)</li>
<li>Metodos formales basados en Lógica Temporal: TRIO, OO-LTL y ATOM.</li>
<li>Metodos Semiformales: Syntropy, Statemate, <a href="http://www.rodolfoquispe.org/blog/que-es-el-lenguaje-unificado-de-modelado.php" target="_self">UML</a> y OCL (Object Constraint Language)</li>
</ul>
<p><strong>Referencias:</strong></p>
<ul>
<li>Roger Pressman. <strong><a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria del Software</a>: Un Enfoque Practico</strong>. McGraw-Hill. 2006</li>
<li>Ian Sommerville. <a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self"><strong>Ingenieria de Software</strong></a>. Pearson. 2005</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.rodolfoquispe.org/blog/que-son-los-metodos-formales.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Que es la Calidad de Software?</title>
		<link>http://www.rodolfoquispe.org/blog/que-es-la-calidad-de-software.php</link>
		<comments>http://www.rodolfoquispe.org/blog/que-es-la-calidad-de-software.php#comments</comments>
		<pubDate>Sun, 14 Dec 2008 22:35:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ingenieria de Software]]></category>

		<guid isPermaLink="false">http://www.rodolfoquispe.org/blog/el-placer-de-educar.php</guid>
		<description><![CDATA[Como citar este artículo: Rodolfo Quispe-Otazu. ¿Que es la Calidad de Software?. Blog de Rodolfo Quispe-Otazu [Internet]. Diciembre 2008. Disponible en: http://www.rodolfoquispe.org/blog/que-es-la-calidad-de-software.php Introduccion El origen del interes actual por la calidad se puede explicar recurriendo al estudio de la evolucion en la comercializacion de los productos. En el mercado actual tan competitivo no basta con [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Como citar este artículo:</strong><br />
<em>Rodolfo Quispe-Otazu. ¿Que es la Calidad de Software?. Blog de Rodolfo Quispe-Otazu [Internet]. Diciembre 2008. Disponible en: http://www.rodolfoquispe.org/blog/que-es-la-calidad-de-software.php</em></p>
<p><strong>Introduccion</strong></p>
<p>El origen del interes actual por la calidad se puede explicar recurriendo al estudio de la evolucion en la comercializacion de los productos. En el mercado actual tan competitivo no basta con producir y distribuir masivamente los productos o servicios, vender es lo importante y solo se produce con la seguridad de la aceptacion por parte del cliente.</p>
<p>Sin embargo la calidad del software es un concepto complejo que no es directamente comparable con la calidad de la manufactura de producto. Los productos de software se han convertido hoy en dia en uno de los principales objetivos estrategicos de las organizaciones debido a que, cada vez mas, los procesos mas importantes de las organizaciones y por lo tanto su supervivencia dependen del buen funcionamiento de los sistemas de software.<br />
<strong><br />
Definiciones: Calidad</strong></p>
<p>Podemos encontrar muchas definiciones en los textos de calidad, todas ellas muy similares:</p>
<ul>
<li> Propiedad o conjunto de propiedades inherentes a un objeto que permiten apreciarlo como mejor, igual o peor que otros objetos de su especie [DRAE: Diccionario de la Real Academica Española]</li>
<li>Conjunto de propiedades y de caracteristicas de un producto o servicio que le confieren capacidad para satisfacer necesidades expresadas o implicitas. [ISO 8042:1994]</li>
<li>Grado en el que un conjunto de caracteristicas inherentes cumple con los requisitos. [ISO 9000: 2000]</li>
</ul>
<p>Las definiciones mas completas o formales:</p>
<ul>
<li>Calidad, significa desarrollar, diseñar y producir y mantener un producto que sea el mas economico, el mas util y siempre satisfactorio para el consumidor. [Kaoru Ishikawa]</li>
<li>Calidad, es la aplicacion de los principios y tecnicas estadisticas en todas las fases de la produccion, dirigida a la fabricacion mas economica de un producto (servicio) que es util en grado maximo y que tiene mercado. [William Edwards Deming]</li>
</ul>
<p><strong>Definiciones: Calidad del Software</strong></p>
<ul>
<li>La calidad del software es el grado con el que un sistema, componente o proceso cumple los requerimientos especificados y las necesidades o expectativas del cliente o usuario. [IEEE, Std 610-1900]</li>
<li>Concordancia del software producido con los requerimientos explicitamente establecidos, con los estandares de desarrollo prefijados y con los requerimientos implicitos no establecidos formalmente, que desea el usuario. [Pressman, 1998]</li>
</ul>
<p><strong>Terminologia:  Calidad del Software</strong></p>
<p>Para poder afrontar el estudio de calidad del software debemos conocer primeros los principales terminos empleados en esta area:</p>
<ul>
<li><strong>Gestion de la Calidad de Software (Software Quality Management):</strong> Conjunto de actividades de la función general de la dirección que determina la calidad, los objetivos y las responsabilidades. Se basa en la determinación y aplicación de las políticas de calidad de la empresa. La gestión o administración de la calidad se aplica normalmente a nivel empresa o dentro de la gestión de cada proyecto. El propósito de la gestión de la calidad del software es entender las expectativas del cliente en términos de calidad, y poner en práctica un plan proactivo para satisfacer esas expectativas.</li>
<li><strong>Aseguramiento de la Calidad Software (Software Quality Assurance):</strong> Conjunto de actividades planificadas y sistemáticas necesarias para aportar la confianza en que el producto (software) satisfará los requisitos dados de calidad.</li>
<li><strong>Control de la Calidad de Software (Software Quality Control):</strong> Conjunto de técnicas y actividades de carácter operativo, utilizadas para verificar los requisitos relativos a la calidad, centradas en mantener bajo control el proceso de desarrollo y eliminar las causas de los defectos en las diferentes fases del ciclo de vida.</li>
<li><strong>Verificacion y Validacion de Software (Software Verification and Validation):</strong> Conjunto de técnicas y actividades ligadas al control de calidad  del software se trata de comprobar si los productos construidos en una fase de ciclo de vida satisfacen los requisitos establecidos en una fase anterior y/o si el software construido satisface los requisitos del usuario, es decir si el producto de software funciona como el usuario quiere y realiza las funciones que se habian solicitado.</li>
</ul>
<p><strong>Modelos:  Calidad del Software</strong></p>
<ul>
<li><strong>CMM (Capability Maturity Model):</strong> El CMM  tiene como objetivo evaluar los procesos en sus distintos niveles de madurez, identificar los niveles a través de los cuales una organización debe formarse para establecer una cultura de excelencia en la ingeniería de software. El modelo de madurez de procesos fue generado a través de la experiencia colectiva de los proyectos más exitosos de software, generando así un conjunto de prácticas importantes que deben ser implantadas por cualquier entidad que desarrolla o mantiene software.</li>
<li><strong>ISO (International Standard Organization):</strong> La norma ISO/IEC 9003 proporciona una guia necesaria en las organizaciones para la aplicacion de la ISO 9001 a la adquisicion de sumistro, desarrollo, operacion y mantenimiento de software y sus servicios relacionados. Identifica todos los aspectos que deberian ser tratados y es independiente de la tecnologia, modelos de ciclos de vida, procesos de desarrollo y estructuras organizacionales. La norma ISO 9001, especifica  los requisitos para un sistema de gestion de la calidad cuando una organizacion necesita demostrar su capacidad de proporcionar de forma coherente productos que satisfagan los requisitos del cliente y aspira a aumentar su sastisfaccion a traves de la aplicacion eficaz del sistema, incluyendo los procesos para la mejora continua del sistema y el aseguramiento de la conformidad con los requisitos y de acuerdo a las reglamentaciones existentes.</li>
<li><strong>PSP (Personal Software Process) /TSP (Team Software Process):</strong> El PSP  es una tecnología que tiene como justificación la premisa de que la calidad de software depende del trabajo de cada uno de los ingenieros de software y de aquí que el proceso diseñado debe ayudar a controlar, manejar y mejorar el trabajo de los ingenieros. El objetivo de PSP es lograr una mejor planeación del trabajo, conocer con precisión el desempeño, medir la calidad de productos y mejorar las técnicas para su desarrollo. La instrumentación de esta tecnología consiste en lo que se denomina &#8220;evolución del PSP&#8221;. El TSP se concentra en los aspectos del desarrollo de software realizados por equipos de trabajo, definiendo aspectos como la asignación y control de tareas para los diversos miembros del equipo.</li>
<li><strong>SPICE (Software Process Improvement and Capability dEtermination):</strong> El SPICE es un modelo de madurez de procesos internacional. SPICE fomenta productos de calidad, promueve la optimización de procesos y facilita la evaluación del producto a través de los procesos de desarrollo. SPICE tiene diversos alcances, se aplica tanto a nivel directivo como a nivel de usuarios para asegurar que el proceso se encuentra alineado con las necesidades del negocio, apoya en que los proveedores de software tengan que someterse a una sola evaluación para aspirar a nuevos negocios y busca que las organizaciones de software dispongan de una herramienta universalmente reconocida para dar soporte a su programa de mejoramiento continuo.</li>
<li><strong>PEMM (Performance Engineering Maturity Model):</strong> El PEMM presenta un modelo para evaluar los niveles de integración, aplicación, ejecución y diseño, llamado ingeniería de la ejecución del modelo de madurez. Al igual que SPICE se apoya en el modelo de madurez de capacidades CMM. El objetivo de PEMM es poder evaluar la Ejecución de la Ingeniería así como la integración del proceso. El modelo sirve tanto para evaluar una organización como los propios desarrollos de procesos tecnológicos específicos. Sirve también para definir el criterio al escoger un proveedor de software para los productos críticos o semi-críticos de la compañía.</li>
<li><strong>TickIt:</strong> Desarrollado por el Departamento de Comercio e Industria del Reino Unido, surge por la poca adopción de las normas internacionales de calidad ISO 9000 para el área de desarrollo de software. TickIt es primordialmente una guía que presenta las estrategias para lograr la certificación en la producción de software a través de la interpretación de los estándares ISO. Los objetivos principales de TickIt son, además de desarrollar un sistema de certificación aceptable en el mercado, estimular a los desarrolladores de software a implementar sistemas de calidad, dando la dirección y guías necesarias para tal efecto.</li>
</ul>
<p><strong>Referencias:</strong></p>
<ul>
<li>Mario G. Piattini y Otros. <strong>Calidad de Sistemas Informaticos</strong>. Editorial Ra-Ma. 2006</li>
<li>Roger Pressman. <strong><a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria del Software</a>: Un Enfoque Practico</strong>.  McGraw-Hill. 2006</li>
<li>Ian Sommerville. <a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self"><strong>Ingenieria de Software</strong></a>. Pearson. 2005</li>
<li>Alfredo Weitzenfeld. <strong><a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria de Software</a> Orientada a Objetos: Teoría y  Práctica con UML y Java</strong>. Thomson Paraninfo. 2005</li>
<li>Mario G. Piattini y Otros. <strong>Analisis y Diseño de Aplicaciones  Informáticas de Gestión: Una perspectiva de <a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria del Software</a></strong>. Editorial Ra-Ma. 2003</li>
<li>Mario G. Piattini y Otros. <strong>Calidad en el Desarrollo y Mantenimiento del Software.</strong>. Editorial Ra-Ma. 2003</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.rodolfoquispe.org/blog/que-es-la-calidad-de-software.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Que es la Tecnica de Modelado de Objetos?</title>
		<link>http://www.rodolfoquispe.org/blog/que-es-la-tecnica-de-modelado-de-objetos.php</link>
		<comments>http://www.rodolfoquispe.org/blog/que-es-la-tecnica-de-modelado-de-objetos.php#comments</comments>
		<pubDate>Sun, 12 Oct 2008 22:19:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ingenieria de Software]]></category>

		<guid isPermaLink="false">http://www.rodolfoquispe.org/blog/?p=102</guid>
		<description><![CDATA[ANALISIS El Análisis comienza en la descripción del problema el analista construye un modelo de la situación del mundo real que muestra sus propiedades importantes. Dicho analista debe trabajar con quien hace la solicitud para comprender el problema porque las definiciones del mismo no suelen ser completas ni correctas. El modelo de análisis es una [...]]]></description>
			<content:encoded><![CDATA[<p><strong>ANALISIS</strong></p>
<p>El Análisis comienza en la descripción del problema el analista construye un modelo de la situación del mundo real que muestra sus propiedades importantes. Dicho analista debe trabajar con quien hace la solicitud para comprender el problema porque las definiciones del mismo no suelen ser completas ni correctas. El modelo de análisis es una abstracción resumida y precisa de lo que debe hacer el sistema deseado y no de la forma en que se hará. Los objetos del modelo deberán ser conceptos del dominio de la aplicación y no conceptos de implementación de la computadora tales como estructuras de datos. Un buen modelo podrá ser comprendido y criticado por expertos de la aplicación que no sean programadores. El modelo de análisis no deberá contener ninguna decisión de implementación, los objetos se describirán en términos de atributos y operaciones que son visibles para el usuario.</p>
<p><strong>Modelo Funcional</strong></p>
<p>El propósito del Modelo Funcional es capturar lo que hace el sistema, sin preocuparse del como ni del cuando.</p>
<p>El modelo funcional, representado en UML con Diagramas de Caso de Uso, describe la funcionalidad del sistema desde el punto de vista del usuario.</p>
<p><strong>Modelo de Objetos</strong></p>
<p>Describe la estructura estática (de datos), de los objetos del sistema (identidad y atributos) y también sus relaciones entre objetos.</p>
<p>El modelo de objetos, representado en UML con Diagramas de Clase, describe la estructura de un sistema desde el punto de vista de objetos y asociaciones.</p>
<p><strong>Modelo dinámico</strong></p>
<p>Describe los aspectos de comportamiento (de control) de un sistema que cambian con el tiempo. El modelo dinámico se utiliza para especificar e implementar los aspectos del control del sistema.</p>
<p>El modelo dinamico, representado en UML con Diagramas de Secuencia, Diagramas de Colaboracion, Diagramas de Actividad y Diagramas de Estado, describe el comportamiento del sistema.</p>
<p><strong>DISEÑO</strong></p>
<p><strong>Diseño de Objetos</strong></p>
<p>En el Diseño de Objetos se construye un modelo de diseño basándose en el modelo de análisis. El foco de atención del diseño de objetos son las estructuras de datos y los algoritmos necesarios para implementar cada una de las clases.</p>
<p><strong>Diseño del Sistema</strong></p>
<p>En el Diseño del Sistema se toman decisiones de alto nivel acerca de la arquitectura global. Durante el diseño, el sistema de destino se organiza en subsistemas basados tanto en la estructura del análisis como en la arquitectura propuesta. El diseñador de sistemas deberá decidir qué características de rendimiento hay que optimizar. Seleccionando una estrategia para atacar el problema y efectuando las reservas de recursos tentativas.</p>
<p><strong>IMPLEMENTACION</strong></p>
<p>En la Implementación las clases de objetos y las relaciones desarrolladas durante su diseño se traducen finalmente a un lenguaje de programación concreto, a una base de datos o a una implementación en hardware.</p>
<p><strong>Referencias:</strong></p>
<ul>
<li>James E. Rumbaugh, Michael R. Blaha, William J. Premerlani, Frederick Hedí y William E. Lorensen. <strong>Modelado y Diseño Orientado a Objetos. Metodología OMT</strong>. Prentice-Hall. 1996</li>
<li>Bernd Bruegge, Allen H. Dutoit. <strong><a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria del Software</a> Orientado a Objetos</strong>. McGraw-Hill. 2002</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.rodolfoquispe.org/blog/que-es-la-tecnica-de-modelado-de-objetos.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Que es el Proceso unificado de desarrollo de software</title>
		<link>http://www.rodolfoquispe.org/blog/que-es-el-proceso-unificado-de-desarrollo-de-software.php</link>
		<comments>http://www.rodolfoquispe.org/blog/que-es-el-proceso-unificado-de-desarrollo-de-software.php#comments</comments>
		<pubDate>Sun, 13 Jan 2008 06:40:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ingenieria de Software]]></category>

		<guid isPermaLink="false">http://www.rodolfoquispe.org/blog/?p=34</guid>
		<description><![CDATA[Proceso de Desarrollo de Software: Proceso de negocio, o caso de uso de negocio, de un negocio de desarrollo de software. Conjunto total de actividades necesarias para transformar los requisitos de un cliente en un conjunto consistente de artefactos que representan un producto software y en punto posterior en el tiempo para transformar cambiso en [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li><strong>Proceso de Desarrollo de Software:</strong> Proceso de negocio, o caso de uso de negocio, de un negocio de desarrollo de software. Conjunto total de actividades necesarias para transformar los requisitos de un cliente en un conjunto consistente de artefactos que representan un producto software y en punto posterior en el tiempo para transformar cambiso en dichos requisitos en nuevas versiones del producto.</li>
<li><strong><a href="http://www.rodolfoquispe.org/blog/que-es-el-lenguaje-unificado-de-modelado.php">Lenguaje Unificado de Modelado</a> (<a href="http://www.rodolfoquispe.org/blog/que-es-el-lenguaje-unificado-de-modelado.php">UML</a>):</strong> Lenguaje estandar para el modelado de software lenguaje para visualizar, especificar, construir y documentar los artefactos de un sistema con gran cantidad de software. Lenguaje usado por el <a href="http://www.rodolfoquispe.org/blog/que-es-el-proceso-unificado-de-desarrollo-de-software.php">Proceso Unificado</a>. Lenguaje que permite a los desarrolladores visualizar el producto de su trabajo (Artefactos) en esquemas o diagramas estandarizados.</li>
<li><strong>Proceso Unificado de Desarrollo de Software (PUDS):</strong> <a href="http://www.rodolfoquispe.org/blog/que-es-un-proceso-de-desarrollo-de-software.php">Proceso de desarrollo de software</a> basado en el <a href="http://www.rodolfoquispe.org/blog/que-es-el-lenguaje-unificado-de-modelado.php">Lenguaje Unificado de Modelado</a> y que es iterativo, centrado en la arquitectura y dirigido por los casos de uso y los riesgos. Proceso que se organiza en cuatro fases: inicio, elaboracion, construccion y transicion, y que se estructura en torno a cinco flujos de trabajo fundamentales: recopilacion de requisitos, analisis, diseño, implementacion y pruebas. Proceso que se describe en terminos de un modelo de negocio, el cual esta a su vez estructurado en funcion de tres bloques de construccion primordiales trabajadores, actividades y artefactos.</li>
<li><strong>Requisitos:</strong> Flujo de trabajo fundamental cuyo proposito esencial es orientado al desarrollado hacia el sistema correcto. Esto se lleva a cabo mediante la descripcion de los requisitos del sistema de forma tal que se pueda llegar a un acuerdo entre el cliente(incluyendo los usuarios) y los desarrolladores del sistema, acerca de lo que el sistema debe hacer y lo que no.</li>
<li><strong>Analisisis:</strong> Flujos de trabajo fundamental cuyo proposito principal es analizar los requisitos descritos en la captura de requisitos, mediante su refinamiento y estructuracion. El objetivo de esto es (1) lograr una comprension mas precisa de los requisitos, y (2) obtener una descripcion de los requisitos que sea facil de mantener y que nos ayude a dar estructura al sistema en su conjunto incluyendo su arquitectura.</li>
<li><strong>Diseño:</strong> Flujo de trabajo fundamental cuyo proposito principal es la de formular modelos que se centran en los requisitos no funcionales y el dominio de la solucion y que prepara para la implementacion y pruebas del sistema.</li>
<li><strong>Implementacion:</strong> Flujo de trabajo fundamental cuyo proposito esencial es implementar el sistema en terminos de componentes, es decir codigo fuente guiones, ficheros binarios, ejecutables, et.</li>
<li><strong>Prueba:</strong> Flujo de trabajo fundamental cuyo proposito esencial es comprobar el resultado de la implementacion mediante las pruebas de cada construccion, incluyendo tanto construcciones internas como intermedias, asi como las versiones finales del sistema que van a ser entregadas a terceras personas.</li>
<li><strong>Fase de Inicio:</strong> Primera fase del ciclo de vida del software, en la que la idea inicial para el desarrollo es refinada hasta el punto de quedar lo suficientemente bien establecida como para garantizar la entrada en la base de elaboracion.</li>
<li><strong>Fase de Elaboracion:</strong> Segunda fase del ciclo de vida, en la que se define la arquitectura.</li>
<li><strong>Fase de Construccion:</strong> Tercera fase del ciclo de vida del software, en la que el software es desarrollado a partir de una linea base de la arquitectura ejecutable, hasta el punto en el que se esta listo para ser transmitido a las comunidades de usuarios.</li>
<li><strong>Fase de Transicion:</strong> Cuarta fase del ciclo de vida del software es puesto en manos de la comunidad de usuarios.</li>
<li><strong>Arquitectura:</strong> Conjunto de desiciones significativas, acerca de la organizacion de un sistema software, la seleccion de los elementos estructurales apartir de los cuales se compone el sistema y las interfaces entre ellos, junto con su comportamiento, tal y como se especifica en las colaboraciones entre estos elementos, la composicion de estos elementos estructurales y de comportamiento de subsistemas progresivamente mayores, y el estilo arquitectonico que guia esta organizacion, estos elementos y sus interfaces, sus colaboraciones y su composicion. La arquitectura de software se interesa no solo por la estructura y el comportamiento, sino tambien por las restricciones y compromisos de uso, funcionamiento, flexibilidad al cambio, reutilizacion, comprension, economia y tecnologia, asi como aspectos esteticos.</li>
<li><strong>Vista Arquitectonica del Modelo de Casos de Uso:</strong> Vista de la arquitectura de un sistema abarcando los casos de uso significativos desde un punto de vista arquitectonico.</li>
<li><strong>Vista Arquitectonica del Modelo de Analisis:</strong> Vista arquitectonica de un sistema, abarcando las clases, paquetes y realizaciones de casos de uso del analisis, vista que fundamentalmente aborda el refinamiento y estructuracion de los requisitos del sistema. La estrucutra de esta vista se preserva en la medida de lo posible cuando se diseña e implementa la arquitectura del sistema.</li>
<li><strong>Vista Arquitectonica del Modelo de Diseño:</strong> Vista de la arquitectura de un sistema, abarcando las clases , subsistemas, interfaces y realizaciones de casos de uso del diseño que forman el vocabulario del dominio de la solucion del sistema, vista que abarca tambien los hilos y procesos qeu establecen la concurrencia y mecanismos de sincronizacion del sistema, vista que aborda los requisitos no funcionales, incluyendo los requisitos de rendimiento y capacidad de crecimiento de un sistema.</li>
<li><strong>Vista Arquitectonica del Modelo de Despliege:</strong> Vista de la arquitectura de un sistema abarcando los nodos que forman la topologia hardware sobre la que se ejecuta el sistema, vista que aborda la distribucion, entrega e instalacion de las partes que constituyen el sistema fisico.</li>
<li><strong>Vista Arquitectonica del Modelo de Implementacion:</strong> Vista arquitectonica de un sistema, abarcando los componentes usados para el ensamblado y lanzamiento del sistema fisico, vista que aborda la gestion de la configuracion de las versiones del sistema, constituida por componentes independientes que pueden ser ensambladas de varias formas para producir un sistema ejecutable</li>
</ol>
<p><strong>Fuente Original:</strong><br />
Grady Booch, Ivar Jacobson, James Rumbaugh. <strong>El Proceso Unificado de Desarrollo de Software</strong>. Addison Wesley, 2000</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodolfoquispe.org/blog/que-es-el-proceso-unificado-de-desarrollo-de-software.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Que es el Lenguaje Unificado de Modelado</title>
		<link>http://www.rodolfoquispe.org/blog/que-es-el-lenguaje-unificado-de-modelado.php</link>
		<comments>http://www.rodolfoquispe.org/blog/que-es-el-lenguaje-unificado-de-modelado.php#comments</comments>
		<pubDate>Mon, 17 Dec 2007 06:38:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ingenieria de Software]]></category>

		<guid isPermaLink="false">http://www.rodolfoquispe.org/blog/?p=32</guid>
		<description><![CDATA[Lenguaje Unificado de Modelado (UML): Lenguaje estandar para el modelado de software lenguaje para visualizar, especificar, construir y documentar los artefactos de un sistema con gran cantidad de software. Lenguaje usado por el Proceso Unificado. Lenguaje que permite a los desarrolladores visualizar el producto de su trabajo (Artefactos) en esquemas o diagramas estandarizados. Caso de [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li><strong>Lenguaje Unificado de Modelado (UML):</strong> Lenguaje estandar para el modelado de software lenguaje para visualizar, especificar, construir y documentar los artefactos de un sistema con gran cantidad de software. Lenguaje usado por el Proceso Unificado. Lenguaje que permite a los desarrolladores visualizar el producto de su trabajo (Artefactos) en esquemas o diagramas estandarizados.</li>
<li><strong>Caso de Uso:</strong> Una descripcion de un conjunto de secuencias e acciones, incluyendo variaciones, que un sistema lleva a cabo yq ue conduce a un resultado observable de interes para un actor determinado. Un caso de uso es en esencia un interaccion tipica entre un usuario y un sistema de computo.</li>
<li><strong>Diagrama: </strong>Un representacion grafica de un conjunto de elementos, usualmente representado como un grafo conectado de vertices (elementos) y arcos (relaciones).</li>
<li><strong>Diagrama de Caso de Uso:</strong> Un diagrama que muestra un conjuntos de casos de uso y de actores y sus relaciones, los diagramas de casos de uso muestran los casos de uso de un sistema desde un punto de vista estatico.</li>
<li><strong>Diagrama de Clases:</strong> Un diagrama que muestra un conjunto de clases, interface y colaboraciones y las relaciones entre estos, los diagramas de clases muestran el diseño de un sistema desde un punto de vista estatico, un diagrama que muestra una coleccion de elementos (estaticos) declarativos.</li>
<li><strong>Diagrama de Objetos: </strong> Un diagrama de muestra un conjunto de objetos y sus relaciones en un momento determinado; los diagramas de objetos muestran el diseño o los procesos de un sistema desde un punto de vista estático.</li>
<li><strong>Diagrama de Interaccion:</strong> Un diagrama que muestra un interaccion, consiste en un conjunto de objetos y sus relaciones, incluyendo los mensajes que pueden ser enviados entre ellos, los diagramas de interaccion trata la vista dianmica de un sistema, un termino generico que se aplica a varios tipos de diagramas que enfatizan las interacciones de objetos, incluyendo diagramas de secuencia, diagramas de colaboracion y diagramas de actividad.</li>
<li><strong>Diagrama de Secuencia:</strong> Un diagrama de interaccion, que hace enfasis en la ordenacion temporal de los mensajes.</li>
<li><strong>Diagrama de Colaboracion:</strong> Un diagrama de interaccion que enfatiza la organizacion estructural de los objetos que envian y reciben mensajes, un diagrama que muestra las instrucciones organizadas alrededor de instancias y de los enlaces entre ellas.</li>
<li><strong>Diagrama de Paquetes:</strong> Muestra grupos de clases y las dependencias entre ellos.</li>
<li><strong>Diagrama de Estados: </strong>Un diagrama que muestra una maquina de estados; los diagramas de estados tratan la vista dinamica de un sistema.</li>
<li><strong>Diagrama de Actividades: </strong>Un diagrama que muestra un flujo de actividad a actividad. Los diagramas de actividad tratan la vista dinámica de un sistema. Un caso especial de diagrama de estados en el cual casi todos los estados son estados en acción y en el cual todos o casi todos los estados son estados de acción y en el cual todas o casi todas las transiciones son disparadas por la terminación de las acciones  en los estados origen.</li>
<li><strong>Diagrama de Despliegue:</strong> Un diagrama que muestra un conjunto de nodos y sus relaciones, un diagrama de despliegue muestra el despliegue de un sistema desde el punto de vista estatico. Muestra la disposicion fisica de los componentes en los nodos de hardware y software.</li>
<li><strong>Diagrama de Componentes:</strong> Un diagrama que muestra un conjunto de componentes y sus relaciones, los diagramas de componentes muestran los componentes de un sistema desde un punto de vista estatico.</li>
</ol>
<p><strong>Fuente Original:</strong></p>
<p>Grady Booch, Ivar Jacobson, James Rumbaugh. <strong>El Lenguaje Unificado de Modelado</strong>. Addison Wesley. 2000</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodolfoquispe.org/blog/que-es-el-lenguaje-unificado-de-modelado.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Que es la Ingenieria de Requerimientos?</title>
		<link>http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-requerimientos.php</link>
		<comments>http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-requerimientos.php#comments</comments>
		<pubDate>Sun, 12 Aug 2007 06:14:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ingenieria de Software]]></category>

		<guid isPermaLink="false">http://www.rodolfoquispe.org/blog/?p=21</guid>
		<description><![CDATA[Como citar este artículo: Rodolfo Quispe-Otazu. ¿Que es la Ingenieria de Requerimientos?. Blog de Rodolfo Quispe-Otazu [Internet]. Agosto 2007. Disponible en: http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-requerimientos.php La parte más difícil de construir un sistema es precisamente saber qué construir. Ninguna otra parte del trabajo conceptual es tan difícil como establecer los requerimientos técnicos detallados, incluyendo todas las interfaces con [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Como citar este artículo:</strong><br />
Rodolfo Quispe-Otazu. ¿Que es la Ingenieria de Requerimientos?. Blog de Rodolfo Quispe-Otazu [Internet]. Agosto 2007. Disponible en: http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-requerimientos.php</em></p>
<p style="text-align: center;"><img class="aligncenter" src="/img/post/img-post21.jpg" alt="¿Que es la Ingenieria de Requerimientos?" /></p>
<p><em>La parte más difícil de construir un sistema es precisamente saber qué construir. Ninguna otra parte del trabajo conceptual es tan difícil como establecer los requerimientos técnicos detallados, incluyendo todas las interfaces con gente, máquinas y otros sistemas. Ninguna otra parte del trabajo afecta tanto el sistema si es hecha mal. Ninguna es tan difícil de corregir más adelante&#8230; Entonces, la tarea más importante que el ingeniero de software hace para el cliente es la extracción iterativa y el refinamiento de los requerimientos del producto. [Frederick P. Brooks, 1987]</em></p>
<p><strong>Introduccion:</strong></p>
<p>Es muy frecuente escuchar entre los conocedores del desarrollo de software (programas de computadoras), que un gran número de los proyectos de software fracasan por no realizar una adecuada definición, especificación, y administración de los requerimientos. Dentro de esa mala administración se pueden encontrar factores como la falta de participación del usuario, requerimientos incompletos y el mal manejo del cambio a los requerimientos.</p>
<p>La Ingeniería de Requerimientos (IR) cumple un papel primordial en el proceso de producción de software, ya que se enfoca un área fundamental: la definición de lo que se desea producir. Su principal tarea consiste en la generación de especificaciones correctas que describan con claridad, sin ambigüedades, en forma consistente y compacta, las necesidades de los usuarios o clientes; de esta manera, se pretende minimizar los problemas relacionados por la mala gestión de los requerimientos en el desarrollo de sistemas.</p>
<p><strong>Definicion: Requerimientos</strong></p>
<ul>
<li>Una condición o necesidad de un usuario para resolver un problema o alcanzar un objetivo. [Std 610.12-1900, IEEE: 62]</li>
<li>Una condición o capacidad que debe estar presente en un sistema o componentes de sistema para satisfacer un contrato, estándar, especificación u otro documento formal. [Std 610.12-1900, IEEE: 62]</li>
<li>Un requerimiento es simplemente una declaración abstracta de alto nivel de un servicio que debe proporcionar el sistema o una restricción de éste. [Sommerville, 2005: 108]</li>
</ul>
<p><strong>Definicion: Ingenieria de Requerimientos<br />
</strong></p>
<ul>
<li>Ingeniería de Requerimientos ayuda a los ingenieros de software a entender mejor el problema en cuya solución trabajarán. Incluye el conjunto de tareas que conducen a comprender cuál será el impacto del software sobre el negocio, qué es lo que el cliente quiere y cómo interactuarán los usuarios finales con el software. [Pressman, 2006: 155]</li>
<li>La ingeniería de requerimientos es el proceso de desarrollar una especificación de software. Las especificaciones pretender comunicar las necesidades del sistema del cliente a los desarrolladores del sistema. [Sommerville, 2005: 82]</li>
<li>La Ingeniería de Requerimientos se define, como un conjunto de actividades en las cuales, utilizando técnicas y herramientas, se analiza un problema y se concluye con la especificación de una solución (a veces más de una). [Ortas 1997]</li>
</ul>
<p><strong>Actividades de la Ingenieria de Requerimientos:</strong></p>
<ul>
<li><strong>Extracción:</strong> Esta fase representa el comienzo de cada ciclo. Extracción es el nombre comúnmente dado a las actividades involucradas en el descubrimiento de los requerimientos del sistema.</li>
<li><strong>Análisis:</strong> Sobre la base de la extracción realizada previamente, comienza esta fase en la cual se enfoca en descubrir problemas con los requerimientos del sistema identificados hasta el momento.</li>
<li><strong>Especificación:</strong> En esta fase se documentan los requerimientos acordados con el cliente, en un nivel apropiado de detalle.</li>
<li><strong>Validación: </strong>La validación es la etapa final de la IR. Su objetivo es, ratificar los requerimientos, es decir, verificar todos los requerimientos que aparecen en el documento especificado para asegurarse que representan una descripción, por lo menos, aceptable del sistema que se debe implementar. Esto implica verificar que los requerimientos sean consistentes y que estén completos.</li>
</ul>
<p><strong>Técnicas y Herramientas utilizadas en las actividades de Ingenieria de Requerimientos:</strong></p>
<ul>
<li>Entrevistas y cuestionarios</li>
<li>Sistemas existentes</li>
<li>Grabaciones de video y de audio</li>
<li>Brainstorming (tormenta de ideas)</li>
<li>Arqueología de documentos</li>
<li>Aprendiz.</li>
<li>Observación</li>
<li>Run Use Case WorkShop (talleres de trabajo basados en los Casos de Uso)</li>
<li>Prototipos</li>
<li>Análisis FODA (Fortalezas, Oportunidades, Debilidades y Amenazas)</li>
<li>Cadena de valor</li>
<li>Modelo de clase conceptual, Diagrama Conceptual, Diagrama de Clases Conceptual</li>
<li>Diagrama de pescado (Ishikawa Diagram, Cause-and-Effect o Fishbone Diagram)</li>
<li>Glosario</li>
<li>Diagrama de actividad</li>
<li>Documento ESRE, Casos de uso</li>
<li>Lista de requerimientos</li>
<li>Casos de uso</li>
<li>Casa de calidad o QFD (Quality Function Deployment)</li>
<li>Checklist (lista de verificación)</li>
</ul>
<p><strong>Referencias:</strong></p>
<ul>
<li>Nicolás Davyt Dávila. <strong>Ingeniería de Requerimientos: Una guía para extraer, analizar, especificar y validar los requerimientos de un proyecto</strong>. Universidad ORT Uruguay, 2003</li>
<li>Michael Arias Chaves. <strong>La Ingeniería de Requerimientos y su importancia en el desarrollo de proyectos de software</strong>. Revista Intersedes, Universidad de Costa Rica, 2006</li>
<li>Roger Pressman, <strong><a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria de Software</a>: Un enfoque practico</strong>. Mcgraw Hill, 2006</li>
<li>Ian Sommerville, <a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self"><strong>Ingenieria de Software</strong></a>. Pearson, 2005</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-requerimientos.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Que es un Proceso de Desarrollo de Software</title>
		<link>http://www.rodolfoquispe.org/blog/que-es-un-proceso-de-desarrollo-de-software.php</link>
		<comments>http://www.rodolfoquispe.org/blog/que-es-un-proceso-de-desarrollo-de-software.php#comments</comments>
		<pubDate>Sun, 10 Jun 2007 06:10:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ingenieria de Software]]></category>

		<guid isPermaLink="false">http://www.rodolfoquispe.org/blog/?p=17</guid>
		<description><![CDATA[Un proceso define quien esta haciendo que, cuando, y como alcanzar un determinado objetivo. En la Ingenieria del Software el objetivo es construir un producto software o mejorar uno existente. Un proceso efectivo proporciona normas para el desarrollo eficiente de software de calidad. Captua y presenta las mejores practicas que el estado actual de la [...]]]></description>
			<content:encoded><![CDATA[<p>Un proceso define quien esta haciendo que, cuando, y como alcanzar un determinado objetivo. En la <a href="http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software" target="_blank">Ingenieria del Software</a> el objetivo es construir un producto software o mejorar uno existente. Un proceso efectivo proporciona normas para el desarrollo eficiente de software de calidad. Captua y presenta las mejores practicas que el estado actual de la tecnologia permite. En consecuencia, reduce el riesgo y hace el proyecto mas predecible. El efecto global es el fomento de una vision y una cultura comunes.</p>
<p>Es necesario un proceso que sirva como guia para todos los participantes clientes, usuarios, desarrolladores y directivos ejecutivos. No nos sirve ningun proceso antiguo; necesitamos uno que sea el mejor proceso que la industria pueda reunir en este punto de su historia. Por ultimo necesitamos un proceso que este ampliamente disponible de forma que todos los interesados puedan comprender su papel en el desarrollo en el que se encuentran implicados.</p>
<p>Un proceso de desarrollo de software deberia tambien ser capaz de evolucionar durante muchos años. Durante esta evolucion deberia limitar su alcance, en un momentodel tiempo dado, a las realidades que permitan las <a href="http://www.tecnologiaygadgets.com/" target="_blank">tecnologia</a>s, herramientas, personas y patrones de organizacion.</p>
<ol>
<li><strong><a href="http://www.tecnologiaygadgets.com/" target="_self">Tecnologia</a>s: </strong> El proceso debe contruirse sobre las <a href="http://www.tecnologiaygadgets.com/" target="_blank">tecnologia</a>s lenguajes de programacion, sistemas operativos computadores, estructuras de red, entornos de desarrollo, etc disponibles en el momento en que se va a emplear el proceso. Por ejemplo hace varios años el modealado visual no era realmente de uso general. Era demasiado caro. En aquellos tiempos, un creador de un proceso practicamente tenia que asumir que se usarian diagramas hechos a mano. Esa suposicion limitaba mucho el gado en el cual el creador del proceso podia establecer el modelado dentro del proceso.</li>
<li><strong>Herramientas:</strong> Los procesos y las herramientas deben desarrollarse en paralelo. Las herramientas son esenciales en el proceso. Dicho de otra forma, un proceso ampliamente utilizado para soportar la inversion necesaria para crear las herramientas que lo soporten.</li>
<li><strong>Personas:</strong> Un creador del proceso debe limitar el conjunto de habilidades necesarias para trabajar en el proceso a las habilidades que los desarrolladores actuales poseen, o apuntar aquellas que los desarrolladores puedan obtener rapidamente. Hoy es posible empotrar las herramientas software tecnicas que antes requieran amplios conocimientos, como la comprobacion de la consistencia en los diagramas del modelo.</li>
<li><strong>Patrones de Organizacion:</strong> Aunque los desarralladores de software no pueden ser expertos tan independientes como los musicos de una orquestas, estan muy lejos de los trabajadores automatas en los cuales <a href="http://es.wikipedia.org/wiki/Frederick_Winslow_Taylor" target="_blank">Frederick W. Taylor</a> baso su &#8220;Direccion Cientifica&#8221; hace cien años. El creador del proceso debe adoptar el proceso a las realidades del momento hechos como mezcla(en empresas pequeñas recien montadas) de socios de la empresa, empleados asalariados, trabajadores de obra y subcontratas de outsourcing y la prolongada escacez de desarrolladores de software.</li>
</ol>
<p>Los ingenieros del proceso deben equilibrar estos cuatro conjuntos de circunstancias. Ademas el equilibrio debe estar presente no solo ahora, sino tambien en el futuro. El creador del proceso debe diseñar el proceso de forma que pueda evolucionar, de igual forma que el desarrollador de software intenta desarrollar un sistema que no solo funciona este año, sino que evoluciona con exito en los años venideros. Un proceso debe madurar durante varios años antes de productos comerciales manteniendo a la vez un nivel razonable de riesgo de utilizacion. El desarrollo de un producto nuevo es bastante arriesgado en el mismo como para añadirle el riesgo de un proceso puede ser estable. Sin este equilibrio de <a href="http://www.tecnologiaygadgets.com/" target="_blank">tecnologia</a>s, herramientas, personas y organizacion, el uso del proceso seria bastante arriesgado.</p>
<p><strong>Fuente Original:</strong></p>
<p>Grady Booch, Ivar Jacobson, James Rumbaugh. <strong>El Proceso Unificado de Desarrollo de Software</strong>. Addison Wesley. 2000</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodolfoquispe.org/blog/que-es-un-proceso-de-desarrollo-de-software.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Que es la Ingenieria de Software</title>
		<link>http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php</link>
		<comments>http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php#comments</comments>
		<pubDate>Sun, 13 May 2007 06:05:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ingenieria de Software]]></category>

		<guid isPermaLink="false">http://www.rodolfoquispe.org/blog/?p=15</guid>
		<description><![CDATA[Como citar este artículo: Rodolfo Quispe-Otazu. ¿Que es la Ingenieria de Software?. Blog de Rodolfo Quispe-Otazu [Internet]. Mayo 2007. Disponible en: http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php Mas que una disciplina o un cuerpo de conocimiento, la ingenieria es un verbo, una palabra de accion, una manera de abordar un problema. [Scott Whitmire] Introduccion La Ingenieria del Software es una [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Como citar este artículo:</strong><br />
Rodolfo Quispe-Otazu. ¿Que es la Ingenieria de Software?. Blog de Rodolfo Quispe-Otazu [Internet]. Mayo 2007. Disponible en: http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php</em></p>
<p style="text-align: center;"><img class="aligncenter" src="/img/post/img-post15.jpg" alt="¿Que es la Ingenieria de Software?" /></p>
<p><em>Mas que una disciplina o un cuerpo de conocimiento, la ingenieria es un verbo, una palabra de accion, una manera de abordar un problema. [Scott Whitmire]</em></p>
<p><strong>Introduccion</strong></p>
<p>La <a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria del Software</a> es una disciplina o area de la <a href="http://www.rodolfoquispe.org/blog/que-es-la-computacion.php">informatica</a> o <a href="http://www.rodolfoquispe.org/blog/que-es-la-computacion.php">ciencias de la computacion</a>, que ofrece metodo y tecnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo. Hoy dia es cada vez mas frecuente la consideracion de la Ingenieria del Software como un nueva area de la ingenieria, y el Ingeniero del Software comienza a ser una profesion implantada en el mundo laboral internacional, con derechos, deberes y responsabilidades que cumplir, junto a una, y reconocida consideracion social en el mundo empresarial y, por suerte, para esas personas con brillante futuro.</p>
<p><strong>Definicion: Ingenieria</strong></p>
<p>La ingeniería es el estudio y la aplicación de las distintas ramas de la tecnología. El profesional en este ámbito recibe el nombre de ingeniero.</p>
<p>La actividad del ingeniero supone la concreción de una idea en la realidad. Esto quiere decir que, a través de técnicas, diseños y modelos, y con el conocimiento proveniente de las ciencias, la ingeniería puede resolver problemas y satisfacer necesidades humanas.</p>
<p>La ingeniería también supone la aplicación de la inventiva y del ingenio para desarrollar una cierta actividad. Esto, por supuesto, no implica que no se utilice el método científico para llevar a cabo los planes.</p>
<p><strong>Definicion: Software</strong></p>
<p>Es el conjunto de los programas de cómputo, procedimientos, reglas, <strong>documentación</strong> y datos asociados que forman parte de las operaciones de un sistema de computación. [Std. 729, IEEE]</p>
<p>El software no son solo programas, sino todos los <strong>documentos asociados</strong> y la configuracion de datos que se necesitan para hacer que estos programas operen de manera correcta. Un sistema de software consiste en diversos programas independientes, archivos de configuracion que se utilizan para ejecutar estos programas, <strong>un sistema de documentacion que describe la estructura del sistema, la documentacion para el usuario que explica como utilizar el sistema</strong> y sitios web que permitan a los usuarios descargar la informacion de productos recientes. [Sommerville, 2004]</p>
<p>El software de computadora es el producto que los ingenieros de software construyen y despues mantienen en el largo plazo. El software se forma con (1) las instrucciones (programas de computadora) que al ejecutar se proporcionan las caracteristicas, funciones y el grado de desempeño deseados; (2) las estructuras de datos que permiten que los programas manipulen informacion de manera adecuada; y (3) <strong>los documentos que describen la operacion y uso de los programas</strong>. [Pressman, 2005]</p>
<p><strong>Definiciones: <a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria del Software</a></strong></p>
<ul>
<li> <a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria del Software</a> es el estudio de los principios y metodologias para desarrollo y mantenimiento de sistemas de software. [Zelkovitz, 1978]</li>
<li> <a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria del Software</a> es la aplicacion practica del conocimiento cientifico en el diseño y construccion de programas de computadora y la documentacion asociada requerida para desarrollar y operar (funcionar) y mantenerlos. Asi como tambien desarrollo de software o produccion de software. [Bohem, 1976]</li>
<li>La <a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria del Software</a> es el establecimiento y uso de principios solidos de la ingenieria para obtener economicamente un software confiable y que funcione de modo eficiente en maquinas reales. [Bauer, 1972]</li>
<li> <a href="../que-es-la-ingenieria-de-software.php" target="_self">Ingenieria de Software</a> es la aplicacion de un enfoque sistematico, disciplinado y cuantificable al desarrollo operacion (funcionamiento) y mantenimiento del software:  es decir,  la aplicacion de ingenieria al software. [IEEE, 1993]</li>
<li>La <a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria de Software</a> es una disciplina de la ingenieria que comprende todos los aspectos de la produccion de software desde las etapas iniciales de la especificacion del sistema hasta el mantenimiento de este despues que se utiliza. [Sommerville, 2004]</li>
<li>La <a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria de Software</a> es una disciplina que integra el proceso, los metodos, y las herramientas para el desarrollo de software de computadora. [Pressman, 2005]</li>
</ul>
<p><strong>Principales areas de estudio y/o investigacion</strong></p>
<ul>
<li>Metodos y Metodologias de Desarrollo de Software</li>
<li><a href="http://www.rodolfoquispe.org/blog/que-es-un-proceso-de-desarrollo-de-software.php" target="_self">Procesos de Desarrollo de Software</a></li>
<li>Gestion de Proyectos de Software</li>
<li>Medicion y Estimacion de Software</li>
<li><a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-requerimientos.php" target="_self">Ingenieria de Requisitos</a> / Requerimientos</li>
<li><a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria de Software</a> Empirica</li>
<li>Gestion de Riesgos</li>
<li>Usabilidad de Software</li>
<li>Evaluacion de Software</li>
<li>Metricas de Software</li>
<li><a href="http://www.rodolfoquispe.org/blog/que-es-la-calidad-de-software.php" target="_self">Calidad de Software</a></li>
<li><a href="http://www.rodolfoquispe.org/blog/que-son-los-metodos-formales.php" target="_self">Metodos Formales</a></li>
<li>Ingenieria Web</li>
</ul>
<p><strong>Referencias:</strong></p>
<ul>
<li>Roger Pressman. <strong><a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria del Software</a>: Un Enfoque Practico</strong>. McGraw-Hill. 2006</li>
<li>Ian Sommerville. <a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self"><strong>Ingenieria de Software</strong></a>. Pearson. 2005</li>
<li>Alfredo Weitzenfeld. <strong><a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria de Software</a> Orientada a Objetos: Teoría y Práctica con <a href="http://www.rodolfoquispe.org/blog/que-es-el-lenguaje-unificado-de-modelado.php" target="_self">UML</a> y Java</strong>. Thomson Paraninfo. 2005</li>
<li>Mario G. Piattini y Otros. <strong>Analisis y Diseño de Aplicaciones Informáticas de Gestión: Una perspectiva de <a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingenieria del Software</a></strong>. Editorial Ra-Ma. 2003</li>
<li>Eric J. Braude. <strong><a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingeniería de Software</a>: Una perspectiva orientada a objetos</strong>. Editorial Ra-Ma. 2003</li>
<li>Stephen R. Schach. <strong><a href="http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php" target="_self">Ingeniería de Software</a> Clasica y Orientada a Objetos</strong>. McGraw-Hill. 2006</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

