Breve Historia Del Software

  • Uploaded by: Romer Ely Quito Rojas
  • 0
  • 0
  • January 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Breve Historia Del Software as PDF for free.

More details

  • Words: 9,199
  • Pages: 13
Loading documents preview...
AREAS TECNICAS – E.P.T. COMPUTACION E INFORMATICA

BREVE HISTORIA DEL SOFTWARE Las computadoras pueden ser descritas por dos elementos básicos: el hardware y el software. El hardware es la parte de una computadora que es visible y tangible. En cambio, el software es el programa para computadoras, es decir, el juego de instrucciones que controla el hardware. Inicialmente, el gasto en computación era principalmente de hardware y el software era gratuito, o era incluido en el precio del hardware. Con la evolución de la técnica, los costos del hardware han disminuido en forma contínua, mientras que el costo del software se ha transformado en la parte más importante del gasto en tecnología informática. Una idea muy extendida en la gente es que el hardware es más importante que el software. Como concepto general, el software puede dividirse en varias categorías dependiendo del tipo de trabajo realizado. Las dos categorías primarias de software son:  

Sistemas operativos (o software del sistema) que controlan el trabajo y funcionamiento del computador, Software de aplicación que entrega solución a tareas específicas para las que se utiliza el computador.

Otras categorías son: software de red (para el funcionamiento de redes y comunicaciones) y software de lenguaje (utilizado para escribir programas) Además de estas categorías basadas en tareas, varios tipos de software se describen basándose en su método de distribución. Entre ellos se encuentran los software empaquetados, desarrollados por compañías para ser vendidos principalmente a través de distribuidores; el freeware o software gratuito, que se ofrece sin costo alguno; el shareware, similar al freeware pero con limitaciones adicionales. Existen también las licencias libres, en particular aquellas copyleftcomo la GNU GPL, y las permisivas como por ejemplo la Licencia BSD y la Licencia MIT. Las licencias libres se caracterizan por brindar al licenciatario el permiso de usarlo con cualquier propósito, estudiarlo, distribuirlo y modificarlo.

Historia y evolución de la industria del software     



1960-1970: Grandes computadoras centrales (mainframes) dominaban las grandes corporaciones. Los usuarios se limitaban a terminales sin poder de procesamiento. Principio de los 80's: Se hace realidad tener un “computador de escritorio” (PC: Personal Computer). Paralelamente nace el “software de escritorio”, que promueve la productividad personal, como planillas de calculo y procesadores de texto. Mediados de los 80´s: Los PCs se comienzan a conectar (Redes y Servidores). Se comparten archivos, discos duros e impresoras. Se popularizan aplicaciones como el correo electrónico y agendas compartidas. Principio de los 90´s: Es el dominio de sistemas cliente/servidor. Mediados de los 90´s: Irrumpe con fuerza la red global: Internet. En sus inicios páginas estáticas entregan información, pero rápidamente se utiliza como medio de acceder a aplicaciones dinámicas e interactivas. Hoy en día las empresas extienden sus brazos sobre la red para eliminar intermediarios y acercar los procesos a los usuarios internos (intranet) o externos (extranet) a través de aplicaciones. Nacen nuevos negocios basados en Internet: e-commerce. Principio del 2000: Las redes inalámbricas, dispositivos móviles y celulares irrumpen con fuerza en los campos del entretenimiento, la música y los videos en Internet. Internet es usado normalmente para buscar información a través de buscadores de Internet (Google, Yahoo! y otros) y publicar información personal en Blogs.

ROMER E. QUITO ROJAS

AREAS TECNICAS – E.P.T. COMPUTACION E INFORMATICA

Desarrollo, producción y venta El costo de producción de un paquete de software es insignificante, si se compara con el alto costo de su desarrollo. Las empresas de software amortizan el desarrollo con la venta de una gran cantidad de paquetes de software. El fabricante que más venda dispondrá de mayor dinero para el desarrollo, marketing, distribución, etc., además de ganar crecientes economías de escala. Es por ello que el mercado del software tiene tendencia al monopolio. Las compañías pequeñas desaparecen o se fusionan con empresas más grandes, debido a su pequeña base instalada de usuarios, bajo soporte técnico y presupuestos de desarrollo escasos. En esta industria el proceso de acumulación de ganancias puede ser muy rápido. Cuando el producto es exitoso genera importantes ganancias, a diferencia de uno que no, perderá mercado y será desplazado por otros que lo sustituirán y sus ganancias caerán abruptamente. Por esta razón una vez que un fabricante ha logrado una porción del mercado lo defiende a toda costa. Las técnicas habituales para defender su posición en el mercado son: cambio permanente (nuevas versiones), complejidad innecesaria y uso de la propiedad intelectual. Algunas técnicas de marketing con el mismo fin es el vapourware, que es cuando el software se promociona mucho antes de ser presentado o simplemente nunca llega. Las compañías de software se encargan de tener poderosas fuerzas de venta y canales de distribución Los gastos iniciales en desarrollo, marketing e infraestructura de soporte técnico para las versiones iniciales son significantes. El desarrollo de nuevas versiones basadas en una anterior requiere menos gastos para desarrollar porque están basadas en la misma técnica de desarrollo. Los márgenes gruesos en el negocio del software son a menudo 70% o 80% ya que se necesitan muy pocos gastos para soportar una compañía de software. El trabajo del recurso humano es el mayor ítem ya que el desarrollo de software a menudo involucra el trabajo en equipo de 6, 12 o incluso 100 personas. En la industria es común las compras hostiles o agresivas, Hay quienes dicen que la fusión de dos compañías es mucho más costosa que desarrollar sus propios productos [¿por quién?]. Un ejemplo es IBM, que en el pasado ha adquirido compañías como Tivoli, Corepoint, Lotus Development y recientemente Informix (base de datos que compite contraOracle). Es usual que las compañías de software tengan programas para reclutar socios de negocios (business partners program), con la cual amplían su marco de acción. Hay que distinguir que la venta de software empaquetado es diferente a la venta de software a la medida o para empresas. En general el software empaquetado es instalado por el usuario y está listo para ser usado. Ofrece una solución común a todos a diferencia de un software a medida que satisface exactamente las necesidades del usuario. Además el soporte técnico se limita a un soporte telefónico [cita requerida]. La distribución de software empaquetado está a cargo de distribuidores mayoristas que compran a fabrica volúmenes considerables a precios que les permiten una reventa con un cierto margen. El producto llega al usuario final a través de resellers o tiendas retail. Los márgenes de un distribuidor mayorista pueden variar entre un 3-5%, mientras que el reseller gana en torno al 10% Algunos de ellos son:Ingram-Micro, Merisel

Software para desarrollo Existe una categoría de software que requiere que se le agregue valor, como pueden ser los software de desarrollo (lenguajes de desarrollo o software que necesita sea adaptado e integrado). Este tipo de software va dirigido a empresas y es vendido por revendedores con un conocimiento mayor que entregan servicios adicionales a la simple venta de una caja (VAR: Value Added Resellers). En la venta de software para grandes empresas o corporaciones, en general, se involucran directamente las marcas de software ya que les interesa tomar los proyectos grandes y poder vender adicionalmente capacitación, desarrollo, soporte, licencias y actualizaciones y consultoría. Los avances en tecnología del hardware y software de los últimos años han convertido al negocio de la computación en algo complejo. Es muy poco probable que las empresas pongan en marcha sus sistemas de computación sin la ayuda o asistencia de los vendedores de software (ejm:SAP)

ROMER E. QUITO ROJAS

AREAS TECNICAS – E.P.T. COMPUTACION E INFORMATICA

Licencias de software La licencia es un contrato en donde se proveen ciertos permisos como el de instalación, uso del software (no la propiedad), modificación del mismo, redistribución, entre otros, junto a posibles condiciones como la prohibición a la ingeniería inversa o la prohibición a la modificación de la licencia al redistribuir. Recordemos que una licencia permite el uso de una versión, idioma y plataforma determinada del software (por ejemplo MS-Word versión 9.0, en español, para Windows). Aunque la tendencia es simplificar dichas restricciones y muchas compañías tienen licencias multiplataformas, multilingües y permiten hacer una copia del software en casa o en el portátil, si ya existe una licencia en la oficina o lugar de trabajo. Se requiere una licencia por cada programa que se utiliza. Existen diferentes enfoques para la "utilización" de un programa. El más obvio es aquel que establece que cada usuario que instale el programa en su PC debe pagar por una licencia, sin embargo, en el caso de instalaciones en red, algunas compañías han definido que la "tasa de utilización" es en torno al 50 o 60% del total de empleados (concurrencia). La concurrencia se basa en que un programa puede ser ocupado por más de una persona simultáneamente, pero nunca por todos al mismo tiempo, por lo que no es necesario adquirir el 100% de las licencias, sino un porcentaje menor. Algunos software más sofisticadas son capaces de determinar cuantas personas están ocupando el programa en un momento dado. Con la llegada del computador personal a principios de los 80´s, también nació el mercado masivo del software y el licenciamiento adquirió real interés. Hoy en día el licenciamiento se puede comprar a través de software empaquetado, programas de licenciamientos especiales o corporativos (por volúmenes, orientados a corporaciones, instituciones académicas o gobierno) o al comprar un PC con software pre instalado. La licencia financia el desarrollo futuro de nuevas versiones.

Tendencias en el licenciamiento Hasta hace poco, casi todas las licencias eran compradas sobre una base de "licencias perpetuas", o sea los compradores pagaban una vez y usaban el software por tanto tiempo como ellos quisieran. La tendencia es lograr relaciones de largo plazo con los usuarios, más que vender "licenciamiento perpetuo" que luego hay que actualizar. Las compañías de software lanzan "versiones mayores" una vez al año o cada dos años, sin embargo, durante el año se liberan una serie de "versiones menores" que reparan "bugs", dan mayor estabilidad al software o entregan nuevas capacidades. Los Contratos de Mantención o Actualización tienen la ventaja de permitir estar siempre actualizado con las últimas versiones. Los contratos pueden ser de un año, dos años o más. Para las compañías de software estos contratos les permiten crear una relación más cercana y de largo plazo con las empresas, así como un flujo esperado de ingresos. El valor de un Contrato de Actualización es aproximadamente el 25-30% del valor de la licencia. Mientras existe cierto valor de ser propietario de por vida, hay beneficios mayores al "arrendar". La nueva modalidad es el Arrendamiento de Software o Suscripción, el cual permite usar el software por un periodo limitado, sin tener que incurrir en el costo de comprar licencias (costo de propiedad). Por otro lado el vendedor evita los largos periodos de evaluación y logra establecer una relación comercial a largo plazo Las licencias de acceso (o en inglés, CAL: Client Access License) se emplea para software en servidores. Es una licencia que se debe adquirir por cada terminal (PC, pager, PDA, etc) accediendo una aplicación en el back-office. A diferencia del modelo cliente/servidor en que se paga por el software y por el acceso a los servicios, en este caso, solo se paga por el acceso ya que el software es proporcionado en forma gratuita o incluido en el terminal (por ejemplo: browsers)

Infracción de copyright La duplicación no autorizada del software viola el derecho de autor y propiedad intelectual. Reproducir (instalar o copiar) software sin licenciar (sin autorización) es un delito y está penado por la ley.

ROMER E. QUITO ROJAS

AREAS TECNICAS – E.P.T. COMPUTACION E INFORMATICA

La instalación de software en disco duro, es una práctica muy común entre los armadores de PCs. La copia de software por usuarios finales es una práctica que se ha hecho tan común, como fotocopiar un libro. Sin embargo esta práctica a gran escala para su comercialización (falsificación) Otro delito es la distribución no autorizada. Compra de licencias por volúmenes con descuento (corporaciones, instituciones académicas o gubernamentales) y su posterior redistribución a empresas que no califican. Existe licenciamiento para integradores de hardware o fabricante de computadores (vienen en empaque diferente o pre-instalado) Derecho de Reproducción, debe ser autorizada por el autor. Existen dos excepciones: Al comprar un software oficial, este puede instalarse en el computador para su uso (con lo cual se realiza una copia, que obviamente es necesaria para el funcionamiento). La segunda excepción es la copia de archivo o respaldo (copia de seguridad). Obviamente la copia de archivo o respaldo no puede ser ocupada simultáneamente a la copia instalada en el computador.

Software en línea Es una alternativa barata frente a la venta de software y no tendría que pagar por reparaciones o actualizaciones. Son accesibles desde cualquier lugar ya que almacenan los datos en línea. Entre las alternativas al Office, está ThinkFree. Para procesadores de texto está ThinkFree Write. Para las hojas de cálculo está ThinkFree Calc, WikiCalc, Num Sum e iRows. Para los correos electrónicos está Gmail de Google, Hotmail de Microsoft, Yahoo! Mail y otros servicio de email basados en la Web. 1 Muchas empresas de tecnología como Oracle, Hewlett-Packard Co., entre otras están usan el software en línea para reducir costos.2

PROCESO PARA EL DESARROLLO DE SOFTWARE El Proceso para el desarrollo de software, también denominado ciclo de vida del desarrollo de software es una estructura aplicada al desarrollo de un producto de software. Hay varios modelos a seguir para el establecimiento de un proceso para el desarrollo de software, cada uno de los cuales describe un enfoque diferente para diferentes actividades que tienen lugar durante el proceso. Algunos autores consideran un modelo de ciclo de vida un término más general que un determinado proceso para el desarrollo de software. Por ejemplo, hay varios procesos de desarrollo de software específicos que se ajustan a un modelo de ciclo de vida de espiral. Generalidades: La gran cantidad de organizaciones de desarrollo de software implementan metodologías para el proceso de desarrollo. Muchas de estas organizaciones pertenecen a la industria armamentística, que en los Estados Unidos necesita un certificado basado en su modelo de procesos para poder obtener un contrato. El estándar internacional que regula el método de selección, implementación y monitoreo del ciclo de vida del software es ISO 12207. Durante décadas se ha perseguido la meta de encontrar procesos reproducibles y predecibles que mejoren la productividad y la calidad. Algunas de estas soluciones intentan sistematizar o formalizar la aparentemente desorganizada tarea de desarrollar software. Otros aplican técnicas de gestión de proyectos para la creación del software. Sin una gestión del proyecto, los proyectos de software corren el riesgo de demorarse o consumir un presupuesto mayor que el planeado. Dada la cantidad de proyectos de software que no cumplen sus metas en términos de funcionalidad, costes o tiempo de entrega, una gestión de proyectos efectiva es algo que a menudo falta. Algunas organizaciones crean un grupo propio (Software Engineering Process Group, abreviado SEPG) encargado de mejorar los procesos para el desarrollo de software en la organización. Actividades del desarrollo de software: Actividades del proceso de desarrollo de software representados en el desarrollo en cascada. Hay algunos modelos más para representar este proceso.

ROMER E. QUITO ROJAS

AREAS TECNICAS – E.P.T. COMPUTACION E INFORMATICA

Planificación: La importante tarea a la hora de crear un producto de software es obtener los requisitos o el análisis de los requisitos. Los clientes suelen tener una idea más bien abstracta del resultado final, pero no sobre las funciones que debería cumplir el software. Una vez que se hayan recopilado los requisitos del cliente, se debe realizar un análisis del ámbito del desarrollo. Este documento se conoce como especificación funcional. Implementación, pruebas y documentación: La implementación es parte del proceso en el que los ingenieros de software programan el código para el proyecto. Las pruebas de software son parte esencial del proceso de desarrollo del software. Esta parte del proceso tiene la función de detectar los errores de software lo antes posible. La documentación del diseño interno del software con el objetivo de facilitar su mejora y su mantenimiento se realiza a lo largo del proyecto. Esto puede incluir la documentación de un API, tanto interior como exterior. Despliegue y mantenimiento: El despliegue comienza cuando el código ha sido suficientemente probado, ha sido aprobado para su liberación y ha sido distribuido en el entorno de producción. Entrenamiento y soporte para el software es de suma importancia y algo que muchos desarrolladores de software descuidan. Los usuarios, por naturaleza, se oponen al cambio porque conlleva una cierta inseguridad, es por ello que es fundamental instruir de forma adecuada a los futuros usuarios del software. El mantenimiento o mejora del software de un software con problemas recientemente desplegado, puede requerir más tiempo que el desarrollo inicial del software. Es posible que haya que incorporar código que no se ajusta al diseño original con el objetivo de solucionar un problema o ampliar la funcionalidad para un cliente. Si los costes de mantenimiento son muy elevados puede que sea oportuno rediseñar el sistema para poder contener los costes de mantenimiento.

Modelos de Desarrollo de Software: Los modelos de desarrollo de software son una representación abstracta de una manera en particular. Realmente no representa cómo se debe desarrollar el software, sino de un enfoque común. Puede ser modificado y adaptado de acuerdo a las necesidades del software en proceso de desarrollo. 1 Hay varios modelos para perfilar el proceso de desarrollo, cada uno de las cuales cuenta con pros y contras. El proyecto debería escoger el más apropiado para sus necesidades. En ocasiones puede que una combinación de varios modelos sea apropiado. Existen tres paradigmas de los modelos de desarrollo de software: 1. Paradigma Tradicional: Es uno de los paradigmas más antiguo, se inventó durante la creación del método estructurado. Si se elige un proyecto, el método varia en etapas.2 Como todo modelo, existen sus pros y contras al usar este paradigmas: Si se aplica este paradigma, unos de los principales problemas , es que las etapas realizadas no son autónomas de las siguientes, creando una dependencia estructural y en el caso de un error atrasaría todo el proyecto. Se tiene que tener pautas bien definidas, y que no se incurra a modificación porque implicaría en que el software no cumpla con su ciclo de vida. Tener en cuenta que el cliente no se vea afectado por la impaciencia.3 2. Paradigma Orientado a Objetos: Estos modelos se basan en la Programación orientada a objetos; por lo tanto, se refiere al concepto de clase, el análisis de requisitos y el diseño. El modelo o paradigma orientado a objetos posee dos características principales, las cuales son:  Permite la re-utilización de software. ROMER E. QUITO ROJAS

AREAS TECNICAS – E.P.T. COMPUTACION E INFORMATICA



Facilita el desarrollo de herramientas informáticas de apoyo al desarrollo, el cual es simple al implementarla en una notación orientado a objetos llamado UML.4 3. Paradigma de Desarrollo Ágil: Es un paradigma de las Metodologías De Desarrollo basado en procesos ágiles. Estos intentan evitar los tediosos caminos de las metodologías tradicionales enfocándose en las personas y los resultados. Usa un enfoque basado en el Valor para construir software, colaborando con el cliente e incorporando los cambios continuamente.5 Modelo de cascada: El modelo de cascada define las siguientes etapas que deben cumplirse de forma sucesiva: 1. Especificación de requisitos 2. Diseño del software 3. Construcción o Implementación del software 4. Integración 5. Pruebas (o validación) 6. Despliegue (o instalación) 7. Mantenimiento Siguiendo el modelo de cascada de forma estricta, sólo cuando se finaliza una fase, comienza la otra. En ocasiones se realiza una revisión antes de iniciar la siguiente fase, lo que permite la posibilidad de cambios (lo que puede incluir un proceso de control formal de cambio). Las revisiones también se utilizan para asegurar que la fase anterior ha sido totalmente finalizada; los criterios para completar una fase se conocen frecuentemente con el término inglés "gate" (puerta). Este modelo desaconseja revisitar y revisar fases que ya se han completado. Esta falta de flexibilidad en un modelo de cascada puro ha sido fuente de crítica de los defensores de modelos más flexibles. Modelo de espiral: La principal características del modelo en espiral es la gestión de riesgos de forma periódica en el ciclo de desarrollo. Este modelo fue creado en 1988 por Barry Boehm, combinando algunos aspectos clave de las metodologías del modelo de cascada y del desarrollo rápido de aplicaciones, pero dando énfasis en un área que para muchos no jugó el papel que requiere en otros modelos: un análisis iterativo y concienzudo de los riesgos, especialmente en el caso de sistema complejos de gran escala. La espiral se visualiza como un proceso que pasa a través de algunas interaciones con el diagrama de los cuatro cuadrantes representativos de las siguientes actividades: 1. crear planes con el propósito de identificar los objetivos del software, seleccionados para implementar el programa y clarificar las restricciones en el desarrollo del software; 2. Análisis de riesgos: una evaluación analítica de programas seleccionados, para evaluar como identificar y eliminar el riesgo; 3. la implementación del proyecto: implementación del desarrollo del software y su pertinente verificación; Modelo de espiral con énfasis en los riesgos, haciendo hincapié en las condiciones de las opciones y limitaciones para facilitar la reutilización de software, la calidad del software puede ayudar como una meta propia en la integración en el desarrollo del producto. Sin embargo, el modelo en espiral tiene algunas limitaciones, entre las que destacan: 1. El énfasis se sitúa en el análisis de riesgo, y por lo tanto requiere de clientes que acepten este análisis y actúen en consecuencia. Para ello es necesaria confianza en los desarrolladores así como la predisposición a gastar más para solventar los temas, por lo cual este modelo se utiliza frecuentemente en desarrollo interno de software a gran escala. 2. Si la implementación del riesgo de análisis afectará de forma esencial los beneficios del proyecto, no debería utilizarse este modelo. 3. Los desarrolladores de software han de buscar de forma explícita riesgos y analizarlos de forma exhaustiva para que este modelo funcione. La primera fase es la búsqueda de un plan para conseguir los objetivos con las limitaciones del proyecto para así buscar y eliminar todos los riesgos potenciales por medio de un cuidadoso análisis, y si fuera necesario incluyendo la fabricación de un prototipo. Si es imposible descartar algunos riesgos, el cliente ha de decidir si es conveniente terminar el proyecto o seguir adelante ignorando los riesgos. Por último, se evalúan los resultados y se inicia el diseño de la siguiente fase. Desarrollo iterativo e incremental: El desarrollo iterativo recomienda la construcción de secciones reducidas de software que irán ganando en tamaño para facilitar así la detección de problemas de importancia antes de que sea demasiado tarde. Los procesos iterativos pueden ayudar a desvelar metas del diseño en el caso de clientes que no saben cómo definir lo que quieren.6 Desarrollo ágil El desarrollo ágil de software utiliza un desarrollo iterativo como base para abogar por un punto de vista más ligero y más centrado en las personas que en el caso de las soluciones tradicionales. Los procesos ágiles utilizan retroalimentación en lugar de planificación, como principal mecanismo de control. La retroalimentación se canaliza por medio de pruebas periódicas y frecuentes versiones del software. ROMER E. QUITO ROJAS

AREAS TECNICAS – E.P.T. COMPUTACION E INFORMATICA

Hay muchas variantes de los procesos ágiles:  En el caso de la programación extrema (XP), las fases se realizan en pasos muy cortos (o "continuos") con respecto al anterior. El primer paso (intencionalmente incompleto) por los pasos puede ocurrir en un día o en una semana, en lugar de los meses o años de cada paso completo en el modelo en cascada. En primer lugar, se crean pruebas automatizadas para proveer metas concretas al desarrollo. Después se programa el código, que será completo cuando todas las pruebas se superan sin errores, y los desarrolladores ya no sabrían como mejorar el conjunto de pruebas necesario. El diseño y la arquitectura emergen a partir de la refactorización del código, y se da después de programar. El diseño lo realizan los propios desarrolladores del código. El sistema, incompleto, pero funcional se despliega para su demostración a los usuarios (al menos uno de los cuales pertenece al equipo de desarrollo). Llegado este punto, los profesionales comienzan a escribir las pruebas para la siguiente parte del sistema de más importancia. Codificación y corrección El desarrollo de codificación y corrección (en inglés "Code and fix") es, más que una estrategia predeterminada, el resultado de una falta de experiencia o presión que se ejerce sobre los desarrolladores para cumplir con una fecha de entrega. 7 Sin dedicar tiempo de forma explícita para el diseño, los programadores comienzan de forma inmediata a producir código. Antes o después comienza la fase de pruebas de software (a menudo de forma tardía) y los inevitables errores que se encuentran han de eliminarse antes de poder entregar el software. Orientado a la Reutilización La reutilización de software es un proceso donde se recurre al uso de activos de software en las especificaciones de análisis, diseños, implementación y pruebas de una aplicación o sistemas de software. 8 La reutilización tiene ciertos Indicadores por ejemplo: 1. Entre el 40% y 60% de una aplicación es reutilizable en otra. 2. Aproximadamente el 60% de una aplicación administrativa es reutilizable. 3. Aproximadamente el 75% de las funciones son comunes a más de un programa. 4. Solo el 15% del código encontrado en muchos sistemas es único y novedoso a una aplicación específica. El rango general de uso recurrente esta entre el 15% y 85%. 9 La reutilización tiene Principios como la existencia de parecidos en distintos sistemas de un mismo dominio, donde el software puede representarse como una combinación de módulos y los sistemas nuevos se puede caracterizar por diferencias respecto a los antiguos sistemas. 10 Modelos de mejora de procesos El Capability Maturity Model Integration (CMMI), en español «Integración de Modelos de Madurez de Capacidades» es uno de los modelos líderes basados en mejores prácticas. Son evaluaciones independientes las que confirman el grado con el que una organización siguen sus propios procesos, que no evalúa la calidad de los procesos o del software que se produce. CMMI ha reemplazado a CMM y tiene un ámbito global, no sólo en procesos destinados al desarrollo del software. ISO 9000 ISO 9000 describe estándares para un proceso organizado formalmente para resultar en un producto y los métodos de gestión y monitoreo del progreso. Aunque este estándar se creó inicialmente para el sector de producción, los estándares de ISO 9000 también se han aplicado al desarrollo del software. Al igual que CMMI, que una organización está certificada con el ISO 9000 no garantiza la calidad del resultado final, sólo confirma que se ha seguido los procesos establecidos. ISO 15504 ISO 15504, también conocido como Software Process Improvement Capability Determination (SPICE), en español «Determinación de la Capacidad de Mejora del Proceso de Software» es un marco para la evaluación de procesos de software. Este estándar tiene como objetivo un modelo claro para poder comparar procesos. SPICE se utiliza como en el caso de CMMI. Modela procesos para gestionar, controlar, guiar y monitorear el desarrollo del software. Este modelo se utiliza entonces para medir lo que una organización o proyecto hace durante el desarrollo del software. Esta información se analiza para identificar puntos débiles y definir acciones para subsanarlos. También identifica puntos fuertes que pueden adoptarse en el resto de la organización. Métodos formales Los métodos formales son soluciones matemáticas para resolver problemas de software y hardware a nivel de requisitos, especificación y diseño. Ejemplos de métodos formales incluyen el Método B, la red de Petri, la demostración automática de teoremas, RAISE y el VDM. Hay varias notaciones de especificaciones formales, tales como el lenguaje Z. Más generalmente, se puede utilizar la teoría de autómatas para aumentar y validar el comportamiento de la aplicación diseñando un sistema de autómata finito. Las metodologías basadas en los autómatas finitos permiten especificación de software ejecutable y evitar la creación convencional de código. Los métodos formales se suelen aplicar en software de aviación, especialmente si es software de seguridad crítico. Los estándares de aseguramiento del software de seguridad, tales como DO178B demandan métodos formales en el nivel más alto de categorización (Nivel A). ROMER E. QUITO ROJAS

AREAS TECNICAS – E.P.T. COMPUTACION E INFORMATICA

La formalización del desarrollo de software está ganando en fuerza poco a poco, en otros ámbitos, con la aplicación del lenguaje de especificación OCL2.0 (y especializaciones tales como Java Modeling Language) y particularmente con Model-driven Architecture, que permite la ejecución de diseños, incluso especificaciones. Otra tendencia que está surgiendo en el desarrollo de software es la redacción de especificaciones en algún tipo de lógica (normalmente una variación de FOL), para acto seguido ejecutar esa lógica como si se tratase de un programa. El lenguaje OWL, basado en lógica descriptiva, es un buen ejemplo. También se está trabajando en enlazar un idioma natural de forma automática con lógica, lógica que puede ejecutarse. Ejemplo en este campo es el Attempto Controlled English, una lógica de negocios de Internet, que no busca controlar el vocabulario o la sintaxis. Una características de los sistemas que apoyan el vínculo bidireccional inglés-lógica y ejecución directa de la lógica es que pueden explicar sus resultados en inglés en un nivel de negocios o científico. El proceso que se sigue para construir, entregar y hacer evolucionar el software, desde la concepción de una idea hasta la entrega y el retiro del sistema. Pre-alfa La fase conocida como '''pre-alfa''' se publica a veces antes del lanzamiento de una versión alfa o beta. En contraste con la versión alfa y las versiones beta, la pre-alfa no tiene sus características completas. Los diseñadores todavía están determinando en esta etapa exactamente qué funcionalidades debe tener el producto. Tales etapas se pueden llamar también ''development releases'' o ''nightly builds''. Alfa La versión '''alfa''' de un producto es la primera para la que el equipo de desarrollo decide que implementa todas las funcionalidades especificadas en los requisitos. Es la primera versión del programa que se envía a los verificadores para probarla. Algunos equipos de desarrollo utilizan el término '''alfa''' informalmente para referirse a una fase donde un producto todavía es inestable, aguarda todavía a que se eliminen los errores o a la puesta en práctica completa de toda su funcionalidad, pero satisface la mayoría de los requisitos. El nombre se deriva de alfa, la primera letra en el alfabeto griego. Beta Una '''versión beta''' o '''lanzamiento beta''' representa generalmente la ''primera versión completa'' del programa informático o de otro producto, que es probable que sea inestable pero útil para que las demostraciones internas y las inspecciones previas seleccionen a clientes. Algunos desarrolladores se refieren a esta etapa como ''inspección previa (preview)'' o como una ''inspección previa técnica (technical preview )''. Esta etapa comienza a menudo cuando los desarrolladores anuncian una congelación de las características del producto, indicando que no serán agregadas más características a esta versión y que solamente se harán pequeñas ediciones o se corregirán errores. Las versiones beta están en un paso intermedio en el ciclo de desarrollo completo. Los desarrolladores las lanzan a un grupo de '''probadores beta''' o betatester (a veces el público en general) para una prueba de usuario. Los probadores divulgan cualquier error de software que encuentran y características, a veces de menor importancia, que quisieran ver en la versión final. Cuando una versión beta llega a estar disponible para el público en general que a menudo es utilizada extensamente por los tecnológicamente expertos o familiarizados con versiones anteriores, como si el producto estuviera acabado. Generalmente los desarrolladores de las versiones betas del freeware software gratuito o de código abierto los lanzan al público en general, mientras que las versiones beta propietarias van a un grupo relativamente pequeño de probadores. En febrero de 2005, ZDNet publicó un artículo acerca del fenómeno reciente de las versiones beta que permanecían a menudo por años y que eran utilizada como si estuvieran en nivel de producción. Observa que Gmail, igual que las Google noticias, por ejemplo, han estado en beta por un período de tiempo muy largo y no saldrán del estado beta a pesar del hecho de que se han utilizado extensamente. Esta técnica puede también permitir a un desarrollador retrasar el ofrecimiento de apoyo total o la responsabilidad de ediciones restantes. Los receptores de betas altamente propietarias pueden tener que firmar un acuerdo de no revelación. Como esta es la segunda etapa en el ciclo de desarrollo que sigue la etapa de alfa, esta se nombra como la siguiente letra griega beta. Versión candidata a definitiva El término '''candidata a definitiva''' o '''candidata para el lanzamiento''' (si traducimos más literalmente desde el término en inglés, ''release candidate'') se refiere a un producto final, preparado para lanzarse como versión definitiva a menos que aparezcan errores que lo impidan. En esta fase el producto implementa todas las funciones del diseño y se encuentra libre de cualquier error que suponga un punto muerto en el desarrollo. Microsoft utiliza frecuentemente este término. Otros términos relacionados incluyen gamma, delta (y tal vez más letras griegas) para versiones que están prácticamente completas pero todavía en pruebas; y omega para versiones que se creen libres de errores y se hallan en el proceso final de pruebas. Gamma, delta y omega son, respectivamente, la tercera, cuarta y última letras del alfabeto griego. Versión de disponibilidad general

ROMER E. QUITO ROJAS

AREAS TECNICAS – E.P.T. COMPUTACION E INFORMATICA

La versión de disponibilidad general (también llamada "dorada") de un producto es su versión final. Normalmente es casi idéntica a la versión candidata final, con sólo correcciones de último momento. Esta versión es considerada muy estable y relativamente libre de errores con una calidad adecuada para una distribución amplia y usada por usuarios finales. En versiones comerciales, puede estar también firmada (usado para que los usuarios finales verifiquen que el código no ha sido cambiado desde su salida. La expresión de que un producto "se ha dorado" significa que que el código ha sido completado y que "está siendo producido masivamente y estará en venta próximamente". El término "dorado" se refiere anecdóticamente al uso del "disco maestro de oro" que fue frecuentemente usado para enviar la versión final a los fabricantes que lo usan para producir las copias de venta al detalle. Esto puede ser una herencia de la producción musical. En algunos casos, sin embargo, el disco maestro está realmente hecho de oro, tanto por apariencia estética como por resistencia a la corrosión. Microsoft y otros usan el término "release to manufacturing" (RTM) para referirse a esta versión (para productos comerciales como Windows XP, tal como "Build 2600 is the Windows XP RTM release"), y "release to Web" (RTW) para productos libremente descargables. El mantenimiento de software El mantenimiento de software es una de las actividades más comunes en la Ingeniería de Software y es el proceso de mejora y optimización del software desplegado (es decir; revisión del programa), así como también corrección de los defectos. El mantenimiento de software es también una de las fases en el Ciclo de Vida de Desarrollo de Sistemas (SDLC ó System Development Life Cycle), que se aplica al desarrollo de software. La fase de mantenimiento es la fase que viene después del despliegue (implementación) del software en el campo. Tipos de mantenimiento A continuación se señalan los tipos de mantenimientos existentes, y entre paréntesis el porcentaje aproximado respecto al total de operaciones de mantenimiento: Perfectivo: (60%): mejora del software (rendimiento, flexibilidad, reusabilidad) o implementación de nuevos requisitos. También se conoce como mantenimiento evolutivo. Adaptativo DESARROLLO DEL SOFTWARE Desarrollar un software significa construirlo simplemente mediante su descripción. Está es una muy buena razón para considerar la actividad de desarrollo de software como una ingeniería. En un nivel más general, la relación existente entre un software y su entorno es clara ya que el software es introducido en el mundo de modo de provocar ciertos efectos en el mismo. Aquellas partes del mundo que afectarán al software y que serán afectadas por él será el Dominio de Aplicación. Es allí donde los usuarios o clientes observarán si el desarrollo del software ha cumplido su propósito. Una de las mayores deficiencias en la práctica de construcción de software es la poca atención que se presta a la discusión del problema. En general los desarrolladores se centran en la solución dejando el problema inexplorado. El problema a resolver debe ser deducido a partir de su solución. Esta aproximación orientada a la solución puede funcionar en campos donde todos los problemas son bien conocidos, clasificados e investigados, donde la innovación se ve en la detección de nuevas soluciones a viejos problemas. Pero el desarrollo de software no es un campo con tales características. La versatilidad de las computadoras y su rápida evolución hace que exista un repertorio de problemas en constante cambio y cuya solución software sea de enorme importancia. Desarrollo del Software Cuando se va desarrollar un software intervienen muchas personas como lo es el cliente quien es el que tiene el problema en su empresa y desea que sea solucionado, para esto existe el analista de sistema quien es el encargado de hacerle llegar todos los requerimientos y necesidades que tiene el cliente a los programadores quienes son las personas encargadas de realizar lo que es la codificación y diseño del sistema para después probarlo y lo instalan al cliente. Es así como intervienen varias personas ya que una sola persona no podría determinar todo lo necesario lo mas seguro que le haga falta algún requerimiento o alguna parte del nuevo sistema y entre mas estén involucradas mejor para cubrir con todos los requerimientos del sistema. Proceso

ROMER E. QUITO ROJAS

AREAS TECNICAS – E.P.T. COMPUTACION E INFORMATICA

El proceso de desarrollo del software se muestra gráficamente en la parte de arriba, a continuación desarrollara una breve explicación del mismo. El primer paso del proceso es el análisis, es aquí donde el analista se pone en contacto con la empresa para ver como esta conformada, a que se dedica, saber todas las actividades que realiza en si, conocer la empresa de manera general para posteriormente ver cuales son sus necesidades o requerimientos que la empresa tiene en ese momento para poder realizar un análisis de la misma. Es importante saber cuales son los requerimientos que la empresa tiene por que muchas veces los sistemas se desarrollan pero no pensando en el cliente y es ahí donde el sistema no cumple o no satisface las necesidades que existen en la empresa, según los requerimientos se empieza a realizar el diagrama relacional todo debe de llevar una secuencia lógica de las actividades, todo esto se realiza de manera manual para ver como será su diseño lógico y diseño de pantallas es en este paso donde se plasma todo y queda perfectamente bien definido como va hacer la funcionalidad del sistema. El segundo paso es el de diseño aquí entran todo el diseño del sistema es decir las pantallas, base de datos, todo esto debe de cumplir con ciertos estándares los cuales se toman en cuenta para poder desarrollar el diseño con calidad y así poder ofrecer un diseño amigable en cuestión de colores, tamaños de botones, cajas de texto, etc. El tercer paso es la codificación es aquí donde se desarrolla todo el código del sistema por parte del programador esto se hace ya dependiendo de cada programador ya que cada programador tiene sus bases o formas para realizarlo pero en si deben todos llegar al mismo objetivo de ofrecerle funcionalidad al sistema siempre y cuando apegando se a las especificaciones del cliente. El cuarto paso son las pruebas, es donde al sistema se pone a prueba como su palabra lo dice para así poder saber cuales son los posibles errores que se están generando del sistema y con ello mejorarlo para eliminar todos los errores que se puedan presentar por que un programa con menor errores mayor calidad puede llegar a tener. El quinto y último paso es la instalación una vez realizado las pruebas correspondientes al sistema y haberlo corregido totalmente se procede a la instalación del mismo ya en la empresa para su uso correspondiente, todo con la finalidad de que los procesos se realicen de una manera más eficiente eliminando costos, tiempo y esfuerzo dentro de la organización. Para aplicar la mejora continua a todo lo anterior es necesario aplicar ciertos pruebas las cuales deberán de probar cada etapa del desarrollo del software dichas pruebas se deben de realizar de forma paralela y de forma continua probando la unidad del programa, la integración del diseño físico, probando el sistema en cuestión al diseño lógico y por ultimo prueba de aceptación esta se realiza en base a los requerimientos que se obtuvieron anteriormente, este es un proceso de prueba sencilla y muy utilizada. Otros puntos que son importantes considerar son las auditorias y las acciones correctivas representan el motor impulsor de la mejora continua en el sistema de calidad, por lo que es de vital importancia llevar un estricto control en el seguimiento de todos los problemas o no conformidades desde su detección hasta la eliminación definitiva de la causa raíz. Para haber desarrollado un plan de prueba primero se debió haber basado en lo que son los requerimientos para posteriormente describir las técnicas de pruebas a utilizar que se aplicaran en las diferentes etapas del desarrollo del software. Algo muy importante que no se puede dejar pasar es que todas las pruebas se deben de realizar durante la realización del software ya que si se llegara esperar al final del desarrollo del sistema esto puede ser muy tardado y costoso devolverse al origen de los posibles errores, mientras todo programa se este probando durante su desarrollo es lo mejor y mas optimo para quien lo esta desarrollando, ya que de esta manera disminuye costos, tiempo y esfuerzo en el desarrollo del software y de esta manera puede brindar un software de calidad al cliente siempre cumpliendo con las necesidades o requerimientos del cliente. Como conclusión se puede decir que con la mejora continua garantiza la calidad del producto, ya que el estarla aplicando día con día es lo mejor decisión que puede llegar a tener cualquier empresa, por que de esta manera evita grandes problemas en la elaboración o desarrollo de los productos. Esto es fundamental para todas las empresas ya que se vuelven competitivas, con mayor productividad y eficiencia. No hay que

ROMER E. QUITO ROJAS

AREAS TECNICAS – E.P.T. COMPUTACION E INFORMATICA

olvidar que la mejora se da por que el cliente es el rey y hay que satisfacer todas y cada una de sus necesidades siempre garantizando la calidad. Metodología: Todo desarrollo de software es riesgoso y difícil de controlar, pero si no llevamos una metodología de por medio, se obtiene clientes insatisfechos con el resultado y desarrolladores aun mas. Sin embargo muchas veces no se toma en cuenta el utilizar una metodología adecuada, sobre todo cuando se trata de proyectos pequeños de dos o tres meses. Con relación a los proyectos que se desarrollan con mayor envergadura, hay si se toma el sentido de basarse en una metodología de desarrollo y se empieza a buscar cual seria la mas apropiada para dicho caso. A fin de cuenta no encontramos muchas veces la meas adecuada y se termina por hacer un diseño propio de metodología, por supuesto no esta mal siempre y cuando sirva para alcanzar el objetivo. Muchas veces se realiza el diseño del software de manera rígida, tal cual como el cliente lo solicito, de esa manera cuando el cliente en la “etapa de prueba” solicita un cambio se hace muy difícil de realizarlo, pues si se hace altera las cosas que no se habían previsto, y este es uno de los factores que atrasan el proyecto y crea incomodidad al desarrollador y en muchas oportunidades no llegan a cumplir con el cambio solicitado, esto conlleva malestar en el cliente puesto que no se sido tomado en cuenta su pedido; para evitar estos incidentes se debe llegar a un acuerdo formal con el cliente al inicio del proyecto de manera que no perjudique el desarrollo del mismo. Muchas veces los usuarios finales se dan cuenta que dejaron de mencionar algunas cosas y lo manifiestan en la etapa inicial del proyecto cuando se le muestra el prototipo del mismo. ALGUNAS Metodologías conocidas:  La metodología RUP es la más adaptable para proyectos de largo plazo.  La metodología XP en cambio, se recomienda para proyectos de corto plazo.  La metodología MSF se adapta a proyectos de cualquier dimensión y de cualquier tecnología.  Se puede decir además que lo más importante antes de elegir la metodología que se debe usar para implementar el software, es determinar el alcance que tendrá y luego de allí ver cual es la que mas se acomoda a la aplicación. Ejemplos: El ejemplo del software lo hacen numerosas empresas, cada vez mas gobiernos (registro gratis). Los expertos lo recomiendan, lo hacen particulares a millones. Hasta (a regañadientes) Microsoft. La idea absurda de dejar abierta las tripas del software y permitir que la gente las mire, e incluso que las modifique, copie y use en condiciones diferentes, en la industria de la informática es muy común. De hecho se extiende a los más pequeños rincones del mundo desde una orden mágica hermética de tradición masónica y rosacruciana a telefónica I+D. Si hasta las empresas en filosofía más expuesta o menos rápidas en novación y las sociedades secretas son capaces de ver las ventajas del “OPEN SOURCE” (abierto o libre). No ha sido sencillo la idea conocida como dicho software (abierto o libre) a tenido una vida larga pero difícil, dirigida por polémicas aparentemente absurda pero que contienen un profundo debate ideológico y practico; a veces dividido en partes enfrentadas con mucha pasión; siempre descalificada, lo cierto es que la comunidad del software abierto hoy es una fuerte y sana realidad. Importancia: Actualmente la transición que estamos viviendo hacia una sociedad del conocimiento a cambiado profundamente las relaciones entre las personas, empresas y gobiernos: las empresas usan la red para comunicarse con los clientes, utilizan también herramientas de gestión del conocimiento para hacer masa eficientes, los gobiernos mejoran su presencia en Internet y los servicios a los ciudadanos a través de la red, los usuarios usan las herramientas para sus relaciones personales, etc. Se va de forma imparable hacia una sociedad altamente interconectada donde el eje fundamental es la información. El software es el intermediario cada vez mas grande entre la información y la inteligencia humana. De la misma manera que preocupa para poder acceder a la información, si existe la censura, es tema de preocupación de quien controla este intermediario y las garantías de su transparencia y confiabilidad. En principio, el software es un programa informático o conjunto de ellos que tiene un fin determinado, es el de procesar los textos que usamos, el controlador de grabación de nuestros espacios favoritos o las aplicaciones que permiten operar un teléfono móvil. Esta compuesto por un conjunto de instrucciones que el usuario realiza para ejecutar una función especifica. Normalmente los programadores escriben en un lenguaje en el que todos pueden entender y que después es traducido al lenguaje binario el único que las maquinas entienden. El conjunto de órdenes en el lenguaje que todos trabajan se llaman código fuente. Sino se accede al código solo se puede usar el programa, no se puede ver como esta hecho o introducir comentarios. Un ejemplo muy utilizado es el de la receta de cocina, en el que el código fuente son las instrucciones que permite confeccionar un plato. Sin la receta solo se pude degustar el plato, pero no se sabe si se le añade algo vaya en contra de algunos de esos ingredientes ya que se desconocen su

ROMER E. QUITO ROJAS

AREAS TECNICAS – E.P.T. COMPUTACION E INFORMATICA

composición y proporción. En este sentido, el codigo fuente juega un papel fundamental en la manera como se debe entender el software. Se podrían poner varios ejemplos para entender dicha importancia. A finales de los 90 se pudo ver en todo el mundo la preocupación por parte de empresa y gobiernos por las consecuencias que podían tener el llamado efecto 2000. El famoso error informático era debido al hecho de que muchos programas almacenaban la parte de la fecha correspondiente al año utilizando únicamente dos dígitos, de tal manera, que después del año 99 (el 1999) podíamos pasar al año 00 (¿ año 2000 o año 1900?) causando todo tipo de errores en el calculo de periodo de tiempo. Los ordenadores de las empresas eléctricas, centrales nucleares, sistema de control de aviación, bancos y en general, todo el software de uso cotidiano, tuvieron que ser revisados. Finalmente algunas aplicaciones fueron corregidas, otras ya funcionaban correctamente y no hubo que lamentar ninguna catástrofe, pero hubo miles de predicciones apocalípticas sobre las consecuencias que se podría llegar a obtener este error, así podría ver sido si no se hubiera reparado a tiempo. Es por eso, el software tiene un papel muy importante en la sociedad sobre manera garantizar métodos trasparentes en sus diferentes fases de producción y explotación. Conclusión El desarrollo del software y la programación es uno de los pilares fundamentales de la informática y al cual se dedican muchas horas de esfuerzos en empresas, colegios, academias y universidades. Conforme a la tecnología va avanzando, van apareciendo nuevas soluciones, nuevas formas de programación, nuevos lenguajes y un sin fin de herramientas que intentan realizar el trabajo del desarrollador un poco mas fácil. La programación orientadas a objetos o los compiladores basados en maquinas virtuales (en muchos casos, multiplataforma), también a sus puestos unas renovación en la manera de programar. Microsoft como empresa desarrolladora se software, es consciente de lo importante que es hacer buenos desarrollos y lo complicado que es; por eso, intenta aportar las mejores soluciones al mercado. En la actualidad la sociedad se encuentra en una época de transición, que se encamina hacia un nuevo estilo de programación basada en estándares y para ello Microsoft propone la plataforma .NET. Recomendaciones Excepto en casos singulares, el software (que incluye al firware de los computadores) nunca es propiedad del usuario. La adquisición del programa es en realidad la adquisición solamente del derecho de uso del programa, la licencia, bajo termino definidos por el fabricante. El uso de software fuera de esos términos constituye un delito contra la propiedad intelectual. Debe instalarse solamente el software necesario para las funciones esperadas del equipo. En la mayoría de los casos, eso se limita al software básicos sistemas operativos (usualmente Windows 95), aplicativos de oficina y navegación (usualmente Office 97, Internet Explorer 4.01) y el cliente de red (BackOffice Todo computador adquirido para la universidad debe contar con licencias para software mencionado (o su equivalente en plataformas Macintosh o Unix), en esas versiones o mas recientes. Las licencias deben corresponder a las versiones, ya que no se pueden instalar una versión mas recientes con una licencia de versiones anteriores. Mantenimiento de software En ingeniería del software, el mantenimiento de software es la modificación de un producto de software después de la entrega, para corregir errores, mejorar el rendimiento, u otros atributos.1 El mantenimiento del software es una de las actividades más comunes en la ingeniería de software. El mantenimiento de software es también una de las fases en el ciclo de vida de desarrollo de sistemas (SDLC, sigla en inglés de system development life cycle), que se aplica al desarrollo de software. La fase de mantenimiento es la fase que viene después del despliegue (implementación) del software en el campo. Una percepción común del mantenimiento es que se trata meramente de la corrección de defectos. Sin embargo, un estudio indicó que la mayoría, más del 80%, del esfuerzo de mantenimiento es usado para acciones no correctivas (Pigosky 1997). Esta percepción es perpetuada por usuarios enviando informes de problemas que en realidad son mejoras de funcionalidad al sistema[cita requerida]. El mantenimiento del software y la evolución de los sistemas fue abordada por primera vez por Meir M. Lehman en 1969. Durante un período de veinte años, su investigación condujo a la formulación de las leyes de Lehman (Lehman 1997). Principales conclusiones de su investigación incluyen que el mantenimiento es realmente un desarrollo evolutivo y que las decisiones de mantenimiento son ayudadas por entender lo que sucede a los sistemas (y al software) con el tiempo. Lehman demostró que los sistemas continúan evolucionando con el tiempo. A medida que evolucionan, ellos crecen más complejos a menos que se toman algunas medidas como refactorización de código para reducir la complejidad. Los problemas claves de mantenimiento de software son administrativos y técnicos. Problemas clave de administración son: alineación con las prioridades del cliente, dotación de personal, cuál organización hace mantenimiento, estimación de costos. Son cuestiones técnicas claves: limitado entendimiento, análisis de impacto, pruebas (testing), medición de mantenibilidad. ROMER E. QUITO ROJAS

AREAS TECNICAS – E.P.T. COMPUTACION E INFORMATICA

El mantenimiento de software es una actividad muy amplia que incluye la corrección de errores, mejoras de las capacidades, eliminación de funciones obsoletas y optimización. Debido a que el cambio es inevitable, se debe desarrollar mecanismos para la evaluación, controlar y hacer modificaciones. Así que cualquier trabajo realizado para cambiar el software después de que esté en operación es considerado trabajo de mantenimiento. El propósito es preservar el valor del software sobre el tiempo. El valor puede ser mejorado ampliando la base de clientes, cumpliendo requisitos adicionales, siendo cada vez más fácil de usar, más eficiente y empleando más nuevas tecnología. El mantenimiento puede abarcar 20 años, mientras que el desarrollo puede estar entre 1 y 2 años. Importancia del mantenimiento de software A finales de los años 1970, una famosa y ampliamente citada estudio de encuesta por Lientz y Swanson, expuso la muy alta fracción de los costos del ciclo de vida que estaban siendo gastados en mantenimiento. Clasificaron las actividades de mantenimiento en cuatro clases: Adaptable – modificar el sistema para hacer frente a cambios en el ambiente del software (DBMS, OS)2 Perfectivo – implementar nuevos, o cambiar requerimientos de usuario referentes a mejoras funcionales para el software Correctivo, diagnosticar y corregir errores, posiblemente los encontraron por los usuarios2 Preventiva – aumentar la capacidad de mantenimiento de software o fiabilidad para evitar problemas en el futuro2 La encuesta mostró que alrededor del 75% del esfuerzo de mantenimiento fue en los dos primeros dos tipos, y la corrección de errores consumía aproximadamente el 21%. Muchos estudios posteriores sugieren una magnitud similar del problema. Los estudios muestran que la contribución del usuario final es crucial durante el análisis y recopilación de nuevos datos de requerimiento. Y ésta es la causa principal de cualquier problema durante el mantenimiento y evolución del software. Así que el mantenimiento de software es importante porque consume gran parte de los costos del ciclo de vida y también la imposibilidad de cambiar el software de forma rápida y fiable significa que las oportunidades de negocio se pierden.

ROMER E. QUITO ROJAS

Related Documents


More Documents from "Catalina Delgado"

Cuida
January 2021 4
Elemento Finito
January 2021 2
Estadistica
March 2021 0