SlideShare uma empresa Scribd logo
1 de 16
www.monografias.com



                                               Diseño de software
   1. Introducción
   2. Fundamentos del Diseño de Software
   3. Temas Claves en el Diseño de Software
   4. Estructura y Arquitectura de Software
   5. Calidad en el análisis, diseño y evaluación del software
   6. Diseño de software
   7. Herramienta (gsBase(ie))
   8. Bibliografía


Introducción

A través de la historia de la ingeniería del software ha evolucionado un conjunto de
conceptos fundamentales de diseño de software, aunque el grado de interés en cada
concepto ha variado con los años, han pasado la prueba del tiempo ofreciendo cada uno
al ingeniero de software fundamentos sobre el cual pueden aplicarse métodos de diseño
más elaborados.
El diseño de Software juega un papel importante en el desarrollo de software lo cual
permite al ingeniero de software producir varios modelos del sistema o producto de que
se va a construir el mismo que forman una especie de plan de la solución de la aplicación.
Estos modelos puede evaluarse en relación con su calidad y mejorarse antes de generar
código, de realizar pruebas y de que los usuarios finales se vean involucrados a gran
escala. El diseño es el sitio en el que se establece la calidad del software.
Diseño es definido como: “El proceso de definición de la arquitectura, componentes,
interfaces y otras características de un sistema o componente que resulta de este
proceso” [IEEE610.12-90].
Palabras Claves
Definición de Documentos de Software (IEEE)
SQAP: Software Quality Assurance Plan IEEE 730
SCMP: Software Configuration Management Plan IEEE 828
STD: Software Test Documentation IEEE 829
SRS: Software Requirements Specification IEEE 830
SVVP: Software Validation & Verification Plan IEEE 1012
SDD: Software Design Description IEEE 1016
SPMP: Software Project Management Plan IEEE 1058


       Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
www.monografias.com



Fundamentos del Diseńo de Software

   1.1. Conceptos generales de diseño.
      El software no es el único campo donde el diseño se encuentra inmiscuido. En
      general podemos ver el diseño como una forma para resolución de problemas. El
      problema sin solución definitiva es interesante en términos de comprensión del
      diseño. Un numero de otras nociones y conceptos son también de interés en la
      comprensión del diseño en su sentido general, objetivos, limitaciones, alternativas,
      representaciones y soluciones
   1.2. Contexto del diseño de software.
      El diseño del software se encuentra en el núcleo técnico de la respectiva ingeniería
      y se aplica de manera independiente al modelo de software que se utilice. Una vez
      que se analizan y especifican los requisitos, el diseño del software es la última
      acción de la ingeniería correspondiente dentro de la actividad del modelado, la cual
      establece una plataforma para la construcción (generación de código y prueba).
      “El milagro más común de la ingeniería de software es la transición del
      análisis al diseño y del diseño al código” Richard Due
   1.3. Proceso del Diseño de Software.
      1.3.1.Diseño Arquitectónico.
            El diseño arquitectónico puede representarse al usar uno o más de muchos
            modelos diferentes. Los modelos estructurales representan la arquitectura
            como una colección organizada de componentes del programa. Los modelos
            del marco de trabajo repetible incrementan el grado de abstracción del diseño
            al intentar identificar marcos de trabajo repetibles del diseño arquitectónico
            que se encuentran en tipos de aplicaciones similares.
            El diseño de la arquitectura de software se describe cómo se
            descompone y como están organizados los componentes                                                          en el
            software. [IEEEP1471-00]
      1.3.2.Diseño Detallado.
            El diseño detallado se describe el comportamiento específico de
            estos componentes.
   1.4. Técnicas Permitidas.


      1.4.1.Abstracción



      Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
www.monografias.com



      Abstracción es el proceso o el resultado de la generalización de la reducción
      del contenido de la información de un concepto o un fenómeno observable,
      por lo general, con el fin de conservar únicamente la información que es
      relevante para un propósito en particular. Cuando se considera una solución
      modular a cualquier problema se pueden exponer muchos grados de
      abstracción.
      En un alto grado de abstracción una solución se establece en términos
      generales con el lenguaje del entorno del problema.
      En los grados de menor abstracción se proporciona una descripción más
      detallada de la solución.
      En la medida en que se cambian los diferentes grados de abstracción se
      trabaja para crear abstracciones procedimentales y de datos.
      Abstracción Procedimental: Se refiere a una secuencia de instrucciones que
      tiene una función específica y limitada.
      Abstracción de Datos: Es una colección nombrada de datos que describe un
      objeto de datos.
1.4.2.Acoplamiento y Cohesión.
      Dentro del modelo de diseño es necesario que las clases de diseño colaboren
      con alguna otra.
      Es una medida de la interconexión entre los módulos de la estructura de un
      programa. Depende de la complejidad de la interfaz entre los módulos, el
      punto en el que se entra o se hace referencia al módulo y qué datos pasan a
      través de la interfaz. Intentamos conseguir el menor nivel posible de
      acoplamiento. Las conexiones sencillas entre los módulos hacen que el
      software sea más fácil de entender y menos dado al efecto ola.
      Acoplamiento: La fuerza de las relaciones entre los módulos.
      Acoplamiento de datos: está subordinado al módulo y se accede a él por
      medio de una lista convencional de argumentos a través de la cual se pasan
      los datos.
      Acoplamiento de marca: cuando en vez de argumentos simples se pasa una
      porción de la estructura de datos se pasa por la interfaz del módulo.
      Acoplamiento de control: se pasa un indicador de control (una variable que
      controla las decisiones en el módulo subordinado).



Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
www.monografias.com



      Acoplamiento externo: cuando los módulos están atados a un entorno
      externo al software. Por ejemplo, las I/O y los dispositivos.
      Acoplamiento común: varios módulos hacen referencia a un área global de
      datos.
      Acoplamiento de contenido: un módulo hace uso de datos o de información
      de control mantenidos dentro de los límites de otro módulo. Cuando se realiza
      una bifurcación hacia la mitad de otro módulo.
      Una clase de diseño cohesiva tiene un conjunto de responsabilidades
      pequeño y enfocado, y aplica atributos y métodos de manera sencilla de
      implementar dichas responsabilidades.
      Cohesión: Como están relacionados los elementos que conforman un modulo.
      Es una extensión natural del concepto de ocultamiento de la información. Un
      módulo con cohesión realiza una sola tarea dentro de un procedimiento de
      software, requiriendo poca interacción con los procedimientos que se realizan
      en otras partes del programa. Un módulo con cohesión debería hacer una sola
      cosa.
      Siempre debemos buscar la cohesión más alta, aunque la parte media del
      espectro es a menudo aceptable.
      Coincidencialmente cohesivo: un módulo que realiza un conjunto de tareas
      poco relacionadas las unas con las otras.
      Cohesión lógica: realiza tareas relacionadas lógicamente (produce todas las
      salidas).
      Cohesión temporal: contienen tareas relacionadas por el hecho de que todas
      deben hacerse en el mismo intervalo de tiempo.
      Cohesión procedimental: cuando los elementos de procesamiento están
      relacionados y deben ejecutarse en un orden específico.
      Cohesión de comunicación: todos los elementos de procesamiento se
      concentran en un área de la estructura de datos.
1.4.3.La descomposición y la modularización.
      Los patrones de arquitectura y diseño de software materializan la modularidad;
      es decir, el software se divide en componentes con nombres independientes y
      que es posible abordar en forma individual. Estos componentes llamados
      módulos se integran para satisfacer los requisitos del problema.



Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
www.monografias.com



             Modularidad: Es el atributo particular del software que permite que un
             programa sea manejable de manera intelectual.
             Se divide el software en componentes identificables y tratables por separado,
             denominados módulos, que están integrados para satisfacer los requisitos del
             programa.
             Hay un número m de módulos que resultarían en un costo de desarrollo
             mínimo, pero no tenemos la sofisticación necesaria para predecir m con
             seguridad
       1.4.4.Encapsulación/Ocultar Información
             Mediante la agrupación y empaquetado de los elementos y los detalles
             internos de una abstracción, haciendo que estos detalles sean inaccesibles.
       1.4.5.Separación de la interfaz y la aplicación
             La separación de la interfaz y la aplicación implica la definición de un
             elemento especificando una interfaz pública, conoce a los clientes, aparte de
             los detalles de cómo se realiza el componente.
       1.4.6.Suficiencia, integridad y primitivismo.
             Los métodos asociados con una clase de diseño deben enfocarse en el
             cumplimiento de un servicio para la clase.

Temas Claves en el Diseńo de Software

   A la hora de diseñar software hay una serie de cuestiones fundamentales que se
   deben tomar en cuenta. Algunos relacionados con la calidad así como los
   concernientes a la dirección como por ejemplo el rendimiento. Además de cómo se
   descomponen, organizan los paquetes de los componentes de software.
   Esto es tan fundamental que en todo el proceso de diseño que se debe abordar de
   una manera u otra.
   "[Aspectos] no suelen ser unidades de descomposición funcional del software,
   sino más bien a las propiedades que afectan el desempeño o la semántica de los
   componentes en el sistema en diferentes maneras " (Kic97).
   1.5. Concurrencia:
      La forma de descomponer el software en los procesos, tareas e hilos tratar
      relacionarlos con la eficiencia, la atomicidad, la sincronización, y demás cuestiones
      de programación.
   1.6. Control y manejo de Eventos


       Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
www.monografias.com



      Cómo organizar los datos y el controlar el flujo, manejo de reactivo y temporal de
      los acontecimientos a través de diversos mecanismos, tales como la invocación
      implícita de llamadas y sus intentos.
   1.7. Distribución de Componentes
      Cómo distribuir el software en el hardware, cómo los componentes se comunican,
      cómo se puede usar una plataforma al
      utilizarse para hacer frente a software heterogéneos.
   1.8. Error y Gestión de Excepciones Tolerancia a Fallos.
      El análisis y la gestión del riesgo son una serie de pasos que ayudan al equipo del
      software a comprender y a gestionar la incertidumbre.
      Un riesgo es un problema potencial que puede ocurrir o no. Pero sin tener en
      cuenta el resultado, realmente es una
      buena idea es identificarlo, evaluar su
      probabilidad de aparición, estimar
      su impacto, y establecer un plan de contingencia por si ocurre el problema.
      Una estrategia considerablemente más inteligente para el control del riesgo es ser
      proactivo. La estrategia proactiva empieza mucho antes de que comiencen los
      trabajos técnicos. Se identifican los riesgos potenciales, se evalúa su probabilidad y
      su impacto y se establece una prioridad según su importancia. Después, el equipo
      de Software establece un plan para controlar el riesgo. El primer objetivo es evitar
      el riesgo, pero como no se pueden evitar todos los riesgos, el equipo trabaja para
      desarrollar un plan de contingencia que le permita responder de una manera eficaz
      y controlada.

Estructura y Arquitectura de Software

   En el sentido estricto, una arquitectura de software es “Una descripción de los
   subsistemas y componentes de un sistema de software y las relaciones que existen
   entre ellos” (Bus96: c6).
   A mediados de 1990, la arquitectura empezó a emerger como una disciplina más
   amplia que implica el estudio de las estructuras y las arquitecturas de software en una
   forma más genérica, dando ideas interesantes sobre diseño del software en diferentes
   niveles de abstracción.
   Algunos de estos conceptos son muy útiles durante el diseño arquitectónico (estilo de
   arquitectura), de software específico, así como en su diseño de detalle (nivel inferior,


       Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
www.monografias.com



patrones de diseño). Así también para el diseño de sistemas genéricos lo que lleva a
la concepción de las familias de los programas (conocidas como líneas de productos).
La mayoría de estos conceptos pueden verse como intentos de describir, por tanto la
reutilización del diseño genérico del conocimiento.
El desarrollo de un sistema con gran cantidad de software requiere que este sea visto
desde      diferentes        perspectivas.         Diferentes         usuarios        (usuario       final,     analistas,
desarrolladores, integradores, jefes de proyecto...) siguen diferentes actividades en
diferentes momentos del ciclo de vida del proyecto, lo que da lugar a las diferentes
vistas del proyecto, dependiendo de qué interese más en cada instante de tiempo.
La arquitectura es el conjunto de decisiones significativas sobre:
•   La organización del sistema
•   Selección de elementos estructurales y sus interfaces a través de los cuales se
    constituye el sistema.
•   El    Comportamiento,             como        se    especifica        las     colaboraciones            entre      esos
    componentes.
•   Composición de los elementos estructurales y de comportamiento en subsistemas
    progresivamente más grandes.
•   El estilo arquitectónico que guía esta organización: elementos estáticos y
    dinámicos y sus interfaces, sus colaboraciones y su composición.
1.9. Estructuras Arquitectónicas y Puntos de Vista.
    Durante las diferentes facetas o etapas del software deben ser descritos y
    documentados.
    “Una vista representa un aspecto parcial de la arquitectura de un software
    mostrando las propiedades del sistema de software”.
    La arquitectura que no debe centrarse únicamente en la estructura y en el
    comportamiento, sino que abarque temas como el uso, funcionalidad, rendimiento,
    capacidad de adaptación, reutilización, capacidad para ser comprendida,
    restricciones, compromisos entre alternativas, así como aspectos estéticos. Para
    ello se sugiere una arquitectura que permita describir mejor los sistemas desde
    diferentes vistas, donde cada una de ellas es una proyección de la organización y
    la estructura centrada en un aspecto particular del sistema.
    La vista de casos de uso comprende la descripción del comportamiento del
    sistema tal y como es percibido por los usuarios finales, analistas y encargados de
    las pruebas y se utilizan los diagramas de casos de uso para capturar los aspectos


    Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
www.monografias.com



   estáticos mientras que los dinámicos son representados por diagramas de
   interacción, estados y actividades.
   La vista de diseño comprende las clases, interfaces y colaboraciones que forman
   el vocabulario del problema y de la solución. Esta vista soporta principalmente los
   requisitos funcionales del sistema, o sea, los servicios que el sistema debe
   proporcionar. Los aspectos estáticos se representan mediante diagramas de clases
   y objetos y los aspectos dinámicos con diagramas de interacción, estados y
   actividades.
   La vista de procesos comprende los hilos y procesos que forman mecanismos de
   sincronización y concurrencia del sistema cubriendo el funcionamiento, capacidad
   de crecimiento y el rendimiento del sistema. Con UML, los aspectos estáticos y
   dinámicos se representan igual que en la vista de diseño, pero con el énfasis que
   aportan las clases activas, las cuales representan los procesos y los hilos.
   La Vista de implementación comprende los componentes y los archivos que un
   sistema utiliza para ensamblar y hacer disponible el sistema físico. Se ocupa
   principalmente de la gestión de configuraciones de las distintas versiones del
   sistema. Los aspectos estáticos se capturan con los diagramas de componentes y
   los aspectos dinámicos con los diagramas de interacción, estados y actividades.
   La vista de despliegue de un sistema contiene los nodos que forman la topología
   hardware sobre la que se ejecuta el sistema. Se preocupa principalmente de la
   distribución, entrega e instalación de las partes que constituyen el sistema. Los
   aspectos estáticos de esta vista se representan mediante los diagramas de
   despliegue y los aspectos dinámicos con diagramas de interacción, estados y
   actividades.
1.10.Patrones de Diseño (Patrones Micro arquitectónicos).
   “Cada patrón describe un problema que ocurre una y otra vez en nuestro
   entorno, así como la solución                         a este problema, de tal ,modo que esta
   solución se pueda aplicar esta solución un millón de veces, sin hacer lo
   mismo dos veces” Christopher Alexander.
   Los patrones de diseño hacen que sea más fácil reutilizar buenos diseños y
   arquitecturas. Al expresar como patrones de diseño técnicas que ya han sido
   probadas, las estamos haciendo más accesibles para los desarrolladores de
   nuevos sistemas. Los patrones de diseño nos ayudan a elegir las alternativas del




   Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
www.monografias.com



       diseño que hacen que un sistema sea reutilizable, y evitar aquellas que dificultan
       dicha reutilización.
       Los patrones de creación tienen que ver con el proceso de creación, estructural o
       de comportamiento.

Calidad en el análisis, diseńo y evaluación del software

   1.11.Calidad de atributos
   Varios atributos son generalmente considerados importantes que permiten obtener un
   diseño de software con alta calidad, existen algunas características que son
   ( mantenible, portabilidad, probable) y (correctos, robusto). Cabe destacar que existen
   diferencias entre calidad de atributos que son (rendimiento, seguridad, funcionalidad y
   usabilidad), y los que son (portabilidad, reutilización, integralidad y pruebas), y las
   características relacionadas con la arquitectura (integridad conceptual, correcto,
   completo).
   1.12.Calidad en análisis y evaluación de técnicas
       Varias técnicas y herramientas pueden ayudar a mejorar la calidad de diseño de
       software:
       Diseño de software.- Para este tipo se puede aplicar al diseño de software informal
       y semi informal tomando un grupo base, técnicas que permiten verificar la calidad
       de diseño de los artefactos que pueden ser (vista de la arquitectura, diseño
       -inspección, técnicas y requerimientos).
       Análisis estático.- Para este tipo se puede aplicar al diseño de software informal y
       semi informal que permite evaluar algo simple utilizando análisis automáticos de
       casos de pruebas.
       Simulación y prototipos.- Son técnicas dinámicas que permiten evaluar un diseño la
       característica de simulación, o la flexibilidad del prototipo.

Diseńo de software

   Muchas notaciones y lenguajes existen para representar el diseño de artefactos de
   software. Algunos describen un diseño estructural organizado, otros representan el
   inicio del software. Estas notaciones son generalmente usadas durante un diseño
   natural y se pueden usar durante ambos casos. Una representan notaciones que son
   usadas en el contexto de específicos métodos en las estrategias de diseño y métodos




       Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
www.monografias.com



   de sub áreas, pero estas categorías son categorizadas en notaciones para describir la
   estructura estática y la dinámicas vistas.
Software diseño estrategias y métodos
   Existen varias estrategias en el desarrollo del software que permiten mejorar el diseño
   de procesos, a diferencia con las estrategias generales, métodos que son específicos
   en generar estrategias y proveen notación para ser usados en
   Métodos y descripción del proceso. Los métodos utilizados son medias que permiten
   transferir conocimiento y como un framework que permiten testear la ingeniería del
   software.
   1.13.Estrategias generales
   Las estrategias generales son usadas en el diseno de procesos son dividios y
   refinados permitiendo lograr una alta estracion de datos y información para esto
   utilizando heurísticas usando para esto patentes y patentes de lenguajes

Herramienta (gsBase(ie))

   Es una herramienta de desarrollo y explotación de propósito general que se puede
   utilizar para crear soluciones para ingeniería, cálculo, gestión, diseño gráfico,
   educación, etc. Incluye novedosas ideas originales que le harán su trabajo mucho más
   fácil.
   Permite construir soluciones integrales para empresas (ERP's, CRM's, B2B, B2C, ...)
   minimizando el tiempo invertido, recursos hardware y costes de desarrollo.
   La comunicación entre cliente y servidor se puede establecer por redes locales
   internas, Internet o redes privadas. Los recursos mínimos de comunicaciones
   necesarios hacen posible usar distintas tecnologías de comunicación: ADSL, GPRS,
   UMTS, RTB, Frame Relay, 3G, RDSI, etc.
   Para diseñar, incluye un IDE (Integrated Development Environment) que permite crear
   y modificar aplicaciones de una forma rápida y ágil a la par que dar soporte a
   instalaciones
   El sistema de programación gsBase incorpora una idea novedosa y original (ventanas
   dinámicas) que permite, sin tener conocimientos de programación orientada a objetos,
   realizar o diseñar programas con dichas atribuciones de una forma elegante y resolver
   problemas de gran complejidad de una forma muy fácil.
   Todos los desarrollos realizados son reutilizables y el sistema permite que en el
   desarrollo de aplicaciones, participen grupos de personas (trabajo en grupo


       Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
www.monografias.com



cooperativo). La claridad del lenguaje de programación utilizado permite, sin
problemas, que un técnico pueda interpretar rápidamente lo que otro ha desarrollado
(garantizado).
Para la definición de ventanas dinámicas se usa el nuevo concepto de grupos o
agrupaciones de controles. Los campos de entrada, botones, textos,… de una
determinada ventana de gestión de archivo se definen por grupos, no de forma
individual como hacen la mayoría de lenguajes de programación, en los problemas del
mundo real los controles casi siempre van agrupados (por ejemplo para una ficha de
clientes: datos de identificación, datos económicos, condiciones de venta, etc).
Gran parte del trabajo de diseño de aplicaciones consiste en la creación de ventanas
para la gestión de archivos (creación de registros, modificación, selección, borrado,
consulta, etc.). gsBase estandariza y generaliza este tipo de ventanas haciendo su
diseño inmediato, el sistema incluye un potente control de grid, controles de entrada,
listas, árboles, chek-boxes, cuadros de radio, mensajes, imágenes, botones, textos,
sliders, etc.




La potente arquitectura cliente/servidor gsBase permite el trabajo concurrente de
miles de usuarios, hablamos de usuarios conectados de forma permanente al
servidor y realizando procesos simultáneos (no se trata de conexiones esporádicas
como ocurre en servidores web). gsBase es por tanto, la mejor solución para
Medianas y Grandes Empresas, por su escalabilidad, potencia, robustez, seguridad
y necesidades mínimas de hardware y comunicaciones.
Los resultados e informes gráficos en gsBase tienen una calidad y potencia
excepcional. Diagramas de barras, de tarta, de líneas o de áreas son construidos
parametrizando una simple función en gsBase. La integración de dichos elementos en
ventanas, informes o documentos es muy sencilla y funcional.




    Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
www.monografias.com




1.14.Características.
gsBase es un sistema de desarrollo de software para crear aplicaciones cliente-
servidor
Crear todo tipo de aplicaciones para empresas y administración pública
Diseñar sistemas centralizados para trabajo en local y/o remoto o por Internet
Las instalaciones de sus clientes finales podrán ser de 1 a miles de usuarios
concurrentes (Pymes o grandes empresas).
gsBase es la mejor herramienta para crear soluciones ASP (Alquiler de Software).




1.15.Ventajas.
    •   Facilidad en diseño: cientos de ideas nuevas para el desarrollo.
    •   Tiempo mínimo de aprendizaje para el desarrollo.
    •   Amplios recursos para el aprendizaje en el diseño.
    •   Posibilidad de partir de aplicaciones ya diseñadas. Una vez adquirido el diseño,
        no pagará royalties.
    •   Evaluación de las aplicaciones on-line trabajando con nuestros servidores de
        demostración el tiempo que necesite.
    •   Posibilidad de dirección de proyectos por parte de nuestros ingenieros




   Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
www.monografias.com



       •    Accesibilidad a sus datos y aplicaciones a nivel mundial para ejecución o
            mantenimiento
       •    Sistema seguro y automatizado de distribución de sus aplicaciones.
       •    Mínimos recursos de hardware y comunicaciones.
       •    Facilidad de instalación y mantenimiento.
       •    Sistema tolerante a fallos.
       •    Trabajo en multi-idioma del sistema y sus aplicaciones.
       •    Posibilidad de vender sus aplicaciones y módulos de aplicaciones diseñados.
       •    Publicación en gsBase Resource Center.
       •    Gestión de licencias automática, es posible deslicenciar en un ordenador y
            volver a licenciar en otro.
       •    Los técnicos de desarrollo no son imprescindibles: lo que uno ha diseñado,
            puede mantenerlo otro sin problemas.

Bibliografía

   [1] Swebok_Ironman_June_23_ 2004
   [2] http://www.info-ab.uclm.es/asignaturas/42530/pdf/M1tema2.pdf
   [3] http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software
   [4] http://www.monografias.com/trabajos28/proyecto-uml/proyecto-uml.shtml
   [5] PRESSMAN Roger S., 2005. Ingeniería de Software. Un enfoque práctico. Sexta
   edición. 2005, Estados Unidos.




   La Evolución del Software




       Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
www.monografias.com




1.Introducción
2.Reseña Histórica del Software
3.Tipos de Software, Descripción y Ejemplos
4.La Robótica y el Software de Sistemas Operativos
5.La Inteligencia Artificial como tendencia en Sistemas Operativos
6.Windows 7
7.Conclusiones
8.Bibliografía
Introducción
El Software representa la vida interna de un computador, el manejo y aprovechamiento
del mismo y todas las ventajas que se brindan el mundo de las computadoras,
depende del software, facilitando a los usuarios el desarrollo de programas que
contribuyen con tareas diarias tanto personales como generales, empresariales y
organizacionales el software en sus diferentes tipos es el elemento esencial como
interfaz entre usuario - computador, su historia desde un principio se muestra con poca
atención pero con el paso del tiempo se ha tornado importante para los programadores
y creadores de sistemas tanto de aplicación como operativos, todo lo que se ve
digitalizado en un computador representa el software clasificado de alguna forma, las
herramientas del menú inicio y todas aquellas que se despliegan al encendido del
CPU, el desarrollo de esta herramienta ha permitido innovar en cuanto a la robótica he
inteligencia artificial facilitando el trabajo en determinadas áreas laborales y agilizando
las mismas por ejemplo en la fabricación de vehículos mediante software de
programación se diseñan estructuras robóticas inmensas y fuertes que realizan tareas
que al brazo humano le tomarían mas tiempo.


Reseña Histórica del Software
En 1990 La crisis del software se fundamentó en el tiempo de creación de software, ya
que en la creación del mismo no se obtenían los resultados deseados, además de un
gran costo y poca flexibilidad.


Es un término informático acuñado en 1968, en la primera conferencia organizada por
la OTAN sobre desarrollo de software, de la cual nació formalmente la rama de la




   Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
www.monografias.com



ingeniería de software. El término se adjudica a F. L. Bauer, aunque previamente
había sido utilizado por Edsger Dijkstra en su obra The Humble Programmer.


Básicamente, la crisis del software se refiere a la dificultad en escribir programas libres
de defectos, fácilmente comprensibles, y que sean verificables. Las causas son, entre
otras, la complejidad que supone la tarea de programar, y los cambios a los que se
tiene que ver sometido un programa para ser continuamente adaptado a las
necesidades de los usuarios.


Además, no existen todavía herramientas que permitan estimar de una manera exacta,
antes de comenzar el proyecto, cuál es el esfuerzo que se necesitará para desarrollar
un programa. Este hecho provoca que la mayoría de las veces no sea posible estimar
cuánto tiempo llevará un proyecto, ni cuánto personal será necesario. Cuando se fijan
plazos normalmente no se cumplen por este hecho. Del mismo modo, en muchas
ocasiones el personal asignado a un proyecto se incrementa con la esperanza de
disminuir el plazo de ejecución.


Por último, las aplicaciones de hoy en día son programas muy complejos, inabordables
por una sola persona. En sus comienzos se valoró como causa también la inmadurez
de la ingeniería de software, aunque todavía hoy en día no es posible realizar
estimaciones precisas del coste y tiempo que necesitará un proyecto de software.




Englobó a una serie de sucesos que se venían observando en los proyectos de
desarrollo de software:


•Los proyectos no terminaban en plazo.


•Los proyectos no se ajustaban al presupuesto inicial.


•Baja calidad del software generado.


•Software que no cumplía las especificaciones.




   Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
www.monografias.com



•Código inmantenible que dificultaba la gestión y evolución del proyecto.


Aunque se han propuesto diversas metodologías para intentar subsanar los problemas
mencionados, lo cierto es que todavía hoy no existe ningún método que haya
permitido estimar de manera fiable el coste y duración de un proyecto antes de sus
comienzos.


En 1984 Richard Stallman deja el MIT y comienza a trabajar en su proyecto GNU, con
el objetivo de desarrollar un sistema operativo completamente libre, desde el kernel,
editores, compiladores, debuggers, hasta utilitarios más complejos como procesadores
de texto e inclusive juegos. Uno de los primeros desarrollos realizados por el mismo
Stallman fue el editor de textos GNU Emacs a principios de 1985. Ese mismo año se
funda la Free Software Fundation, ente que financia desde entonces al proyecto GNU,
la misma se mantiene con donaciones y con el producto de la venta de CD-ROMs
tanto de programas binarios como código fuente, manuales y distribuciones completas
(conjunto de software para una dada plataforma de hardware).




   Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com

Mais conteúdo relacionado

Mais procurados

Conceptos y principios de diseño
Conceptos y principios de diseñoConceptos y principios de diseño
Conceptos y principios de diseñoNataly Adelaida
 
Conceptos de diseño de software
Conceptos de diseño de softwareConceptos de diseño de software
Conceptos de diseño de softwareJose Diaz Silva
 
Principios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwarePrincipios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwareJose Patricio Bovet Derpich
 
Diseño de arquitectura del software
Diseño de arquitectura del softwareDiseño de arquitectura del software
Diseño de arquitectura del softwaredeahesy najera garcia
 
Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2Marta Silvia Tabares
 
Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del softwareJohns Chacon
 
Diseno de la arquitectura
Diseno de la arquitecturaDiseno de la arquitectura
Diseno de la arquitecturaFatima Cham
 
2 1 1_diseño arquitectónico
2 1 1_diseño arquitectónico2 1 1_diseño arquitectónico
2 1 1_diseño arquitectónicolandeta_p
 
Arquitectura de software y Generación de computadores.
Arquitectura de software y Generación de computadores.Arquitectura de software y Generación de computadores.
Arquitectura de software y Generación de computadores.Juan Franco
 
Arquitectura software capitulo i
Arquitectura software capitulo iArquitectura software capitulo i
Arquitectura software capitulo iCathy Guevara
 
METODOLOGÍA PARA EL DISEÑO DE SOFTWARE
METODOLOGÍA PARA EL DISEÑO DE SOFTWAREMETODOLOGÍA PARA EL DISEÑO DE SOFTWARE
METODOLOGÍA PARA EL DISEÑO DE SOFTWAREadark
 
Diseño detallado
Diseño detalladoDiseño detallado
Diseño detalladojose
 

Mais procurados (20)

Conceptos y principios de diseño
Conceptos y principios de diseñoConceptos y principios de diseño
Conceptos y principios de diseño
 
Conceptos de diseño de software
Conceptos de diseño de softwareConceptos de diseño de software
Conceptos de diseño de software
 
3 1 mde mda
3 1 mde mda3 1 mde mda
3 1 mde mda
 
Principios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwarePrincipios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del software
 
Diseño de arquitectura del software
Diseño de arquitectura del softwareDiseño de arquitectura del software
Diseño de arquitectura del software
 
10.el diseño en el nivel de componentes
10.el diseño en el nivel de componentes10.el diseño en el nivel de componentes
10.el diseño en el nivel de componentes
 
Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónico
 
Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2
 
Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del software
 
Diseno de la arquitectura
Diseno de la arquitecturaDiseno de la arquitectura
Diseno de la arquitectura
 
Arquitectura de Software
Arquitectura de SoftwareArquitectura de Software
Arquitectura de Software
 
2 1 1_diseño arquitectónico
2 1 1_diseño arquitectónico2 1 1_diseño arquitectónico
2 1 1_diseño arquitectónico
 
Arquitectura de Software
Arquitectura de SoftwareArquitectura de Software
Arquitectura de Software
 
Arquitecturas de software
Arquitecturas de softwareArquitecturas de software
Arquitecturas de software
 
Conceptos basicos arquitectura de software
Conceptos basicos arquitectura de softwareConceptos basicos arquitectura de software
Conceptos basicos arquitectura de software
 
Arquitectura
ArquitecturaArquitectura
Arquitectura
 
Arquitectura de software y Generación de computadores.
Arquitectura de software y Generación de computadores.Arquitectura de software y Generación de computadores.
Arquitectura de software y Generación de computadores.
 
Arquitectura software capitulo i
Arquitectura software capitulo iArquitectura software capitulo i
Arquitectura software capitulo i
 
METODOLOGÍA PARA EL DISEÑO DE SOFTWARE
METODOLOGÍA PARA EL DISEÑO DE SOFTWAREMETODOLOGÍA PARA EL DISEÑO DE SOFTWARE
METODOLOGÍA PARA EL DISEÑO DE SOFTWARE
 
Diseño detallado
Diseño detalladoDiseño detallado
Diseño detallado
 

Semelhante a Diseno Software

Fundamentos Basicos para El Diseño de Software
Fundamentos Basicos para El Diseño de SoftwareFundamentos Basicos para El Diseño de Software
Fundamentos Basicos para El Diseño de SoftwareRicardoAlvarez235
 
fundamentos para el diseño de software
fundamentos para el diseño de softwarefundamentos para el diseño de software
fundamentos para el diseño de softwareMaraPilarNava
 
Fundamentos para el diseño de un software
Fundamentos para el diseño de un softwareFundamentos para el diseño de un software
Fundamentos para el diseño de un softwaressalzar
 
Fundamentos del sofware
Fundamentos del sofwareFundamentos del sofware
Fundamentos del sofwareKatyPerez17
 
Fundamentos del diseño de software
Fundamentos del diseño de software Fundamentos del diseño de software
Fundamentos del diseño de software AlessandreMndez
 
Fundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a ObjetosFundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a Objetosforwer1223
 
Fundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de softwareFundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de softwareluis javier perez
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...negroues
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...negroues
 
Metodología de Diseño Estructurado.pptx
Metodología de Diseño Estructurado.pptx Metodología de Diseño Estructurado.pptx
Metodología de Diseño Estructurado.pptx AlvareL
 
Ra semana 13 2
Ra semana 13 2Ra semana 13 2
Ra semana 13 2victdiazm
 
Diseño de componentes.
Diseño de componentes.Diseño de componentes.
Diseño de componentes.Annel D'Jesús
 
Pteg g-grupox-lista8-9-13-20- 49-visita3-expo cap 7 tema ingenieria del software
Pteg g-grupox-lista8-9-13-20- 49-visita3-expo cap 7 tema ingenieria del softwarePteg g-grupox-lista8-9-13-20- 49-visita3-expo cap 7 tema ingenieria del software
Pteg g-grupox-lista8-9-13-20- 49-visita3-expo cap 7 tema ingenieria del softwaresara272016
 

Semelhante a Diseno Software (20)

Fundamentos
FundamentosFundamentos
Fundamentos
 
Fundamentos Basicos para El Diseño de Software
Fundamentos Basicos para El Diseño de SoftwareFundamentos Basicos para El Diseño de Software
Fundamentos Basicos para El Diseño de Software
 
Nixon torrealbav
Nixon torrealbavNixon torrealbav
Nixon torrealbav
 
fundamentos para el diseño de software
fundamentos para el diseño de softwarefundamentos para el diseño de software
fundamentos para el diseño de software
 
Juan velasquez
Juan velasquezJuan velasquez
Juan velasquez
 
Fundamentos para el diseño de un software
Fundamentos para el diseño de un softwareFundamentos para el diseño de un software
Fundamentos para el diseño de un software
 
Fundamentos del sofware
Fundamentos del sofwareFundamentos del sofware
Fundamentos del sofware
 
Fundamentos del diseño de software
Fundamentos del diseño de software Fundamentos del diseño de software
Fundamentos del diseño de software
 
Fundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a ObjetosFundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a Objetos
 
Diseno de Software y DOO
Diseno de Software y DOODiseno de Software y DOO
Diseno de Software y DOO
 
Fundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de softwareFundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de software
 
8.conceptos de diseño
8.conceptos de diseño8.conceptos de diseño
8.conceptos de diseño
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
 
Metodología de Diseño Estructurado.pptx
Metodología de Diseño Estructurado.pptx Metodología de Diseño Estructurado.pptx
Metodología de Diseño Estructurado.pptx
 
Deber analisis
Deber analisisDeber analisis
Deber analisis
 
Ra semana 13 2
Ra semana 13 2Ra semana 13 2
Ra semana 13 2
 
Diseño de componentes.
Diseño de componentes.Diseño de componentes.
Diseño de componentes.
 
Pteg g-grupox-lista8-9-13-20- 49-visita3-expo cap 7 tema ingenieria del software
Pteg g-grupox-lista8-9-13-20- 49-visita3-expo cap 7 tema ingenieria del softwarePteg g-grupox-lista8-9-13-20- 49-visita3-expo cap 7 tema ingenieria del software
Pteg g-grupox-lista8-9-13-20- 49-visita3-expo cap 7 tema ingenieria del software
 
Diseño de software
Diseño de softwareDiseño de software
Diseño de software
 

Último

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 

Último (20)

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 

Diseno Software

  • 1. www.monografias.com Diseño de software 1. Introducción 2. Fundamentos del Diseño de Software 3. Temas Claves en el Diseño de Software 4. Estructura y Arquitectura de Software 5. Calidad en el análisis, diseño y evaluación del software 6. Diseño de software 7. Herramienta (gsBase(ie)) 8. Bibliografía Introducción A través de la historia de la ingeniería del software ha evolucionado un conjunto de conceptos fundamentales de diseño de software, aunque el grado de interés en cada concepto ha variado con los años, han pasado la prueba del tiempo ofreciendo cada uno al ingeniero de software fundamentos sobre el cual pueden aplicarse métodos de diseño más elaborados. El diseño de Software juega un papel importante en el desarrollo de software lo cual permite al ingeniero de software producir varios modelos del sistema o producto de que se va a construir el mismo que forman una especie de plan de la solución de la aplicación. Estos modelos puede evaluarse en relación con su calidad y mejorarse antes de generar código, de realizar pruebas y de que los usuarios finales se vean involucrados a gran escala. El diseño es el sitio en el que se establece la calidad del software. Diseño es definido como: “El proceso de definición de la arquitectura, componentes, interfaces y otras características de un sistema o componente que resulta de este proceso” [IEEE610.12-90]. Palabras Claves Definición de Documentos de Software (IEEE) SQAP: Software Quality Assurance Plan IEEE 730 SCMP: Software Configuration Management Plan IEEE 828 STD: Software Test Documentation IEEE 829 SRS: Software Requirements Specification IEEE 830 SVVP: Software Validation & Verification Plan IEEE 1012 SDD: Software Design Description IEEE 1016 SPMP: Software Project Management Plan IEEE 1058 Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
  • 2. www.monografias.com Fundamentos del Diseńo de Software 1.1. Conceptos generales de diseño. El software no es el único campo donde el diseño se encuentra inmiscuido. En general podemos ver el diseño como una forma para resolución de problemas. El problema sin solución definitiva es interesante en términos de comprensión del diseño. Un numero de otras nociones y conceptos son también de interés en la comprensión del diseño en su sentido general, objetivos, limitaciones, alternativas, representaciones y soluciones 1.2. Contexto del diseño de software. El diseño del software se encuentra en el núcleo técnico de la respectiva ingeniería y se aplica de manera independiente al modelo de software que se utilice. Una vez que se analizan y especifican los requisitos, el diseño del software es la última acción de la ingeniería correspondiente dentro de la actividad del modelado, la cual establece una plataforma para la construcción (generación de código y prueba). “El milagro más común de la ingeniería de software es la transición del análisis al diseño y del diseño al código” Richard Due 1.3. Proceso del Diseño de Software. 1.3.1.Diseño Arquitectónico. El diseño arquitectónico puede representarse al usar uno o más de muchos modelos diferentes. Los modelos estructurales representan la arquitectura como una colección organizada de componentes del programa. Los modelos del marco de trabajo repetible incrementan el grado de abstracción del diseño al intentar identificar marcos de trabajo repetibles del diseño arquitectónico que se encuentran en tipos de aplicaciones similares. El diseño de la arquitectura de software se describe cómo se descompone y como están organizados los componentes en el software. [IEEEP1471-00] 1.3.2.Diseño Detallado. El diseño detallado se describe el comportamiento específico de estos componentes. 1.4. Técnicas Permitidas. 1.4.1.Abstracción Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
  • 3. www.monografias.com Abstracción es el proceso o el resultado de la generalización de la reducción del contenido de la información de un concepto o un fenómeno observable, por lo general, con el fin de conservar únicamente la información que es relevante para un propósito en particular. Cuando se considera una solución modular a cualquier problema se pueden exponer muchos grados de abstracción. En un alto grado de abstracción una solución se establece en términos generales con el lenguaje del entorno del problema. En los grados de menor abstracción se proporciona una descripción más detallada de la solución. En la medida en que se cambian los diferentes grados de abstracción se trabaja para crear abstracciones procedimentales y de datos. Abstracción Procedimental: Se refiere a una secuencia de instrucciones que tiene una función específica y limitada. Abstracción de Datos: Es una colección nombrada de datos que describe un objeto de datos. 1.4.2.Acoplamiento y Cohesión. Dentro del modelo de diseño es necesario que las clases de diseño colaboren con alguna otra. Es una medida de la interconexión entre los módulos de la estructura de un programa. Depende de la complejidad de la interfaz entre los módulos, el punto en el que se entra o se hace referencia al módulo y qué datos pasan a través de la interfaz. Intentamos conseguir el menor nivel posible de acoplamiento. Las conexiones sencillas entre los módulos hacen que el software sea más fácil de entender y menos dado al efecto ola. Acoplamiento: La fuerza de las relaciones entre los módulos. Acoplamiento de datos: está subordinado al módulo y se accede a él por medio de una lista convencional de argumentos a través de la cual se pasan los datos. Acoplamiento de marca: cuando en vez de argumentos simples se pasa una porción de la estructura de datos se pasa por la interfaz del módulo. Acoplamiento de control: se pasa un indicador de control (una variable que controla las decisiones en el módulo subordinado). Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
  • 4. www.monografias.com Acoplamiento externo: cuando los módulos están atados a un entorno externo al software. Por ejemplo, las I/O y los dispositivos. Acoplamiento común: varios módulos hacen referencia a un área global de datos. Acoplamiento de contenido: un módulo hace uso de datos o de información de control mantenidos dentro de los límites de otro módulo. Cuando se realiza una bifurcación hacia la mitad de otro módulo. Una clase de diseño cohesiva tiene un conjunto de responsabilidades pequeño y enfocado, y aplica atributos y métodos de manera sencilla de implementar dichas responsabilidades. Cohesión: Como están relacionados los elementos que conforman un modulo. Es una extensión natural del concepto de ocultamiento de la información. Un módulo con cohesión realiza una sola tarea dentro de un procedimiento de software, requiriendo poca interacción con los procedimientos que se realizan en otras partes del programa. Un módulo con cohesión debería hacer una sola cosa. Siempre debemos buscar la cohesión más alta, aunque la parte media del espectro es a menudo aceptable. Coincidencialmente cohesivo: un módulo que realiza un conjunto de tareas poco relacionadas las unas con las otras. Cohesión lógica: realiza tareas relacionadas lógicamente (produce todas las salidas). Cohesión temporal: contienen tareas relacionadas por el hecho de que todas deben hacerse en el mismo intervalo de tiempo. Cohesión procedimental: cuando los elementos de procesamiento están relacionados y deben ejecutarse en un orden específico. Cohesión de comunicación: todos los elementos de procesamiento se concentran en un área de la estructura de datos. 1.4.3.La descomposición y la modularización. Los patrones de arquitectura y diseño de software materializan la modularidad; es decir, el software se divide en componentes con nombres independientes y que es posible abordar en forma individual. Estos componentes llamados módulos se integran para satisfacer los requisitos del problema. Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
  • 5. www.monografias.com Modularidad: Es el atributo particular del software que permite que un programa sea manejable de manera intelectual. Se divide el software en componentes identificables y tratables por separado, denominados módulos, que están integrados para satisfacer los requisitos del programa. Hay un número m de módulos que resultarían en un costo de desarrollo mínimo, pero no tenemos la sofisticación necesaria para predecir m con seguridad 1.4.4.Encapsulación/Ocultar Información Mediante la agrupación y empaquetado de los elementos y los detalles internos de una abstracción, haciendo que estos detalles sean inaccesibles. 1.4.5.Separación de la interfaz y la aplicación La separación de la interfaz y la aplicación implica la definición de un elemento especificando una interfaz pública, conoce a los clientes, aparte de los detalles de cómo se realiza el componente. 1.4.6.Suficiencia, integridad y primitivismo. Los métodos asociados con una clase de diseño deben enfocarse en el cumplimiento de un servicio para la clase. Temas Claves en el Diseńo de Software A la hora de diseñar software hay una serie de cuestiones fundamentales que se deben tomar en cuenta. Algunos relacionados con la calidad así como los concernientes a la dirección como por ejemplo el rendimiento. Además de cómo se descomponen, organizan los paquetes de los componentes de software. Esto es tan fundamental que en todo el proceso de diseño que se debe abordar de una manera u otra. "[Aspectos] no suelen ser unidades de descomposición funcional del software, sino más bien a las propiedades que afectan el desempeño o la semántica de los componentes en el sistema en diferentes maneras " (Kic97). 1.5. Concurrencia: La forma de descomponer el software en los procesos, tareas e hilos tratar relacionarlos con la eficiencia, la atomicidad, la sincronización, y demás cuestiones de programación. 1.6. Control y manejo de Eventos Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
  • 6. www.monografias.com Cómo organizar los datos y el controlar el flujo, manejo de reactivo y temporal de los acontecimientos a través de diversos mecanismos, tales como la invocación implícita de llamadas y sus intentos. 1.7. Distribución de Componentes Cómo distribuir el software en el hardware, cómo los componentes se comunican, cómo se puede usar una plataforma al utilizarse para hacer frente a software heterogéneos. 1.8. Error y Gestión de Excepciones Tolerancia a Fallos. El análisis y la gestión del riesgo son una serie de pasos que ayudan al equipo del software a comprender y a gestionar la incertidumbre. Un riesgo es un problema potencial que puede ocurrir o no. Pero sin tener en cuenta el resultado, realmente es una buena idea es identificarlo, evaluar su probabilidad de aparición, estimar su impacto, y establecer un plan de contingencia por si ocurre el problema. Una estrategia considerablemente más inteligente para el control del riesgo es ser proactivo. La estrategia proactiva empieza mucho antes de que comiencen los trabajos técnicos. Se identifican los riesgos potenciales, se evalúa su probabilidad y su impacto y se establece una prioridad según su importancia. Después, el equipo de Software establece un plan para controlar el riesgo. El primer objetivo es evitar el riesgo, pero como no se pueden evitar todos los riesgos, el equipo trabaja para desarrollar un plan de contingencia que le permita responder de una manera eficaz y controlada. Estructura y Arquitectura de Software En el sentido estricto, una arquitectura de software es “Una descripción de los subsistemas y componentes de un sistema de software y las relaciones que existen entre ellos” (Bus96: c6). A mediados de 1990, la arquitectura empezó a emerger como una disciplina más amplia que implica el estudio de las estructuras y las arquitecturas de software en una forma más genérica, dando ideas interesantes sobre diseño del software en diferentes niveles de abstracción. Algunos de estos conceptos son muy útiles durante el diseño arquitectónico (estilo de arquitectura), de software específico, así como en su diseño de detalle (nivel inferior, Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
  • 7. www.monografias.com patrones de diseño). Así también para el diseño de sistemas genéricos lo que lleva a la concepción de las familias de los programas (conocidas como líneas de productos). La mayoría de estos conceptos pueden verse como intentos de describir, por tanto la reutilización del diseño genérico del conocimiento. El desarrollo de un sistema con gran cantidad de software requiere que este sea visto desde diferentes perspectivas. Diferentes usuarios (usuario final, analistas, desarrolladores, integradores, jefes de proyecto...) siguen diferentes actividades en diferentes momentos del ciclo de vida del proyecto, lo que da lugar a las diferentes vistas del proyecto, dependiendo de qué interese más en cada instante de tiempo. La arquitectura es el conjunto de decisiones significativas sobre: • La organización del sistema • Selección de elementos estructurales y sus interfaces a través de los cuales se constituye el sistema. • El Comportamiento, como se especifica las colaboraciones entre esos componentes. • Composición de los elementos estructurales y de comportamiento en subsistemas progresivamente más grandes. • El estilo arquitectónico que guía esta organización: elementos estáticos y dinámicos y sus interfaces, sus colaboraciones y su composición. 1.9. Estructuras Arquitectónicas y Puntos de Vista. Durante las diferentes facetas o etapas del software deben ser descritos y documentados. “Una vista representa un aspecto parcial de la arquitectura de un software mostrando las propiedades del sistema de software”. La arquitectura que no debe centrarse únicamente en la estructura y en el comportamiento, sino que abarque temas como el uso, funcionalidad, rendimiento, capacidad de adaptación, reutilización, capacidad para ser comprendida, restricciones, compromisos entre alternativas, así como aspectos estéticos. Para ello se sugiere una arquitectura que permita describir mejor los sistemas desde diferentes vistas, donde cada una de ellas es una proyección de la organización y la estructura centrada en un aspecto particular del sistema. La vista de casos de uso comprende la descripción del comportamiento del sistema tal y como es percibido por los usuarios finales, analistas y encargados de las pruebas y se utilizan los diagramas de casos de uso para capturar los aspectos Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
  • 8. www.monografias.com estáticos mientras que los dinámicos son representados por diagramas de interacción, estados y actividades. La vista de diseño comprende las clases, interfaces y colaboraciones que forman el vocabulario del problema y de la solución. Esta vista soporta principalmente los requisitos funcionales del sistema, o sea, los servicios que el sistema debe proporcionar. Los aspectos estáticos se representan mediante diagramas de clases y objetos y los aspectos dinámicos con diagramas de interacción, estados y actividades. La vista de procesos comprende los hilos y procesos que forman mecanismos de sincronización y concurrencia del sistema cubriendo el funcionamiento, capacidad de crecimiento y el rendimiento del sistema. Con UML, los aspectos estáticos y dinámicos se representan igual que en la vista de diseño, pero con el énfasis que aportan las clases activas, las cuales representan los procesos y los hilos. La Vista de implementación comprende los componentes y los archivos que un sistema utiliza para ensamblar y hacer disponible el sistema físico. Se ocupa principalmente de la gestión de configuraciones de las distintas versiones del sistema. Los aspectos estáticos se capturan con los diagramas de componentes y los aspectos dinámicos con los diagramas de interacción, estados y actividades. La vista de despliegue de un sistema contiene los nodos que forman la topología hardware sobre la que se ejecuta el sistema. Se preocupa principalmente de la distribución, entrega e instalación de las partes que constituyen el sistema. Los aspectos estáticos de esta vista se representan mediante los diagramas de despliegue y los aspectos dinámicos con diagramas de interacción, estados y actividades. 1.10.Patrones de Diseño (Patrones Micro arquitectónicos). “Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, así como la solución a este problema, de tal ,modo que esta solución se pueda aplicar esta solución un millón de veces, sin hacer lo mismo dos veces” Christopher Alexander. Los patrones de diseño hacen que sea más fácil reutilizar buenos diseños y arquitecturas. Al expresar como patrones de diseño técnicas que ya han sido probadas, las estamos haciendo más accesibles para los desarrolladores de nuevos sistemas. Los patrones de diseño nos ayudan a elegir las alternativas del Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
  • 9. www.monografias.com diseño que hacen que un sistema sea reutilizable, y evitar aquellas que dificultan dicha reutilización. Los patrones de creación tienen que ver con el proceso de creación, estructural o de comportamiento. Calidad en el análisis, diseńo y evaluación del software 1.11.Calidad de atributos Varios atributos son generalmente considerados importantes que permiten obtener un diseño de software con alta calidad, existen algunas características que son ( mantenible, portabilidad, probable) y (correctos, robusto). Cabe destacar que existen diferencias entre calidad de atributos que son (rendimiento, seguridad, funcionalidad y usabilidad), y los que son (portabilidad, reutilización, integralidad y pruebas), y las características relacionadas con la arquitectura (integridad conceptual, correcto, completo). 1.12.Calidad en análisis y evaluación de técnicas Varias técnicas y herramientas pueden ayudar a mejorar la calidad de diseño de software: Diseño de software.- Para este tipo se puede aplicar al diseño de software informal y semi informal tomando un grupo base, técnicas que permiten verificar la calidad de diseño de los artefactos que pueden ser (vista de la arquitectura, diseño -inspección, técnicas y requerimientos). Análisis estático.- Para este tipo se puede aplicar al diseño de software informal y semi informal que permite evaluar algo simple utilizando análisis automáticos de casos de pruebas. Simulación y prototipos.- Son técnicas dinámicas que permiten evaluar un diseño la característica de simulación, o la flexibilidad del prototipo. Diseńo de software Muchas notaciones y lenguajes existen para representar el diseño de artefactos de software. Algunos describen un diseño estructural organizado, otros representan el inicio del software. Estas notaciones son generalmente usadas durante un diseño natural y se pueden usar durante ambos casos. Una representan notaciones que son usadas en el contexto de específicos métodos en las estrategias de diseño y métodos Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
  • 10. www.monografias.com de sub áreas, pero estas categorías son categorizadas en notaciones para describir la estructura estática y la dinámicas vistas. Software diseño estrategias y métodos Existen varias estrategias en el desarrollo del software que permiten mejorar el diseño de procesos, a diferencia con las estrategias generales, métodos que son específicos en generar estrategias y proveen notación para ser usados en Métodos y descripción del proceso. Los métodos utilizados son medias que permiten transferir conocimiento y como un framework que permiten testear la ingeniería del software. 1.13.Estrategias generales Las estrategias generales son usadas en el diseno de procesos son dividios y refinados permitiendo lograr una alta estracion de datos y información para esto utilizando heurísticas usando para esto patentes y patentes de lenguajes Herramienta (gsBase(ie)) Es una herramienta de desarrollo y explotación de propósito general que se puede utilizar para crear soluciones para ingeniería, cálculo, gestión, diseño gráfico, educación, etc. Incluye novedosas ideas originales que le harán su trabajo mucho más fácil. Permite construir soluciones integrales para empresas (ERP's, CRM's, B2B, B2C, ...) minimizando el tiempo invertido, recursos hardware y costes de desarrollo. La comunicación entre cliente y servidor se puede establecer por redes locales internas, Internet o redes privadas. Los recursos mínimos de comunicaciones necesarios hacen posible usar distintas tecnologías de comunicación: ADSL, GPRS, UMTS, RTB, Frame Relay, 3G, RDSI, etc. Para diseñar, incluye un IDE (Integrated Development Environment) que permite crear y modificar aplicaciones de una forma rápida y ágil a la par que dar soporte a instalaciones El sistema de programación gsBase incorpora una idea novedosa y original (ventanas dinámicas) que permite, sin tener conocimientos de programación orientada a objetos, realizar o diseñar programas con dichas atribuciones de una forma elegante y resolver problemas de gran complejidad de una forma muy fácil. Todos los desarrollos realizados son reutilizables y el sistema permite que en el desarrollo de aplicaciones, participen grupos de personas (trabajo en grupo Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
  • 11. www.monografias.com cooperativo). La claridad del lenguaje de programación utilizado permite, sin problemas, que un técnico pueda interpretar rápidamente lo que otro ha desarrollado (garantizado). Para la definición de ventanas dinámicas se usa el nuevo concepto de grupos o agrupaciones de controles. Los campos de entrada, botones, textos,… de una determinada ventana de gestión de archivo se definen por grupos, no de forma individual como hacen la mayoría de lenguajes de programación, en los problemas del mundo real los controles casi siempre van agrupados (por ejemplo para una ficha de clientes: datos de identificación, datos económicos, condiciones de venta, etc). Gran parte del trabajo de diseño de aplicaciones consiste en la creación de ventanas para la gestión de archivos (creación de registros, modificación, selección, borrado, consulta, etc.). gsBase estandariza y generaliza este tipo de ventanas haciendo su diseño inmediato, el sistema incluye un potente control de grid, controles de entrada, listas, árboles, chek-boxes, cuadros de radio, mensajes, imágenes, botones, textos, sliders, etc. La potente arquitectura cliente/servidor gsBase permite el trabajo concurrente de miles de usuarios, hablamos de usuarios conectados de forma permanente al servidor y realizando procesos simultáneos (no se trata de conexiones esporádicas como ocurre en servidores web). gsBase es por tanto, la mejor solución para Medianas y Grandes Empresas, por su escalabilidad, potencia, robustez, seguridad y necesidades mínimas de hardware y comunicaciones. Los resultados e informes gráficos en gsBase tienen una calidad y potencia excepcional. Diagramas de barras, de tarta, de líneas o de áreas son construidos parametrizando una simple función en gsBase. La integración de dichos elementos en ventanas, informes o documentos es muy sencilla y funcional. Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
  • 12. www.monografias.com 1.14.Características. gsBase es un sistema de desarrollo de software para crear aplicaciones cliente- servidor Crear todo tipo de aplicaciones para empresas y administración pública Diseñar sistemas centralizados para trabajo en local y/o remoto o por Internet Las instalaciones de sus clientes finales podrán ser de 1 a miles de usuarios concurrentes (Pymes o grandes empresas). gsBase es la mejor herramienta para crear soluciones ASP (Alquiler de Software). 1.15.Ventajas. • Facilidad en diseño: cientos de ideas nuevas para el desarrollo. • Tiempo mínimo de aprendizaje para el desarrollo. • Amplios recursos para el aprendizaje en el diseño. • Posibilidad de partir de aplicaciones ya diseñadas. Una vez adquirido el diseño, no pagará royalties. • Evaluación de las aplicaciones on-line trabajando con nuestros servidores de demostración el tiempo que necesite. • Posibilidad de dirección de proyectos por parte de nuestros ingenieros Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
  • 13. www.monografias.com • Accesibilidad a sus datos y aplicaciones a nivel mundial para ejecución o mantenimiento • Sistema seguro y automatizado de distribución de sus aplicaciones. • Mínimos recursos de hardware y comunicaciones. • Facilidad de instalación y mantenimiento. • Sistema tolerante a fallos. • Trabajo en multi-idioma del sistema y sus aplicaciones. • Posibilidad de vender sus aplicaciones y módulos de aplicaciones diseñados. • Publicación en gsBase Resource Center. • Gestión de licencias automática, es posible deslicenciar en un ordenador y volver a licenciar en otro. • Los técnicos de desarrollo no son imprescindibles: lo que uno ha diseñado, puede mantenerlo otro sin problemas. Bibliografía [1] Swebok_Ironman_June_23_ 2004 [2] http://www.info-ab.uclm.es/asignaturas/42530/pdf/M1tema2.pdf [3] http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software [4] http://www.monografias.com/trabajos28/proyecto-uml/proyecto-uml.shtml [5] PRESSMAN Roger S., 2005. Ingeniería de Software. Un enfoque práctico. Sexta edición. 2005, Estados Unidos. La Evolución del Software Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
  • 14. www.monografias.com 1.Introducción 2.Reseña Histórica del Software 3.Tipos de Software, Descripción y Ejemplos 4.La Robótica y el Software de Sistemas Operativos 5.La Inteligencia Artificial como tendencia en Sistemas Operativos 6.Windows 7 7.Conclusiones 8.Bibliografía Introducción El Software representa la vida interna de un computador, el manejo y aprovechamiento del mismo y todas las ventajas que se brindan el mundo de las computadoras, depende del software, facilitando a los usuarios el desarrollo de programas que contribuyen con tareas diarias tanto personales como generales, empresariales y organizacionales el software en sus diferentes tipos es el elemento esencial como interfaz entre usuario - computador, su historia desde un principio se muestra con poca atención pero con el paso del tiempo se ha tornado importante para los programadores y creadores de sistemas tanto de aplicación como operativos, todo lo que se ve digitalizado en un computador representa el software clasificado de alguna forma, las herramientas del menú inicio y todas aquellas que se despliegan al encendido del CPU, el desarrollo de esta herramienta ha permitido innovar en cuanto a la robótica he inteligencia artificial facilitando el trabajo en determinadas áreas laborales y agilizando las mismas por ejemplo en la fabricación de vehículos mediante software de programación se diseñan estructuras robóticas inmensas y fuertes que realizan tareas que al brazo humano le tomarían mas tiempo. Reseña Histórica del Software En 1990 La crisis del software se fundamentó en el tiempo de creación de software, ya que en la creación del mismo no se obtenían los resultados deseados, además de un gran costo y poca flexibilidad. Es un término informático acuñado en 1968, en la primera conferencia organizada por la OTAN sobre desarrollo de software, de la cual nació formalmente la rama de la Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
  • 15. www.monografias.com ingeniería de software. El término se adjudica a F. L. Bauer, aunque previamente había sido utilizado por Edsger Dijkstra en su obra The Humble Programmer. Básicamente, la crisis del software se refiere a la dificultad en escribir programas libres de defectos, fácilmente comprensibles, y que sean verificables. Las causas son, entre otras, la complejidad que supone la tarea de programar, y los cambios a los que se tiene que ver sometido un programa para ser continuamente adaptado a las necesidades de los usuarios. Además, no existen todavía herramientas que permitan estimar de una manera exacta, antes de comenzar el proyecto, cuál es el esfuerzo que se necesitará para desarrollar un programa. Este hecho provoca que la mayoría de las veces no sea posible estimar cuánto tiempo llevará un proyecto, ni cuánto personal será necesario. Cuando se fijan plazos normalmente no se cumplen por este hecho. Del mismo modo, en muchas ocasiones el personal asignado a un proyecto se incrementa con la esperanza de disminuir el plazo de ejecución. Por último, las aplicaciones de hoy en día son programas muy complejos, inabordables por una sola persona. En sus comienzos se valoró como causa también la inmadurez de la ingeniería de software, aunque todavía hoy en día no es posible realizar estimaciones precisas del coste y tiempo que necesitará un proyecto de software. Englobó a una serie de sucesos que se venían observando en los proyectos de desarrollo de software: •Los proyectos no terminaban en plazo. •Los proyectos no se ajustaban al presupuesto inicial. •Baja calidad del software generado. •Software que no cumplía las especificaciones. Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com
  • 16. www.monografias.com •Código inmantenible que dificultaba la gestión y evolución del proyecto. Aunque se han propuesto diversas metodologías para intentar subsanar los problemas mencionados, lo cierto es que todavía hoy no existe ningún método que haya permitido estimar de manera fiable el coste y duración de un proyecto antes de sus comienzos. En 1984 Richard Stallman deja el MIT y comienza a trabajar en su proyecto GNU, con el objetivo de desarrollar un sistema operativo completamente libre, desde el kernel, editores, compiladores, debuggers, hasta utilitarios más complejos como procesadores de texto e inclusive juegos. Uno de los primeros desarrollos realizados por el mismo Stallman fue el editor de textos GNU Emacs a principios de 1985. Ese mismo año se funda la Free Software Fundation, ente que financia desde entonces al proyecto GNU, la misma se mantiene con donaciones y con el producto de la venta de CD-ROMs tanto de programas binarios como código fuente, manuales y distribuciones completas (conjunto de software para una dada plataforma de hardware). Para ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com