Software Development.

Slides:



Advertisements
Similar presentations
Unified process(UP) UP is an OO system development methodology offered by Rational(Rational Rose) s/w, now a part of IBM Developed by Booach,Rambaugh,Jacobson--
Advertisements

Software Development Life-Cycle Models
Software Life Cycle Requirements analysis System design Program design Program implementation (coding) Unit testing Integration testing System testing.
Diane Pozefsky. Interactions  There is no “right answer”  Typically people and product are fixed  … can adapt process  (which is where we will start)
CS487 Software Engineering Omar Aldawud
COMP 121 Week 7: Object-Oriented Design and Efficiency of Algorithms.
SEP1 - 1 Introduction to Software Engineering Processes SWENET SEP1 Module Developed with support from the National Science Foundation.
29 September Interactions  There is no “right answer”  Typically people and product are fixed  … can adapt process  (which is where we will.
Sharif University of Technology Session # 3.  Contents  Systems Analysis and Design Sharif University of Technology MIS (Management Information System),
Software Life Cycles ECE 417/617: Elements of Software Engineering
Chapter Extension 19 Alternative Development Techniques © 2008 Pearson Prentice Hall, Experiencing MIS, David Kroenke.
Object-oriented Analysis and Design
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
COMP 350: Object Oriented Analysis and Design Lecture 2
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Test Driven Development TDD. Testing ”Testing can never demonstrate the absence of errors in software, only their presence” Edsger W. Dijkstra (but it.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Business Driven Technology Unit 5 Transforming Organizations McGraw-Hill/Irwin Copyright © 2013 by The McGraw-Hill Companies, Inc. All rights reserved.
1 Advanced Computer Programming Project Management: Methodologies Copyright © Texas Education Agency, 2013.
COMP 121 Week 7: Object-Oriented Design and Efficiency of Algorithms.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
CPSC 2150 August 21, Chapter 1 Object Oriented Software Development This is an introductory course In this chapter we will look at 3 topics Challenges.
Software development process ธนวัฒน์ แซ่ เอียบ. The development process Process –set of rules which define how a development project. Methodology and.
Review: Cohesion and Coupling, Mutable, Inheritance Screen Layouts Software methodologies – Extreme Programming Object-Oriented Design – CRC Cards - UML.
Object-oriented Analysis and Design Stages in a Software Project Requirements Writing Analysis Design Implementation System Integration and Testing Maintenance.
June 05 David A. Gaitros Jean Muhammad Introduction to OOD and UML Dr. Jean Muhammad.
Chapter 2 Iterative, Evolutionary, and Agile You should use iterative development only on projects that you want to succeed. - Martin Fowler 1CS
THE UNIFIED PROCESS UP Programming. What is the unified process  The Unified Process is a programming methodology that emphasizes the right blend of.
Rational Unified Process Mr Hisham AlKhawar. Iterative versus Waterfall  We need to use a life cycle model in order to approach developing a system easily,
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Chapter 17 – Object- Oriented Design. Chapter Goals To learn about the software life cycle To learn about the software life cycle To learn how to discover.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
The principles of an object oriented software development process Week 04 1.
Meghe Group of Institutions Department for Technology Enhanced Learning 1.
Agile Development Chapter 10 - part 2. Agile Philosophy  A guiding philosophy and set of guidelines for : developing information systems in an unknown,
Copyright 2015, Robert W. Hasker. Classic Model Gathering Requirements Specification Scenarios Sequences Design Architecture Class, state models Implementation.
10 September Interactions  There is no “right answer”  Typically people and product are fixed  … can adapt process  (which is where we will.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Software Development Life Cycle. The Software Life Cycle  Encompasses all activities from initial analysis until end of work  Formal process for software.
Project Management Software development models & methodologies
Software Engineering cosc 4359 Spring 2017.
Software Development Framework
Embedded Systems Software Engineering
CS223: Software Engineering
Software Development - Methodologies
Approaches to Systems Development
Methodologies and Algorithms
CSC 355 – Newer Approaches to System Development Life Cycles & Processes, Spring 2017 March 2017 Dr. Dale Parson.
Appendix B Agile Methodologies
Software Development methodologies
Unified Process Source & Courtesy: Jing Zou.
Approaches to Systems Development
Introduction to Software Engineering
COMP 350: Object Oriented Analysis and Design Lecture 2
What do you need to know about XP?
Object Oriented Analysis and Design
Lecture 2 Revision of Models of a Software Process
Chapter 2 – Software Processes
Software engineering -1
Gathering Systems Requirements
Software Engineering: A Practitioner’s Approach, 6/e Chapter 3 Prescriptive Process Models copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
SOFTWARE LIFE-CYCLES Beyond the Waterfall.
Extreme Programming.
Gathering Systems Requirements
Agile software development
Software Engineering: A Practitioner’s Approach, 6/e Chapter 3 Prescriptive Process Models copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
Presentation transcript:

Software Development

The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request System development and installation System use and maintenance System removal/replacement Need a roadmap for development of large systems

Process Model for Developing Software The purpose of a development model is: improve productivity, timeliness, and software quality. The development model should: describe the phases of the development process give guidelines for how to carry out the phases. provide methodologies that are predictable and repeatable.

Software Development Five Phases Variety of development models Analysis Design Implementation Testing Deployment Variety of development models

Analysis Decide WHAT the project is supposed to accomplish. (Not HOW.) Produce a requirements specification. Precisely describe the software to be written Describe performance criteria How large can the input set be? How fast must the data be handled? What is the maximum amount of memory or disk space that the program may use? Do not be ambiguous. Develop a testing plan Determine what will prove that the system fulfills requirements Produce a user manual tells how user will operate program

Design Develop a high level system architecture. Use diagrams to visualize project What data structures make sense? Will this design meet the specification? For Object Oriented designs: What classes will you use? What are their significant methods? What are the relationships between classes?

Implementation Write the code that follows the design. implement classes and methods discovered in the design phase Compile the code handle syntax errors

Testing Run tests to verify the program works correctly Unit testing Use testing plan from the analysis phase Discover/fix bugs Unit testing tests a single method or a set of cooperating methods perhaps the most important testing tool E.G., JUnit tests (built into eclipse) Integration testing tests a set of cooperating modules. Systems testing tests an integrated system to verify/validate that it meets its requirements.

Maintenance The software is released to the customer: Fix bugs. Add new features. Update to work with new hardware and operating systems. About ⅔ of all software engineering work is maintenance.

Fixing problems It is easier to fix a problem found early rather than late in software development. Better to find problems in the design phase than in the implementation phase. Better to find problems in the implementation phase than in the testing phase.

Software Development Models Waterfall model Iterative models Spiral model RUP model Agile model Extreme Programming Others

Waterfall Model Analysis Design Implementation Testing Maintenance

Waterfall Model Legacy model has been in use since the 1970’s Characterized by completely finishing a step before proceeding to the next step. once a step is finished, it is not revisited (when this model is rigidly followed). Large government agencies still use forms of this model prefer to spend large amounts of effort on analysis and requirements before awarding contracts.

Waterfall Model Pros: Cons: Like the BDUF (Big Design Up Front) models, the waterfall model encourages engineers to think through the details before coding begins. Problems are identified early in the process which saves time and effort later. Cons: Software engineers cannot predict the future and anticipate every requirement and problem. This model is not flexible enough to allow requirements to evolve.

Iterative process models Spiral development RUP (Rational Unified Process) XP (eXtreme Programming)

Spiral (Iterative) Model Design Analysis Implementation Prototype #1 Prototype #2 Final Product Testing Maintenance

Spiral or Iterative Model Characterized by the use of prototypes. Prototypes allow feedback between the engineers and the customer. lessons learned from development of one prototype to be applied to the next iteration the direction of the project to be reevaluated. specifications to be added.

Spiral or Iterative Model Pros: More flexible than the waterfall model. Projects can evolve. Cons: Engineers know that they don’t have to do a thorough job at each step because steps are revisited. Too many iterations can cause project delays.

RUP (Rational Unified Process) Essentially iterates all phases during each phase Inception Elaboration Construction Planning Construction Transition

Activity Levels in the Rational Unified Process Development model by the inventors of UML (Unified Modeling Language) Interested? Look up RUP articles by Grady Booch Activity Levels in the Rational Unified Process Methodology

Agile Model Agile processes use feedback (rather than planning) to control the process. Agile methods emphasize real-time communication preferably face-to-face, over written documents. Most agile methods try to minimize risk by developing software in short iterations typically last one to four weeks each iteration is like a miniature software project of its own.

Extreme Programming - XP Best-known agile development model. First, write automated tests to provide concrete goals for development. Test-Driven Development, TDD Next, coding (by a pair of programmers) complete when all the tests pass and the programmers can't think of any more tests that are needed.

Extreme Programming - XP Code is refactored. doesn’t fix bugs or add new functionality. done to improve understandability and clarity of structure, code “clean up.” design and architecture emerge during this step. The incomplete but functional system is demonstrated to the customer. Repeat the cycle by writing tests for the next most important part of the system.

The 12 “practices” of XP Realistic planning with frequent iteration; well-defined decision-making structure Small releases (“juiciest” first) Metaphor (big picture) Simple design Refactoring (continuous design) Testing (test and then code) Pair programming Collective ownership (by small co-located teams) Continuous integration 40-hour week On-site customer Coding standards Interested? Look up agile programming articles by Jim Highsmith