• No results found

Análisis, diseño y construcción de Software

N/A
N/A
Protected

Academic year: 2021

Share "Análisis, diseño y construcción de Software"

Copied!
39
0
0

Loading.... (view fulltext now)

Full text

(1)

Análisis, diseño

y construcción

de Software

(2)

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

(3)

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.

(4)

Evaluación

● Parciales: ● Examen: 30% ● Tareas y proyectos: 70% ● Calificación Final: ● Primer parcial: 20% ● Segundo parcial: 20% ● Tercer parcial: 20% ● Proyecto final: 40% Nota

La fecha de entrega del proyecto coincide

Nota

(5)

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!”.

(6)
(7)

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.

(8)

Typical problems

● Bugs in systems.

● Systems do not comply with user requirements. ● Release delays and cancelation.

● Development exceed projected costs.

(9)

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

(10)

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”

(11)

What's the goal?

To produce low-cost, high-quality software on time.

Cost

(12)

Two perspectives

1) Software as a product.

(13)

Product: what's software?

● Programs

● Documentation ● Processes

(14)

Product: features

● Usability ● Maintainability ● Reliability ● Efficiency Note

software product <> programming

programming is a means, not an end

Note

software product <> programming

(15)

Product: client

● Provides resources,

expects results.

● Defines requirements.

● Client satisfaction is your

(16)

Process: what?

(17)

Process: activities

● Specification. ● Design. ● Development. ● Validation. ● Deployment. ● Evolution/maintenance.

(18)

Process: development models

Simplified representations of the software process presented from a specific perspective:

Perspective examples:

● Workflow: activity sequence. ● Dataflow: information flow.

(19)

Process: model examples

● Waterfall ● Evolutionary ● Spiral ● Iterative ● Agile

(20)

Process: costs

Typical values are:

● 60 Development%

● 40 Tests/validation%

(21)

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.

(22)
(23)

Exercise

● What is a software process.

● Which software process models have you used? ● Tools?

● Examples? ● Uses?

● Strengths and weaknesses? ● Observations?

(24)

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.

(25)
(26)
(27)
(28)

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.

(29)
(30)

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.

(31)
(32)

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

(33)

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

(34)

Agile methodologies

Advantages ● Evolutive. ● Mesurable. ● Predictive. Drawbacks ● Unstructured. ● Incomplete.

(35)

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

(36)

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.

(37)

The bottom, bottom line

There is no perfect model, the best one

depends on the project and the team.

(38)

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.

(39)

Acknowledgements for

today's lecture

● Jeremy R. Cooperstock. Human-computer Interaction.

Lecture Notes.

● Karon MacLean. Physical user interface design. Course

References

Related documents

• Method for categorizing the maturity and quality of a software process used by software development organizations.. Capability Maturity

Since 2006, we have utilized the sepsis bundle in our ICU [6], the treatment recommendations were organized in two bundles: a resuscitation bundle (6 tasks to begin immediately and

Software  design  is  a  process  by  which  the  software  requirements  are  translated  into  a  representation  of  software  components,  interfaces,  and 

Software Process Models: Software Process, Generic Process Model – Framework Activity, Task Set and Process Patterns; Process Lifecycle, Prescriptive Process Models,

A software development process (or model) is an approach to building, deploying and maintaining software?. The motivation behind defining a process for software development is to

• multiply and divide integers using one of two methods: the table method or the like/unlike method.. Integers – Multiplying and

Building an effective contact centre can greatly enhance your business by increasing customer satisfaction and reducing churn.. However it is not a trivial undertaking and should

©Ian Sommerville 2000 Software Engineering, 6th edition.. Chapter 3 (extract) Slide