Ingenieria Del Software

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 13

REPÚBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN UNIVERSITARIA


FUNDACIÓN MISIÓN SUCRE PRODUCTIVA
ALDEA UNIVERSITARIA UNIDAD EDUCATIVA MERCEDES PÉREZ FREITES
ANACO, ESTADO ANZOÁTEGUI

INGENIERÍA DEL SOFTWARE

Profesora: Luis Martínez Alumno:


Materia: Actividades acreditables Alí Garía C.I: 29.807.002
PNF Informática
Trayecto 2 Periodo 1
Anaco, 12/07/2022
FUNDAMENTOS DEL ENFOQUE ORIENTADO A OBJETOS

El contexto del Enfoque Orientado a Objetos (EOO) un objeto es una entidad que encapsula
datos (atributos) y acciones o funciones que los manejan (métodos). También para el EOO
un objeto se define como una instancia o particularización de una clase.

Los objetos de interés durante el desarrollo de software no sólo son tomados de la vida real
(objetos visibles o tangibles), también pueden ser abstractos. En general son entidades que
juegan un rol bien definido en el dominio del problema. Un libro, una persona, un carro, un
polígono, son apenas algunos ejemplos de objeto.

Cada objeto puede ser considerado como un proveedor de servicios utilizados por otros
objetos que son sus clientes. Cada objeto puede ser a al vez proveedor y cliente. De allí que
un programa pueda ser visto como un conjunto de relaciones entre proveedores clientes.
Los servicios ofrecidos por los objetos son de dos tipos:

1. Los datos, que llamamos atributos.


2. Las acciones o funciones, que llamamos métodos.

CARACTERÍSTICAS

 Abstracción: Denota las características esenciales de un objeto, donde se capturan


sus comportamientos.
 Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse
pertenecientes a una misma entidad, al mismo nivel de abstracción.
 Modularidad: Se denomina Modularidad a la propiedad que permite subdividir una
aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe
ser tan independiente como sea posible de la aplicación en sí y de las restantes
partes.
 Principio de ocultación: Cada objeto está aislado del exterior, es un módulo
natural, y cada tipo de objeto expone una interfaz a otros objetos que específica
cómo pueden interactuar con los objetos de la clase.
 Polimorfismo: Comportamientos diferentes, asociados a objetos distintos, pueden
compartir el mismo nombre, al llamarlos por ese nombre se utilizará el
comportamiento correspondiente al objeto que se esté usando.
 Herencia: Las clases no están aisladas, sino que se relacionan entre sí, formando
una jerarquía de clasificación.
 Recolección de basura: La recolección de basura o garbage collector es la técnica
por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto
desvincular la memoria asociada, los objetos que hayan quedado sin ninguna
referencia a ellos.
TIPOS DE COMPONENTES, Y SUS CARACTERÍSTICAS

 Clase: Definiciones de las propiedades y comportamiento de un tipo de objeto


concreto. La instanciación es la lectura de estas definiciones y la creación de un
objeto a partir de ellas.
 Herencia: (Por ejemplo, herencia de la clase C a la clase D) Es la facilidad
mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de
C, como si esos atributos y operaciones hubiesen sido definidos por la misma D.
 Objeto: Entidad provista de un conjunto de propiedades o atributos (datos) y de
comportamiento o funcionalidad (métodos) los mismos que consecuentemente
reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos
rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.
 Método: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución
se desencadena tras la recepción de un «mensaje». Desde el punto de vista del
comportamiento, es lo que el objeto puede hacer.
 Evento: Es un suceso en el sistema (tal como una interacción del usuario con la
máquina, o un mensaje enviado por un objeto). El sistema maneja el evento
enviando el mensaje adecuado al objeto pertinente.
 Mensaje: Una comunicación dirigida a un objeto, que le ordena que ejecute uno de
sus métodos con ciertos parámetros asociados al evento que lo generó.
 Propiedad o atributo: Contenedor de un tipo de datos asociados a un objeto (o a
una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se
define como sus características predeterminadas, y cuyo valor puede ser alterado
por la ejecución de algún método.
 Estado interno: Es una variable que se declara privada, que puede ser únicamente
accedida y alterada por un método del objeto, y que se utiliza para indicar distintas
situaciones posibles para el objeto (o clase de objetos).
 Componentes de un objeto: Atributos, identidad, relaciones y métodos.
Identificación de un objeto: Un objeto se representa por medio de una tabla o
entidad que esté compuesta por sus atributos y funciones correspondientes.

ESTÁNDARES EN EL PROCESO DE DESARROLLO DE SOFTWARE

Para promover un nivel mayor en el área de ingeniería de software tenemos un conjunto de


reglas que ya han usado otros como normas a seguir para que la programación sea más fácil
y eficiente para todos. El estándar internacional que regula el método de selección,
implementación y monitoreo del ciclo de vida del software es ISO 12207.Durante décadas
se ha perseguido la meta de encontrar procesos reproducibles y predecibles que mejoren la
productividad y la calidad. Algunas de estas soluciones intentan sistematizar o formalizar la
aparentemente desorganizada tarea de desarrollar software. Otros aplican técnicas de
gestión de proyectos para la creación del software. Sin una gestión del proyecto, los
proyectos de software corren el riesgo de demorarse o consumir un presupuesto mayor que
el planeado. Dada la cantidad de proyectos de software que no cumplen sus metas en
términos de funcionalidad, costes o tiempo de entrega, una gestión de proyectos efectiva es
algo que a menudo falta.

METODOLOGÍAS EMPLEADAS

Un proceso de software detallado y completo suele denominarse “Metodología”. Las


metodologías se basan en una combinación de los modelos de proceso genéricos (cascada,
evolutivo, incremental, etc.). Adicionalmente una metodología debería definir con precisión
los artefactos, roles y actividades involucrados, junto con prácticas y técnicas
recomendadas, guías de adaptación de la metodología al proyecto, guías para uso de
herramientas de apoyo, etc. Habitualmente se utiliza el término “método” para referirse a
técnicas, notaciones y guías asociadas, que son aplicables a una (o algunas) actividades del
proceso de desarrollo, por ejemplo, suele hablarse de métodos de análisis y/o diseño.

PROCESO UNIFICADO DE DESARROLLO (UP del inglés Unified Process)

El Proceso Unificado no es simplemente un proceso, sino un marco de trabajo extensible


que puede ser adaptado a organizaciones o proyectos específicos. De la misma forma,
el Proceso Unificado de Rational, también es un marco de trabajo extensible, por lo que
muchas veces resulta imposible decir si un refinamiento particular del proceso ha sido
derivado del Proceso Unificado o del RUP. Por dicho motivo, los dos nombres suelen
utilizarse para referirse a un mismo concepto

Fases de desarrollo

 Fase de Inicio: Esta fase tiene como propósito definir y acordar el alcance del
proyecto con los patrocinadores, identificar los riesgos asociados al proyecto,
proponer una visión muy general de la arquitectura de software y producir el plan de
las fases y el de iteraciones posteriores.
 Fase de elaboración: En la fase de elaboración se seleccionan los casos de uso que
permiten definir la arquitectura base del sistema y se desarrollaran en esta fase, se
realiza la especificación de los casos de uso seleccionados y el primer análisis del
dominio del problema, se diseña la solución preliminar.
 Fase de Desarrollo: El propósito de esta fase es completar la funcionalidad del
sistema, para ello se deben clarificar los requisitos pendientes, administrar los
cambios de acuerdo a las evaluaciones realizados por los usuarios y se realizan las
mejoras para el proyecto.
 Fase de Transición: El propósito de esta fase es asegurar que el software esté
disponible para los usuarios finales, ajustar los errores y defectos encontrados en las
pruebas de aceptación, capacitar a los usuarios y proveer el soporte técnico
necesario. Se debe verificar que el producto cumpla con las especificaciones
entregadas por las personas involucradas en el proyecto.

INTRODUCCIÓN A LOS PROCESOS AGILES DE DESARROLLO

Esta metodología nace en febrero del 2001 en una reunión celebrada en Utah - EEUU.
Principales ideas de la metodología ágil:

 Se encarga de valorar al individuo y las iteraciones del equipo más que a las
herramientas o los procesos utilizados.
 Se hace mucho más importante crear un producto software que funcione que
escribir mucha documentación.
 El cliente está en todo momento colaborando en el proyecto.
 Es más importante la capacidad de respuesta ante un cambio realizado que el
seguimiento estricto de un plan.

Programación Extrema o XP (EXTREME PROGRAMMING)

Es una metodología agil para el desarrollo de software y consiste básicamente en ajustarse


estrictamente a una serie de reglas que se centran en las necesidades del cliente para lograr
un producto de buena calidad en poco tiempo. La Programación Extrema es una
metodología ágil centrada en potenciar las relaciones interpesonales como clave para el
éxito en el desarrollo de software.

Promueve el trabajo en equipo, preocupándose en todo momento del aprendizaje de los


desarrolladores y estableciendo un buen clima de trabajo. Este tipo de método se basa en
una realimentación continuada entre el cliente y el equipo de desarrollo con una
comunicación fluida entre todos los participantes, también busca simplificar las soluciones
implementadas y coraje para los múltiples cambios. Este tipo de programación es la
adecuada para los proyectos con requisitos imprecisos, muy cambiantes y con un riesgo
técnico excesivo.

La metodología de XP se basa en:

 Pruebas Unitarias: se basa en las pruebas realizadas a los principales procesos, de


tal manera que se adelanta en algo hacia el futuro, se puede hacer pruebas de las
fallas que pudieran ocurrir. Es como si se adelantara a obtener los posibles errores.
 Re fabricación: se desarrolla en la reutilización de código, para lo cual se crean
patrones o modelos estándares, siendo más flexible al cambio.
 Programación en pares: una particularidad de esta metodología es que propone la
programación en pares, la cual consiste en que dos desarrolladores participen en un
proyecto en una misma estación de trabajo. Cada miembro lleva a cabo la acción
que el otro no está haciendo en ese momento.
Roles de la Programación Extrema (XP)

Según la propuesta de Beck los roles que nos podemos encontrar son los siguientes:

 Programador: El programador escribe las pruebas unitarias y produce el código del


sistema.
 Cliente: Escribe las historias de los usuarios y las pruebas funcionales para validar
su implementación. El cliente da una gran prioridad a las historias de usuarios y
decide cual implementar en cada iteración centrándose en aportar mayor valor al
negocio.
 Encargado de Pruebas (Tester): Ayuda al cliente a escribir las pruebas funcionales.
Se encarga de ejecutar las pruebas con regularidad, difunde los resultados obtenidos
al equipo y es el responsable de las herramientas que dan soporte a las pruebas.
 Encargado de Seguimiento (Tracker): Es el que proporciona la realimentación al
equipo. Realiza el seguimiento del proceso de cada iteración y verifica el grado de
acierto entre las estimaciones realizadas y el tiempo real dedicado en ello para la
mejora de futuras estimaciones.
 Entrenador (Coach): Es el responsable del proceso global. Se encarga de proveer
guías al equipo de forma que se apliquen las practicas XP y se vaya siguiendo el
proceso correctamente.
 Consultor: Es un miembro externo del equipo con un conocimiento específico en
algún tema que es necesario para el proyecto, en el que surjan problemas.
 Gestor(Big boss): Es el vínculo entre clientes y programadores, ayuda a que el
equipo trabaje efectivamente creando las condiciones adecuadas. Su labor esencial
es la de coordinación.

Scrum

Scrum es un proceso en el que se aplican de manera regular un conjunto de mejores


prácticas para trabajar en equipo y obtener

Metodología Scrum:

El mejor resultado posible de un proyecto. Estas prácticas se apoyan unas a otras y su


selección tiene origen en un estudio de la manera de trabajar de equipos altamente
productivos. Scrum, más que una metodología de desarrollo software, es una forma de
auto-gestión de los equipos de programadores. Un grupo de programadores deciden cómo
hacer sus tareas y cuánto van a tardar en ello. Scrum ayuda a que trabajen todos juntos, en
la misma dirección, con un objetivo claro. Scrum permite además seguir de forma clara el
avance de las tareas a realizar, de forma que los "jefes" puedan ver día a día cómo progresa
el trabajo. “En Scrum se realizan entregas parciales y regulares del resultado final del
proyecto, priorizadas por el beneficio que aportan al receptor del proyecto.
Por ello, Scrum está especialmente indicado para proyectos en entornos complejos, donde
se necesita obtener resultados pronto, donde los requisitos son cambiantes o poco definidos,
donde la innovación, la competitividad y la productividad son fundamentales. Scrum
también se utiliza para resolver situaciones en que no se está entregando al cliente lo que
necesita, cuando las entregas se alargan demasiado, los costes se disparan o la calidad no es
aceptable, cuando se necesita capacidad de reacción ante la competencia, cuando la moral
de los equipos es baja y la rotación alta, cuando es necesario identificar y solucionar
ineficiencias sistemáticamente o cuando se quiere trabajar utilizando un proceso
especializado en el desarrollo de producto.”

Esta metodología tiene algunas desventajas, como el hecho de que genera muy poca
documentación en comparación con otras metodologías, no es apto para todos los proyectos
y en muchas ocasiones es necesario completarlo con otros procesos de XP.

ELEMENTOS PARA INTERPRETAR EL MODELADO DE SOFTWARE


(LENGUAJE UNIFICADO MODELADO)

Lenguaje Unificado de Modelado (LUM o UML, por sus siglas en inglés, Unified
Modeling Language) es el lenguaje de modelado de sistemas de software más conocido y
utilizado en la actualidad; está respaldado por el OMG (Object Management Group). Es un
lenguaje gráfico para visualizar, especificar, construir y documentar un sistema. UML
ofrece un estándar para describir un "plano" del sistema (modelo), incluyendo aspectos
conceptuales tales como procesos de negocio, funciones del sistema, y aspectos concretos
como expresiones de lenguajes de programación, esquemas de bases de datos y
componentes reutilizables.

Es importante resaltar que UML es un "lenguaje de modelado" para especificar o para


describir métodos o procesos. Se utiliza para definir un sistema, para detallar los artefactos
en el sistema y para documentar y construir. En otras palabras, es el lenguaje en el que está
descrito el modelo.

Se puede aplicar en el desarrollo de software entregando gran variedad de formas para dar
soporte a una metodología de desarrollo de software (tal como el Proceso Unificado
Racional o RUP), pero no especifica en sí mismo qué metodología o proceso usar.
CARACTERÍSTICAS DE LOS LENGUAJE DE MODELADOS

 UML es el sucesor de la ola de métodos de A y DOO que aparecieron a finales de


los 80 y principios de los 90
 UML unifica principalmente los métodos de Booch, Rumbaught
 (OMT) y Jacobson. Pero pretende dar una visión más amplia de los mismos
 UML está en proceso de estandarización por el OMG (Object Management Group)
[OMG]
 UML es un lenguaje de modelado, no un método.
 Un método incluye:
o Lenguaje de modelado: Es la notación (en su mayoría gráfica) que utilizan
los métodos para expresar los diseños.
o Proceso: Son los pasos que se aconsejan dar para realizar un diseño.

TIPOS DE DIAGRAMAS
SÍMBOLOS Y NOTACIÓN DE LOS DIAGRAMAS
USO DE HERRAMIENTAS CASE EN EL MODELADO

Las herramientas CASE son un conjunto de aplicaciones informáticas, usadas para


automatizar actividades del ciclo de vida de desarrollo de sistemas (SDLC). Las
herramientas CASE son usadas por los Directores de proyectos de software, analistas e
Ingenieros para desarrollar sistemas de software.

Hay un gran número de Herramientas CASE disponibles para simplificar varias etapas en el
desarrollo del ciclo vital del Software, como por ejemplo herramientas de análisis, diseño
de herramientas, Gestión de proyectos de herramientas, Proyectos de gestión de
herramientas de Bases de datos, gestión de herramientas de Bases de datos, deben
nombrarse también algunas Herramientas de Documentación.

El uso de Herramientas CASE acelera el desarrollo del proyecto con tal de producir los
resultados deseados y ayuda a encontrar imperfecciones antes de proseguir con la siguiente
etapa del desarrollo de Software.

COMPONENTES DE LAS HERRAMIENTAS CASE

Las herramientas CASE se pueden dividir en las siguientes partes en base a a su uso en una
etapa concreta del SDLC:

 Depósito central - Las herramientas CASE requieren un Depósito central, el cual


nos puede servir como fuente de común, consistente e integrada información. El
depósito central, es un lugar central de almacenamiento, donde los requisitos del
producto, los documentos requeridos, los informes y diagramas relacionados, y otra
información útil sobre la gestión se almacena. El Depósito central también sirve
como Diccionario de datos.

 Herramientas Upper CASE - Las Herramientas Upper CASE se usan en las etapas
de planificación, análisis y diseño del SDLC.

 Herramientas Lower CASE - Las Herramientas Lower CASE se usan en la


implementación, las pruebas y en el mantenimiento.

 Herramientas Integrated CASE - Las Herramientas Integrated CASE son de


utilidad en todas las fases del SDLC, desde la reducción de requisitos y las pruebas
hasta la documentación.

La Herramientas CASE se pueden agrupar todas juntas si tienen una funcionalidad similar,
y procesa actividades y la capacidad de integrarse con otras Herramientas.

Estas herramientas se usan para representar componentes del sistema, datos, y a controlar la
fluidez de varios componentes y estructura del software de manera gráfica. Por ejemplo, la
herranmienta 'Flow Chart Maker' para crear los más novedosos Diagramas de flujos.
Herramientas para modelado de procesos

El modelado de procesos es un método para crear modelos de proceso de software y se usa


para desarrollar el software. Las herramientas para el modelado de procesos ayudan a los
Directores a escoger un modelo de proceso o para modificarlo según los requerimientos del
producto software. Por ejemplo, el 'EPF Composer'

Herramientas de administración de procesos

Estas herramientas se usan para la planificación del proyecto, el coste y esfuerzo estimados,
la temporalización y la organización de los recursos. Los Directivos deben coordinar de
manera muy estricta la ejecución del proyecto con cada uno de los pasos mencionados con
anterioridad para la buena gestión del proyecto software. Herramientas de administración
de procesos ayudan a almacenar y a compartir información sobre el proyecto en tiempo real
durante su organización. Ejemplos de este tipo de herramienta son 'Creative Pro Office',
'Trac Project', o 'Basecamp'.

Herramientas de documentación

La documentación de un proyecto de software empieza antes que el proceso de software,


pasa por todas las fases del SDLC y se concluye con la terminación del proyecto.

Las Herramientas de documentación generan documentos tanto para el consumidor final


como para consumidores de soporte técnico. Estos últimos son en su mayoría profesionales
internos del equipo de desarrollo que consultan manuales de sistemas, manuales de
referencia, manuales de formación, de instalación, etc. El consumidor final describe el
funcionamiento e instrucciones del sistema como por ejemplo el manual para el usuario.
Ejemplos de este tipo de herramientas son: Doxygen, DrExplain, Adobe RoboHelp para
documentación.

Herramientas de análisis

Estas herramientas ayudan a cumplir con los requisitos, de manera automática examinan si
hay alguna inconsistencia, o informaciones no acuradas en los diagramas, buscan posibles
redundancias o omisiones erróneas. Ejemplos de este tipo de herramienta son Accept 360,
Accompa, CaseComplete para análisis de requisitos, y Visible Analysts para análisis total.

Herramientas de diseño

Estas herramientas ayudan a los diseñadores de software a crear la estructura de los


programas, la cual se puede más adelante desglosar en pequeños módulos usando técnicas
de perfeccionamiento. Estas herramientas aportan los detalles de cada módulo y la
interconexión presente entre estos. Un ejemplo de herramienta puede ser el diseño animado
de software
Herramientas para la gestión de la Configuración

Un ejemplo de software se lanza al mercado en una versión. Las Herramientas para la


gestión de la Configuración se ocupan de ello –

 Control de versiones
 Línea base
 Gestión del control de cambios

Las herramientas CASE ayudan en esto usando un rastreo automático, control de versiones
y gestión de versiones. Por ejemplo, Fossil, Git, Accu REV.

Herramientas de control de cambios

Estas herramientas son consideradas como una parte de la configuración en la gestión de


herramientas. Se ocupan de los cambios hechos en el software después de que se haya
fijado su línea de base, o cuando el software se lanza por primera vez al mercado. Las
herramientas CASE automatizan la opción 'resaltar cambios', la gestión de archivos, la
gestión del código, entre otros. También ayuda a ejecutar el cambio de principios en que se
basa la organización.

Programming Tools

These tools consist of programming environments like IDE (Integrated Development


Environment), in-built modules library and simulation tools. These tools provide
comprehensive aid in building software product and include features for simulation and
testing. For example, Cscope to search code in C, Eclipse.

Herramientas de desarrollo de software

El modelo de prototipo en Ingeniería de software, es una versión silmulada del producto


software que se intenta conseguir. Este prototipo da una idea inicial del producto y simula
algunos aspectos del producto real.

Las Herramientas de modelos de prototipo CASEP, esencialmente vienen con bibliotecas


gráficas. Pueden crear interfaces de usuario independientes del hardware y diseño. Estas
herramientas nos ayudan a construir prototipos rápidos basados en información ya
existente. Además producen prototipos de simulación de software. Por ejemplo, Serena
prototype composer, Mockup Builder.

Herramientas de desarrollo Web

Estas herramientas ayudan en el diseño de páginas Web con todos los elementos
relacionados como impresos, textos, secuencias de comando, gráficos y demás. Las
herramientas Web también producen una vista preliminar en directo de lo que se está
desarrollando y cómo será una vez terminado. Por ejemplo Fontello, Adobe Edge Inspect,
Foundation 3, Brackets.

Herramientas de Aseguramiento de la calidad

El aseguramiento de la calidad de una organización de Software es la supervisión del


proceso de Ingeniería y de los métodos adoptados para desarrollar el producto software con
tal de asegurar conformidad con la calidad según los estándares organizativos. Las
herramientas de Aseguramiento de la calidad, constan de herramientas de control de
cambios y configuración y de herramientas para pruebas de software. Por ejemplo,
SoapTest, AppsWatch, JMeter.

Herramientas de mantenimiento

El mantenimiento del Software incluye modificaciones en el producto software después de


ser distribuido. Algunas de las herramientas CASE que ayudan en la organizacin y la fase
de mantenimiento del software del SDLC son las técnicas de inicio automático y de reporte
de error, producción automática de etiqueta de error y de Análisis de Causa Raíz (ACR o
RCA en sus siglas en inglés). Por ejemplo, Bugzilla para seguimiento de defectos, HP
Quality Center.

También podría gustarte