Ingeniería de Software & Ciclos de Vida - Javerianametorres/Materias/IngSoftware/... ·...
Transcript of Ingeniería de Software & Ciclos de Vida - Javerianametorres/Materias/IngSoftware/... ·...
24-Ene-07 Msc. Luis Carlos Díaz 5
Estándar IEEE 1074
PRE- DESARROLLOExploración
Asignación del sistema
DESARROLLORequerimientos
AnálisisDiseño
Implementación
POS- DESARROLLOInstalación
Operación & SoporteMantenimiento
Retiro
PROCESOS INTEGRALESVerificación, Validación, Adm. de configuraciones, Documentación, Entrenamiento
ADMINISTRACIÓN DEL PROYECTOInicio, Supervisión, Control, Calidad
Object Model of the Software Life Cycle
Process group
Activity
Work Product
Resource
Task
Process
Money
Time
Participant
produces
consumes
Phase
*
*
**
*
Software life cycle
*
24-Ene-07 12
Ciclo de Vida – Proceso de Desarrollo
<<include>>
<<include>><<include>>
Client End userDeveloperProject manager
Software development
System developmentProblem definition System operation
Administrator
24-Ene-07 13
Tipo de Modelo de Ciclo de Vida
Por Actividad
Systemupgradeactivity
Marketcreationactivity
Systemdevelopmentactivity
System definitionactivity
System developmentactivity
System Operationactivity
24-Ene-07 14
Tipo de Modelo de Ciclo de Vida
Por Entidad
Object DesignDocument
Requirements AnalysisDocument
Executable system
Problem Statement
Software Development
System DesignDocument
Test Manual
24-Ene-07 16
Cascada
RequirementsProcess
SystemAllocationProcess
ProjectInitiationProcess
ConceptExploration
Process
DesignProcess
ImplementationProcess
InstallationProcess
Operation &Support Process
Verification& Validation
Process
24-Ene-07 17
Modelo VSystem
RequirementsAnalysis
Implementation
PreliminaryDesign
DetailedDesign
SoftwareRequirementsElicitation
Operation
ClientAcceptance
RequirementsAnalysis
UnitTest
SystemIntegration
& Test
ComponentIntegration
& Test
24-Ene-07 18
Waterfall model phases
Requirements analysis and definition System and software design Implementation and unit testing Integration and system testing Operation and maintenance The main drawback of the waterfall model is
the difficulty of accommodating change after the process is underway. One phase has to be complete before moving onto the next phase.
24-Ene-07 19
Waterfall model problems
Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements.
Therefore, this model is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process.
Few business systems have stable requirements. The waterfall model is mostly used for large systems
engineering projects where a system is developed at several sites.
Evolutionary development
Exploratory development Objective is to work with customers and to
evolve a final system from an initial outline specification. Should start with well-understood requirements and add new features as proposed by the customer.
Throw-away prototyping Objective is to understand the system
requirements. Should start with poorly understood requirements to clarify what is really needed.
Evolutionary development
Problems Lack of process visibility; Systems are often poorly structured; Special skills (e.g. in languages for rapid
prototyping) may be required.
Applicability For small or medium-size interactive systems; For parts of large systems (e.g. the user
interface); For short-lifetime systems.
Component-based software engineering
Based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-the-shelf) systems.
Process stages Component analysis; Requirements modification; System design with reuse; Development and integration.
This approach is becoming increasingly used as component standards have emerged.
Process iteration
System requirements ALWAYS evolve in the course of a project so process iteration where earlier stages are reworked is always part of the process for large systems.
Iteration can be applied to any of the generic process models.
Two (related) approaches Incremental delivery; Spiral development.
Incremental delivery
Rather than deliver the system as a single delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality.
User requirements are prioritised and the highest priority requirements are included in early increments.
Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve.
Incremental development advantages
Customer value can be delivered with each increment so system functionality is available earlier.
Early increments act as a prototype to help elicit requirements for later increments.
Lower risk of overall project failure. The highest priority system services
tend to receive the most testing.
Sawtooth Client’s UnderstandingDeveloper’s Understanding
RequirementsElicitation
Implementation
SystemDesign
ObjectDesign
RequirementsAnalysis
UnitTest
PrototypeDemonstration 2
Client
Developer
ClientAcceptance
SystemIntegration
& Test
Integration& Test
PrototypeDemonstration 1
Sawtooth
Shows the user and software developer’s perception of the system at different levels of abstractions over time.
To make sure that these perceptions meet at the end, checkpoints are introduced during development, usually by getting the client involved at their level of abstraction.
Sharktooth User’s Understanding
SystemRequirementsElicitation
Implementation
SystemDesign
ObjectDesign
RequirementsAnalysis
UnitTest
PrototypeDemo 1
PrototypeDemo 2
Client
Manager
Developer
DesignReview
ClientAcceptance
SystemIntegration
& Test
ComponentIntegration
& Test
Manager’s UnderstandingDeveloper’s Understanding
Extreme programming
An approach to development based on the development and delivery of very small increments of functionality.
Relies on constant code improvement, user involvement in the development team and pairwise programming.
Covered in Chapter 17
34
Las 12 prácticas de XP
Entregas frecuentes y
pequeñas
Planear el desarrollo a
“corto” plazo
Diseños simples
Integración permanente
Estandarización del
código
Programación por pares
Propiedad corporativa del
código
Pruebas automáticas
permanentes
Refactoring
El cliente al lado
40 horas de trabajo
Metáfora (lenguaje común)
Spiral development Process is represented as a spiral rather
than as a sequence of activities with backtracking.
Each loop in the spiral represents a phase in the process.
No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required.
Risks are explicitly assessed and resolved throughout the process.
Spiral model sectors
Objective setting Specific objectives for the phase are identified.
Risk assessment and reduction Risks are assessed and activities put in place to reduce
the key risks. Development and validation
A development model for the system is chosen which can be any of the generic models.
Planning The project is reviewed and the next phase of the spiral
is planned.
The Rational Unified Process
A modern process model derived from the work on the UML and associated process.
Normally described from 3 perspectives A dynamic perspective that shows phases over
time; A static perspective that shows process
activities; A practive perspective that suggests good
practice.
RUP phases
Inception Establish the business case for the system.
Elaboration Develop an understanding of the problem
domain and the system architecture. Construction
System design, programming and testing. Transition
Deploy the system in its operating environment.
Fases e Iteraciones en RUP
Alcance y Objetivos Arquitectura Versión Beta Versión Final
Incepción Elaboración Construcción Transición
Iteración 1
Iteración 2
Iteración 3
Iteración 4
Entregas internas
(Versiones)
Modelado del Negocio
Requerimientos
Análisis y Diseño
Implementación
Pruebas (Fiabilidad, Funcionalidad, Rendimiento)
Fases:
Iteraciones:
Disciplinas:
RUP good practice
Develop software iteratively Manage requirements Use component-based architectures Visually model software Verify software quality Control changes to software
Static workflows
Workflow Description
Business modelling The business processes are modelled using business use cases.
Requirements Actors who interact with the system are identified and use cases aredeveloped to model the system requirements.
Analysis and design A design model is created and documented using architecturalmodels, component models, object models and sequence models.
Implementation The components in the system are implemented and structured intoimplementation sub-systems. Automatic code generation from designmodels helps accelerate this process.
Test Testing is an iterative process that is carried out in conjunction withimplementation. System testing follows the completion of theimplementation.
Deployment A product release is created, distributed to users and installed in theirworkplace.
Configuration andchange management
This supporting workflow managed changes to the system (seeChapter 29).
Project management This supporting workflow manages the system development (seeChapter 5).
Environment This workflow is concerned with making appropriate software toolsavailable to the software development team.
Issue based Aims at dealing with frequent changes. Examples of issues are
“How do we set up the initial teams?” “Should the mechanic have access to driver-specific
information“ “What is the appropriate middleware?” “What software architecture shall we use?”
The status of an issue can be closed or open.
The life cycle models we described earlier can then be seen as special cases of the issue-based model.
24-Ene-07 Msc. Luis Carlos Díaz 46
The requirements engineering process
Feasibilitystudy
Requirementselicitation and
analysisRequirementsspecification
Requirementsvalidation
Feasibilityreport
Systemmodels
User and systemrequirements
Requirementsdocument
The software design process
Architecturaldesign
Abstractspecification
Interfacedesign
Componentdesign
Datastructuredesign
Algorithmdesign
Systemarchitecture
Softwarespecification
Interfacespecification
Componentspecification
Datastructure
specification
Algorithmspecification
Requirementsspecification
Design activities
Design products
The testing process
Sub-systemtesting
Moduletesting
Unittesting
Systemtesting
Acceptancetesting
Componenttesting
Integration testing Usertesting
Testing phases
Requirementsspecification
Systemspecification
Systemdesign
Detaileddesign
Module andunit codeand tess
Sub-systemintegrationtest plan
Systemintegrationtest plan
Acceptancetest plan
Service Acceptancetest
Systemintegration test
Sub-systemintegration test
System evolution
Assess existingsystems
Define systemrequirements
Propose systemchanges
Modifysystems
Newsystem
Existingsystems
Key points
Software processes are the activities involved in producing and evolving a software system. They are represented in a software process model
General activities are specification, design and implementation, validation and evolution
Generic process models describe the organisation of software processes
Iterative process models describe the software process as a cycle of activities
Relación con el Calendario del Proyecto Procesos de Administración Procesos Cruzados:
Configuración Calidad Riesgos Documentación Aseguramiento de la Calidad
24-Ene-07 Msc. Luis Carlos Díaz 54
Key points
Requirements engineering is the process of developing a software specification
Design and implementation processes transform the specification to an executable program
Validation involves checking that the system meets to its specification and user needs
Evolution is concerned with modifying the system after it is in use
CASE technology supports software process activities
24-Ene-07 Msc. Luis Carlos Díaz 56
Ejercicio
Ensayo sobre RUP
Cuadro comparativo entre modelos de ciclo de vida
Quiz
24-Ene-07 Msc. Luis Carlos Díaz 57
Bibliografía & Referencias
Bernd Bruegge: Ingeniería de Software Orientado a Objetos. Prentice Hall, 2000.
Jaime Oyarzo Espinosa: Notas de clase Introducción a la Informática. Universidad de Alcalá
Hugo Cendales: Notas de clase ADOO. Universidad Javeriana, 2007.
Luis Carlos Díaz: Notas de clase ADOO. Universidad Javeriana, 2006.
Sommerville, Ian, Ingeniería de Software, Adison Wesley, 2005.