SlideShare une entreprise Scribd logo
1  sur  40
T.S.U. EN TECNOLOGÍAS DE LA INFORMACIÓN Y LA
COMUNICACIÓN.
ÁREA DE SISTEMAS INFORMÁTICOS.
Curso de Ingeniería de Software II
Prof. Ing. José Padilla Duarte

Actividad 1.1.- Definiciones en la Ingeniería de Software.
Trabajo elaborado por:
12311044 González Palma Mónica Guadalupe
Grupo SI 5-1.

Hermosillo, Sonora, México.

15/01/14
Introducción.
A lo largo de este trabajo se hablara sobre ingeniería
de software y todos los conceptos relacionados con
esta misma materia.
Se incluirá desde la historia, las implicaciones que
tiene en diferentes campos como socioculturales,
económicos y/o sociales. Además se verán las
metodologías que se siguen para poder desarrollar
un proceso y las etapas que tienen estas mismas
para poder desarrollar cualquier aplicación que se
propongan.
Aquí mismo se mostraran todas las clasificaciones
que tienen las aplicaciones de los sistemas de
cómputo y algunos ejemplos de cada una de estas.
Más adelante se habla sobre los términos o
siglas SEI y W3C.
Por otra parte se menciona el ciclo de vida que
debe de seguir un proyecto y las características
de cada una de estas etapas.
Por último se habla sobre la arquitectura de
software, los componentes, las interacciones y
los modelos que se utilizan.
Espero la información sea de su agrado.
Ingeniería de Software.
Ingeniería de software es la aplicación de un enfoque sistemático,
disciplinado y cuantificable al desarrollo, operación y mantenimiento
de software, y el estudio de estos enfoques, es decir, la aplicación
de la ingeniería al software. Es la aplicación de la ingeniería al
software, ya que integra matemáticas, ciencias de la computación y
prácticas cuyos orígenes se encuentran en la ingeniería.
Se pueden citar otras definiciones enunciadas por prestigiosos
autores:
Ingeniería de software es el estudio de los principios y
metodologías para el desarrollo y mantenimiento de sistemas
software (Zelkovitz, 1978)
Ingeniería de software es la aplicación práctica del conocimiento
científico al diseño y construcción de programas de computadora y
a la documentación asociada requerida para desarrollar, operar y
mantenerlos. Se conoce también como desarrollo de software o
producción de software (Bohem, 1976).
La creación del software es un proceso
intrínsecamente creativo y la ingeniería del software
trata de sistematizar este proceso con el fin de acotar
el riesgo del fracaso en la consecución del objetivo
creativo por medio de diversas técnicas que se han
demostrado adecuadas en base a la experiencia
previa.
La IS se puede considerar como la ingeniería
aplicada al software, esto es, por medios
sistematizados y con herramientas preestablecidas,
la aplicación de ellos de la forma más eficiente para
la obtención de resultados óptimos; objetivos que
siempre busca la ingeniería. No es sólo de la
resolución de problemas, sino más bien teniendo en
cuenta las diferentes soluciones, elegir la más
apropiada.
Implicaciones
socioeconómicas.
La ingeniería de software afecta a la economía y las
sociedades de variadas formas.
Económicamente
En los Estados Unidos, el software contribuyó a una octava
parte de todo el incremento del PIB durante la década de
1990 (alrededor de 90,000 millones de dólares por año), y un
noveno de todo el crecimiento de productividad durante los
últimos años de la década (alrededor de 33.000 millones de
dólares estadounidenses por año). La ingeniería de software
contribuyó a US$ 1 billón de crecimiento económico y
productividad en esa década. Alrededor del globo, el software
contribuye al crecimiento económico en formas similares,
aunque es difícil de encontrar estadísticas fiables.
Además, con la industria del lenguaje está hallando cada vez
más campos de aplicación a escala global.
Socialmente
La ingeniería de software cambia la cultura del mundo debido al
extendido uso de la computadora. El correo electrónico (E-mail),
la WWW y la mensajería instantánea permiten a la gente
interactuar en nuevas formas. El software baja el costo y mejora
la calidad de los servicios de salud, los departamentos de
bomberos, las dependencias gubernamentales y otros servicios
sociales. Los proyectos exitosos donde se han usado métodos
de ingeniería de software incluyen a GNU/Linux, el software
del transbordador espacial, los cajeros automáticos y muchos
otros.
Metodología
Un objetivo de décadas ha sido el encontrar procesos
y metodologías, que sean sistemáticas, predecibles y repetibles,
a fin de mejorar la productividad en el desarrollo y la calidad del
producto software.
Etapas del proceso
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:
Análisis de requisitos.
Extraer los requisitos de un producto de software es la primera
etapa para crearlo. Mientras que los clientes piensan que ellos
saben lo que el software tiene que hacer, se requiere habilidad y
experiencia para reconocer requisitos incompletos, ambiguos o
contradictorios. El resultado del análisis de requisitos con el
cliente se plasma en el documento ERS, Especificación de
Requisitos del Sistema, cuya estructura puede venir definida por
varios estándares, tales como CMMI. Asimismo, se define
un diagrama de Entidad/Relación, en el que se plasman las
principales entidades que participarán en el desarrollo del
software.
La captura, análisis y especificación de requisitos (incluso
pruebas de ellos), es una parte crucial; de esta etapa depende
en gran medida el logro de los objetivos finales. Se han ideado
modelos y diversos procesos de trabajo para estos fines.
Aunque aún no está formalizada, ya se habla de la Ingeniería de
requisitos.
La IEEE Std. 830-1998 normaliza la creación de las
especificaciones de requisitos de software (Software
Requirements Specification).
No siempre en la etapa de "análisis de requisitos" las
distintas metodologías de desarrollo llevan asociado un
estudio de viabilidad y/o estimación de costes. El más
conocido de los modelos de estimación de coste del
software es el modelo COCOMO
Especificación
La especificación de requisitos describe el comportamiento
esperado en el software una vez desarrollado. Gran parte
del éxito de un proyecto de software radicará en la
identificación de las necesidades del negocio (definidas por
la alta dirección), así como la interacción con los usuarios
funcionales para la recolección, clasificación, identificación,
priorización y especificación de los requisitos del software.
Entre las técnicas utilizadas para la especificación de
requisitos se encuentran:
Caso de uso,
Historias de usuario,
Siendo los primeros más rigurosas y formales, los
segundas más ágiles e informales.
Arquitectura
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.
La arquitectura de software consiste en el diseño de
componentes de una aplicación (entidades del negocio),
generalmente utilizando patrones de arquitectura. El
diseño arquitectónico debe permitir visualizar la
interacción entre las entidades del negocio y además
poder ser validado, por ejemplo por medio de diagramas
de secuencia. Un diseño arquitectónico describe en
general el cómo se construirá una aplicación de
software. Para ello se documenta utilizando diagramas,
por ejemplo:
O Diagramas de clases
O Diagramas de base de datos
O Diagrama de despliegue
O Diagrama de secuencia
Siendo los dos primeros los mínimos necesarios para
describir la arquitectura de un proyecto que iniciará a ser
codificado. Depende del alcance del proyecto,
complejidad y necesidades, el arquitecto elige qué
diagramas elaborar.
Las herramientas para el diseño y modelado de software
se denominan CASE, (Computer Aided Software
Engineering) entre las cuales se encuentran:
Enterprise Architect
Microsoft Visio for Enterprise Architects
Programación
Reducir un diseño a código puede ser la parte más obvia
del trabajo de ingeniería de software, pero no
necesariamente es la que demanda mayor trabajo y ni la
más complicada. La complejidad y la duración de esta
etapa está íntimamente relacionada al o a los lenguajes
de programación utilizados, así como al diseño
previamente realizado.
Prueba
Consiste en comprobar que el software realice correctamente
las tareas indicadas en la especificación del problema. Una
técnica de prueba es probar por separado cada módulo del
software, y luego probarlo de forma integral, para así llegar al
objetivo. Se considera una buena práctica el que las pruebas
sean efectuadas por alguien distinto al desarrollador que la
programó, idealmente un área de pruebas; sin perjuicio de lo
anterior el programador debe hacer sus propias pruebas. En
general hay dos grandes formas de organizar un área de
pruebas, la primera es que esté compuesta por personal
inexperto y que desconozca el tema de pruebas, de esta forma
se evalúa que la documentación entregada sea de calidad, que
los procesos descritos son tan claros que cualquiera puede
entenderlos y el software hace las cosas tal y como están
descritas. El segundo enfoque es tener un área de pruebas
conformada por programadores con experiencia, personas que
saben sin mayores indicaciones en qué condiciones puede
fallar una aplicación y que pueden poner atención en detalles
que personal inexperto no consideraría.
Documentación
Todo lo concerniente a la documentación del propio desarrollo del
software y de la gestión del proyecto, pasando por modelaciones
(UML),diagramas de casos de uso, pruebas, manuales de usuario,
manuales técnicos, etc.; todo con el propósito de eventuales
correcciones, usabilidad, mantenimiento futuro y ampliaciones al sistema.
Mantenimiento
Fase dedicada a mantener y mejorar el software para corregir errores
descubiertos e incorporar nuevos requisitos. Esto puede llevar más
tiempo incluso que el desarrollo del software inicial. Alrededor de 2/3 del
tiempo de ciclo de vida de un proyecto4 está dedicado a su
mantenimiento. Una pequeña parte de este trabajo consiste eliminar
errores (bugs); siendo que la mayor parte reside en extender el sistema
para incorporarle nuevas funcionalidades y hacer frente a su evolución.

Naturaleza de la IS.
La ingeniería de software es una disciplina que está orientada a aplicar
conceptos y métodos de ingeniería a la fabricación de software de
calidad.
Matemáticas
Los programas tienen muchas propiedades matemáticas. Por ejemplo la
corrección y la complejidad de muchos algoritmos son conceptos
matemáticos que pueden ser rigurosamente probados. El uso de
matemáticas en la IS es llamado métodos formales.
Creación
Los programas son construidos en una secuencia de pasos. El hecho de
definir propiamente y llevar a cabo estos pasos, como en una línea de
ensamblaje, es necesario para mejorar la productividad de los
desarrolladores y la calidad final de los programas. Este punto de vista
inspira los diferentes procesos y metodologías que se encuentran en la
IS.
Gestión de Proyecto
El desarrollo de software de gran porte requiere una adecuada gestión del
proyecto. Hay presupuestos, establecimiento de tiempos de entrega, un
equipo de profesionales que liderar. Recursos (espacio de oficina,
insumos, equipamiento) por adquirir. Para su administración se debe tener
una clara visión y capacitación en Gestión de Proyectos.
Arte
Los programas contienen muchos elementos artísticos. Las
interfaces de usuario, la codificación, etc. Incluso la decisión
para un nombre de una variable o una clase.
Responsabilidad
La responsabilidad en la ingeniería del software es un
concepto complejo, sobre todo porque al estar los sistemas
informáticos fuertemente caracterizados por su complejidad, es
difícil apreciar sus consecuencias.
En la ingeniería del software la responsabilidad será
compartida por un grupo grande de personas, que comprende
desde el ingeniero de requisitos, hasta el arquitecto software, y
contando con el diseñador, o el encargado de realizar las
pruebas. Por encima de todos ellos destaca el director del
proyecto. El software demanda una clara distribución de la
responsabilidad entre los diferentes roles que se dan en el
proceso de producción.
El ingeniero del software tiene una responsabilidad moral y
legal limitada a las consecuencias directas.
Aplicaciones informáticas.
Una aplicación es un tipo de programa informático diseñado
como herramienta para permitir a un usuario realizar uno o
diversos tipos de trabajos. Esto lo diferencia principalmente de
otros tipos de programas como los sistemas operativos (que
hacen funcionar al ordenador), las utilidades (que realizan
tareas de mantenimiento o de uso general), y los lenguajes de
programación (con el cual se crean los programas informáticos).
Suele resultar una solución informática para
la automatización de ciertas tareas complicadas como pueden
ser la contabilidad, la redacción de documentos, o la gestión de
un almacén. Algunos ejemplos de programas de aplicación son
los procesadores de textos, hojas de cálculo, y base de datos.
Ciertas aplicaciones desarrolladas «a medida» suelen ofrecer
una gran potencia ya que están exclusivamente diseñadas para
resolver un problema específico. Otros, llamados paquetes
integrados de software, ofrecen menos potencia pero a cambio
incluyen varias aplicaciones, como un programa procesador de
textos, de hoja de cálculo y de base de datos.
Clasificación de las
aplicaciones.
Si bien esta distinción es, en cierto modo, arbitraria, y a veces confusa, a los fines
prácticos se puede clasificar al software en tres grandes tipos:

O Aplicación de sistema: Su objetivo es desvincular
adecuadamente al usuario y al programador de los detalles del sistema
informático en particular que se use, aislándolo especialmente del
procesamiento referido a las características internas de: memoria, discos,
puertos y dispositivos de comunicaciones, impresoras, pantallas, teclados,
etc. El software de sistema le procura al usuario y programador las
adecuadas interfaces de alto nivel, controladores, herramientas y utilidades
de apoyo que permiten el mantenimiento del sistema global. Incluye entre
otros:
O
O
O
O
O
O

Sistemas operativos
Controladores de dispositivos
Herramientas de diagnóstico
Herramientas de Corrección y Optimización
Servidores
Utilidades
O Aplicación de programación: Es el conjunto de herramientas que permiten
al programador desarrollar programas informáticos, usando diferentes alternativas y lenguajes
de programación, de una manera práctica. Incluyen básicamente:
O
O
O
O
O
O

Editores de texto
Compiladores
Intérpretes
Enlazadores
Depuradores
Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas, usualmente en un
entorno visual, de forma tal que el programador no necesite introducir múltiples comandos para
compilar, interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz gráfica de
usuario (GUI).

O Software de aplicación: Es aquel que permite a los usuarios llevar a cabo una o
varias tareas específicas, en cualquier campo de actividad susceptible de ser automatizado o
asistido, con especial énfasis en los negocios. Incluye entre muchos otros:
O
O
O
O
O
O
O
O
O
O
O

Aplicaciones para Control de sistemas y automatización industrial
Aplicaciones ofimáticas
Software educativo
Software empresarial
Bases de datos
Telecomunicaciones (por ejemplo Internet y toda su estructura lógica)
Videojuegos
Software médico
Software de cálculo numérico y simbólico.
Software de diseño asistido (CAD)
Software de control numérico (CAM)
Software Engineering
Institute.
Software Engineering Institute (SEI) es un instituto federal
estadounidense de investigación y desarrollo, fundado por Congreso
de los Estados Unidos en 1984 para desarrollar modelos de
evaluación y mejora en el desarrollo de software, que dieran respuesta
a los problemas que generaba al ejército estadounidense la
programación e integración de los sub-sistemas de software en la
construcción de complejos sistemas militares. Financiado por
el Departamento de Defensa de los Estados Unidos y administrado por
la Universidad Carnegie Mellon.
Es un referente en Ingeniería de Software por realizar el desarrollo del
modelo SW-CMM (1991) que ha sido el punto de arranque de todos
los que han ido formando parte del modelo que ha desarrollado sobre
el concepto de capacidad y madurez, hasta el actual CMMI.
SEI alberga también a otro instituto federal de investigación y
desarrollo 3: CERT, fundado por SEI en noviembre de 1988 por
encargo de DARPA (Defense Advanced Research Projects Agency)
para investigar y mejorar la seguridad de los sistemas de información
del ejército y ejercer la coordinación en caso de emergencias.
W3C.
W3C son las siglas de World Wide Web Consortium, y es una
comunidad internacional donde los estados miembros trabajan
para poder desarrollar estándares para el desarrollo web y así
ayudar a un mejor desarrollo del Internet a nivel mundial.
W3C es reconocido a nivel mundial por ser
la organización encargada de estandarizar El Lenguaje de
Marcado de Hipertexto o mejor conocido como HTML , el cual es
utilizado para el diseño y desarrollo de sitios web,
dicho estándar inicio en el año de 1994 (es importante aclarar
que antes de que W3C trabajara en HTML ya otras
organizaciones habían desarrollado versiones previas).
Sin embargo los objetivos de W3C van más allá del desarrollo de
HTML y trabajan en otros proyectos a fin de poder brindar
nuevas opciones para la elaboración de sitios web, tanto
es así que en los últimos años han concentrados sus esfuerzo en
el desarrollo de XHTML, una versión avanzada de HTML
que pretende en los próximos años sustituirlo.
Por otro lado W3C se centra en cuatro objetivos que
describimos a continuación:
Web para todos : Accesibilidad para todo el mundo de
forma global, sin barreras tecnológicas, limitaciones o
culturales.
Web Sobre Todo : Intenta añadir el máximo de dispositivos
a la web, actualmente se está en un proceso de apertura
donde las PDAs, Televisiones están iniciando su camino
hacia la web.
Base de Conocimiento: Permitir que cada usuario pueda
hacer un buen uso de la web.
Seguridad: Guiar al desarrollo de la web respetando las
normas legales, comerciales y los aspectos sociales
originados por esta tecnología.
Así de esta forma W3C se convierte en
una organización de mucha importancia a nivel mundial, ya
que los estándares que la misma presenta pueden influir
en la forma en que el desarrollo web avance a nivel
mundial.
Metodología de desarrollo
de software.
Metodología de desarrollo de software es un marco de trabajo usado
para estructurar, planificar y controlar el proceso de desarrollo en sistemas
de información.
Una metodología de desarrollo de software se refiere a un framework que es
usado para estructurar, planear y controlar el proceso de desarrollo en
sistemas de información.
A lo largo del tiempo, una gran cantidad de métodos han sido desarrollados
diferenciándose por su fortaleza y debilidad.
El framework para metodología de desarrollo de software consiste en:
Una filosofía de desarrollo de programas de computación con el enfoque del
proceso de desarrollo de software
Herramientas, modelos y métodos para asistir al proceso de desarrollo de
software
Estos frameworks son a menudo vinculados a algún tipo de organización,
que además desarrolla, apoya el uso y promueve la metodología. La
metodología es a menudo documentada en algún tipo de documentación
formal.
Historia
El desarrollo de los sistemas tradicionales de ciclo de vida se
originó en la década de 1960 para desarrollar a gran escala
funcional de sistemas de negocio en una época de grandes
conglomerados empresariales. La idea principal era continuar el
desarrollo de los sistemas de información en una muy deliberada,
estructurada y metódica, reiterando cada una de las etapas del
ciclo. Los sistemas de información en torno a las actividades
resueltas pesadas para el procesamiento de datos y rutinas de
cálculo.
Metodologías de Desarrollo de Software tiene como objetivo
presentar un conjunto de técnicas tradicionales y modernas de
modelado de sistemas que permitan desarrollar software de
calidad, incluyendo heurísticas de construcción y criterios de
comparación de modelos de sistemas.
Para tal fin se describen, fundamentalmente, herramientas de
Análisis y Diseño Orientado a Objetos (UML), sus diagramas,
especificación, y criterios de aplicación de las mismas. Como
complemento se describirán las metodologías de desarrollo de
software que utilizan dichas herramientas, ciclos de vida asociados
y discusión sobre el proceso de desarrollo de software más
adecuado para las diferentes aplicaciones ejemplos que se
presentarán.
Principalmente, se presentará el Proceso Unificado el cual utiliza un ciclo
de vida iterativo e incremental.
Kendall y Kendall
I. Identificación del problema, oportunidades y objetivos. II. Determinación
de los requerimientos de información. III. Análisis de las necesidades del
sistema. IV. Diseño del sistema recomendado. V. Desarrollo y
documentación del software. VI. Pruebas y mantenimiento del sistema.
VII. Implantación y evaluación del sistema.
James Senn
I. Ciclo de vida y desarrollo del sistema. II. Desarrollo por análisis
estructurado III. Prototipo del sistema.
Llorens Fabregas
I. Requerimientos. II. Análisis/Diseño. III. Construcción. IV. Pruebas. V.
Producción y mantenimiento.
Jonas Montilva
I. Definir el proyecto. II. Análisis del contexto. III. Definición de los
requerimientos. IV. Diseño preliminar. V. Diseño detallado.
Roger Pressman
I. Análisis de los requerimientos del Software. II. Diseño. III. Generación
de código. IV. Pruebas. V. Mantenimiento.
Metodologías de desarrollo
de software.
1970
Programación estructurada sol desde 1969
Programación estructurada Jackson desde 1975
1980
Structured Systems Analysis and Design Methodology (SSADM) desde 1980
Structured Analysis and Design Technique (SADT) desde 1980
Ingeniería de la información (IE/IEM) desde 1981
1990
Rapid application development (RAD) desde 1991.
Programación orientada a objetos (OOP) a lo largo de la década de los 90's
Virtual finite state machine (VFSM) desde 1990s
Dynamic Systems Development Method desarrollado en UK desde 1995.
Scrum (desarrollo), en la última parte de los 90's
Rational Unified Process (RUP) desde 1999.
Extreme Programming(XP) desde 1999
Nuevo milenio
Enterprise Unified Process (EUP) extensiones RUP desde 2002
Constructionist design methodology (CDM) desde 2004 por Kristinn R. Thórisson
Agile Unified Process (AUP) desde 2005 por Scott Ambler
Modelos de desarrollo de
software.
Cada metodología de desarrollo de software tiene más o
menos su propio enfoque para el desarrollo de software.
Estos son los enfoques más generales, que se desarrollan en
varias metodologías específicas. Estos enfoques son los
siguientes:
O
O
O
O
O

Modelo en cascada: Framework lineal.
Prototipado: Framework iterativo.
Incremental: Combinación de framework lineal e iterativo.
Espiral: Combinación de framework lineal e iterativo.
RAD: Rapid Application Development, framework iterativo.
O Modelo en cascada

Es un proceso secuencial de desarrollo en el que los pasos de
desarrollo son vistos hacia abajo (como en una cascada de agua)
a través de las fases de análisis de las necesidades, el diseño,
implantación, pruebas (validación), la integración, y mantenimiento.
La primera descripción formal del modelo de cascada se cita a
menudo a un artículo publicado por Winston Royce W. en 1970,
aunque Royce no utiliza el término "cascada" de este artículo.
Los principios básicos del modelo de cascada son los siguientes:1
El proyecto está dividido en fases secuenciales, con cierta
superposición y splashback aceptable entre fases.
Se hace hincapié en la planificación, los horarios, fechas,
presupuestos y ejecución de todo un sistema de una sola vez.
Un estricto control se mantiene durante la vida del proyecto a
través de la utilización de una amplia documentación escrita, así
como a través de comentarios y aprobación / signoff por el usuario
y la tecnología de la información de gestión al final de la mayoría
de las fases antes de comenzar la próxima fase.
O Prototipado
El prototipado es el framework de actividades dedicada al
desarrollo de software prototipo, es decir, versiones incompletas
del software a desarrollar.
O Incremental

Provee una estrategia para controlar la complejidad y los
riesgos, desarrollando una parte del producto software
reservando el resto de aspectos para el futuro.
Los principios básicos son:
Una serie de mini-Cascadas se llevan a cabo, donde
todas las fases de la cascada modelo de desarrollo se
han completado para una pequeña parte de los sistemas,
antes de proceder a la próxima incremental.
Se definen los requisitos antes de proceder con lo
evolutivo, se realiza un mini-Cascada de desarrollo de
cada uno de los incrementos del sistema.
El concepto inicial de software, análisis de las
necesidades, y el diseño de la arquitectura y colectiva
básicas se definen utilizando el enfoque de cascada,
seguida por iterativo de prototipos, que culmina en la
instalación del prototipo final.
O Espiral

La principal características del modelo en espiral es la gestión
de riesgos de forma periódica en el ciclo de desarrollo. Este
modelo fue creado en 1988 por Barry Boehm, combinando
algunos aspectos clave de las metodologías del modelo de
cascada y del desarrollo rápido de aplicaciones, pero dando
énfasis en un área que para muchos no jugó el papel que
requiere en otros modelos: un análisis iterativo y concienzudo
de los riesgos, especialmente en el caso de sistema complejos
de gran escala.
La espiral se visualiza como un proceso que pasa a través de
algunas iteraciones con el diagrama de los cuatro cuadrantes
representativos de las siguientes actividades:
crear planes con el propósito de identificar los objetivos del
software, seleccionados para implementar el programa y
clarificar las restricciones en el desarrollo del software;
Análisis de riesgos: una evaluación analítica de programas
seleccionados, para evaluar cómo identificar y eliminar el
riesgo;
la implementación del proyecto: implementación del desarrollo
del software y su pertinente verificación;
O Rapid Application Development (RAD)

El desarrollo rápido de aplicaciones (RAD) es una
metodología de desarrollo de software, que implica el
desarrollo iterativo y la construcción de prototipos. El
desarrollo rápido de aplicaciones es un término
originalmente utilizado para describir un proceso de
desarrollo de software introducido por James Martin en
1991.
O Desarrollo iterativo e incremental

El desarrollo iterativo recomienda la construcción de
secciones reducidas de software que irán ganando en
tamaño para facilitar así la detección de problemas de
importancia antes de que sea demasiado tarde. Los
procesos iterativos pueden ayudar a desvelar metas del
diseño en el caso de clientes que no saben cómo definir
lo que quieren.
O Desarrollo ágil

El desarrollo ágil de software utiliza un desarrollo iterativo
como base para abogar por un punto de vista más ligero y
más centrado en las personas que en el caso de las
soluciones tradicionales. Los procesos ágiles utilizan
retroalimentación en lugar de planificación, como principal
mecanismo de control. La retroalimentación se canaliza
por medio de pruebas periódicas y frecuentes versiones
del software.
O Otros enfoques de desarrollo de software

Metodologías de desarrollo Orientado a objetos, Diseño
orientado a objetos (OOD) de Grady Booch, también
conocido como Análisis y Diseño Orientado a Objetos
(OOAD). El modelo incluye seis diagramas: de clase,
objeto, estado de transición, la interacción, módulo, y el
proceso.
Top-down programming, evolucionado en la década de
1970 por el investigador de IBM Harlan Mills (y Niklaus
Wirth) en Desarrollo Estructurado.
Proceso Unificado, es una metodología de desarrollo de
software, basado en UML. Organiza el desarrollo de
software en cuatro fases, cada una de ellas con la
ejecución de una o más iteraciones de desarrollo de
software: creación, elaboración, construcción, y las
directrices. Hay una serie de herramientas y productos
diseñados para facilitar la aplicación. Una de las
versiones más populares es la de Rational Unified
Process.
Proceso para el desarrollo
de software.
Un proceso para el desarrollo de software, también
denominado ciclo de vida del desarrollo de software es
una estructura aplicada al desarrollo de un producto
de software. Hay varios modelos a seguir para el
establecimiento de un proceso para el desarrollo de
software, cada uno de los cuales describe un enfoque
diferente para diferentes actividades que tienen lugar
durante el proceso. Algunos autores consideran un
modelo de ciclo de vida un término más general que un
determinado proceso para el desarrollo de software. Por
ejemplo, hay varios procesos de desarrollo de software
específicos que se ajustan a un modelo de ciclo de vida
de espiral.
Arquitectura de software.
La arquitectura de software es un conjunto de
patrones que proporcionan un marco de referencia
necesario para guiar la construcción de un software,
permitiendo a los programadores, analistas y todo el
conjunto de desarrolladores del software compartir
una misma línea de trabajo y cubrir todos los
objetivos y restricciones de la aplicación. Es
considerada el nivel más alto en el diseño de la
arquitectura de un sistema puesto que establecen la
estructura, funcionamiento e interacción entre las
partes del software.
Modelos de la arquitectura de
software.
O La arquitectura de software cuenta con varios modelos, ellos

son:
O Modelos estructurales
Son similares a la vista estructural, pero su énfasis primario
radica en la (usualmente una sola) estructura coherente del
sistema completo, en vez de concentrarse en su composición.
Los modelos de framework a menudo se refieren a dominios o
clases de problemas específicos. El trabajo que ejemplifica esta
variante incluye arquitecturas de software específicas de
dominios, como CORBA, o modelos basados en CORBA,
o repositorios de componentes específicos, como PRISM.
O Modelos dinámicos
Enfatizan la cualidad conductual de los sistemas, “Dinámico”
puede referirse a los cambios en la configuración del sistema, o a
la dinámica involucrada en el progreso de la computación, tales
como valores cambiantes de datos.
O Modelos de proceso

Se concentran en la construcción de la
arquitectura, y en los pasos o procesos
involucrados en esa construcción. En esta
perspectiva, la arquitectura es el resultado de
seguir un argumento (script) de proceso. Esta
vista se ejemplifica con el actual trabajo
sobre programación de procesos para derivar
arquitecturas.
Conclusión.
En el trabajo anterior se aprendió todo lo referente a la
materia de ingeniería de software, la cual como pudimos
aprender es la encargada del estudio de los principios y
metodologías para el desarrollo y mantenimiento de
sistemas software. Para poder desarrollar un sistema de
software es necesario pasar por distintas etapas que sin
importar la metodología que se utilice están presentes
por ser las básicas, estas son el análisis, el diseño, el
desarrollo, la implementación y la prueba de todos los
procesos que lleva a cabo el sistema.
También se menciona el significado y la clasificación de
las aplicaciones de cómputo, estas son un tipo
de programa informático diseñado como herramienta
para permitir a un usuario realizar uno o diversos tipos de
trabajos.
Más adelante se menciona la nomenclatura o termino Software
Engineering Institute (SEI) es un instituto federal
estadounidense de investigación y desarrollo, fundado
por Congreso de los Estados Unidos en 1984 para desarrollar
modelos de evaluación y mejora en el desarrollo de software.
Después de tener claro el funcionamiento de este instituto
retomamos el concepto de W3C las cuales son las siglas de
World Wide Web Consortium, y esta una comunidad
internacional donde los estados miembros trabajan para poder
desarrollar estándares para el desarrollo web y así ayudar a un
mejor desarrollo del Internet a nivel mundial.
Por último se retoma el concepto de arquitectura de software la
cual es un conjunto de patrones que proporcionan un marco de
referencia necesario para guiar la construcción de un software,
permitiendo a los programadores, analistas y todo el conjunto
de desarrolladores del software compartir una misma línea de
trabajo y cubrir todos los objetivos y restricciones de la
aplicación.
Espero que la información antes presentada haya sido de su
utilidad.
Gracias.
Bibliografía.
O
O
O
O
O
O
O
O
O
O
O
O
O

http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software
http://www.humbertocervantes.net/cursos/ingsoft/PresentacionCurso.pdf
http://portal.perueduca.edu.pe/Docentes/xtras/pdf/aplicaciones.pdf
http://es.wikipedia.org/wiki/Software_Engineering_Institute
http://www.ecured.cu/index.php/Arquitectura_de_software
http://sistemasyinternet.blogspot.mx/2011/06/que-es-w3c.html
http://es.wikipedia.org/wiki/Metodolog%C3%ADa_de_desarrollo_de_software
http://prezi.com/7qf1gjuqlfww/modelos-de-desarrollo-de-software/
http://es.wikipedia.org/wiki/Proceso_para_el_desarrollo_de_software
http://elisainformatica.files.wordpress.com/2012/11/aplicacionesinformc3a1ticas.pdf
http://www.slideshare.net/MilagrosJacqueline/clasificacin-y-descripcin-de-losprogramas-informticos
http://es.wikipedia.org/wiki/Programa_inform%C3%A1tico
http://www.monografias.com/trabajos-pdf5/programasinformaticos/programas-informaticos.shtml

Contenu connexe

Tendances

Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwareIngryd Cobain
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Softwareem3marquez
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwareJORGE MONGUI
 
Unidad 1 Introducción a la Ingeniería de Software
Unidad 1 Introducción a la Ingeniería de SoftwareUnidad 1 Introducción a la Ingeniería de Software
Unidad 1 Introducción a la Ingeniería de SoftwareMary Carmen
 
Normas y Estándares de calidad para el desarrollo de Software
Normas y Estándares de calidad para el desarrollo de SoftwareNormas y Estándares de calidad para el desarrollo de Software
Normas y Estándares de calidad para el desarrollo de SoftwareEvelinBermeo
 
Ingeniería de software Definicion,inicion,importancia y utilidad
Ingeniería de software Definicion,inicion,importancia y utilidadIngeniería de software Definicion,inicion,importancia y utilidad
Ingeniería de software Definicion,inicion,importancia y utilidadXKWDX
 
Ingenieria del software
Ingenieria del software Ingenieria del software
Ingenieria del software Ana Pau Lara
 
Tema Ingenieria Del Software
Tema Ingenieria Del SoftwareTema Ingenieria Del Software
Tema Ingenieria Del Softwaregueste0af42
 
Introducción a la Ingeniería de Software:Qué es un Buen Sistema?
Introducción  a la Ingeniería de Software:Qué es un Buen Sistema?Introducción  a la Ingeniería de Software:Qué es un Buen Sistema?
Introducción a la Ingeniería de Software:Qué es un Buen Sistema?Kudos S.A.S
 

Tendances (18)

Introducción a la ingeniería del software
Introducción a la ingeniería del softwareIntroducción a la ingeniería del software
Introducción a la ingeniería del software
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Software
 
Metodologiasde desarrollo de software
Metodologiasde desarrollo de softwareMetodologiasde desarrollo de software
Metodologiasde desarrollo de software
 
Ingenieria De Software
Ingenieria De SoftwareIngenieria De Software
Ingenieria De Software
 
Ensayo sobre la calidad de software
Ensayo sobre la calidad de softwareEnsayo sobre la calidad de software
Ensayo sobre la calidad de software
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Unidad 1 Introducción a la Ingeniería de Software
Unidad 1 Introducción a la Ingeniería de SoftwareUnidad 1 Introducción a la Ingeniería de Software
Unidad 1 Introducción a la Ingeniería de Software
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
Normas y Estándares de calidad para el desarrollo de Software
Normas y Estándares de calidad para el desarrollo de SoftwareNormas y Estándares de calidad para el desarrollo de Software
Normas y Estándares de calidad para el desarrollo de Software
 
Ingeniería de software Definicion,inicion,importancia y utilidad
Ingeniería de software Definicion,inicion,importancia y utilidadIngeniería de software Definicion,inicion,importancia y utilidad
Ingeniería de software Definicion,inicion,importancia y utilidad
 
Capitulo2
Capitulo2Capitulo2
Capitulo2
 
Ingenieria del software
Ingenieria del software Ingenieria del software
Ingenieria del software
 
Tema Ingenieria Del Software
Tema Ingenieria Del SoftwareTema Ingenieria Del Software
Tema Ingenieria Del Software
 
ingenieriadesoftware1
ingenieriadesoftware1ingenieriadesoftware1
ingenieriadesoftware1
 
Niebla sortillon jesus francisco actividad1.1 si5 1
Niebla sortillon jesus francisco actividad1.1 si5 1Niebla sortillon jesus francisco actividad1.1 si5 1
Niebla sortillon jesus francisco actividad1.1 si5 1
 
Introducción a la Ingeniería de Software:Qué es un Buen Sistema?
Introducción  a la Ingeniería de Software:Qué es un Buen Sistema?Introducción  a la Ingeniería de Software:Qué es un Buen Sistema?
Introducción a la Ingeniería de Software:Qué es un Buen Sistema?
 
Ingenieria de software Definiciones
Ingenieria de software DefinicionesIngenieria de software Definiciones
Ingenieria de software Definiciones
 

Similaire à Ingeniería de software

Ingeniería de software es la aplicación de un enfoque sistemático
Ingeniería de software es la aplicación de un enfoque sistemáticoIngeniería de software es la aplicación de un enfoque sistemático
Ingeniería de software es la aplicación de un enfoque sistemáticoSantiago Moha
 
13. ingeniería del software
13. ingeniería del software13. ingeniería del software
13. ingeniería del softwareDaniel Merchan
 
Ingenieria de software final.
Ingenieria de software final.Ingenieria de software final.
Ingenieria de software final.Andrés Sorto
 
Ingenieria de software final.
Ingenieria de software final.Ingenieria de software final.
Ingenieria de software final.Andrés Sorto
 
Metodologías de diseño y desarrollo de sistemas de información
Metodologías de diseño y desarrollo de sistemas de informaciónMetodologías de diseño y desarrollo de sistemas de información
Metodologías de diseño y desarrollo de sistemas de informaciónJose Martinez
 
Victoria_Isabel_DiseñoDeSoftware2014
Victoria_Isabel_DiseñoDeSoftware2014Victoria_Isabel_DiseñoDeSoftware2014
Victoria_Isabel_DiseñoDeSoftware2014Victoria_isabel
 
Ornelas muñizdavid actividad1.1_grupo_si5-2
Ornelas muñizdavid actividad1.1_grupo_si5-2Ornelas muñizdavid actividad1.1_grupo_si5-2
Ornelas muñizdavid actividad1.1_grupo_si5-2David Ornelas Muñiz
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaremichellchia11
 
Victoria_Isabel_DiseñoDeSoftware
Victoria_Isabel_DiseñoDeSoftwareVictoria_Isabel_DiseñoDeSoftware
Victoria_Isabel_DiseñoDeSoftwareVictoria_isabel
 
Weitzenfeld guardaticomputacion2008
Weitzenfeld guardaticomputacion2008Weitzenfeld guardaticomputacion2008
Weitzenfeld guardaticomputacion2008Cesar Jimenez
 
Ingenieroa de de Software Conceptos Iniciales
Ingenieroa de de Software Conceptos InicialesIngenieroa de de Software Conceptos Iniciales
Ingenieroa de de Software Conceptos InicialesMaikoUrizar1
 
Ingenieria de Software Introducción a los Conceptos Basicos
Ingenieria de Software Introducción a los Conceptos BasicosIngenieria de Software Introducción a los Conceptos Basicos
Ingenieria de Software Introducción a los Conceptos BasicosMaikoUrizar1
 
Tecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.softwareTecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.softwarejuankexmisiodj
 

Similaire à Ingeniería de software (20)

Ingeniería de software es la aplicación de un enfoque sistemático
Ingeniería de software es la aplicación de un enfoque sistemáticoIngeniería de software es la aplicación de un enfoque sistemático
Ingeniería de software es la aplicación de un enfoque sistemático
 
Ensayo sobre la calidad de software
Ensayo sobre la calidad de softwareEnsayo sobre la calidad de software
Ensayo sobre la calidad de software
 
Ensayo sobre la calidad de software
Ensayo sobre la calidad de softwareEnsayo sobre la calidad de software
Ensayo sobre la calidad de software
 
JavierPerez_Ing
JavierPerez_IngJavierPerez_Ing
JavierPerez_Ing
 
13. ingeniería del software
13. ingeniería del software13. ingeniería del software
13. ingeniería del software
 
Ingenieria de software final.
Ingenieria de software final.Ingenieria de software final.
Ingenieria de software final.
 
Ingenieria de software final.
Ingenieria de software final.Ingenieria de software final.
Ingenieria de software final.
 
Metodologías de diseño y desarrollo de sistemas de información
Metodologías de diseño y desarrollo de sistemas de informaciónMetodologías de diseño y desarrollo de sistemas de información
Metodologías de diseño y desarrollo de sistemas de información
 
Victoria_Isabel_DiseñoDeSoftware2014
Victoria_Isabel_DiseñoDeSoftware2014Victoria_Isabel_DiseñoDeSoftware2014
Victoria_Isabel_DiseñoDeSoftware2014
 
Ornelas muñizdavid actividad1.1_grupo_si5-2
Ornelas muñizdavid actividad1.1_grupo_si5-2Ornelas muñizdavid actividad1.1_grupo_si5-2
Ornelas muñizdavid actividad1.1_grupo_si5-2
 
Analiss de sistemas
Analiss de sistemasAnaliss de sistemas
Analiss de sistemas
 
Analiss de sistemas
Analiss de sistemasAnaliss de sistemas
Analiss de sistemas
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Victoria_Isabel_DiseñoDeSoftware
Victoria_Isabel_DiseñoDeSoftwareVictoria_Isabel_DiseñoDeSoftware
Victoria_Isabel_DiseñoDeSoftware
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Software
 
Weitzenfeld guardaticomputacion2008
Weitzenfeld guardaticomputacion2008Weitzenfeld guardaticomputacion2008
Weitzenfeld guardaticomputacion2008
 
Ingenieroa de de Software Conceptos Iniciales
Ingenieroa de de Software Conceptos InicialesIngenieroa de de Software Conceptos Iniciales
Ingenieroa de de Software Conceptos Iniciales
 
Ingenieria de Software Introducción a los Conceptos Basicos
Ingenieria de Software Introducción a los Conceptos BasicosIngenieria de Software Introducción a los Conceptos Basicos
Ingenieria de Software Introducción a los Conceptos Basicos
 
Tecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.softwareTecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.software
 
Plan
PlanPlan
Plan
 

Dernier

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
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
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
 
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
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
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
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
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
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
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
 
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
 
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
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
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
 

Dernier (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
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
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
 
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
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
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
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
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.
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
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
 
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
 
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
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
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
 

Ingeniería de software

  • 1. T.S.U. EN TECNOLOGÍAS DE LA INFORMACIÓN Y LA COMUNICACIÓN. ÁREA DE SISTEMAS INFORMÁTICOS. Curso de Ingeniería de Software II Prof. Ing. José Padilla Duarte Actividad 1.1.- Definiciones en la Ingeniería de Software. Trabajo elaborado por: 12311044 González Palma Mónica Guadalupe Grupo SI 5-1. Hermosillo, Sonora, México. 15/01/14
  • 2. Introducción. A lo largo de este trabajo se hablara sobre ingeniería de software y todos los conceptos relacionados con esta misma materia. Se incluirá desde la historia, las implicaciones que tiene en diferentes campos como socioculturales, económicos y/o sociales. Además se verán las metodologías que se siguen para poder desarrollar un proceso y las etapas que tienen estas mismas para poder desarrollar cualquier aplicación que se propongan. Aquí mismo se mostraran todas las clasificaciones que tienen las aplicaciones de los sistemas de cómputo y algunos ejemplos de cada una de estas.
  • 3. Más adelante se habla sobre los términos o siglas SEI y W3C. Por otra parte se menciona el ciclo de vida que debe de seguir un proyecto y las características de cada una de estas etapas. Por último se habla sobre la arquitectura de software, los componentes, las interacciones y los modelos que se utilizan. Espero la información sea de su agrado.
  • 4. Ingeniería de Software. Ingeniería de software es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software, y el estudio de estos enfoques, es decir, la aplicación de la ingeniería al software. Es la aplicación de la ingeniería al software, ya que integra matemáticas, ciencias de la computación y prácticas cuyos orígenes se encuentran en la ingeniería. Se pueden citar otras definiciones enunciadas por prestigiosos autores: Ingeniería de software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978) Ingeniería de software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como desarrollo de software o producción de software (Bohem, 1976).
  • 5. La creación del software es un proceso intrínsecamente creativo y la ingeniería del software trata de sistematizar este proceso con el fin de acotar el riesgo del fracaso en la consecución del objetivo creativo por medio de diversas técnicas que se han demostrado adecuadas en base a la experiencia previa. La IS se puede considerar como la ingeniería aplicada al software, esto es, por medios sistematizados y con herramientas preestablecidas, la aplicación de ellos de la forma más eficiente para la obtención de resultados óptimos; objetivos que siempre busca la ingeniería. No es sólo de la resolución de problemas, sino más bien teniendo en cuenta las diferentes soluciones, elegir la más apropiada.
  • 6. Implicaciones socioeconómicas. La ingeniería de software afecta a la economía y las sociedades de variadas formas. Económicamente En los Estados Unidos, el software contribuyó a una octava parte de todo el incremento del PIB durante la década de 1990 (alrededor de 90,000 millones de dólares por año), y un noveno de todo el crecimiento de productividad durante los últimos años de la década (alrededor de 33.000 millones de dólares estadounidenses por año). La ingeniería de software contribuyó a US$ 1 billón de crecimiento económico y productividad en esa década. Alrededor del globo, el software contribuye al crecimiento económico en formas similares, aunque es difícil de encontrar estadísticas fiables. Además, con la industria del lenguaje está hallando cada vez más campos de aplicación a escala global.
  • 7. Socialmente La ingeniería de software cambia la cultura del mundo debido al extendido uso de la computadora. El correo electrónico (E-mail), la WWW y la mensajería instantánea permiten a la gente interactuar en nuevas formas. El software baja el costo y mejora la calidad de los servicios de salud, los departamentos de bomberos, las dependencias gubernamentales y otros servicios sociales. Los proyectos exitosos donde se han usado métodos de ingeniería de software incluyen a GNU/Linux, el software del transbordador espacial, los cajeros automáticos y muchos otros. Metodología Un objetivo de décadas ha sido el encontrar procesos y metodologías, que sean sistemáticas, predecibles y repetibles, a fin de mejorar la productividad en el desarrollo y la calidad del producto software. Etapas del proceso 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:
  • 8. Análisis de requisitos. Extraer los requisitos de un producto de software es la primera etapa para crearlo. Mientras que los clientes piensan que ellos saben lo que el software tiene que hacer, se requiere habilidad y experiencia para reconocer requisitos incompletos, ambiguos o contradictorios. El resultado del análisis de requisitos con el cliente se plasma en el documento ERS, Especificación de Requisitos del Sistema, cuya estructura puede venir definida por varios estándares, tales como CMMI. Asimismo, se define un diagrama de Entidad/Relación, en el que se plasman las principales entidades que participarán en el desarrollo del software. La captura, análisis y especificación de requisitos (incluso pruebas de ellos), es una parte crucial; de esta etapa depende en gran medida el logro de los objetivos finales. Se han ideado modelos y diversos procesos de trabajo para estos fines. Aunque aún no está formalizada, ya se habla de la Ingeniería de requisitos.
  • 9. La IEEE Std. 830-1998 normaliza la creación de las especificaciones de requisitos de software (Software Requirements Specification). No siempre en la etapa de "análisis de requisitos" las distintas metodologías de desarrollo llevan asociado un estudio de viabilidad y/o estimación de costes. El más conocido de los modelos de estimación de coste del software es el modelo COCOMO Especificación La especificación de requisitos describe el comportamiento esperado en el software una vez desarrollado. Gran parte del éxito de un proyecto de software radicará en la identificación de las necesidades del negocio (definidas por la alta dirección), así como la interacción con los usuarios funcionales para la recolección, clasificación, identificación, priorización y especificación de los requisitos del software.
  • 10. Entre las técnicas utilizadas para la especificación de requisitos se encuentran: Caso de uso, Historias de usuario, Siendo los primeros más rigurosas y formales, los segundas más ágiles e informales. Arquitectura 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.
  • 11. 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. La arquitectura de software consiste en el diseño de componentes de una aplicación (entidades del negocio), generalmente utilizando patrones de arquitectura. El diseño arquitectónico debe permitir visualizar la interacción entre las entidades del negocio y además poder ser validado, por ejemplo por medio de diagramas de secuencia. Un diseño arquitectónico describe en general el cómo se construirá una aplicación de software. Para ello se documenta utilizando diagramas, por ejemplo: O Diagramas de clases O Diagramas de base de datos O Diagrama de despliegue O Diagrama de secuencia
  • 12. Siendo los dos primeros los mínimos necesarios para describir la arquitectura de un proyecto que iniciará a ser codificado. Depende del alcance del proyecto, complejidad y necesidades, el arquitecto elige qué diagramas elaborar. Las herramientas para el diseño y modelado de software se denominan CASE, (Computer Aided Software Engineering) entre las cuales se encuentran: Enterprise Architect Microsoft Visio for Enterprise Architects Programación Reducir un diseño a código puede ser la parte más obvia del trabajo de ingeniería de software, pero no necesariamente es la que demanda mayor trabajo y ni la más complicada. La complejidad y la duración de esta etapa está íntimamente relacionada al o a los lenguajes de programación utilizados, así como al diseño previamente realizado.
  • 13. Prueba Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificación del problema. Una técnica de prueba es probar por separado cada módulo del software, y luego probarlo de forma integral, para así llegar al objetivo. Se considera una buena práctica el que las pruebas sean efectuadas por alguien distinto al desarrollador que la programó, idealmente un área de pruebas; sin perjuicio de lo anterior el programador debe hacer sus propias pruebas. En general hay dos grandes formas de organizar un área de pruebas, la primera es que esté compuesta por personal inexperto y que desconozca el tema de pruebas, de esta forma se evalúa que la documentación entregada sea de calidad, que los procesos descritos son tan claros que cualquiera puede entenderlos y el software hace las cosas tal y como están descritas. El segundo enfoque es tener un área de pruebas conformada por programadores con experiencia, personas que saben sin mayores indicaciones en qué condiciones puede fallar una aplicación y que pueden poner atención en detalles que personal inexperto no consideraría.
  • 14. Documentación Todo lo concerniente a la documentación del propio desarrollo del software y de la gestión del proyecto, pasando por modelaciones (UML),diagramas de casos de uso, pruebas, manuales de usuario, manuales técnicos, etc.; todo con el propósito de eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones al sistema. Mantenimiento Fase dedicada a mantener y mejorar el software para corregir errores descubiertos e incorporar nuevos requisitos. Esto puede llevar más tiempo incluso que el desarrollo del software inicial. Alrededor de 2/3 del tiempo de ciclo de vida de un proyecto4 está dedicado a su mantenimiento. Una pequeña parte de este trabajo consiste eliminar errores (bugs); siendo que la mayor parte reside en extender el sistema para incorporarle nuevas funcionalidades y hacer frente a su evolución. Naturaleza de la IS. La ingeniería de software es una disciplina que está orientada a aplicar conceptos y métodos de ingeniería a la fabricación de software de calidad.
  • 15. Matemáticas Los programas tienen muchas propiedades matemáticas. Por ejemplo la corrección y la complejidad de muchos algoritmos son conceptos matemáticos que pueden ser rigurosamente probados. El uso de matemáticas en la IS es llamado métodos formales. Creación Los programas son construidos en una secuencia de pasos. El hecho de definir propiamente y llevar a cabo estos pasos, como en una línea de ensamblaje, es necesario para mejorar la productividad de los desarrolladores y la calidad final de los programas. Este punto de vista inspira los diferentes procesos y metodologías que se encuentran en la IS. Gestión de Proyecto El desarrollo de software de gran porte requiere una adecuada gestión del proyecto. Hay presupuestos, establecimiento de tiempos de entrega, un equipo de profesionales que liderar. Recursos (espacio de oficina, insumos, equipamiento) por adquirir. Para su administración se debe tener una clara visión y capacitación en Gestión de Proyectos.
  • 16. Arte Los programas contienen muchos elementos artísticos. Las interfaces de usuario, la codificación, etc. Incluso la decisión para un nombre de una variable o una clase. Responsabilidad La responsabilidad en la ingeniería del software es un concepto complejo, sobre todo porque al estar los sistemas informáticos fuertemente caracterizados por su complejidad, es difícil apreciar sus consecuencias. En la ingeniería del software la responsabilidad será compartida por un grupo grande de personas, que comprende desde el ingeniero de requisitos, hasta el arquitecto software, y contando con el diseñador, o el encargado de realizar las pruebas. Por encima de todos ellos destaca el director del proyecto. El software demanda una clara distribución de la responsabilidad entre los diferentes roles que se dan en el proceso de producción. El ingeniero del software tiene una responsabilidad moral y legal limitada a las consecuencias directas.
  • 17. Aplicaciones informáticas. Una aplicación es un tipo de programa informático diseñado como herramienta para permitir a un usuario realizar uno o diversos tipos de trabajos. Esto lo diferencia principalmente de otros tipos de programas como los sistemas operativos (que hacen funcionar al ordenador), las utilidades (que realizan tareas de mantenimiento o de uso general), y los lenguajes de programación (con el cual se crean los programas informáticos). Suele resultar una solución informática para la automatización de ciertas tareas complicadas como pueden ser la contabilidad, la redacción de documentos, o la gestión de un almacén. Algunos ejemplos de programas de aplicación son los procesadores de textos, hojas de cálculo, y base de datos. Ciertas aplicaciones desarrolladas «a medida» suelen ofrecer una gran potencia ya que están exclusivamente diseñadas para resolver un problema específico. Otros, llamados paquetes integrados de software, ofrecen menos potencia pero a cambio incluyen varias aplicaciones, como un programa procesador de textos, de hoja de cálculo y de base de datos.
  • 18. Clasificación de las aplicaciones. Si bien esta distinción es, en cierto modo, arbitraria, y a veces confusa, a los fines prácticos se puede clasificar al software en tres grandes tipos: O Aplicación de sistema: Su objetivo es desvincular adecuadamente al usuario y al programador de los detalles del sistema informático en particular que se use, aislándolo especialmente del procesamiento referido a las características internas de: memoria, discos, puertos y dispositivos de comunicaciones, impresoras, pantallas, teclados, etc. El software de sistema le procura al usuario y programador las adecuadas interfaces de alto nivel, controladores, herramientas y utilidades de apoyo que permiten el mantenimiento del sistema global. Incluye entre otros: O O O O O O Sistemas operativos Controladores de dispositivos Herramientas de diagnóstico Herramientas de Corrección y Optimización Servidores Utilidades
  • 19. O Aplicación de programación: Es el conjunto de herramientas que permiten al programador desarrollar programas informáticos, usando diferentes alternativas y lenguajes de programación, de una manera práctica. Incluyen básicamente: O O O O O O Editores de texto Compiladores Intérpretes Enlazadores Depuradores Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas, usualmente en un entorno visual, de forma tal que el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz gráfica de usuario (GUI). O Software de aplicación: Es aquel que permite a los usuarios llevar a cabo una o varias tareas específicas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial énfasis en los negocios. Incluye entre muchos otros: O O O O O O O O O O O Aplicaciones para Control de sistemas y automatización industrial Aplicaciones ofimáticas Software educativo Software empresarial Bases de datos Telecomunicaciones (por ejemplo Internet y toda su estructura lógica) Videojuegos Software médico Software de cálculo numérico y simbólico. Software de diseño asistido (CAD) Software de control numérico (CAM)
  • 20. Software Engineering Institute. Software Engineering Institute (SEI) es un instituto federal estadounidense de investigación y desarrollo, fundado por Congreso de los Estados Unidos en 1984 para desarrollar modelos de evaluación y mejora en el desarrollo de software, que dieran respuesta a los problemas que generaba al ejército estadounidense la programación e integración de los sub-sistemas de software en la construcción de complejos sistemas militares. Financiado por el Departamento de Defensa de los Estados Unidos y administrado por la Universidad Carnegie Mellon. Es un referente en Ingeniería de Software por realizar el desarrollo del modelo SW-CMM (1991) que ha sido el punto de arranque de todos los que han ido formando parte del modelo que ha desarrollado sobre el concepto de capacidad y madurez, hasta el actual CMMI. SEI alberga también a otro instituto federal de investigación y desarrollo 3: CERT, fundado por SEI en noviembre de 1988 por encargo de DARPA (Defense Advanced Research Projects Agency) para investigar y mejorar la seguridad de los sistemas de información del ejército y ejercer la coordinación en caso de emergencias.
  • 21. W3C. W3C son las siglas de World Wide Web Consortium, y es una comunidad internacional donde los estados miembros trabajan para poder desarrollar estándares para el desarrollo web y así ayudar a un mejor desarrollo del Internet a nivel mundial. W3C es reconocido a nivel mundial por ser la organización encargada de estandarizar El Lenguaje de Marcado de Hipertexto o mejor conocido como HTML , el cual es utilizado para el diseño y desarrollo de sitios web, dicho estándar inicio en el año de 1994 (es importante aclarar que antes de que W3C trabajara en HTML ya otras organizaciones habían desarrollado versiones previas). Sin embargo los objetivos de W3C van más allá del desarrollo de HTML y trabajan en otros proyectos a fin de poder brindar nuevas opciones para la elaboración de sitios web, tanto es así que en los últimos años han concentrados sus esfuerzo en
  • 22. el desarrollo de XHTML, una versión avanzada de HTML que pretende en los próximos años sustituirlo. Por otro lado W3C se centra en cuatro objetivos que describimos a continuación: Web para todos : Accesibilidad para todo el mundo de forma global, sin barreras tecnológicas, limitaciones o culturales. Web Sobre Todo : Intenta añadir el máximo de dispositivos a la web, actualmente se está en un proceso de apertura donde las PDAs, Televisiones están iniciando su camino hacia la web. Base de Conocimiento: Permitir que cada usuario pueda hacer un buen uso de la web. Seguridad: Guiar al desarrollo de la web respetando las normas legales, comerciales y los aspectos sociales originados por esta tecnología. Así de esta forma W3C se convierte en una organización de mucha importancia a nivel mundial, ya que los estándares que la misma presenta pueden influir en la forma en que el desarrollo web avance a nivel mundial.
  • 23. Metodología de desarrollo de software. Metodología de desarrollo de software es un marco de trabajo usado para estructurar, planificar y controlar el proceso de desarrollo en sistemas de información. Una metodología de desarrollo de software se refiere a un framework que es usado para estructurar, planear y controlar el proceso de desarrollo en sistemas de información. A lo largo del tiempo, una gran cantidad de métodos han sido desarrollados diferenciándose por su fortaleza y debilidad. El framework para metodología de desarrollo de software consiste en: Una filosofía de desarrollo de programas de computación con el enfoque del proceso de desarrollo de software Herramientas, modelos y métodos para asistir al proceso de desarrollo de software Estos frameworks son a menudo vinculados a algún tipo de organización, que además desarrolla, apoya el uso y promueve la metodología. La metodología es a menudo documentada en algún tipo de documentación formal.
  • 24. Historia El desarrollo de los sistemas tradicionales de ciclo de vida se originó en la década de 1960 para desarrollar a gran escala funcional de sistemas de negocio en una época de grandes conglomerados empresariales. La idea principal era continuar el desarrollo de los sistemas de información en una muy deliberada, estructurada y metódica, reiterando cada una de las etapas del ciclo. Los sistemas de información en torno a las actividades resueltas pesadas para el procesamiento de datos y rutinas de cálculo. Metodologías de Desarrollo de Software tiene como objetivo presentar un conjunto de técnicas tradicionales y modernas de modelado de sistemas que permitan desarrollar software de calidad, incluyendo heurísticas de construcción y criterios de comparación de modelos de sistemas. Para tal fin se describen, fundamentalmente, herramientas de Análisis y Diseño Orientado a Objetos (UML), sus diagramas, especificación, y criterios de aplicación de las mismas. Como complemento se describirán las metodologías de desarrollo de software que utilizan dichas herramientas, ciclos de vida asociados y discusión sobre el proceso de desarrollo de software más adecuado para las diferentes aplicaciones ejemplos que se presentarán.
  • 25. Principalmente, se presentará el Proceso Unificado el cual utiliza un ciclo de vida iterativo e incremental. Kendall y Kendall I. Identificación del problema, oportunidades y objetivos. II. Determinación de los requerimientos de información. III. Análisis de las necesidades del sistema. IV. Diseño del sistema recomendado. V. Desarrollo y documentación del software. VI. Pruebas y mantenimiento del sistema. VII. Implantación y evaluación del sistema. James Senn I. Ciclo de vida y desarrollo del sistema. II. Desarrollo por análisis estructurado III. Prototipo del sistema. Llorens Fabregas I. Requerimientos. II. Análisis/Diseño. III. Construcción. IV. Pruebas. V. Producción y mantenimiento. Jonas Montilva I. Definir el proyecto. II. Análisis del contexto. III. Definición de los requerimientos. IV. Diseño preliminar. V. Diseño detallado. Roger Pressman I. Análisis de los requerimientos del Software. II. Diseño. III. Generación de código. IV. Pruebas. V. Mantenimiento.
  • 26. Metodologías de desarrollo de software. 1970 Programación estructurada sol desde 1969 Programación estructurada Jackson desde 1975 1980 Structured Systems Analysis and Design Methodology (SSADM) desde 1980 Structured Analysis and Design Technique (SADT) desde 1980 Ingeniería de la información (IE/IEM) desde 1981 1990 Rapid application development (RAD) desde 1991. Programación orientada a objetos (OOP) a lo largo de la década de los 90's Virtual finite state machine (VFSM) desde 1990s Dynamic Systems Development Method desarrollado en UK desde 1995. Scrum (desarrollo), en la última parte de los 90's Rational Unified Process (RUP) desde 1999. Extreme Programming(XP) desde 1999 Nuevo milenio Enterprise Unified Process (EUP) extensiones RUP desde 2002 Constructionist design methodology (CDM) desde 2004 por Kristinn R. Thórisson Agile Unified Process (AUP) desde 2005 por Scott Ambler
  • 27. Modelos de desarrollo de software. Cada metodología de desarrollo de software tiene más o menos su propio enfoque para el desarrollo de software. Estos son los enfoques más generales, que se desarrollan en varias metodologías específicas. Estos enfoques son los siguientes: O O O O O Modelo en cascada: Framework lineal. Prototipado: Framework iterativo. Incremental: Combinación de framework lineal e iterativo. Espiral: Combinación de framework lineal e iterativo. RAD: Rapid Application Development, framework iterativo.
  • 28. O Modelo en cascada Es un proceso secuencial de desarrollo en el que los pasos de desarrollo son vistos hacia abajo (como en una cascada de agua) a través de las fases de análisis de las necesidades, el diseño, implantación, pruebas (validación), la integración, y mantenimiento. La primera descripción formal del modelo de cascada se cita a menudo a un artículo publicado por Winston Royce W. en 1970, aunque Royce no utiliza el término "cascada" de este artículo. Los principios básicos del modelo de cascada son los siguientes:1 El proyecto está dividido en fases secuenciales, con cierta superposición y splashback aceptable entre fases. Se hace hincapié en la planificación, los horarios, fechas, presupuestos y ejecución de todo un sistema de una sola vez. Un estricto control se mantiene durante la vida del proyecto a través de la utilización de una amplia documentación escrita, así como a través de comentarios y aprobación / signoff por el usuario y la tecnología de la información de gestión al final de la mayoría de las fases antes de comenzar la próxima fase. O Prototipado El prototipado es el framework de actividades dedicada al desarrollo de software prototipo, es decir, versiones incompletas del software a desarrollar.
  • 29. O Incremental Provee una estrategia para controlar la complejidad y los riesgos, desarrollando una parte del producto software reservando el resto de aspectos para el futuro. Los principios básicos son: Una serie de mini-Cascadas se llevan a cabo, donde todas las fases de la cascada modelo de desarrollo se han completado para una pequeña parte de los sistemas, antes de proceder a la próxima incremental. Se definen los requisitos antes de proceder con lo evolutivo, se realiza un mini-Cascada de desarrollo de cada uno de los incrementos del sistema. El concepto inicial de software, análisis de las necesidades, y el diseño de la arquitectura y colectiva básicas se definen utilizando el enfoque de cascada, seguida por iterativo de prototipos, que culmina en la instalación del prototipo final.
  • 30. O Espiral La principal características del modelo en espiral es la gestión de riesgos de forma periódica en el ciclo de desarrollo. Este modelo fue creado en 1988 por Barry Boehm, combinando algunos aspectos clave de las metodologías del modelo de cascada y del desarrollo rápido de aplicaciones, pero dando énfasis en un área que para muchos no jugó el papel que requiere en otros modelos: un análisis iterativo y concienzudo de los riesgos, especialmente en el caso de sistema complejos de gran escala. La espiral se visualiza como un proceso que pasa a través de algunas iteraciones con el diagrama de los cuatro cuadrantes representativos de las siguientes actividades: crear planes con el propósito de identificar los objetivos del software, seleccionados para implementar el programa y clarificar las restricciones en el desarrollo del software; Análisis de riesgos: una evaluación analítica de programas seleccionados, para evaluar cómo identificar y eliminar el riesgo; la implementación del proyecto: implementación del desarrollo del software y su pertinente verificación;
  • 31. O Rapid Application Development (RAD) El desarrollo rápido de aplicaciones (RAD) es una metodología de desarrollo de software, que implica el desarrollo iterativo y la construcción de prototipos. El desarrollo rápido de aplicaciones es un término originalmente utilizado para describir un proceso de desarrollo de software introducido por James Martin en 1991.
  • 32. O Desarrollo iterativo e incremental El desarrollo iterativo recomienda la construcción de secciones reducidas de software que irán ganando en tamaño para facilitar así la detección de problemas de importancia antes de que sea demasiado tarde. Los procesos iterativos pueden ayudar a desvelar metas del diseño en el caso de clientes que no saben cómo definir lo que quieren. O Desarrollo ágil El desarrollo ágil de software utiliza un desarrollo iterativo como base para abogar por un punto de vista más ligero y más centrado en las personas que en el caso de las soluciones tradicionales. Los procesos ágiles utilizan retroalimentación en lugar de planificación, como principal mecanismo de control. La retroalimentación se canaliza por medio de pruebas periódicas y frecuentes versiones del software.
  • 33. O Otros enfoques de desarrollo de software Metodologías de desarrollo Orientado a objetos, Diseño orientado a objetos (OOD) de Grady Booch, también conocido como Análisis y Diseño Orientado a Objetos (OOAD). El modelo incluye seis diagramas: de clase, objeto, estado de transición, la interacción, módulo, y el proceso. Top-down programming, evolucionado en la década de 1970 por el investigador de IBM Harlan Mills (y Niklaus Wirth) en Desarrollo Estructurado. Proceso Unificado, es una metodología de desarrollo de software, basado en UML. Organiza el desarrollo de software en cuatro fases, cada una de ellas con la ejecución de una o más iteraciones de desarrollo de software: creación, elaboración, construcción, y las directrices. Hay una serie de herramientas y productos diseñados para facilitar la aplicación. Una de las versiones más populares es la de Rational Unified Process.
  • 34. Proceso para el desarrollo de software. Un proceso para el desarrollo de software, también denominado ciclo de vida del desarrollo de software es una estructura aplicada al desarrollo de un producto de software. Hay varios modelos a seguir para el establecimiento de un proceso para el desarrollo de software, cada uno de los cuales describe un enfoque diferente para diferentes actividades que tienen lugar durante el proceso. Algunos autores consideran un modelo de ciclo de vida un término más general que un determinado proceso para el desarrollo de software. Por ejemplo, hay varios procesos de desarrollo de software específicos que se ajustan a un modelo de ciclo de vida de espiral.
  • 35. Arquitectura de software. La arquitectura de software es un conjunto de patrones que proporcionan un marco de referencia necesario para guiar la construcción de un software, permitiendo a los programadores, analistas y todo el conjunto de desarrolladores del software compartir una misma línea de trabajo y cubrir todos los objetivos y restricciones de la aplicación. Es considerada el nivel más alto en el diseño de la arquitectura de un sistema puesto que establecen la estructura, funcionamiento e interacción entre las partes del software.
  • 36. Modelos de la arquitectura de software. O La arquitectura de software cuenta con varios modelos, ellos son: O Modelos estructurales Son similares a la vista estructural, pero su énfasis primario radica en la (usualmente una sola) estructura coherente del sistema completo, en vez de concentrarse en su composición. Los modelos de framework a menudo se refieren a dominios o clases de problemas específicos. El trabajo que ejemplifica esta variante incluye arquitecturas de software específicas de dominios, como CORBA, o modelos basados en CORBA, o repositorios de componentes específicos, como PRISM. O Modelos dinámicos Enfatizan la cualidad conductual de los sistemas, “Dinámico” puede referirse a los cambios en la configuración del sistema, o a la dinámica involucrada en el progreso de la computación, tales como valores cambiantes de datos.
  • 37. O Modelos de proceso Se concentran en la construcción de la arquitectura, y en los pasos o procesos involucrados en esa construcción. En esta perspectiva, la arquitectura es el resultado de seguir un argumento (script) de proceso. Esta vista se ejemplifica con el actual trabajo sobre programación de procesos para derivar arquitecturas.
  • 38. Conclusión. En el trabajo anterior se aprendió todo lo referente a la materia de ingeniería de software, la cual como pudimos aprender es la encargada del estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software. Para poder desarrollar un sistema de software es necesario pasar por distintas etapas que sin importar la metodología que se utilice están presentes por ser las básicas, estas son el análisis, el diseño, el desarrollo, la implementación y la prueba de todos los procesos que lleva a cabo el sistema. También se menciona el significado y la clasificación de las aplicaciones de cómputo, estas son un tipo de programa informático diseñado como herramienta para permitir a un usuario realizar uno o diversos tipos de trabajos.
  • 39. Más adelante se menciona la nomenclatura o termino Software Engineering Institute (SEI) es un instituto federal estadounidense de investigación y desarrollo, fundado por Congreso de los Estados Unidos en 1984 para desarrollar modelos de evaluación y mejora en el desarrollo de software. Después de tener claro el funcionamiento de este instituto retomamos el concepto de W3C las cuales son las siglas de World Wide Web Consortium, y esta una comunidad internacional donde los estados miembros trabajan para poder desarrollar estándares para el desarrollo web y así ayudar a un mejor desarrollo del Internet a nivel mundial. Por último se retoma el concepto de arquitectura de software la cual es un conjunto de patrones que proporcionan un marco de referencia necesario para guiar la construcción de un software, permitiendo a los programadores, analistas y todo el conjunto de desarrolladores del software compartir una misma línea de trabajo y cubrir todos los objetivos y restricciones de la aplicación. Espero que la información antes presentada haya sido de su utilidad. Gracias.
  • 40. Bibliografía. O O O O O O O O O O O O O http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software http://www.humbertocervantes.net/cursos/ingsoft/PresentacionCurso.pdf http://portal.perueduca.edu.pe/Docentes/xtras/pdf/aplicaciones.pdf http://es.wikipedia.org/wiki/Software_Engineering_Institute http://www.ecured.cu/index.php/Arquitectura_de_software http://sistemasyinternet.blogspot.mx/2011/06/que-es-w3c.html http://es.wikipedia.org/wiki/Metodolog%C3%ADa_de_desarrollo_de_software http://prezi.com/7qf1gjuqlfww/modelos-de-desarrollo-de-software/ http://es.wikipedia.org/wiki/Proceso_para_el_desarrollo_de_software http://elisainformatica.files.wordpress.com/2012/11/aplicacionesinformc3a1ticas.pdf http://www.slideshare.net/MilagrosJacqueline/clasificacin-y-descripcin-de-losprogramas-informticos http://es.wikipedia.org/wiki/Programa_inform%C3%A1tico http://www.monografias.com/trabajos-pdf5/programasinformaticos/programas-informaticos.shtml