Está en la página 1de 15

11/3/2024

Introducción
CI-0136 Diseño de Software, I-2024
Prof. Mauricio Arroyo

Agenda

● Expectativa de estudiantes
● Expectativa del Profesor
● Carta al estudiante
● ¿Cómo vamos a trabajar?
● ¿Qué vamos a cubrir?
● ¿Qué es software?

¿Cúales son sus expectativas del curso?

● Nombre
● Expectativa del curso
● Porque escogieron la especialidad de IS
● Experiencia en desarrollo
● Expectativas de carrera
● 3 cosas, dos verdades y una mentira

1
11/3/2024

¿Cúales son mis expectativas?

● Esta no es una clase de programación, pero si


van a tener que programar.
● El diseño no se enseña, se aprende haciendo.
● Tienen que cumplir con las lecturas y
trabajos.
● Compromiso con la calidad.
● Esfuerzo.
● Profesionalismo.

¿Cúales son mis expectativas del curso y


de ustedes?

● Que aprendan metodologías y técnicas modernas que


se usan en la industria.
● Que conozcan cómo es que se diseña/desarrolla
software en empresas grandes a nivel internacional.
● Que sean mejores Ingenieros de software, no sólo
desarrolladores. (Toolbox)

Carta al estudiante

2
11/3/2024

Carta al estudiante

¿Cómo vamos a trabajar?

● Explicación de conceptos
● Laboratorios / Katas
● Tareas / Lecturas.
● Popup quiz (pueden incluir brain teasers).
● Prácticas de entrevistas en empresas como
Facebook, Google, Microsoft, Amazon.*
● Cada 3 semanas vamos a evaluar cómo va el
curso, y hacer ajustes si es necesario.

¿Qué vamos a cubrir?

● Fundamentos de Metodologías ágiles.


● Clean Code.
● Algunas prácticas ingenieriles útiles en diseño.
(TDD, CI/CD)
● Principios de diseño detallado.
● Patrones de diseño detallado.
● Diseño de arquitectura de un sistema.
○ Rol del arquitecto (conocimientos, interacciones)

3
11/3/2024

¿Qué es Software?

10

¿Qué es software?

● El software es un conjunto de elementos u objetos que


forman una "configuración" que incluye
○ Un número de programas separados
○ Archivos de configuración
○ Documentación del sistema
○ Documentación del usuario
○ Sitios web para productos de software
○ ¿Elementos de Infraestructura?

11

Tipos de software
● Software del sistema
● Software en tiempo real
● Software empresarial
● Software de ingeniería/científico
● Software integrado
● Software de PC
● Software de inteligencia artificial
● WebApps (aplicaciones web)

12

4
11/3/2024

Ciclo de Vida del Software

13

¿Por qué fracasa un proyecto


de software?

15

¿Por qué fracasa un proyecto de


software?

● Sobre presupuesto
● No entregar a tiempo el producto. Market window.
● Entregar un software que no sirve para lo que lo
requiere el usuario.
● Baja calidad.
● Pobre visibilidad.
● Riesgos no manejados.
● Comunicación deficiente.

Problemas de
calidad del
producto y/o del
proceso

16

5
11/3/2024

¿Por qué fracasa un proyecto de


software?

● Complejidad
○ Muchas funciones
○ Objetivos diferentes (stakeholders)
○ Muchos componentes
○ Negocios complejos difíciles de entender.
○ El sistema es tan complejo que no es posible que lo
entienda un sólo programador.
○ Se arregla una pulga causando otra.

17

¿Por qué fracasa un proyecto de


software?

● Ambiguedad
○ ¿Podríamos crear esto?

18

¿Por qué fracasa un proyecto de


software?

● Comunicación
○ Los clientes suelen tener una idea abstracta del
resultado final
○ Es “difícil” extraer el conocimiento de un experto

○ "A lot of times, people don't know what they want


until you show it to them." - Steve Jobs

○ “If I had asked people what they wanted, they would


have said faster horses.” - Henry Ford

19

6
11/3/2024

¿Por qué fracasa un proyecto de


software?

● No nos preparamos para el cambio


○ Todo cambia: requerimientos, entorno, expectativas,
negocio, …
○ As a (system) is changed its complexity increases
and becomes more difficult to evolve unless work is
done to maintain or reduce the complexity
[Lehman, Second Law of Software Dynamics]
○ As time goes on, the cost to implement a change will
be too high, and the system will then be unable to
support its intended task.

El cambio es constante
e inevitable en todo
proyecto de software

20

Costo del cambio

21

¿En serio tantos proyectos fracasan?


● Project Succeded:
○ El proyecto se completa a tiempo
y dentro del presupuesto, con
todas las características y
funciones tal como se especificó
inicialmente.
● Project Challenged:
○ El proyecto se ha completado y
está operativo, pero ha excedido
el presupuesto, el tiempo
estimado y ofrece menos
características y funciones de las
especificadas originalmente.
● Project failed:
○ El proyeco se cancela en algun
punto durante el ciclo de
desarrollo.

[Chaos Report, Standish Research Group Report, 2020]

22

7
11/3/2024

Fallos en Función del tiempo

23

¿Qué hace un buen software?

24

¿Qué hace un buen software?

En un
entorno de
cambio
constante!

25

8
11/3/2024

Proyectos exitosos

Organizational
success

Technical Personal
success success

26

Nuestro objetivo

“Hacer el producto correcto y hacerlo correctamente”

Mejorar el Mejorar el
producto proceso

Se requiere mucho más que saber programar para lograr


esta meta...

27

Desastres famosos

28

9
11/3/2024

29

Mariner I space probe - 1962


● Cost: $18.5 million
● Disaster: The Mariner 1 rocket with a space
probe headed for Venus diverted from its
intended flight path shortly after launch.
Mission Control destroyed the rocket 293
seconds after liftoff.
● Cause: A programmer incorrectly transcribed
a handwritten formula into computer code,
missing a single superscript bar. Without the
smoothing function indicated by the bar, the
software treated normal variations of velocity
as if they were serious, causing faulty
corrections that sent the rocket off course.

30

Ariane 5, Flight 501 - 1996

● Cost: $ 500M payload + cost of


vehicle.
● Disaster: European Space Agency’s
reusable launch vehicle, developed
for larger payloads than the
successful Ariane 4. Launched 4th
June, 1996, Veered off course during
launch and Self-destructed 40
seconds after take-off.
● Cause:Unhandled floating point
exception.

31

10
11/3/2024

FBI Virtual Case File - 2005

● Cost: $170,000,000 project


● Disaster: 700 000 lines of code so
bug-ridden and functionally off target
that they had to scrap it
● Cause:
○ poorly defined and slowly evolving
design requirements;
○ overly ambitious schedules;
○ lack of a plan to guide hardware
purchases, network deployments,
and software development

[http://www.spectrum.ieee.org/sep05/1455]

32

Windows XP Service Pack 2 - 2004

● Cost: $300,000,000 cost to Microsoft


● Disaster: Patch to completely overhaul the security
infrastructure of Windows XP
● Cause: numerous errors and security bugs

33

Denver airport baggage handling system


- 1995

● Cost: $186 million in original construction costs grew by


$1 million per day
● Disaster: Computer tracking system to direct baggage
contained in unmanned carts. Originally scheduled for
October 31, 1993; delayed until February 28, 1995. It
never worked well, in August 2005 United abandoned
the system
● Cause: too many bugs

[http://en.wikipedia.org/wiki/Denver_International_Airport]

34

11
11/3/2024

Pentium Fails Long Division - 1993

● Cost: $475 million, corporate credibility


● Disaster: Intel’s highly-promoted Pentium chip
occasionally made mistakes when dividing floating-point
numbers within a specific range. An error of 0.006.
Eventually Intel replaced the chips for anyone who
complained.
● Cause: The divider in the Pentium floating point unit had a
flawed division table, missing about five of a thousand
entries.

35

Y2K - 1999
● Cost: $500 billion
● Disaster: Businesses spent billions on programmers to fix a glitch in legacy
software. While no significant computer failures occurred, preparation for the Y2K
bug had a significant cost and time impact on all industries that use computer
technology.
● Cause: To save computer storage space, legacy software often stored the year
for dates as two digit numbers, such as “99″ for 1999. The software also
interpreted “00″ to mean 1900 rather than 2000, so when the year 2000 came
along, bugs would result.

36

USS Yorktown - 1997

● Cost: Yorktown had to be towed back.


● Disaster: On 21 September 1997, all the machines on
the network went down, causing the ship's propulsion
system to fail.
● Cause: while on maneuvers off the coast of Cape
Charles, Virginia, a crew member entered a zero into a
field causing a divide by zero error in the ship's Remote
Data Base Manager.

37

12
11/3/2024

F22 Raptor - 2007


● Cost: $44,259 per flying hour
● Disaster: On Feb. 11 2007, twelve Raptors flying from Hawaii to Japan were
forced to turn back when a software glitch crashed all of the F-22s' on-board
computers as they crossed the international date line.
● Cause: Every fighter completely lost all navigation and communications when
they crossed the international date line. They reportedly had to turn around
and follow their tankers by visual contact back to Hawaii. According to the
CNN story, if they had not been with their tankers, or the weather had been
bad, this would have been serious.

38

Mars Climate Orbiter Crashes - 1999

● Cost: 125+ million dollars


● Disaster: The space craft crashed into Mars.
● Cause: The contractor who was given the responsibility
of planning the navigation system got the specifications
from NASA but instead of using the metric system, he
carried out measurements using imperial units.

39

World War III… Almost (1983)


● Cost: Nearly all of humanity
● Disaster: The Soviet early warning system falsely indicated the United
States had launched five ballistic missiles. Fortunately the Soviet duty
officer had a “funny feeling in my gut” and reasoned if the U.S. was really
attacking they would launch more than five missiles, so he reported the
apparent attack as a false alarm.
● Cause: A bug in the Soviet software failed to filter out false missile
detections caused by sunlight reflecting off cloud-tops.

40

13
11/3/2024

Metodologías ágiles

41

¿Qué es desarrollo ágil?

● La insatisfacción con el overhead de los métodos


de diseño de software en los 80s y 90s llevó a la
creación de los métodos ágiles.
○ Enfocarse en código.
○ Enfoque iterativo.
○ Ofrecer software funcional rápidamente y
evolucionar rápidamente para satisfacer los
requisitos cambiantes.
○ Reduce overhead en el proceso.

42

Manifesto for Agile Software Development

We are uncovering better ways of developing software


by doing and helping others do it.
Through this work we have come to value:

Individuals and interactions over processes and tools


Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on the right, we value
the items on the left more.

43

14
11/3/2024

Tarea para la próxima clase

● Leer el manifestó ágil, y explicar en un documento corto


(1 o 2 párrafos):
○ ¿Cuál de las 4 valoraciones principales y cuál de los
principios les llama más la atención, y por qué?

https://agilemanifesto.org/iso/es/manifesto.html

44

Próxima tema:
Metodologías ágiles

45

15

También podría gustarte