• No se han encontrado resultados

IS01_c2010.pdf

N/A
N/A
Protected

Academic year: 2020

Share "IS01_c2010.pdf"

Copied!
18
0
0

Texto completo

(1)

Ingeniería de Software

Universidad del Aconcagua

Ciclo 2010

(2)

Que se entiende por

Ingeniería de Software

Edsger Dijkstra Wybe (1930-2002) fue uno de los miembros más

influyentes de la ciencia de la computación de la generación fundadora. Sus contribuciones científicas son fundamentales

 diseño de algoritmos

 lenguajes y diseño de programación  sistemas operativos

 procesamiento distribuido  especificación y verificación

Edward Yourdon Nash (1944) es un ingeniero informático, consultor,

autor y profesor, y un reconocido pionero en la metodología de la ingeniería de software. Es conocido como el principal promotor del Diseño de Análisis Estructurado de Sistemas y Diseño de Método

(SSADM) de la década de 1970, así como co-desarrollador de método orientado a objetos finales del decenio de 1980 y 1990.

Barbara Liskov, Ph.D. (1939) es una prominente científica de la

computación. Actualmente está trabajando en el Depto Ciencias de la computación del MIT.Tiene un Ph D en Ciencias de la computación por la Universidad de Stanford.

Premio Turing: Por su contribución a los fundamentos teóricos y prácticos en el diseño de lenguajes de

(3)

Que se entiende por

Ingeniería de Software

Ingeniería de Software según Dijkstra:

 Así como la economía se conoce como “La ciencia

miserable”, la Ingeniería de Software debería ser conocida como “The Doomed Discipline”.

 La ingeniería de software, por supuesto, se presenta a si

misma como otra causa meritoria, pero eso es puro cuento. Si uno lee cuidadosamente su literatura y

analiza lo que sus devotos realmente hacen, descubre que la ingeniería de software ha aceptado como su carta de presentación “como programar si no puede”.

 Es realmente útil ver un programa como una fórmula.

Primero, pone la tarea del programador en perspectiva: tiene que derivar esa fórmula... manipulación de

(4)

Que se entiende por

Ingeniería de Software

Ingeniería de Software según Yourdon:

 La construcción de sistemas de software que funcionen

no es una “ciencia”. Los así llamados “científicos en computación” nos tratan de convencer de que nuestros sistemas son en realidad grafos dirigidos, o n-tuplas de formas normalizadas, o autómatas de estados finitos... Sus pronunciamientos son mas relevantes a Zen que al difícil problema de construir sistemas y programas útiles y fáciles de mantener.

 En lugar de aproximaciones académicas, lo que

necesitamos es un conjunto de métodos prácticos que traten con la naturaleza propensa a errores del personal de proyectos, los usuarios, los encargados del

(5)

Que se entiende por

Ingeniería de Software

Fred Brooks aportando a la confusión:

 Un dicho académico es que “Todo lo que se hace llamar

ciencia no lo es”.

Astronomía, Física, Química son ciencias

Ciencias Sociales, Ciencias Políticas, Ciencias de la Computación no lo son

 El científico construye para aprender

 El ingeniero aprende para construir

 Elegimos mal el nombre. Lo que llamamos “Ciencias de

la Computación” es en realidad una disciplina de

(6)

Que se entiende por

Ingeniería de Software

Antes de ir a la ingeniería de software pensemos en la definición de ingeniería. Hay muchas definiciones, pero todas tienen cosas en común:

 Crear soluciones eficientes  A problemas prácticos

 Aplicando conocimiento científico  Construyendo cosas

 Al servicio de la humanidad

La ingeniería permite a la gente común hacer cosas que antes requerían virtuosos

(7)

Evolución de una disciplina de

ingeniería

“Craft” (“habilidad”): virtuosos y amateurs. Intuición

y fuerza bruta. Se construye para usar, no vender.

Comercial: se construye para vender, más habilidades,

procesos establecidos.

Ingeniería profesional: Profesionales educados, el

progreso basado en la ciencia, análisis y teoría, segmentación.

Fuente: Mary Shaw –Prospects for an Engineering Discipline of Software. IEEE Software. Noviembre 1990.

(8)

Definición de Ingeniería de

Software

IEEE: “La aplicación de un enfoque sistemático, disciplinado y

cuantificable al desarrollo, mantenimiento y operación de sistemas

de software”

Es decir, la aplicación de la ingeniería al software Otra definición interesante:

Bertrand Meyer: “The development of possibly large systems intended for

use in production environments, over a possibly long period, worked on by possibly many people, and possibly undergoing many changes, where

development includes management, maintenance, validation, documentation, and so forth.”

Fuentes: IEEE Glossary for Software Engineering Terminology.

(9)

Diferencias

Programación vs Ingeniería de Software:

Un desarrollador vs. equipos de desarrolladores Sistemas simples vs. sistemas complejos

Tiempo previsto de duración corto vs. largo

Sin “stakeholders” (desarrollador = usuario) vs. muchos“stakeholders” Construidos de cero vs. mucho reuso

Poco mantenimiento vs. mantenimiento usualmente mayor al 60% de los costos originales

Ciencias de la Computación vs. Ingeniería De Software

La ciencia de la computación se ocupa de las teorías y los fundamentos. La Ingeniería de Software se ocupa de los aspectos prácticos de

desarrollar y entregar software útil

(10)

Un poco de historia

(11)

Problemas de ingeniería

Therac-25: 6 personas expuestas a dosis masivas de radiación (15000 a

20000 rads en vez de 200), se cree que 3 murieron por esta causa

Arianne5: el cohete explotó en su despegue. 7B del programa, 500MM

cohete más su carga (4 satélites). Bug por overflow no tratado al mover un número de punto flotante de 64 bits a un entero con signo de 16 bits. Ni siquiera debería haber estado corriendo…

Problema en el Pentium (1994). Problema en un for loop causaba cálculo

incorrecto de divisiones. 400 MM de costo.

Aeropuerto de Denver: $ 193 millones, 400 carros, 21 millas de pistas.

Sólo una aerolínea lo llegó a usar. US$ 1,1MM por día de retraso. Dic 93 – Feb 95 (no todo por software).

Misil Patriot: cálculo incorrecto del tiempo desde booteo por error de

redondeo (0,34 segundos en 100 horas, más de 500 metros)

(12)

Hitos destacados

Paper magistral de Brooks, Abril de 1987

Dos tipos de problemas:

 Esenciales  Accidentales

Las 4 dificultades esenciales:

 Complejidad (no lineal con el tamaño)  Conformidad (Arbitrariedad)

(13)

Hitos con miradas diferentes

SEI –Humphrey –CMM –CMMI (1987-…)

 “Manufacturing has long recognized the importance of process

effectiveness and efficiency”

 “CMMI describes an evolutionary improvement path from ad hoc,

immature processes to disciplined, mature processes with improved quality and effectiveness”

Agilidad -curso oficial de “Certified Scrum

Master”

 “Many in the Software development field are now recognizing

(14)

Ingeniería de Software

SWEBOK

Cuerpo de conocimiento de la Ingeniería de Software es un proyecto impulsado por Software Engineering Coordinating Committee,

patrocinado por la IEEE Computer Society.

IEEE publica la primera versión del SWEBOK en mayo de 2001, siendo la última revisión del año 2004. Se describen las siguientes áreas:

Requisitos.

•Diseño.

•Contrucción de Software. •Pruebas.

•Manteniemiento.

•Gestión de la configuración (administración, control del cambio, versiones).

•Gestión de proyecto específica de la Ingeniería de Software. •Procesos de Ingeniería para el Software.

•Herramientas y Métodos.

(15)
(16)
(17)
(18)

Resumiendo

Trabajamos con algo muy complejo

Que trata con una problemática muy amplia

Que tiene dificultades esenciales

Y que además está evolucionando

Hay muchos temas por cubrir

Nos vamos a concentrar en aquellos que más

Referencias

Documento similar

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas

Las manifestaciones musicales y su organización institucional a lo largo de los siglos XVI al XVIII son aspectos poco conocidos de la cultura alicantina. Analizar el alcance y

Se elaboró un modelo formal para la asignación de recursos humanos a equipos de proyectos de software, considerando tanto factores que contribuyen a la

La longitud será la necesaria para alojar el número de carros requeridos o el tren completo más largo que deba tenerse en cuenta para cada caso, más los librajes

• Posteriormente se realizaron diagramas que describen las relaciones entre las actividades de la ISO/IEC 29110 para identificar su correlación y poder identificar con

– A graphical modelling tool, based on the previously defined meta-model, has been implemented in order to help designers to build new state-machine models.. This tool, together with

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de