Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Software Engineering Methodologies

945 views

Published on

  • Be the first to comment

  • Be the first to like this

Software Engineering Methodologies

  1. 1. 1. Importance of Software Engineering and usage2. What’s a software?3. Definition of Software Engineering4. Software Engineering ethics5. Software Engineering processes6. Software Engineering methodologiesContents
  2. 2. 1. Importance of Software Engineering and usage2. What’s a software?3. Definition of Software Engineering4. Software Engineering ethics5. Software Engineering processes6. Software Engineering methodologiesContents
  3. 3. Most software today is very much like an Egyptian pyramid with millions of brickspiled on top of each other, with no structural integrity, but just done by brute force andthousands of slaves. Alan Kay, ACM Queue,2005Why Software Engineering?
  4. 4. Software Engineering is a great achievement
  5. 5. 1. Importance of Software Engineering and usage2. What’s a software?3. Definition of Software Engineering4. Software Engineering ethics5. Software Engineering processes6. Software Engineering methodologiesContents
  6. 6. • Software is a Computer programs and associated documentationdefining a project.• Good software should deliver the required functionality andperformance to the user and should be maintainable,dependable, and usableWhat’s software?
  7. 7. Good software features
  8. 8. Q. What are natural constrains or limits of software ?Q. What are the consequences of the above constraints?
  9. 9. 1. Importance of Software Engineering and usage2. What’s a software?3. Definition of Software Engineering4. Software Engineering ethics5. Software Engineering processes6. Software Engineering methodologiesContents
  10. 10. Software Engineering is the application of a systematic, disciplined,quantifiable approach to development, operation and maintenanceof software: that is, the application of engineering to software.”IEEE Standard Computer DictionaryIEEE defines Software Engineering
  11. 11. 1. Importance of Software Engineering and usage2. What’s a software?3. Definition of Software Engineering4. Software Engineering ethics5. Software Engineering processes6. Software Engineering methodologiesContents
  12. 12. Software engineering ethics1.Confidentiality: You should normally respect the confidentiality of youremployers or clients irrespective of whether or not a formalconfidentiality agreement has been signed.2. Competence: You should not misrepresent your level of competence. Youshould not knowingly accept work that is outside your competence.3. Intellectual property rights: You should be aware of local laws governingthe use of intellectual property such as patents and copyright. You shouldbe careful to ensure that the intellectual property of employers and clientsis protected.4. Computer misuse: You should not use your technical skills to misuseother people’s computers. Computer misuse ranges from relativelytrivial (game playing on an employer’s machine, say) to extremelyserious (dissemination of viruses or other malware).
  13. 13. 1. Importance of Software Engineering and usage2. What’s a software?3. Definition of Software Engineering4. Software Engineering ethics5. Software Engineering processes6. Software Engineering methodologiesContents
  14. 14. Softwaredevelopmentprocesses (SDLC)SoftwareManagementprocessesSoftware Engineering processes aredivided intoSoftware Process is a sequence of activities leading to productionSoftware engineering Processes
  15. 15. SoftwarespecificationsSoftwaredevelopmentSoftwarevalidationSoftwareevolutionSoftware fundamental activities(General Model)
  16. 16. 1. Importance of Software Engineering and usage2. What’s a software?3. Definition of Software Engineering4. Software Engineering ethics5. Software Engineering processes6. Software Engineering methodologiesContents
  17. 17. • Waterfall Model• Prototyping Model• Incremental Model• Iterative Model• AgileSoftware engineering methodologies(techniques)
  18. 18. Waterfall MethodologyAnalysis(RequirementsDefinitions)Design(system and softwaredesign)MaintenanceDevelopment andImplementationSystem Testing
  19. 19. Waterfall Advantages• Easy to understand & Use.• Easy to manage•Phases are processed and completed one at a time.• Works well for projects where requirements are clear & stable.
  20. 20. Waterfall Disadvantages• It’s hard to respond to changing customer requirements.• Each phase output is an input to the next phase , so delay in onephase may delay the whole project.•In practice, phases overlaps and displace achieved.• software is produced late during the life cycle.• Poor model for complex and requirements variant projects.
  21. 21. MaintenanceDevelopment andImplementationSystem TestingprototypingCustomerevaluationReviewDesignPrototyping MethodologyAnalysis(Requirements Definitions)Design(quick design)Customer approval
  22. 22. Prototyping Advantages• Customers can “see” the system requirements as they arebeing gathered.• Developers learn from customers .• A more accurate end product.• Allows for flexible design and development.• Steady, visible signs of progress produced.• Interaction with the prototype stimulates awareness of additionalneeded functionality.
  23. 23. • Overall maintainability may be overlooked• The customer may want the prototype delivered.• Process may continue forever (scope creep)Prototyping disadvantages
  24. 24. AnalysisDesignDevelopmentTestingIterative ModelProductdelivery andmaintenanceIterative = waterfall+ prototyping
  25. 25. Iterative ModelIteration 1
  26. 26. Iterative ModelIteration 2
  27. 27. Iterative ModelIteration 3
  28. 28. Incremental Model•Divide into mini-Waterfalls• It means you develop one part of the system and when it’s ready you develop thenext partAnalysis DesignDevelopment andImplementation Testing 1st IncrementAnalysis DesignDevelopment andImplementation Testing 2nd IncrementAnalysis DesignDevelopment andImplementation Testing 3rd Increment
  29. 29. Incremental ModelAnalysis DesignDevelopment andImplementation Testing 1st Increment
  30. 30. Analysis DesignDevelopment andImplementation Testing 2nd IncrementAnalysis DesignDevelopment andImplementation Testing 1st IncrementIncremental Model
  31. 31. Analysis DesignDevelopment andImplementation Testing 3rd IncrementAnalysis DesignDevelopment andImplementation Testing 2nd IncrementAnalysis DesignDevelopment andImplementation Testing 1st IncrementIncremental Model
  32. 32. Agile MethodologyIncremental Model(Enhanced waterfall)Iterative Model(Waterfall+protptyping)+Agile Model
  33. 33. Agile Manifesto1. Individuals and interactions over processes and tools2. Working software over comprehensive documentation3. Customer collaboration over contract negotiation4. Responding to change over following a plan
  34. 34. Agile Manifesto
  35. 35. System TestingAgile ModelAnalysis(RequirementsDefinitions)Design(system and softwaredesign)Development andImplementation
  36. 36. 1. Extreme Programming (XP)2. SCRUM3. Crystal Family4. Open Source5. Adaptive Software Development (ASD)6. Feature Driven Development (FDD)7. Dynamic System Development Method (DSDM)Agile
  37. 37. Agile suitabilityAgile methods have been very successful for some types of systemdevelopment:1. Product development where a software company is developing a smallor medium-sized product for sale.2. Custom system development within an organization, where there isa clear commitment from the customer to become involved in thedevelopment process and where there are not a lot of external rules andregulations that affect the software.
  38. 38. Agile difficulties1.Customer availability.2. Individual team members personalities suitability to interactwith other teams3. Priority determination may be extremely difficult especiallyfor many stakeholders.4. Difficulty of shifting to a new model especially for largecompanies
  39. 39. Agile and Plan-driven(water fall) methodologiesdifferencesAgile Plan-drivenIterative and Incremental PhasedWorking Software every build Working software in final phaseMore Visibility- working software Less visibility ,prototypesChanges accepted in all phasesChanges accepted at certain stagesonlyConclusion
  40. 40. Agile and Plan-driven methodologiessuitabilityAgile Plan-drivenShort term projects Long term projectsSenior developers Junior / Senior developersRequirements change often Requirements do not change oftenSmall number of developers Small/Large number of developersCulture that responds to change Culture that demands order

×