SlideShare a Scribd company logo
Software process life cycles System Analyst And Design CS-05 IGNOU
Software and entropy A virtue of software: relatively easy to change Otherwise it might as well be hardware Nevertheless, the more complex a software system gets, the harder it is to change- -why? Larger software systems are harder to understand The more changes get introduced into a system, the more it tends toward entropy  I.e., its internal order breaks down Multimedia:  http://www.cse.lehigh.edu/~cimel/prototype.html
Planning for change How can good  comments  facilitate and reduce the cost of software maintenance? Hint:   think about invariants, things that don’t change. Comments describe meaning of code Assuming programmers maintain comments  when they change the code! How can  modularity  help manage change? Modules help to isolate and localize change
A software process requires resources…
A software life cycle is a  process A process involves activities, constraints and resources that produce an intended output. Each process activity, e.g., design,  must have entry and exit criteria— why? A process uses resources, subject to constraints (e.g., a schedule or a budget) A process is organized in some order or sequence, structuring activities as a whole  A process has a set of guiding principles or criteria that explain the goals of each activity
Waterfall model of software process Multimedia: stages in the process Cascades from one stage down to the next, in stately, lockstep, glorious order. Gravity only allows the waterfall to go downstream; it’s very hard to swim upstream Department of Defense contracts prescribed this model for software deliverables for many years, in DOD Standard 2167-A.
Why would corporate manager types like the waterfall life cycle model? Minimizes change, maximizes predictability Costs and risks are more predictable Each stage has milestones and deliverables:  project managers can use to gauge how close project is to completion Sets up division of labor: many software shops associate different people with different stages: Systems analyst does analysis,  Architect does design,  Programmers code,  Testers validate, etc.
Testing in the waterfall model Let’s look at more Pfleeger’s version of  waterfall model Many waterfall models show 5 stages—why more here? What’s the difference between unit and system testing? Between system and acceptance testing? What kind of arrows are missing? Is  this diagram a more realistic picture ? Is this view of the process a good idea? The reality is that not only does software change, but change happens  during  the process Realistic models are not strictly linear, but allow for cycles Bear in mind, however, that more cycles mean more costs
More drawbacks of the waterfall model Offers no insight into how how does each activity transform one artifacts (documents) of one stage into another For example, requirements specification    design documents? Fails to treat software a problem-solving process Unlike hardware, software development is not a manufacturing but a creative process Manufacturing processes really can be linear sequences, but creative processes usually involve back-and-forth activities such as revisions Software development involves a lot of communication between various human stakeholders Nevertheless, more complex models often embellish the waterfall,  incorporating feedback loops and additional activities
Prototyping This model  adds prototyping as sub-process A  prototype  is a partially developed product that enables customers and developers to examine some aspect of a proposed system and decide if it is suitable for a finished product Why add prototypes to the life cycle? Used to explore the risky aspects of the system: Risk of developing the “wrong” system (what customer doesn’t want), can be a  user interface  without functionality Other technical risks – e.g. performance, using a new technology, alternative algorithms, etc. Prototype may be thrown away or evolve into product
V model Developed by the German Ministry of Defense What does this model highlight? Unit and system testing verify the program design, ensuring that parts and whole work correctly Acceptance testing, conducted by the customer rather than developers, validates the requirements, tying each system function meets a particular requirement in the specification How does this model account for cycles? If problems are found during verification or validation, then re-execute left side of V to make fixes and improvements While the waterfall emphasizes documents and artifacts,  the V model emphasizes activities and correctness
Balzer’s transformational model Tries to reduce error in most software processes by: eliminating development steps,  emphasizing formal specifications,  and using automated support to facilitate transformations from specification to deliverable system Hitch: the need for a formal specification precise enough for automated transformations We’ll see that even semi-formal specifications can help with other software life cycles
Phased development Nowadays, customers are less willing to wait years for a software system to be ready So it’s necessary to reduce the  cycle time  of software products In 1996, 80% of HP’s revenues derived from products developed in previous two years How is this accelerated cycle time made possible? Phased development  reduces cycle time Design a system so it can be delivered in pieces, letting users have some functionality while the rest is under development So there are usually two or more systems in parallel:  The  operational  or  production  system in use by customers  The  development  system which will replace the current release As users use Release  n , developers are building Release  n  + 1
Iterative and incremental  process Incremental development  partitions a system by functionality Early release starts with small, functional subsystem, later releases add functionality Top part of this figure shows how incremental development builds up to full functionality Iterative development  improves overall system in each release Delivers a full system in the first release, then changes the functionality of each subsystem with each new release Suppose a customer wants to develop a word processing package Incremental approach: provide just Creation functions in Release 1, then both Creation and Organization in Release 2,  finally add Formatting in Release 3, … Iterative approach: provide primitive forms of all three functions in Release 1, then enhance (making them faster, improving the interface, etc.) in subsequent releases Pros and cons of these two approaches? Many organizations combine iterative and incremental approaches
Quiz! What are drawbacks of Waterfall Model? Can prototypes alleviate these drawbacks?  Why or why not? Is the V model more realistic?  Is it realistic enough? Why do many software development shops prefer phased and/or iterative & incremental models? Does this discussion motivate you learn to avoid just hacking?
Rational Unified Process (RUP) Developed by “three amigos” at Rational Software (IBM) Grady Booch, Ivar Jacobson, and Jim Rumbaugh Unified Modeling Language (UML) is a set of graphical and linguistic notations for modeling systems, not a process or method The three amigos also developed Rational Unified Process (RUP) You don’t have to use RUP to use UML Interestingly different from the traditional waterfall model Highly iterative and incremental process Software product is not released in one big bang at end of project Instead, developed and released in pieces (prototypes, partial releases, beta, etc.)
Agile Methods Typically lightweight  WRT commitment to phases and documentation Versus waterfall models which require “heavy” documentation of each phase before proceeding Flexible, Adaptable, Iterative Examples: RUP or UP, Extreme Programming (XP), Scrum
How do traditional stages iterate? Workflows look traditional, but they iterate in four phases
Lifecycle Phases Inception – “Daydream” Elaboration – “Design/Details” Construction – “Do it” Transition – “Deploy it” Phases are  not  the classical requirements/ design/coding/implementation processes Phases iterate over many cycles
Inception      Elaboration     … During  inception , establish business rationale and scope for project Business case: how much it will cost and how much it will bring in? Scope: try to get sense of size of the project and whether it’s doable Creates a  vision and scope document  at a high level of abstraction In  elaboration , collect more detailed requirements and do high-level analysis and design Inception gives you the go-ahead to start a project, elaboration determines the  risks Requirement risks: big danger is that you may build the wrong system  Technological risks: can the technology actually do the job? will the pieces fit together? Skills risks: can you get the staff and expertise you need? Political risks: can political forces get in the way? Develop use cases, non-functional requirements & domain model
…     Construction      Transition   Construction  builds production-quality software in many increments, tested and integrated, each satisfying a subset of the requirements of the project Delivery may be to external, early users, or purely internal Each iteration contains usual life-cycle phases of analysis, design, implementation and testing Planning is crucial: use cases and other UML documents Transition  activities include beta testing, performance tuning (optimization) and user training No new functionality unless it’s small and essential Bug fixes are OK
UP phases are iterative & incremental Inception Feasibility phase and approximate vision Elaboration Core architecture implementation, high risk resolution Construction Implementation of remaining elements Transition Beta tests, deployment
UP artifacts The UP describes work activities,  which result in  work products  called  artifacts Examples of artifacts: Vision, scope and business case descriptions Use cases (describe scenarios for user-system interactions) UML diagrams for domain modeling, system modeling Source code (and source code documentation) Web graphics Database schema
Milestone for first Elaboration At start of elaboration, identify part of the project to design & implement A typical and crucial scenario (from a use case) After first elaboration, project is, say, 1/5 th  done Can then provide estimates for rest of project Significant risks are identified and understood How is such a milestone different from a stage in the waterfall model?
Process disciplines or workflows Requirements analysis Design: architectural and class levels Implementation Testing Management Configuration and change Project Most of the process workflows occur during each iteration
What does diagram imply about UP? How can iterations reduce risk or reveal problems?
Another Quiz! What are the four lifecycle phases of UP? What happens in each? What are the process disciplines? What are some major differences between distinguishes UP and the waterfall model?

More Related Content

What's hot (20)

PPTX
Waterfall model and spiral model
Shirisha Maharjan
 
DOCX
Spiral Model & Requirement Validation
Abhijat Dhawal
 
PPT
Spiral model
rewa_monami
 
PPTX
Waterfallmodel
Sunny Kumar Roy
 
PPTX
Spiral model
PriyankaKanojiya2
 
PPTX
PROTOTYPE MODEL
shenagarg44
 
PPTX
Spiral model
Noraphyusin
 
PPTX
Spiral model
khuram22
 
PPTX
software engineering (spiral process model)
Khushbu SaLeem
 
PDF
ITFT - Spiral model
Shruti Kunwar
 
PPTX
Spiral model ppt
Shakthi Weerasinghe
 
PPT
V model final
suhasreddy1
 
PPTX
RAD Model & Prototyping Of Software Engineering
Umeed Charity
 
PPTX
Spiral Model in Software Engineering with Case Study
Sahil Bansal
 
PPTX
Waterfall and spiral model
yenohhoney
 
PPTX
software project management Waterfall model
REHMAT ULLAH
 
PPTX
Sdlc spiral model in software engineering basics by ram k paliwal
Ram Paliwal
 
PPT
Spiral model explanation
Umar Farooq
 
PDF
SDLC RAD model
Jay Sharma
 
Waterfall model and spiral model
Shirisha Maharjan
 
Spiral Model & Requirement Validation
Abhijat Dhawal
 
Spiral model
rewa_monami
 
Waterfallmodel
Sunny Kumar Roy
 
Spiral model
PriyankaKanojiya2
 
PROTOTYPE MODEL
shenagarg44
 
Spiral model
Noraphyusin
 
Spiral model
khuram22
 
software engineering (spiral process model)
Khushbu SaLeem
 
ITFT - Spiral model
Shruti Kunwar
 
Spiral model ppt
Shakthi Weerasinghe
 
V model final
suhasreddy1
 
RAD Model & Prototyping Of Software Engineering
Umeed Charity
 
Spiral Model in Software Engineering with Case Study
Sahil Bansal
 
Waterfall and spiral model
yenohhoney
 
software project management Waterfall model
REHMAT ULLAH
 
Sdlc spiral model in software engineering basics by ram k paliwal
Ram Paliwal
 
Spiral model explanation
Umar Farooq
 
SDLC RAD model
Jay Sharma
 

Similar to Software development life cycle (20)

PPT
01lifecycles(system development life cycle).ppt
krishnakrishkrish100
 
PPT
01lifecycles
Abdihakim Dalmar
 
PPT
Software process life cycles
sathish sak
 
PPTX
Software Process Models
Hassan A-j
 
PPTX
Software Engineering - Lecture 02
Asifuzzaman Hridoy
 
PPT
An overview of software development methodologies.
Masoud Kalali
 
PPT
Soft lifecycle
sathyakamsundher30
 
PPTX
Software development process models
Muhammed Afsal Villan
 
PPT
Software process model
Muhammad Yousuf Abdul Qadir
 
PPTX
SE-03.pptx
HaiderAli252366
 
PPTX
reaserch ppt.pptx
BinyamBekele3
 
PPTX
SDLC and Software Process Models
Nana Sarpong
 
PDF
Chapter-2 ppt for the MBA 4rh seme6y.pdf
VikasRai405977
 
PPT
Software Development Life Cycle (SDLC)
Compare Infobase Limited
 
PPT
Software Process in Software Engineering SE3
koolkampus
 
PPTX
The process
prakashvs7
 
PPTX
Sdpl1
sraviinthiran
 
DOCX
Incremental model
Sajid Ali Laghari
 
PPT
Ch4
Saad Gabr
 
PPT
Software Process Models
Jesse Manalansan
 
01lifecycles(system development life cycle).ppt
krishnakrishkrish100
 
01lifecycles
Abdihakim Dalmar
 
Software process life cycles
sathish sak
 
Software Process Models
Hassan A-j
 
Software Engineering - Lecture 02
Asifuzzaman Hridoy
 
An overview of software development methodologies.
Masoud Kalali
 
Soft lifecycle
sathyakamsundher30
 
Software development process models
Muhammed Afsal Villan
 
Software process model
Muhammad Yousuf Abdul Qadir
 
SE-03.pptx
HaiderAli252366
 
reaserch ppt.pptx
BinyamBekele3
 
SDLC and Software Process Models
Nana Sarpong
 
Chapter-2 ppt for the MBA 4rh seme6y.pdf
VikasRai405977
 
Software Development Life Cycle (SDLC)
Compare Infobase Limited
 
Software Process in Software Engineering SE3
koolkampus
 
The process
prakashvs7
 
Incremental model
Sajid Ali Laghari
 
Software Process Models
Jesse Manalansan
 
Ad

Recently uploaded (20)

PDF
State-Dependent Conformal Perception Bounds for Neuro-Symbolic Verification
Ivan Ruchkin
 
PPTX
The Future of AI & Machine Learning.pptx
pritsen4700
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
PDF
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PPTX
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
PPTX
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PDF
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PPTX
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
State-Dependent Conformal Perception Bounds for Neuro-Symbolic Verification
Ivan Ruchkin
 
The Future of AI & Machine Learning.pptx
pritsen4700
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
Ad

Software development life cycle

  • 1. Software process life cycles System Analyst And Design CS-05 IGNOU
  • 2. Software and entropy A virtue of software: relatively easy to change Otherwise it might as well be hardware Nevertheless, the more complex a software system gets, the harder it is to change- -why? Larger software systems are harder to understand The more changes get introduced into a system, the more it tends toward entropy I.e., its internal order breaks down Multimedia: http://www.cse.lehigh.edu/~cimel/prototype.html
  • 3. Planning for change How can good comments facilitate and reduce the cost of software maintenance? Hint: think about invariants, things that don’t change. Comments describe meaning of code Assuming programmers maintain comments when they change the code! How can modularity help manage change? Modules help to isolate and localize change
  • 4. A software process requires resources…
  • 5. A software life cycle is a process A process involves activities, constraints and resources that produce an intended output. Each process activity, e.g., design, must have entry and exit criteria— why? A process uses resources, subject to constraints (e.g., a schedule or a budget) A process is organized in some order or sequence, structuring activities as a whole A process has a set of guiding principles or criteria that explain the goals of each activity
  • 6. Waterfall model of software process Multimedia: stages in the process Cascades from one stage down to the next, in stately, lockstep, glorious order. Gravity only allows the waterfall to go downstream; it’s very hard to swim upstream Department of Defense contracts prescribed this model for software deliverables for many years, in DOD Standard 2167-A.
  • 7. Why would corporate manager types like the waterfall life cycle model? Minimizes change, maximizes predictability Costs and risks are more predictable Each stage has milestones and deliverables: project managers can use to gauge how close project is to completion Sets up division of labor: many software shops associate different people with different stages: Systems analyst does analysis, Architect does design, Programmers code, Testers validate, etc.
  • 8. Testing in the waterfall model Let’s look at more Pfleeger’s version of waterfall model Many waterfall models show 5 stages—why more here? What’s the difference between unit and system testing? Between system and acceptance testing? What kind of arrows are missing? Is this diagram a more realistic picture ? Is this view of the process a good idea? The reality is that not only does software change, but change happens during the process Realistic models are not strictly linear, but allow for cycles Bear in mind, however, that more cycles mean more costs
  • 9. More drawbacks of the waterfall model Offers no insight into how how does each activity transform one artifacts (documents) of one stage into another For example, requirements specification  design documents? Fails to treat software a problem-solving process Unlike hardware, software development is not a manufacturing but a creative process Manufacturing processes really can be linear sequences, but creative processes usually involve back-and-forth activities such as revisions Software development involves a lot of communication between various human stakeholders Nevertheless, more complex models often embellish the waterfall, incorporating feedback loops and additional activities
  • 10. Prototyping This model adds prototyping as sub-process A prototype is a partially developed product that enables customers and developers to examine some aspect of a proposed system and decide if it is suitable for a finished product Why add prototypes to the life cycle? Used to explore the risky aspects of the system: Risk of developing the “wrong” system (what customer doesn’t want), can be a user interface without functionality Other technical risks – e.g. performance, using a new technology, alternative algorithms, etc. Prototype may be thrown away or evolve into product
  • 11. V model Developed by the German Ministry of Defense What does this model highlight? Unit and system testing verify the program design, ensuring that parts and whole work correctly Acceptance testing, conducted by the customer rather than developers, validates the requirements, tying each system function meets a particular requirement in the specification How does this model account for cycles? If problems are found during verification or validation, then re-execute left side of V to make fixes and improvements While the waterfall emphasizes documents and artifacts, the V model emphasizes activities and correctness
  • 12. Balzer’s transformational model Tries to reduce error in most software processes by: eliminating development steps, emphasizing formal specifications, and using automated support to facilitate transformations from specification to deliverable system Hitch: the need for a formal specification precise enough for automated transformations We’ll see that even semi-formal specifications can help with other software life cycles
  • 13. Phased development Nowadays, customers are less willing to wait years for a software system to be ready So it’s necessary to reduce the cycle time of software products In 1996, 80% of HP’s revenues derived from products developed in previous two years How is this accelerated cycle time made possible? Phased development reduces cycle time Design a system so it can be delivered in pieces, letting users have some functionality while the rest is under development So there are usually two or more systems in parallel: The operational or production system in use by customers The development system which will replace the current release As users use Release n , developers are building Release n + 1
  • 14. Iterative and incremental process Incremental development partitions a system by functionality Early release starts with small, functional subsystem, later releases add functionality Top part of this figure shows how incremental development builds up to full functionality Iterative development improves overall system in each release Delivers a full system in the first release, then changes the functionality of each subsystem with each new release Suppose a customer wants to develop a word processing package Incremental approach: provide just Creation functions in Release 1, then both Creation and Organization in Release 2, finally add Formatting in Release 3, … Iterative approach: provide primitive forms of all three functions in Release 1, then enhance (making them faster, improving the interface, etc.) in subsequent releases Pros and cons of these two approaches? Many organizations combine iterative and incremental approaches
  • 15. Quiz! What are drawbacks of Waterfall Model? Can prototypes alleviate these drawbacks? Why or why not? Is the V model more realistic? Is it realistic enough? Why do many software development shops prefer phased and/or iterative & incremental models? Does this discussion motivate you learn to avoid just hacking?
  • 16. Rational Unified Process (RUP) Developed by “three amigos” at Rational Software (IBM) Grady Booch, Ivar Jacobson, and Jim Rumbaugh Unified Modeling Language (UML) is a set of graphical and linguistic notations for modeling systems, not a process or method The three amigos also developed Rational Unified Process (RUP) You don’t have to use RUP to use UML Interestingly different from the traditional waterfall model Highly iterative and incremental process Software product is not released in one big bang at end of project Instead, developed and released in pieces (prototypes, partial releases, beta, etc.)
  • 17. Agile Methods Typically lightweight WRT commitment to phases and documentation Versus waterfall models which require “heavy” documentation of each phase before proceeding Flexible, Adaptable, Iterative Examples: RUP or UP, Extreme Programming (XP), Scrum
  • 18. How do traditional stages iterate? Workflows look traditional, but they iterate in four phases
  • 19. Lifecycle Phases Inception – “Daydream” Elaboration – “Design/Details” Construction – “Do it” Transition – “Deploy it” Phases are not the classical requirements/ design/coding/implementation processes Phases iterate over many cycles
  • 20. Inception  Elaboration  … During inception , establish business rationale and scope for project Business case: how much it will cost and how much it will bring in? Scope: try to get sense of size of the project and whether it’s doable Creates a vision and scope document at a high level of abstraction In elaboration , collect more detailed requirements and do high-level analysis and design Inception gives you the go-ahead to start a project, elaboration determines the risks Requirement risks: big danger is that you may build the wrong system Technological risks: can the technology actually do the job? will the pieces fit together? Skills risks: can you get the staff and expertise you need? Political risks: can political forces get in the way? Develop use cases, non-functional requirements & domain model
  • 21. …  Construction  Transition Construction builds production-quality software in many increments, tested and integrated, each satisfying a subset of the requirements of the project Delivery may be to external, early users, or purely internal Each iteration contains usual life-cycle phases of analysis, design, implementation and testing Planning is crucial: use cases and other UML documents Transition activities include beta testing, performance tuning (optimization) and user training No new functionality unless it’s small and essential Bug fixes are OK
  • 22. UP phases are iterative & incremental Inception Feasibility phase and approximate vision Elaboration Core architecture implementation, high risk resolution Construction Implementation of remaining elements Transition Beta tests, deployment
  • 23. UP artifacts The UP describes work activities, which result in work products called artifacts Examples of artifacts: Vision, scope and business case descriptions Use cases (describe scenarios for user-system interactions) UML diagrams for domain modeling, system modeling Source code (and source code documentation) Web graphics Database schema
  • 24. Milestone for first Elaboration At start of elaboration, identify part of the project to design & implement A typical and crucial scenario (from a use case) After first elaboration, project is, say, 1/5 th done Can then provide estimates for rest of project Significant risks are identified and understood How is such a milestone different from a stage in the waterfall model?
  • 25. Process disciplines or workflows Requirements analysis Design: architectural and class levels Implementation Testing Management Configuration and change Project Most of the process workflows occur during each iteration
  • 26. What does diagram imply about UP? How can iterations reduce risk or reveal problems?
  • 27. Another Quiz! What are the four lifecycle phases of UP? What happens in each? What are the process disciplines? What are some major differences between distinguishes UP and the waterfall model?