Document 7175559

Download Report

Transcript Document 7175559

Software Engineering Process José Onofre Montesa Andrés Universidad Politécnica de Valencia Escuela Superior de Informática Aplicada 2003-2004

Software as a human work.

• Some authors compare software with writing books.

– A production of our brains, – A description of realities and fictions.

• When software is big, it’s like a novel with a lot of books.

– Personalities of actors, – Facts in the history.

GPII-P1B. Software Engineering Process 1

A Software Definition.

• The set of information that: – Produces in a machine the desired behavior in an efficient and effective manner, – (Code) – Make users use the system in an efficient manner.

– (manuals and helps) – Can be maintained in an efficient and effective manner by developers.

– (development documentation) GPII-P1B. Software Engineering Process 2

Why we said that software development isn't easy?

• There are same reasons, we will see ….

• But it’s true that a lot of projects fail.

• We will see that with an example: – First some statistics, about 8 USA projects.

– Software Characteristics.

GPII-P1B. Software Engineering Process 3

statistics, about 8 USA projects.

Área: Sistemas de Defensa en Tiempo Real Pagado pero no entregado Entregado pero no utilizado abandonado o rechazado Utilizado después de cambios Utilizado como se entrego 0 0.5

1 1.5

2 2.5

Millones de dolares 3 3.5

GPII-P1B. Software Engineering Process 4

Software Characteristic’s.

• It is immaterial and not visible • The buyer can evaluate it only when it has been developed.

• Software is developed.

• It is complex. Present systems are conformed by thousands of functions with complex interfaces among them.

• It is excessively malleable.

GPII-P1B. Software Engineering Process 5

Software is developed.

• In any production system we can observe two phases: Development and production.

• Development usually is slow and expensive • Mass production has stable cost. • With Software we have the same but… • A lot of applications are developed specifically, without using preexistent components.

• Production is not considered.

GPII-P1B. Software Engineering Process 6

software is excessively malleable.

• Every body ask for changes even not really necessaries.

• “One of the things I don’t understand is why a software application seems to become more troublesome as it ages”: – Failure curve for Hardware.

– Failure curve for Software (idealized).

– Actual failure curve for Software.

GPII-P1B. Software Engineering Process 7

Failure curve for Hardware..

Infant mortality Wear out Obsolesce Time GPII-P1B. Software Engineering Process 8

Failure curve for Software (idealized)..

Obsolescence Continues at same rate until obsolescence Time GPII-P1B. Software Engineering Process 9

Actual failure curve for Software.

Change Change Change Obsolescence Idealized curve Time GPII-P1B. Software Engineering Process 10

Lots of critical factors in different environments.

• Real time Software, • Internet, • Transactional, • PC.

GPII-P1B. Software Engineering Process 11

What do we mean with “Development Process”?

Desires, needs, Specifications, … GPII-P1B. Software Engineering Process Software 12

Introduction: Which is the usual process?

• When we develop any project usually we evolve from abstract ideas forward other more concert and more fulfitment. – We want to develop an accounting system, » We develop an specification.

– With PHP y MySQL, » We develop the design.

– And then we code the system.

GPII-P1B. Software Engineering Process 13

Depending on the degree of accuracy we work in each step we will arrive to a better end.

• ¿Me podrías indicar, por favor, hacia dónde tengo que ir?

• Eso depende de adónde quieras llegar, contesto el gato.

• A mí no me importa demasiado adónde... empezó a explicar Alicia.

• En ese caso, da igual cualquier dirección interrumpió el Gato.

• ...Siempre que llegue a alguna parte terminó Alicia a modo de explicación.

• Basta que empieces a andar - le aseguro el Gato-, dando un paso tras otro.

– Alicia en el país de las maravillas GPII-P1B. Software Engineering Process 14

Engineering and Software Engineering • Were we are?

• What an engineer does?

• Definitions about Software Engineering • Basic Techniques used by engineers GPII-P1B. Software Engineering Process 15

Were we are?

• With Problems, we need: – Development Techniques • In order to minimize the complexity – Methods and concepts • Enabling producers and users explore, as soon as possible the software system nature.

– Techniques • To reduce the effects of modifications in the development and use.

GPII-P1B. Software Engineering Process 16

What an engineer does?

• Build artifacts with same limitations in expenses, using the knowledge and theories of a science around the artifact function.

GPII-P1B. Software Engineering Process 17

Software Engineering Definition (NATO ‘68) • Software engineering is the establishment and use of reasonable engineering bases with the objective of obtaining software in an economical way , of trustable and works actual machines. efficiently in the GPII-P1B. Software Engineering Process 18

Definición (R.E. Fairley 1985) • We have defined software as the technological discipline concerned with systematic software products that are developed and modified with production and maintenance on time and within cost estimates • In adition, software engineering is concerned managerial issues that lie outside the domain of traditional programming.

of ...

GPII-P1B. Software Engineering Process 19

Software engineering characteristics (Van Vliet 1993) • Construction of big systems • complexity control • Cooperation between implied people • Software evolution • Development efficiency • Real users support.

GPII-P1B. Software Engineering Process 20

Structure of Software Engineering (Thayer 1988) Software Development Analizing Designing Coding Testing Software Engineering Project Mangement Planning Organization Staffing Directing Controlling Software Metrics Software Maintenance Reliavility Usability Flexibility Maintainability Reusability Etc.

Error correction Modification GPII-P1B. Software Engineering Process 21

Basic Techniques used by engineers • Historically people use this techniques: – Modeling – Product Division – Process Division • We must use this techniques in the software development.

GPII-P1B. Software Engineering Process 22

Modeling. • It is a simplification of the object in the real world, – Its enough real to obtain information of the behavior – And use as a base to the development.

GPII-P1B. Software Engineering Process 23

Product Division.

• We divide the product and each part can be done by one member of the development group.

GPII-P1B. Software Engineering Process 24

Process Division.

• It implies dividing the development in steps. Usually we talk about specification, design and`production. What ?

How?

Buiding Test GPII-P1B. Software Engineering Process 25

We found this situation in the software development.

SOFTWARE life cycle SOFTWARE methodologies GPII-P1B. Software Engineering Process 26

Software life cycle • Concrete: – The productive steps in the project – Objectives in each step, and – Deliverables obtained in each step, and it’s characteristics.

GPII-P1B. Software Engineering Process 27

Software Life Cycles – The more representatives are: – Put the tail to the horse.

– Classical or Waterfall.

– Prototyping (Discard) – Incremental – Evolutionary Prototyping – Software Reuse – Spiral.

– ...

GPII-P1B. Software Engineering Process 28

Poner la cola al burro • Se coge a uno o varios informáticos, • Se les muestra más o menos el problema, • Se les deja solos en un cuarto a oscuras, • Transcurrido un tiempo se abre la puerta.

GPII-P1B. Software Engineering Process 29

La Versión Ideal

Requerimientos del Sistema A alguien se le ha ocurrido la Brillante idea de Informatizar ¿?

Investigación Inicial, Identificación de Necesidades, Encuesta, etc.

Requerimientos del Software Análisis Estudio de Viabilidad Especificación Diseño Preliminar y Detallado Diseño Especificación de diseño Codificación y Depuración Codificación Aplicación Test y pruebas previas a la OPERACIÓN Validación Instalación, Explotación OPERACIÓN Y MANTENIMIENTO

GPII-P1B. Software Engineering Process 30

El Helado de Cucurucho

Identificación de Necesidades Especificación Esencial USUARIOS CLIENTES Validación Especificación Física ANALISTA Empaquetado Explotación Diseño Integración DISEÑADORES Y CODIFICADORES Codificación

GPII-P1B. Software Engineering Process 31

Construcción Rápida de Prototipos Desechables • Al igual que otras ingenierías se utilizan los prototipos para que el cliente observe, confirme y mejore el producto – Este enfoque es apropiado cuando: • El cliente no tiene claro lo que quiere, • Al cliente le gustaría ver algo similar para poder hacerse una idea de lo que obtendrá GPII-P1B. Software Engineering Process 32

El ciclo de vida de Prototipos Desechables es el siguiente:

Obtención Especificación Construcción Prototipo Mejora de la Especificación Aceptado Evaluación Cliente NO Aceptado Ciclo de Vida Clásico

GPII-P1B. Software Engineering Process 33

Incremental

Bloque 1 Requeri mientos Diseño Impleme ntación Pruebas Bloque N Requerimientos Requerimientos Bloque 1

o

Diseño Impleme ntación Pruebas Requeri mientos Diseño Impleme ntación Pruebas

Permite el desarrollo concurrente

Bloque N Diseño Impleme ntación Pruebas

GPII-P1B. Software Engineering Process 34

Evolución de Prototipos Observación Requerimientos Abstracción Validación Especificación Verificación Empezamos por los requerimientos más claros, menos complejos y más necesarios. Prototipo Verificación Prototipo rápido Experimentar Validación GPII-P1B. Software Engineering Process 35

Reutilización de Software • Tiene como objetivos: – Reducir el coste del software.

– Producir sistemas de mayor calidad.

• Se basa en reutilizar Diseños, programas, módulos y datos.

• Es compatible con el prototipo evolutivo.

GPII-P1B. Software Engineering Process 36

En espiral.

Determinar objetivos, alternativas, restricciones Evaluar alternativas, identificar y resolver riesgos REVISIÓN Acuerdo Planificar las próximas fases Desarrollar, verificar GPII-P1B. Software Engineering Process 37

Metodologías de Desarrollo del Software • Métodos informales • Métodos Semiformales • Métodos Formales GPII-P1B. Software Engineering Process 38

Métodos informales • Joaquín Lucio-Villegas los clasifica como: – Quick & Dirty (USA) – Match stick box (Europa) – Balones p'alante y maricón el último GPII-P1B. Software Engineering Process 39

Métodos Semiformales • Métodos Estructurados – SA/SD (structured analysis & structured design) – Métrica • Métodos Orientados a Objetos – OMT – UML GPII-P1B. Software Engineering Process 40

Métodos Estructurados • Métodos Orientados a la Estructura de los Datos • Métodos de flujo de datos

PROCESOS DATOS

GPII-P1B. Software Engineering Process 41

Métodos Orientados a Objetos • Los métodos orientados a objeto describen e implementan los sistemas de información desde un punto de vista ontológico.

GPII-P1B. Software Engineering Process 42

Métodos Formales – Los métodos formales permiten al ingeniero de software especificar, desarrollar y verificar un sistema informático mediante la aplicación de una notación matemática rigurosa. – Utilizando un lenguaje de especificación formal, un método formal proporciona los medios de especificar un sistema de forma que se aseguren, de forma sistemática, la consistencia, la completitud y la corrección.

– Se suelen basar en notaciones matemáticas similares a las del álgebra de conjuntos y la lógica GPII-P1B. Software Engineering Process 43

Madurez del proceso en la organización de desarrollo • La misma industria, diferentes niveles de madurez.

GPII-P1B. Software Engineering Process 44

Madurez del proceso en la organización de desarrollo • Hay factores que no quedan claramente reflejados en el ciclo de vida ni en las técnicas de desarrollo.

• Los factores no estudiados son: – El cumplimiento de los plazos de entrega.

– La calidad (número de errores en el Software).

– El coste del proyecto.

GPII-P1B. Software Engineering Process 45

CMM (Capability Maturity Model) • Proporciona una Guía sobre como: – controlar los procesos: • de desarrollo del software.

• de mantenimiento.

– Hacer evolucionar hacia una cultura de: • Ingeniería del software.

• Gestión eficiente.

GPII-P1B. Software Engineering Process 46

Evolución de las organizaciones según el CMM

Control Básico Control del Proceso

Optimización

Definición del Proceso Medición del Proceso

Gestionado Definido Repetible Inicial GPII-P1B. Software Engineering Process 47

Correlación entre estimaciones y niveles de madurez GPII-P1B. Software Engineering Process 48

Nivel Inicial.

• Según las circunstancias utilizamos un proceso distinto. (algunos caóticos) • A medida, • Poco formalizado, • Uso de herramientas informales.

• Pocos procesos definidos.

• El éxito depende del esfuerzo individual.

GPII-P1B. Software Engineering Process 49

Nivel de Repetición.

• Se tiene procesos estables de desarrollo, con control estadístico.

• Uso de datos históricos • Establecimiento de procesos de gestión de proyecto, para hacer seguimiento de: – Coste.

– Planificación.

– Funcionalidad.

GPII-P1B. Software Engineering Process 50

Nivel de Definición.

• Proceso de desarrollo perfectamente definido y estandarizado.

• Integrado en la organización.

• Bien documentado.

• Todos los proyectos utilizan una versión documentada y aprobada de proceso.

GPII-P1B. Software Engineering Process 51

Nivel de Gestión.

• Mejoras de calidad sustanciales.

• Control cuantitativo de productos y proceso a través de – Mediciones del proceso comprensibles.

– Mediciones de la calidad GPII-P1B. Software Engineering Process 52

Nivel de Optimización.

• A través de mediciones del proceso utilizando ideas y tecnologías innovadoras obtenemos: – Mejoras en calidad y cantidad.

GPII-P1B. Software Engineering Process 53

Resumen • Hemos visto: – Como trabajan los ingenieros, – Definiciones de ingeniería del software, – El ciclo de vida del software, – Metodológicas de desarrollo – Madurez del proceso de desarrollo.

GPII-P1B. Software Engineering Process 54

Bibliografía • Ince, D.C., Ingeniería del Software, Addison-Wesley, 1993.

• Pressman, R.S., Ingeniería del software un enfoque práctico, McGrawHill, 1997.

• Thayer, R.H., Software Engineering Project Management. IEEE Computer Press 1997.

GPII-P1B. Software Engineering Process 55