Análisis, diseño
y construcción
de Software
Presentación
Postdoc / ETH Zurich
2007-2009
Doctorado / INPG France
2003-2004
DEA (Master)/ INPG France
2002-2003
Master / ITESM México
2001-2002
Industria / México
1993-2001
ISC / ITESM México
1993
Políticas del curso
● Documentos en formato PDF. ● Tareas: por mail a
dichodaemon@gmail.com
● Por favor, apaga tu celular,
computadora, phaser, etc.
● Si no asistes a clase, eres
responsable de informarte de lo dicho en ella.
● Si requieres asesoría, por favor
avísame con al menos un día de anticipación.
Evaluación
● Parciales: ● Examen: 30% ● Tareas y proyectos: 70% ● Calificación Final: ● Primer parcial: 20% ● Segundo parcial: 20% ● Tercer parcial: 20% ● Proyecto final: 40% NotaLa fecha de entrega del proyecto coincide
Nota
Bibliografía
● Craig Larman. “Applying UML and patterns”. 3a edición.
Addison Wesley, 2004.
● Johanna Rothman. “Manage it!”. Pragmatic Bookshelf,
2007.
● Martin Fowler. “UML Distilled”. 3a edición. Addison
Wesley, 2004.
● Joel Spolsky. “The best software writing”. Apress, 2005. ● Jarred Richardson and William Gualtney Jr. “Ship it!”.
software = problems
NASA space shuttle program:
● Cost: 10,000,000,000 USD. ● Time: 3 years late.
● First Columbia launch delayed
due to a single bug.
● Introduced 2 years ago (a
parameters was changed from 50 to 70 ms.).
● Undetected after thousands of
hours of tests.
Typical problems
● Bugs in systems.
● Systems do not comply with user requirements. ● Release delays and cancelation.
● Development exceed projected costs.
Context
● All industrialized economies are highly dependent on
software.
● Every day, more systems are controlled by software. ● Industrialized countries spend a very significant part of
Software engineering
● “Software engineering is a systematic approach to
develop, operate, maintain and retire software”
● “Software engineering is the application of science and
mathematics thanks to which computing capacities become useful through programs, procedures and documentation”
What's the goal?
To produce low-cost, high-quality software on time.
Cost
Two perspectives
1) Software as a product.
Product: what's software?
● Programs
● Documentation ● Processes
Product: features
● Usability ● Maintainability ● Reliability ● Efficiency Notesoftware product <> programming
programming is a means, not an end
Note
software product <> programming
Product: client
● Provides resources,
expects results.
● Defines requirements.
● Client satisfaction is your
Process: what?
Process: activities
● Specification. ● Design. ● Development. ● Validation. ● Deployment. ● Evolution/maintenance.Process: development models
Simplified representations of the software process presented from a specific perspective:
Perspective examples:
● Workflow: activity sequence. ● Dataflow: information flow.
Process: model examples
● Waterfall ● Evolutionary ● Spiral ● Iterative ● AgileProcess: costs
Typical values are:
● 60 Development%
● 40 Tests/validation%
Methods
Structured methodologies include the following:
● Development models.
● Notation: documents, graphics, etc. ● Rules: restrictions to apply to models.
● Recommendations: best practices, errors, case studies.
Bottom line
Software engineering is more an art than a science.
Bottom line
Software engineering is more an art than a science.
Exercise
● What is a software process.
● Which software process models have you used? ● Tools?
● Examples? ● Uses?
● Strengths and weaknesses? ● Observations?
Software development
process
A structured set of activities to develop a software system. Activities: ● Requirements. ● Design. ● Development. ● Test. ● Maintenance.
Software process model: An abstract, prescriptive representation of a process.
Serial model: waterfall
Drawbacks:
● Inflexible partitioning on stages. ● Relies on perfect hindsight.
● Cannot adapt to changing requirements,or incorporate
new knowledge.
● Only appropriate when the requirements are well
understood.
Iterative model: spiral
Advantages:
● Copes with schedule risk. ● Prototyping allows learning.
Drawbacks:
● Users treat the prototype as the product.
● Specification is left to the designer/developer. ● Not clear how to analyze risk.
Incremental development
Advantages
● System functionality is available earlier.
● Early increments may work as prototypes. ● Handles schedule risk.
● Highest priority functionality receives the most
testing. Drawbacks
Agile methodologies
● Examples: XP (Extreme Programming), Scrum, Kanban. ● New approach to development based on the
development and delivery of very small increments of functionality.
● Relies on constant code improvement and user
Agile methodologies
Advantages ● Evolutive. ● Mesurable. ● Predictive. Drawbacks ● Unstructured. ● Incomplete.Formal models
● Based on the transformation of a mathematical
specification through different representations to an executable program.
● Transformations are ‘correctness-preserving’ so it is
straightforward to show that the program conforms to its specification.
● Embodied in the ‘Cleanroom’ approach to software
Formal models
Drawbacks
● Need for specialised skills and training to apply the
technique.
● Difficult to formally specify some aspects of the
system such as the user interface.
● Changes require new transformations and proofs. ● Hard to scale.
The bottom, bottom line
There is no perfect model, the best one
depends on the project and the team.
Assignment
Read the following two articles “How many Microsoft employees does it take to change a Light Bulb” and “Great Hackers” then write a two-page essay on your opinion about them.
Acknowledgements for
today's lecture
● Jeremy R. Cooperstock. Human-computer Interaction.
Lecture Notes.
● Karon MacLean. Physical user interface design. Course