crisis del software - universidad nacional de colombia · crisis del software gabriel mañana...
TRANSCRIPT
Crisis del SoftwareGabriel Mañana Guichón
Universidad Nacional de Colombia
Wikipedia (2014):
“Software crisis was a term used in the early days of computing science for the difficulty of writing useful and efficient computer programs in the required time.”
(LOL)
McKinsey & Company + Oxford University Research (2012):
“17% of software projects go so badly, they threaten the very existence of the company.”
http://www.mckinsey.com/insights/
(*) 5400 IT projects ~ US$66 billion
McKinsey & Company + Oxford University Research (2012):
“On average, large IT projects run 45% over budget* and 7% over time, while delivering 56% less value than predicted.”http://www.mckinsey.com/insights/
http://www.foundersfund.com
Causas:
● Complejidad del Hardware (multi-threading, multi-core, ...)
● Complejidad del Software (sistemas distribuidos, fallas parciales, apps móviles, ...)
● CONTROL DE CALIDAD (manual, incompleto, deficiente, ninguno, ...)(DB, GUI?)
Pruebas:
● Modelo de Cascada (A/D/I/M)Pruebas al final (eventualmente)
● Metodologías ÁgilesPruebas ANTES del código
* Test-Driven Development (TDD)* Behavior-Driven Development
(BDD)
Dan North on Behavior-Driven Development:
“Behaviour-driven development is about implementing an application by describing it from the point of view of its stakeholders.”
http://www.infoq.com/presentations/bdd-dan-north
Dan North on Behavior-Driven Development:
“Testing is not just about keeping defects from the users; instead, it’s about helping the team to understand the features that the users need and to deliver those features reliably and predictably.”
S. Freeman and N. Pryce, Growing Object-Oriented Software, Guided by Tests. Crawfordsville, IN: Pearson Education, 2009, ch. 1, pp. 8.
Dan North on Behavior-Driven Development:
“Write the tests for your code before writing the code itself.”
http://www.infoq.com/presentations/bdd-dan-north
Behavior-Driven Development (BDD)Derivado de:
* TDD + CI* Domain-Driven Design* Acceptance Test-Driven Planning* Neurolinguistic Programming (NLP)* Systems Thinking
Ciclo BDD:
S. Freeman and N. Pryce, Growing Object-Oriented Software, Guided by Tests. Crawfordsville, IN: Pearson Education, 2009, ch. 1, pp. 8.
Write a failing
acceptance test
Write a failing unit
test
Make the test pass
Refactor
Behavior-Driven Development (BDD)
* User story: "In order to [benefit] as a [role] I want [feature]"
* Scenarioi: Given [initial context], when [event occurs], then [ensure some outcome]
Frameworks:
● JBehave (Java), RBehave (Ruby)● Cucumber (Ruby, Java, Groovy, C#, ...) ● Jnario (Java)(BMW, Xtend, Xtext)● RSpec (Ruby), MSpec (C#)
● SpecFlow, StoryQ● Many more
ANSI, American National Standards Institute
Nota:
LAS NORMAS TÉCNICAS (ISO) GARANTIZAN LA CALIDAD DEL PROCESO, NO LA CALIDAD DEL PRODUCTO.
Vínculos:
● 10 historical software bugs● BSoD ● List of software bugs● Toyota's electronic throttle control system (ETCS)(2010, 89 people killed)
Dan North on InfoQFreeman & Pryce