Está en la página 1de 42

Evaluación de procesos de

calidad en el desarrollo de
software

Maestro: Leonardo Hernández Martínez


Presentación

Correo Electrónico.- leonardo_mtz@hotmail.com


Celular.- 044 55 5438 5253

Maestro: Leonardo Hernández Martínez


Reglas

• Exámenes y Exposiciones 30%


• Proyecto Final 50%
• Participación 20%

Maestro: Leonardo Hernández Martínez


Proyecto Final
Hoy en día la mayoría de las empresas principalmente PYMES no cuentan
con áreas, que certifiquen la calidad de las aplicaciones que están
utilizando dentro de las mismas.

El proyecto consiste en desarrollar una área de Quality Assurance (QA),


dentro de la empresa que laboramos, esto con el fin de asegurar que el
software y sistemas utilizados cumplen con la calidad que necesita la
empresa para operar.

Maestro: Leonardo Hernández Martínez


Evaluación de
Procesos de Calidad
En el Desarrollo de
SOFTWARE

Maestro: Leonardo Hernández Martínez


Ejercicio
•DETERMINAR QUE ES EL CICLO DE VIDA DEL SOFTWARE
•SOPORTAR UNA CLASIFICACION DEL SOFTWARE
•INFORMACION REQUERIDA:
 DEFINICIONES
 CLASIFICACION

 CONCLUSIONES

TIEMPO:
20 MIN. DE TRABAJO
10 MINUTOS DE PRESENTACION POR EQUIPO
10 MINUTOS DE PREGUNTAS- RESPUESTAS DE LOS DEMAS EQUIPOS

Maestro: Leonardo Hernández Martínez


FUNDAMENTOS DE SOFTWARE

Maestro: Leonardo Hernández Martínez


SOFTWARE
Se refiere al equipamiento lógico o soporte lógico de una computadora digital, y
comprende el conjunto de los componentes lógicos necesarios para hacer posible
la realización de una tarea específica, en contraposición a los componentes físicos
del sistema (hardware).

Tales componentes lógicos incluyen, entre otros, aplicaciones informáticas tales


como procesadores de texto, que permiten al usuario realizar todas las tareas
concernientes a edición de textos; software de sistema, como un sistema
operativo, que, básicamente, permite al resto de los programas funcionar
adecuadamente, facilitando la interacción con los componentes físicos y el resto
de las aplicaciones; también provee una interfaz para el usuario.

Maestro: Leonardo Hernández Martínez


EVOLUCION DEL SOFTWARE

Maestro: Leonardo Hernández Martínez


Ejercicio
METODO
• Cada persona expone su punto de vista sobre como ha evolucionado el software y si
esto ha beneficiado o no a las organizaciones
•Se debate (confrontación de puntos de vista diferentes) si debe ser así o que
factores influyen para que no sea.

TIEMPO:
20 MINUTOS DE DEBATE
10 MINUTOS RESUMEN
10 MINUTOS DE PREGUNTAS

Maestro: Leonardo Hernández Martínez


Evolución de Software (50 años)
•70 y 80´s CAMBIANTE PERCEPCION “ Una nueva revolución industrial”

•90´s “Cambio de poder” “democratización del conocimiento”

•Mediados 90´s “Resisting trhe virtual life” (James Brook) y The future does not
compute” (Stephen Talbot)

•Finales de los 90´s Yourdon (YOU96) “surgimiento y resurrección del programador

•Y2K= 2000

•Principios siglo = Un nuevo tipo de ciencia

Maestro: Leonardo Hernández Martínez


Leyes del software
• Cambio Continuo (1974)
• Adaptación continua o decadencia
• Complejidad creciente (1974)
• La complejidad se incrementa..puede trabajarse para evitarlo
• Autoregulación (1974)
• La evolución del sistema se autoregula entre la distribución del producto y
las mediciones del proceso cercanas a la normal
• Conservación de la estabilidad organizacional (1974)
• La actividad global efectiva promedio de un sistema no varia a lo largo de la
vida del producto

Maestro: Leonardo Hernández Martínez


Leyes del software
• Conservación de la familiaridad (1980)
• Los involucrados deben mantener el dominio sobre su contenido y
comportamiento
• Crecimiento continuo (1980)
• El contenido funcional debe incrementarse durante el ciclo de vida del
producto
• Calidad decreciente (1996)
• Declinara la calidad a menos que se adapten y mantengas
• Sistema de retroalimentación (1996)
• Son sistemas con niveles, ciclos y agentes multiples

Maestro: Leonardo Hernández Martínez


Mitos del software (administración)
• Con estándares y procedimientos para la construcción del software tengo lo
necesario

• Si se retrasa el programa es posible contratar más programadores y terminar a


tiempo

• Si contrato a un tercero, es un éxito asegurado

• Un enunciado general de los objetivos es suficiente para comenzar a escribir


programas, los detalles se afinan después

• Los requerimientos del proyecto cambian de manera continua pero el cambio


puede ajustarse con facilidad porque el software es flexible

Maestro: Leonardo Hernández Martínez


Mitos del software (cliente)
• Un enunciado general de los objetivos es suficiente para comenzar a escribir
programas, los detalles se afinan después

• Los requerimientos del proyecto cambian de manera continua pero el cambio


puede ajustarse con facilidad porque el software es flexible

Maestro: Leonardo Hernández Martínez


Mitos del software (desarrollador)
• Una vez que el programa empieza a funcionar el trabajo esta terminado

• Mientras el programa no opere no podemos evaluar su calidad

• El único producto del trabajo es el programa en funcionamiento

• La ingeniería de software obligará a hacer muchos documentos y retrasará el


trabajo

Maestro: Leonardo Hernández Martínez


COMPONENTES DEL SOFTWARE

Maestro: Leonardo Hernández Martínez


Definición del software
Se compone por:
• Instrucciones (programas de computadoras) que al ejecutarse
proporcionan las características, funciones y grado de desempeño
deseado

• Estructuras de datos que permiten que los programas manipulen la


información de manera adecuada

• Documentos que describen la operación y el uso de programas

Maestro: Leonardo Hernández Martínez


Definición del software
Se compone por:

• Un lenguaje de programación que tiene un vocabulario limitado

• Una gramática definida explícitamente

• Reglas bien formadas de sintaxis y semántica.

Maestro: Leonardo Hernández Martínez


CARACTERISTICAS DEL SOFTWARE

Maestro: Leonardo Hernández Martínez


Características del Software

• El software se desarrolla no se manufactura

• El software no se desgasta se deteriora

• Para evitar el deterioro hay que desarrollar un mejor diseño

• La mayoría del software se construye a la medida

Maestro: Leonardo Hernández Martínez


CATEGORIAS DEL SOFTWARE

Maestro: Leonardo Hernández Martínez


Categorías del Software

• Software de sistemas: Programas escritos para servir a otros programas

• Software de aplicación: Programas independientes que resuelven una necesidad específica

• Software científico y de ingeniería: Algoritmos “devoradores de números” astronomía,


transbordadores espaciales, etc

• Software emportado: Reside dentro la memoria de lectura sistema y con él se implementan


y controlan características y funciones para el usuario final y el sistema mismo-

Maestro: Leonardo Hernández Martínez


Categorías del Software

• Software de línea de productos: Proporciona una capacidad específica enfocado a un nicho


de mercado limitado

• Aplicaciones basadas en Web: WebApps (desde paginas hasta bases de datos


corporativas

• Software de inteligencia artificial: Algoritmos no numéricos en la resolución de problemas


complejos que es imposible abordar por medio de un análisis directo

Maestro: Leonardo Hernández Martínez


PARADIGMAS DE PROGRAMACION

Maestro: Leonardo Hernández Martínez


Componentes Basicos

Objetos: Entidad de la vida real que tiene atributos (datos) y métodos (operaciones) que
operan sobre esos atributos. A los datos que forman parte del objeto se les conoce como
datos miembros y a las funciones como funciones miembros. Los datos quedan ocultos al
programador y únicamente dispondrá de las funciones para acceder a ellos. Es una
abstracción que se usa para representar una entidad real. Todo objeto tiene estado, exhibe un
comportamiento bien definido y posee identidad única.

Maestro: Leonardo Hernández Martínez


Componentes Básicos

• Para crear objetos es necesario contar con otro objeto que pueda crear objetos. El objeto
creador de objetos se llama clase y los objetos creados se llaman instancias. Los objetos
en Java se crean en forma dinámica. No es necesario destruir un objeto ya que java lo
hace solo.

• Clase: Modelo que se usa para describir objetos similares. Es un tipo de dato definido por
el usuario que determina las estructuras de datos que lo forman y las funciones asociadas
con él, es decir es un modelo con el que se construyen los objetos.

Maestro: Leonardo Hernández Martínez


Lista de Atributos y Métodos

• Public: Clase publica que puede ser usada por cualquier otra clase de otro
paquete.
• Final: Clase que no puede tener clases derivadas.
• Abstract: Clase que no puede ser instanciada, si derivada.
• Extends: Indica de que clase hereda la nuestra (en herencia)
• Implements: Implementa interfaces (en herencia)

Mensaje: Es una petición de un objeto a otro para que este se comporte de una
determinada manera, ejecutando uno de sus métodos.

Maestro: Leonardo Hernández Martínez


Características Fundamentales

Abstracción: Es la capacidad de aislar y encapsular la información del diseño y la


ejecución. Es la capacidad para identificar atributos y métodos.
Herencia: Es la propiedad que permite a los objetos crearse a partir de otros
objetos. Cada subclase comparte características comunes con la clase de la que
deriva. La clase original la llamamos clase base y las nuevas clases creadas a partir
de ella clases derivadas. Una clase derivada puede ser también clase base dando
lugar a una jerarquía de clases. Los miembros de la clase base deben ser protected
o private protected.
La ventaja de la herencia es que permite la reutilización de código, ahorrando
tiempo y dinero.

Maestro: Leonardo Hernández Martínez


Características Fundamentales

Polimorfismo: Es la capacidad de que diferentes objetos reaccionen de distinta


forma a un mismo mensaje. Es la capacidad de referirse a objetos de clases
distintas en una jerarquía utilizando el mismo elemento de programa (método) para
realizar la misma operación, pero de manera diferente.

Características Secundarias de la POO:


Tipificación: Permite la agrupación de objetos en tipos.
Concurrencia: Los objetos pueden actuar al mismo tiempo.
Persistencia: Un objeto puede seguir existiendo tras desaparecer su antecesor.

Maestro: Leonardo Hernández Martínez


Tipos de Paradigmas de Programación

Los paradigmas de programación son la forma, la visión que determinan los


métodos y las herramientas que un programador usara en la construcción de un
software. Mayormente los lenguajes de programación están basados en uno o mas
paradigmas.
Hay muchos mas paradigmas de programación y cada uno de ellos posee sus
ventajas y desventajas, sin embargo sea el paradigma que elijamos podremos
resolver todos los problemas por caminos diferentes a los demás.

Paradigma imperativo: Generalmente el código maquina, describe una


programación como un flujo de instrucciones o comandos que van formando la
estructura del software. Se incluye el paradigma procedural entre otros.

Maestro: Leonardo Hernández Martínez


Tipos de Paradigmas de Programación

Paradigma declarativo: No se basa en el cómo se hace algo (cómo se logra un


objetivo paso a paso), sino que describe (declara) cómo es algo. En otras palabras,
se enfoca en describir las propiedades de la solución buscada, dejando
indeterminado el algoritmo (conjunto de instrucciones) usado para encontrar esa
solución. Es más complicado de implementar que el paradigma imperativo, tiene
desventajas en la eficiencia, pero ventajas en la solución de determinados
problemas.

Paradigma estructurado: Básicamente el código se divide en bloques, estructuras,


que pueden o no comunicarse entre si. Este software se controla con secuencia,
selección e interacción. Otorga una mejor comprensión del código y permite su
reutilización de una forma mas fácil. 

Maestro: Leonardo Hernández Martínez


Tipos de Paradigmas de Programación

Paradigma orientado a Objetos: Este tipo de programación posee como idea


principal encapsular estado y operaciones en objetos. Estos objetos pueden
comunicarse entre si, poseen clases y herencia. Se puede destacar como ventaja la
facilidad de reutilización de código. Algún ejemplo de algunos lenguajes orientados
a objetos pueden ser: Simula, Smalltalk, C++, Java, Visual Basic .NET, etc.

Paradigma funcional: Este tipo de paradigma demuestra un tipo de programación en


forma de funciones matemáticas. Los lenguajes puramente funcionales evitan
efectos secundarios que pueden ser comunes en otros tipos de paradigmas.
Paradigma lógico: Se definen reglas lógicas que luego a trabes de un motor de
inferencias lógicas, resolver problemas planteados por el sistema. Algunos
programas que utilizan el paradigma lógico: prolog.

Maestro: Leonardo Hernández Martínez


Ejercicio

• De acuerdo a su conocimiento establezca un plan de desarrollo de software


para un sistema de credito y cobranza de una empresa dedicada a la
manufactura de equipo de oficina.

• Reglas.- Diseñar el plan en equipos (20 minutos de desarrollo) y tendran 10


minutos para presentar.

Maestro: Leonardo Hernández Martínez


DEFINICION DEL CICLO DE VIDA
DEL SOFTWARE

Maestro: Leonardo Hernández Martínez


Componentes Básicos

Un modelo de ciclo de vida define el estado de las fases a través de las cuales se mueve un
proyecto de desarrollo de software.

El primer ciclo de vida del software, "Cascada", fue definido por Winston Royce a fines del 70.
Desde entonces muchos equipos de desarrollo han seguido este modelo. Sin embargo, ya
desde 10 a 15 años atrás, el modelo cascada ha sido sujeto a numerosas críticas, debido a
que es restrictivo y rígido, lo cual dificulta el desarrollo de proyectos de software moderno. En
su lugar, muchos modelos nuevos de ciclo de vida han sido propuestos, incluyendo modelos
que pretenden desarrollar software más rápidamente, o más incrementalmente o de una forma
más evolutiva, o precediendo el desarrollo a escala total con algún conjunto de prototipos
rápidos.

Maestro: Leonardo Hernández Martínez


Componentes Básicos

Un modelo de ciclo de vida de software es una vista de las actividades que ocurren durante el
desarrollo de software, intenta determinar el orden de las etapas involucradas y los criterios de
transición asociadas entre estas etapas.

Un modelo de ciclo de vida del software:

Describe las fases principales de desarrollo de software.


Define las fases primarias esperadas de ser ejecutadas durante esas fases.
Ayuda a administrar el progreso del desarrollo,
Provee un espacio de trabajo para la definición de un detallado proceso de desarrollo de
software.

Maestro: Leonardo Hernández Martínez


Modelo Cascada

Este es el más básico de todos los


modelos, y sirve como bloque de
construcción para los demás modelos
de ciclo de vida. La visión del modelo
cascada del desarrollo de software es
muy simple; dice que el desarrollo de
software puede ser a través de una
secuencia simple de fases. Cada
fase tiene un conjunto de metas bien
definidas, y las actividades dentro de
una fase contribuye a la satisfacción
de metas de esa fase o quizás a una
subsecuencia de metas de la fase.

Maestro: Leonardo Hernández Martínez


Modelo Cascada

• El modelo de ciclo de vida cascada, captura algunos principios básicos:


• Planear un proyecto antes de embarcarse en él.
• Definir el comportamiento externo deseado del sistema antes de diseñar su arquitectura
interna.
• Documentar los resultados de cada actividad.
• Diseñar un sistema antes de codificarlo.
• Testear un sistema después de construirlo.
• Una de las contribuciones más importantes del modelo cascada es para los
administradores, posibilitándoles avanzar en el desarrollo, aunque en una escala muy
bruta.

Maestro: Leonardo Hernández Martínez


Modelo de Desarrollo Incremental

Los riesgos asociados con el desarrollo de sistemas largos y complejos son enormes. Una
forma de reducir los riesgos es construir sólo una parte del sistema, reservando otros
aspectos para niveles posteriores. El desarrollo incremental es el proceso de construcción
siempre incrementando subconjuntos de requerimientos del sistema. Típicamente, un
documento de requerimientos es escrito al capturar todos los requerimientos para el sistema
completo.

Note que el desarrollo incremental es 100% compatible con el modelo cascada. El desarrollo
incremental no demanda una forma específica de observar el desarrollo de algún otro
incremento. Así, el modelo cascada puede ser usado para administrar cada esfuerzo de
desarrollo.

Maestro: Leonardo Hernández Martínez


Modelo de Desarrollo Incremental

• El modelo de desarrollo incremental provee algunos beneficios significativos para los


proyectos:
• Construir un sistema pequeño es siempre menos riesgoso que construir un sistema
grande.
• Al ir desarrollando parte de las funcionalidades, es más fácil determinar si los
requerimientos planeados para los niveles subsiguientes son correctos.
• Si un error importante es realizado, sólo la última iteración necesita ser descartada.
• Reduciendo el tiempo de desarrollo de un sistema (en este caso en incremento del
sistema) decrecen las probabilidades que esos requerimientos de usuarios puedan
cambiar durante el desarrollo.
• Si un error importante es realizado, el incremento previo puede ser usado.
• Los errores de desarrollo realizados en un incremento, pueden ser arreglados antes del
comienzo del próximo incremento.

Maestro: Leonardo Hernández Martínez


Ejercicio

1. ANALISIS SOBRE LOS AVANCES EN EL DESARROLLO DE SOFTWARE

2. ANALISIS SOBRE LAS VARIACIONES DEL CICLO DE VIDA DEL SOFTWARE

3. LISTAR EL SOFTWARE QUE UTILIZA SU ORGANIZACIÓN

4. EXPONER COMO EL SOFTWARE APOYA A SU ORGANIZACIÓN

Maestro: Leonardo Hernández Martínez

También podría gustarte