Introduccion a Ing. de SW

Anuncio
C121
INGENIERÍA DE SOFTWARE I
0011 0010 1010 1101 0001 0100 1011
NOTAS DEL CURSO
1. INTRODUCCIÓN
1
COORDINACIÓN DE COMPUTACIÓN
Versión 15-08-11
(C) Pilar Gómez Gil, INAOE 20092011
2
4
DRA. MARIA DEL PILAR GÓMEZ GIL
1
0011 0010 1010 1101 0001 0100 1011
In a real sense, all life is interrelated. All men are
caught in an inescapable network of mutuality,
tied in a single garment of destiny. Whatever
affects one directly affects all indirectly. I can
never be what I ought to be until you are what
you ought to be, and you can never be what you
ought to be until I am what I ought to be. This is
the interrelated structure of reality.
— King, Martin Luther, Jr.
1
4
tomado de: http://www.stanford.edu/group/King/newsletter/index.htm
(C) Pilar Gómez Gil, INAOE 20092011
2
2
Software Engineering Code of Ethics and Professional Practice
ACM/IEEE-CS Joint Task Force on Software Engineering
Ethics and Professional Practices. (Short Version)
disponible en: http://www2.computer.org/portal/web/certification/codeofethics
0011 0010 1010 1101 0001 0100 1011
PREAMBLE
The short version of the code summarizes aspirations at a high level of the abstraction; the clauses that are
included in the full version give examples and details of how these aspirations change the way we act as
software engineering professionals. Without the aspirations, the details can become legalistic and tedious;
without the details, the aspirations can become high sounding but empty; together, the aspirations and the
details form a cohesive code.
Software engineers shall commit themselves to making the analysis, specification, design, development, testing
and maintenance of software a beneficial and respected profession. In accordance with their commitment to
the health, safety and welfare of the public, software engineers shall adhere to the following Eight
Principles:
1. PUBLIC - Software engineers shall act consistently with the public interest.
2. CLIENT AND EMPLOYER - Software engineers shall act in a manner that is in the best interests of their
client and employer consistent with the public interest.
3. PRODUCT - Software engineers shall ensure that their products and related modifications meet the highest
professional standards possible.
4. JUDGMENT - Software engineers shall maintain integrity and independence in their professional judgment.
5. MANAGEMENT - Software engineering managers and leaders shall subscribe to and promote an ethical
approach to the management of software development and maintenance.
6. PROFESSION - Software engineers shall advance the integrity and reputation of the profession consistent
with the public interest.
7. COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues.
8. SELF - Software engineers shall participate in lifelong learning regarding the practice of their profession and
shall promote an ethical approach to the practice of the profession.
(C) Pilar Gómez Gil, INAOE 20093
2011
1
2
4
Leer el artículo:
0011 0010 1010 1101 0001 0100 1011
Donald Gotterbarn, Keith W. Miller .”The Public is the Priority:
Making Decisions Using the Software Engineering Code of Ethics”
Computer, vol. 42, no. 6, pp. 66-73, June, 2009.DOI Bookmark:
http://doi.ieeecomputersociety.org/10.1109/MC.2009.204
(C) Pilar Gómez Gil, INAOE 20092011
1
2
4
4
El Producto SOFTWARE
0011 0010 1010 1101 0001 0100 1011
“Conjunto de requerimientos
operacionales, especificaciones, código,
guías, manuales y documentación de
mantenimiento de un sistema basado en
computadora.” [Pressman 92]
1
(C) Pilar Gómez Gil, INAOE 20092011
2
4
5
Características Especiales del
Software
0011 0010 1010 1101 0001 0100 1011
1. El SW se desarrolla, no se fabrica en un sentido
clásico como otros productos
1
3. La mayoría del software se construye “a la
medida”
(C) Pilar Gómez Gil, INAOE 20092011
2
4
2. El software no se estropea... pero se deteriora
6
Retos actuales
0011 0010 1010 1101 0001 0100 1011
•
•
•
•
2
Computación para redes inalámbricas
Computación sobre Web
Software de código abierto (open source)
E-bussineess
1
(C) Pilar Gómez Gil, INAOE 20092011
4
7
PROCESO DE DISEÑO INGENIERIL
SOLUCIONES A
PROBLEMAS
SIMILARES
RECONOCIMIENT O
DEL PROBLEMA
0011 0010 1010 1101 0001 0100 1011
INFORMACION
IRRELEVANT E
FORMULACION
DEL PROBLEMA
Formulación general
del problema
ANALISIS
DEL PROBLEMA
Formulación detallada
del problema
BUSQUEDA
Soluciones potenciales
y parciales
DECISION
Solución escogida
( no detallada )
ESPECIFICACION
Modelo
Reportes
Documentación
de diseño
IMPLEMENT ACION
Documentación
T rabajo resultante
(C) Pilar Gómez Gil, INAOE 20092011
1
2
4
[Jensen & Tonies, 79]
8
Ingeniería de Software
0011 0010 1010 1101 0001 0100 1011
“La Sociedad IEEE Computer define
ingeniería de software como “(1) La
aplicación de una metodología sistematica,
disciplinada y cuantificable para el
desarrollo, operación y mantenimiento de
software; esto es, la aplicación de la
ingeniería al software (2) El estudio de
metodologías como las definidas en (1)”
1
(C) Pilar Gómez Gil, INAOE 20092011
2
4
9
Características de un(a) ingeniero(a)
0011 0010 1010 1101 0001 0100 1011
• Resolvedor de problemas
• Usa recursos disponibles
• Busca obtener el mínimo costo
(C) Pilar Gómez Gil, INAOE 20092011
1
2
4
10
El proceso de desarrollo de
Software: Plantilla general
0011 0010 1010 1101 0001 0100 1011
• Comunicación. Involucra comunicación y
colaboración constante con los
consumidores, y otros stakeholders a fin de
obtener requerimientos y realizar otras
actividades
• Planeación. Establece el plan para el
proceso ingenieril de desarrollo
1
(C) Pilar Gómez Gil, INAOE 20092011
2
4
11
El proceso de desarrollo de Software:
Plantilla
general
(cont.)
0011 0010 1010 1101 0001 0100 1011
• Modelado. Crea modelos que permiten al
desarrollador y consumidor entender mejor los
requerimientos, y el diseño que alcanzará esos
requerimientos
• Construcción. Generación de código y pruebas
internas del producto
• Arranque. Entrega del software y evaluación del
producto por el consumidor, quien provee
retroalimentación
1
(C) Pilar Gómez Gil, INAOE 20092011
2
4
12
Actividades de apoyo al
desarrollo
0011 0010 1010 1101 0001 0100 1011
• Seguimiento y control del proyecto de desarrollo
de software
• Administración de riesgos
• Aseguramiento de calidad del software
• Revisiones técnicas formales
• Administración de la configuración del software
• Administración de la re-usabilidad
• Preparación y producción del producto
1
(C) Pilar Gómez Gil, INAOE 20092011
2
4
13
Otros puntos asociados al proceso
de desarrollo de SW
0011 0010 1010 1101 0001 0100 1011
• Meta-modelos de procesos hechos para la mejora
del proceso de desarrollo (CMMI, Moprosoft, etc.)
• Patrones de procesos
• Modelos estándares para evaluación y mejora de
procesos (ejem. SCAMPI)
• Procesos para desarrollo personal y en equipo
(Personal software process, PSP y Team software
process TSP)
1
(C) Pilar Gómez Gil, INAOE 20092011
2
4
14
Documentación de software
0011 0010 1010 1101 0001 0100 1011
“Lo que no está escrito no existe...”
Algunos tipos de documentos:
•
•
•
•
•
•
Plan de software
Especificación de Requerimientos
Especificación de Diseño
Plan de Pruebas
Resultados de Revisiones
Bitácoras
(C) Pilar Gómez Gil, INAOE 20092011
1
2
4
15
Ciclos en la vida de un proceso
0011 0010 1010 1101 0001 0100 1011
1
2
4
[Jacobson et al., 2000]
(C) Pilar Gómez Gil, INAOE 20092011
16
Algunos Tipos de Ciclos de Vida
de Software
0011 0010 1010 1101 0001 0100 1011
• Clásico: modelo secuencial o de cascada
• Modelos de procesos incrementales: incremental,
modelo RAD (Rapid Application Development)
• Modelos evolutivos: Prototipos, Espiral, de
desarrollo concurrente
• Proceso Unificado
• Modelos especializados: Desarrollo basado en
componentes, modelos de métodos formales,
Desarrollo orientado a aspectos.
1
(C) Pilar Gómez Gil, INAOE 20092011
2
4
17
Modelo Secuencial
INGENIERIA
0011 0010 1010 1101
0001 0100 1011
DE SISTEMAS
ANALISIS
DISEÑO
CODIFICACION
PRUEBAS
1
CICLO DE VIDA CLASICO
MODELO DE CASCADA
(C) Pilar Gómez Gil, INAOE 20092011
2
4
MANTENIMIENTO
18
Modelo Espiral
0011 0010 1010 1101 0001 0100 1011
• Combina características del modelo de cascada y el
modelo de prototipos, añadiendo el elemento de análisis de
riesgo.
• Presenta 4 actividades principales:
1. Planeación
2. Análisis de riesgos
1
2
4
3. Ingeniería (desarrollo del producto al siguiente nivel)
4. Evaluación del cliente
(C) Pilar Gómez Gil, INAOE 20092011
19
Modelo Espiral
0011 0010 1010 1101 0001 0100 1011
1
2
4
[Pressman 96]
(C) Pilar Gómez Gil, INAOE 20092011
20
Modelo de Desarrollo Evolutivo
0011 0010 1010 1101 0001 0100 1011
Tipos de desarrollo evolutivo:
• Programación exploratoria. El desarrollo empieza
con una parte que está bien entendida. Evoluciona
añadiendo nuevas características conforme se
proponen.
• Prototipos desechables. El objetivo es extender la
idea del consumidor. Se experimentan con
prototipos en partes no bien entendidas
1
(C) Pilar Gómez Gil, INAOE 20092011
2
4
21
El Proceso Unificado
(UP por sus siglas en inglés)
0011 0010 1010 1101 0001 0100 1011
• Desarrollado por Ivan Jacobson, Grady Booch y
James Rumbaugh como un marco de referencia
para desarrollo de software usando su lenguaje de
modelado UML, desarrollado previamente
• UP intenta poner juntas las mejores características
de los modelos tradicionales de procesos de
software implementando en ellos los mejores
principios de desarrollo de software ágil (un tipo
de marco de referencia para desarrollo de
software)
(C) Pilar Gómez Gil, INAOE 200922
1
2011
2
4
Flujos de trabajo vs. fases
0011 0010 1010 1101 0001 0100 1011
1
2
4
[Jacobson et al., 2000]
(C) Pilar Gómez Gil, INAOE 20092011
23
Fases e Iteraciones en un ciclo
0011 0010 1010 1101 0001 0100 1011
1
2
4
[Jacobson et al., 2000]
(C) Pilar Gómez Gil, INAOE 20092011
24
Fases del UP
0011 0010 1010 1101 0001 0100 1011
• Inicio. Incluye comunicación con el usuario y actividades
de planeación. Se desarrollo un plan de proyecto, de tipo
incremental. Se describen requerimientos fundamentales
del negocio a través de Casos de Uso. Se define un
bosquejo de la arquitectura general
• Elaboración. Incluye actividades de comunicación con el
cliente y el modelado del software. Refina los casos de uso
y detalla la arquitectura incluyendo 5 vistas del software:
modelo de casos de uso, modelo de análisis, modelo de
diseño, modelo de implementación y modelo de despliegue
o arranque (deployment)
1
(C) Pilar Gómez Gil, INAOE 20092011
2
4
25
Fases del UP (2)
0011 0010 1010 1101 0001 0100 1011
• Construcción. Construcción física del
software. Desarrollo de los componentes de
software. Se diseñan unidades para prueba
• Transición. Incluye los pasos finales de la
construcción. Se da el software a los
usuarios para pruebas beta.
• Producción. El software en uso es
monitoreado, se realizan reportes de
defectos
1
(C) Pilar Gómez Gil, INAOE 20092011
2
4
26
Fases del UP (3)
0011 0010 1010 1101 0001 0100 1011
• Al mismo tiempo que se llevan a cabo las
fases de construcción, transición y
producción, es muy probable que ya se haya
iniciado la siguiente generación de software
(un nuevo incremento). Entonces las fases
se puede ejecutar concurrentemente.
1
(C) Pilar Gómez Gil, INAOE 20092011
2
4
27
Modelos del UP
0011 0010 1010 1101 0001 0100 1011
1
2
4
[Jacobson et al., 2000]
(C) Pilar Gómez Gil, INAOE 20092011
28
Desarrollo Basado en
Componentes
0011 0010 1010 1101 0001 0100 1011
• Aplicable en tecnología orientada a objetos
• Técnica Espiral
• INGENIERÍA:
–
–
–
–
–
–
(C) Pilar Gómez Gil, INAOE 20092011
1
2
4
Identificación de clases candidatas (componentes)
Buscar componentes en biblioteca
Extraer componentes, si están disponibles
Construir componentes si no están disponibles
Poner nuevos componentes en la biblioteca
Construir la N-estima iteración del sistema
29
BIBLIOGRAFIA
0011 0010 1010 1101 0001 0100 1011
• Roger S. Pressman. Software Engineering. A practitioner
approach. Mc Graw Hill, 2002,2005
• Jensen, Randall W. and Charles C. Tonies. Software
Engineering. Prentice-Hall. New Jersey 1979
• Jacobson, I. Booch, G. Rumbaugh. J. The Unified
Software Development Process. Addison Wesley, 2000.
1
(C) Pilar Gómez Gil, INAOE 20092011
2
4
30
Descargar