1 / 35

CSE 308 Software Engineering

CSE 308 Software Engineering. Software Engineering Strategies. Software Project Outcomes. 2003 study of 280,000 SW Projects. Course Objectives. Acquire: Technical Knowledge Managerial Knowledge people, technology, processes. Acquire Technical Knowledge. Understand System Modeling

thy
Download Presentation

CSE 308 Software Engineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSE 308Software Engineering Software Engineering Strategies

  2. Software Project Outcomes • 2003 study of 280,000 SW Projects

  3. Course Objectives • Acquire: • Technical Knowledge • Managerial Knowledge • people, technology, processes

  4. Acquire Technical Knowledge • Understand System Modeling • Learn UML • Practice different modeling methods: • Use Case Modeling • Object Modeling • Dynamic Modeling • Learn how to use tools • Component-Based Software Engineering

  5. Acquire Managerial Knowledge • Understand the Software Lifecycle • Process vs. Product • Different software lifecycles • Interface Engineering, Reengineering • Project Management

  6. The Best People Managers • Lead by example, not simply by making demands • Want their employees to succeed • Monitor and adjust • Make sure all team members are: • invested in the project • busy/utilized • making positive contributions • How? • People skills • Tech skills • Project management skills

  7. Software Engineering • Analysis: Understand the nature of the problem and break the problem into pieces • Synthesis: Put the pieces together into a large structure

  8. And for problem solving? • Techniques (methods) – formal procedures for producing results using some well-defined notation • Tools – instrument or automated systems to accomplish a technique • Methodologies – collection of techniques applied across software development and unified by a philosophical approach

  9. Software Engineering: Definition • A collection of techniques, tools, and methodologies that help with the production of: • a high quality software system • within a given budget, and • before a given deadline • … while change occurs What is your budget and deadline? How do you measure the quality of your project?

  10. Factors Affecting Quality of Software Complexity: • the system is so complex that no single programmer can understand it anymore Change: • the “Entropy” of a software system increases with each change: Each implemented change erodes the structure of the system • as time goes on, the cost to implement a change will be too high, and the system will then be unable to support its intended task.

  11. Why are Software Systems so Complex? • Difficult problem domain • Difficult dev. process • Software offers extreme flexibility • Capital investment constraints Usually leads to tight (impossible?) deadlines

  12. Dealing with Complexity 1. Abstraction 2. Decomposition 3. Hierarchy

  13. Abstraction • Inherent human limitation to deal with complexity • the 7 +- 2 phenomena • chunking: Group collection of objects • ignore unessential details: => Models

  14. Models Provide Abstractions • Many layers of models • Models for different stages: • System Models • Task Models • Issues Models

  15. System Models • Object Model • What is the structure of the system? • What are the objects and how are they related? • Functional model • What are the functions of the system? • How is data flowing through the system? • Dynamic model • How does the system react to events?

  16. Task Models • PERT Chart: • What dependencies are between tasks? • Gantt Chart • What order should tasks be scheduled? • Organizational Chart: • What is the organization of your team?

  17. PERT Charts

  18. Gantt Charts

  19. Organizational Charts

  20. Issues Model • What are the open and closed issues? • What constraints were posed by the client?

  21. Software Engineering Methodologies • Build-and-fix model • Waterfall model • Rapid prototyping model • Incremental model • Synchronize-and-stabilize model • Extreme programming • Spiral model Some texts use the term “prescriptive process models” Model to use is based on SW policies of your company

  22. Software Lifecycle Models • Life-cycle model (formerly, process model) • The steps through which the product progresses • Requirements phase • Specification phase • Design phase • Implementation phase • Integration phase • Maintenance phase • Retirement These phases usually overlap The problems are: 1. Mistakes can be made during the early phases and 2. The user can change his/her mind 3. “Feature creep”

  23. Build and Fix Model • Problems • No specifications • No design • Totally unsatisfactory • Need life-cycle model • Game plan • Phases • Milestones

  24. Waterfall Model • Rigid process • Documentation-driven Imagine buying a car by only reading the specs Feedback loops are rarely seen when this process is used

  25. Rapid Prototype Model • Make a simple prototype first • may be thrown away or completely replaced • prototype (i.e. research) vs. production teams • Useful for Game Dev. Projects • Game Dev Rule of Thumb: • have a game prototype 20% of way through process • Why? • fun is hard to quantify • prototype demonstrates core gamplay

  26. Incremental Model • Divide project into builds • system is built incrementally • testing after each build • Customer • review (and use) each build • evaluations may result in a change in requirements (for a subsequent build) • Builds add implementations of use cases Incremental model provides financial flexibility Ready to ship builds

  27. The Incremental Model

  28. Synchronize and Stabilize Model • Microsoft’s life-cycle model • Requirements analysis • interview potential customers • Draw up specifications • Divide project into multiple builds • Builds carried out by small teams working in parallel

  29. … Synchronize and Stabilize Model • At the end of the day: • synchronize (test and debug) • At the end of the build: • stabilize (freeze build) • Components always work together • Get early insights into operation of product

  30. Agile Programming Features • Early implementation • Successive builds • Collaboration with client • Importance of re-factoring Newer IDEs contain extensive refactoring features

  31. Extreme Programming • New approach • Stories (features client wants) • Estimate duration and cost of each story • Select stories for next build • Each build is divided into tasks • Test cases for task are drawn up first • Pair programming • Continuous integration of tasks

  32. Unusual Features of XP • Computers are put in center of large room • Client representative is always present • Cannot work overtime for 2 successive weeks • No specialization • Re-factoring Too soon to evaluate XP, but it appears questionable for large projects

  33. Spiral Model • Simplified form • waterfall model plus risk analysis • Precede each phase by • Alternatives • Risk analysis • Follow each phase by • Evaluation • Planning of next phase

  34. Simplified Spiral Model

  35. Conclusions • Different life-cycle models • each with own strengths • each with own weaknesses • Criteria for deciding on a model include • the organization • its management • skills of the employees • nature of the product (size, scope, complexity) • Best suggestion • “Mix-and-match” life-cycle model

More Related