domingo, 13 de octubre de 2019

PORTADA

INSTITUTO  DANIEL QUIROZ 

CATEDRATICO: OSCAR MODESTO CLAROS

   AUMNOS:          INGRIS JACKELINE VASQUEZ
                                                                    NAHUN WILFREDO URBINA

                        TEMA:                    Ingeniería de software

      

 

LUGAR: YORO YORO

 

IIIBTPI


¿Qué es Ingeniería de software?


Ingeniería de software en la actualidad


En la actualidad el software tiene un doble papel. Es el producto, pero al mismo tiempo, actúa como el conductor que entrega el producto. Como conductor  utilizado para entregar el producto, actúa como base de control, por ejemplo un sistema operativo, o un sistema gestor de redes.
El software actúa como distribuidor y hace llegar a los usuarios, el producto más importante del este siglo: la información.
El software modifica la información personal para hacerlos más útiles en un entorno local, administra información comercial para mejorar la competitividad, facilita el acceso a redes a nivel mundial, y propone la forma de obtener información de cualquier manera.

Para ser ingeniero de software se necesita:



  • Capacidad de resolución de problemas.
  • Un enfoque lógico y metódico de su trabajo.
  • Prestar atención a los detalles.
  • Compromiso para trabajar con los proyectos de principio a fin.
  • Un elevado nivel de conocimientos técnicos.
  • Mantenerse al día sobre los cambios en nuevas tecnologías.
  • Excelentes habilidades interpersonales.
  • Habilidades de comunicación escrita para presentar propuestas e informes a los clientes, y para escribir las instrucciones y manuales de los programas.
  • Una gran capacidad de comunicación para enseñar a los clientes a utilizar los nuevos programas.
  • Comprensión del tipo de actividades empresariales del cliente y de sus necesidades de TIC.
  • Trabajar bien por cuenta propia y con demás miembros de los equipos.
  • Estar bien organizado y trabajar bien bajo presión para cumplir con los plazos de entrega.

¿Cuál es el trabajo de un ingeniero de software?


Los ingenieros de software están involucrados en todas las etapas del desarrollo de un producto de software. Aplican la tecnología de software para satisfacer una necesidad específica o para resolver un problema particular.

Sus funciones podrían implicar el análisis de un sistema existente, diseñando un nuevo software e indicando el modo de funcionamiento y las características que tendrá (especificación TIC), el diseño del sistema y luego la creación de un código informático que permite entenderlo. Los ingenieros de software deben probar este código para asegurarse de que el ordenador puede funcionar sin problemas.

Al inicio de un proyecto, los ingenieros del software deben conocer el negocio del cliente y sus necesidades y problemas particulares.

A continuación, trabajan con sus clientes para ponerse de acuerdo sobre las cuestiones más importantes, como el hardware y el software que necesitan, y los costes y plazos de entrega, así como la definición de una propuesta para los productos software final.

sábado, 12 de octubre de 2019

Modelos y ciclos de vida del Desarrollo de Software



La ingeniería de software, con el fin de ordenar el caos que era anteriormente el desarrollo de software, dispone de varios modelos, paradigmas y filosofías de desarrollo, estos los conocemos principalmente como modelos o ciclos de vida del desarrollo de software, esto incluye 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 y representa todas las actividades y artefactos (productos intermedios) necesarios para desarrollar una aplicación.

El ciclo de vida de un software contiene los siguientes procedimientos:

·       Definición de objetivos: definir el resultado del proyecto y su papel en la estrategia global.

·      Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos del cliente y examinar cualquier restricción que se pueda aplicar.


·        Diseño general: requisitos generales de la arquitectura de la aplicación.

·        Diseño en detalle: definición precisa de cada subconjunto de la aplicación.


·  Programación (programación e implementación): es la implementación de un lenguaje de programación para crear las funciones definidas durante la etapa de diseño.


·    Prueba de unidad: prueba individual de cada subconjunto de la aplicación para garantizar que se implementaron de acuerdo con las especificaciones.


·   Integración: para garantizar que los diferentes módulos se integren con la aplicación. Este es el propósito de la prueba de integración que está cuidadosamente documentada                            

    Prueba beta (o validación), para garantizar que el software cumple con las especificaciones         originales.


·     Documentación: sirve para documentar información necesaria para los usuarios del software y para desarrollos futuros.


·        Implementancion

·  Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las actualizaciones secundarias del software (mantenimiento continuo).



Ventajas Y Desventajas de LA Ingenieria de software


Desde el punto de vista de gestión

·         Facilitar la tarea de seguimiento del proyecto
·         Optimizar el uso de recursos
·         Facilitar la comunicación entre usuarios y desarrolladores
·         Facilitar la evaluación de resultados y cumplimiento de objetivos

Desde el punto de vista de los ingenieros de software

·         Ayudar a comprender el problema
·         Permitir la reutilización
·         Facilitar el mantenimiento del producto final
·         Optimizar el conjunto y cada una de las fases del proceso de desarrollo

Desde el punto de vista de cliente o usuario final

·         Garantizar el nivel de calidad del producto final
·         Obtener el ciclo de vida adecuado para el proyecto
·         Confianza en los plazos del tiempo mostrados en la definición del proyecto.

Desventajas:
*Comprar puede ser más caro que construir.
*Costo de herramientas integradas y equipo necesario.
*Progreso más difícil de medir.
*Menos eficiente.
*Menor precisión científica.
*Riesgo de revertirse a las prácticas sin control de antaño.
*Más fallas (por síndrome de "codificar a lo bestia").
*Prototipos pueden no escalar, un problema mayúsculo.
*Funciones reducidas (por "timeboxing").
*Dependencia en componentes de terceros: funcionalidad de más o de

Menos, problemas legales.

Desarrollo de la aplicación

Para el desarrollo de la aplicación es necesario considerar cinco fases para tener una aplicación o programa eficiente, estas son:
· Desarrollo de la infraestructura: Esta fase permite el desarrollo y la organización de los elementos que formaran la infraestructura de la aplicación, con el propósito de finalizar la aplicación eficientemente.
·  Adaptación del paquete: El objetivo principal de esta fase es entender de una manera detallada el funcionamiento del paquete, esto tiene como finalidad garantizar que el paquete pueda ser utilizado en su máximo rendimiento, tanto para negocios o recursos. Todos los elementos que componen el paquete son inspeccionados de manera detallada para evitar errores y entender mejor todas las características del paquete.
· Desarrollo de unidades de diseño de interactivas: En esta fase se realizan los procedimientos que se ejecutan por un diálogo usuario-sistema. Los procedimientos de esta fase tienen como objetivo principal:
1.     Establecer específicamente las acciones que debe efectuar la unidad de diseño.
2.     La creación de componentes para sus procedimientos.
3.     Ejecutar pruebas unitarias y de integración en la unidad de diseño.
· Desarrollo de unidades de diseño batch: En esta fase se utilizan una serie de combinación de técnicas, como diagrama de flujo, diagramas de estructuras, tablas de decisiones, etc. Cualquiera a utilizar será beneficioso para plasmar de manera clara y objetiva las especificaciones y que así el programador tenga mayor comprensión a la hora de programar y probar los programas que le corresponden.

·Desarrollo de unidades de diseño manuales: En esta fase el objetivo central es proyectar todos los procedimientos administrativos que desarrollarán en torno a la utilización de los componentes computarizados.

Arquitectura de software


La integración de infraestructura, desarrollo de aplicaciones, bases de datos y herramientas gerenciales, requieren de capacidad y liderazgo para poder ser conceptualizados y proyectados a futuro, solucionando los problemas de hoy. El rol en el cual se delegan todas estas actividades es el del Arquitecto.
El arquitecto de software es la persona que añade valor a los procesos de negocios gracias a su valioso aporte de soluciones tecnológicas.
La arquitectura de sistemas en general, es una actividad de planeación, ya sea a nivel de infraestructura de red y hardware, o de software.
Lo principal en este punto es poner en claro los aspectos lógicos y físicos de las salidas, modelos de organización y representación de datos, entradas y procesos que componen el sistema, considerando las bondades y limitaciones de los recursos disponibles en la satisfacción de las pacificaciones brindadas para el análisis.

Limitaciones de Ingenieria de software



Los software tienen la capacidad de emular inteligencia creando un modelo de ciertas características de la inteligencia humana pero solo posee funciones predefinidas que abarcan un conjunto de soluciones que en algunos campos llega a ser limitado. Aun cuando tiene la capacidad de imitar ciertos comportamientos humanos no es capaz de emular el pensamiento humano porque actúa bajo condiciones.
Otro aspecto limitante del software proviene del proceso totalmente mecánico que requiere de un mayor esfuerzo y tiempos elevados de ejecución lo que lleva a tener que implementar el software en una máquina de mayor capacidad.

Etapas del proceso de Ingeniería de software



La ingeniería de software requiere llevar a cabo numerosas tareas agrupadas en etapas, al conjunto de estas etapas se le denomina ciclo de vida. Las etapas comunes a casi todos los modelos de ciclo de vida son las siguientes:
Obtención de los requisitos.
Se debe identificar sobre qué se está trabajando, es decir, el tema principal que motiva el inicio del estudio y creación del nuevo software o modificación de uno ya existente. A su vez identificar los recursos que se tienen, en esto entra el conocer los recursos humanos y materiales que participan en el desarrollo de las actividades. Es importante entender el contexto del negocio para identificar adecuadamente los requisitos.
Se tiene que tener dominio de la información de un problema, lo cual incluye los datos fuera del software (usuarios finales, otros sistemas o dispositivos externos), los datos que salen del sistema (por la interfaz de usuario, interfaces de red, reportes, gráficas y otros medios) y los almacenamientos de datos que recaban y organizan objetos persistentes de datos (por ejemplo, aquellos que se conservan de manera permanente

Análisis de requisitos
Extraer los requisitos de un producto software es la primera etapa para crearlo. Durante la fase de análisis, el cliente plantea las necesidades que se presenta e intenta explicar lo que debería hacer el software o producto final para satisfacer dicha necesidad mientras que el desarrollado actúa como interrogador, como la persona que resuelve problemas. 

El análisis de requisitos puede parecer una tarea sencilla, pero no lo es debido a que muchas veces los clientes piensan que saben todo lo que el software necesita para su buen funcionamiento, sin embargo se requiere la habilidad y experiencia de algún especialista para reconocer requisitos incompletos, ambiguos o contradictorios. Estos requisitos se determinan tomando en cuenta las necesidades del usuario final, introduciendo técnicas que nos permitan mejorar la calidad de los sistemas sobre los que se trabaja.

Objetivos de la ingeniería de software


La ingeniería de software aplica diferentes normas y métodos que permiten obtener mejores resultados, en cuanto al desarrollo y uso del software, mediante la aplicación correcta de estos procedimientos se puede llegar a cumplir de manera satisfactoria con los objetivos fundamentales de la ingeniería de software.
Entre los objetivos de la ingeniería de software están:
·        Mejorar el diseño de aplicaciones o software de tal modo que se adapten de mejor manera a las necesidades de las organizaciones o finalidades para las cuales fueron creadas.
·         Promover mayor calidad al desarrollar aplicaciones complejas.
·         Brindar mayor exactitud en los costos de proyectos y tiempo de desarrollo de los mismos.
·     Aumentar la eficiencia de los sistemas al introducir procesos que permitan medir mediante normas específicas, la calidad del software desarrollado, buscando siempre la mejor calidad posible según las necesidades y resultados que se quieren generar.
·   Una mejor organización de equipos de trabajo, en el área de desarrollo y mantenimiento de software.
· Detectar a través de pruebas, posibles mejoras para un mejor funcionamiento del software desarrollado.

Historia de ingenieria de software


Cuando aparecieron las primeras computadoras digitales en la década de 1940,​ el desarrollo de software era algo tan nuevo que era casi imposible hacer predicciones de las fechas estimadas de finalización del proyecto y muchos de ellos sobrepasaban los presupuestos y tiempo estimados. Los desarrolladores tenían que volver a escribir todos sus programas para correr en máquinas nuevas que salían cada uno o dos años, haciendo obsoletas las ya existentes.
El término ingeniería del software apareció por primera vez a finales de la década de 1950. La ingeniería de software fue estimulada por la crisis del software de las décadas de entre 1960 y 1980. La ingeniería del software viene a ayudar a identificar y corregir mediante principios y metodologías los procesos de desarrollo y mantenimiento de sistemas de software.

Definiciones de Ingeniería de Software


Definición 1: Ingeniería de Software es el estudio de los principios y metodologías para desarrollo y mantenimiento de sistemas de software.

Definición 2: Ingeniería de Software es la aplicación práctica del conocimiento científico en el diseño y construcción de programas de computadora y la documentación asociada requerida para desarrollar, operar (funcionar) y mantenerlos. Se conoce también como desarrollo de software o producción de software.
Definición 3: Ingeniería de Software trata del establecimiento de los principios y métodos de la Ingeniería a fin de obtener software de modo rentable que sea fiable y trabaje en máquinas reales.
Definición 4: La aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación (funcionamiento) y mantenimiento del software; es decir, la aplicación de ingeniería al software.

Término Ingeniería del Software


Según Diccionario de la Real Academia Española de la Lengua
El término Ingeniería se define en el Diccionario de la Real Academia Española de la Lengua (DRAE) como: Conjunto de conocimientos y técnicas que permiten aplicar el saber científico a la utilización de la materia y de las fuerzas de energía.
Profesión y ejercicio del ingeniero, y el término ingeniero se define como: Persona que profesa o ejerce la ingeniería.
Según la Real Academia de Ciencias Exactas, Físicas y Naturales
Ingeniería: Es el conjunto de conocimientos y técnicas cuya aplicación permite la utilización racional de los materiales y de los recursos naturales, mediante invenciones, construcciones u otras realizaciones provechosas para el hombre.
Evidentemente, si la Ingeniería del Software es una nueva ingeniería, parece lógico que reúna las propiedades citadas en las definiciones anteriores. Sin embargo, ni el DRAE ni la Real Academia Española de Ciencias han incluido todavía el término es sus últimas ediciones; en consecuencia vamos a recurrir para su definición más precisa a algunos de los autores más acreditados que comenzaron en su momento a utilizar el término o bien en las definiciones dadas por organismos internacionales profesionales de prestigio tales como IEEE o ACM.

Estado del arte de la Ingeniería del Software


La Ingeniería del Software es una disciplina o área de la Informática o Ciencias de la Computación, que ofrece métodos y técnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo. Hoy día es cada vez más frecuente la consideración de la Ingeniería del Software como una nueva área de la ingeniería, y el ingeniero del software comienza a ser una profesión implantada en el mundo laboral internacional, con derechos, deberes y responsabilidades que cumplir, junto a una, ya, reconocida consideración social en el mundo empresarial y, por suerte, para esas personas con brillante futuro.
La Ingeniería del Software trata con áreas muy diversas de la Informática y de las ciencias de la computación, tales como construcción de compiladores, sistemas operativos o desarrollos de Intranet/Internet, abordando todas las fases del ciclo de vida del desarrollo de cualquier tipo de sistemas de información y aplicables a una infinidad de áreas tales como: negocios, investigación científicamedicina,producción,logística, banca, control de tráfico, meteorología, el mundo del derecho, la red de redes Internet, redes Intranet y Extranet, etc.