CSE 308 Software Engineering Software Engineering Strategies.

Slides:



Advertisements
Similar presentations
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
Advertisements

Slide 3.1 © The McGraw-Hill Companies, 2002 Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach
Software Development Life-Cycle Models
Ch2: Software Life Cycles Housekeeping  Feedback from Wednesday  Structured vs. Object Oriented Paradigm Structured: Data is an argument, functions separate,
CHAPTER 3 SOFTWARE LIFE-CYCLE MODELS.
SOFTWARE PROCESS MODELS. Software Process Models  Process model (Life-cycle model) -steps through which the product progresses Requirements phase Specification.
Software Process Models
Chapter 2 Modeling the Process and Life Cycle Shari L. Pfleeger
Software Life-Cycle Models
Chapter 2 Approaches to System Development
Lecture 2 Title: PLC, SDLC, PMBOK
1 Chapter 3 Prescriptive Process Models Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
SEP1 - 1 Introduction to Software Engineering Processes SWENET SEP1 Module Developed with support from the National Science Foundation.
Gu & Maher University of Sydney, October 2004 DECO2005 Monitoring Team Process.
Chapter 8 Information Systems Development & Acquisition
Chapter 1: Introduction
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.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Systems Analysis and Design in a Changing World, Fifth Edition
Organizational Influences and Life Cycle
CHAPTER 9: LEARNING OUTCOMES
Problem with Software Requirements are complex The client does not know the functional requirements in advance Requirements may be changing Technology.
CHAPTER 19 Building Software.
Chapter 1: Introduction
Ch 2: Software Life-Cycle Models CSCI Ideal Software Development.
Software Development Process
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
Chapter 2: Approaches to System Development
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Introduction to Software Engineering CEN 4010.
CST 316 Process. Junior Project Process Provide necessary points of communication for individual effort. Allow a controllable division of labor. Divide.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
Information Systems Analysis and Design
Appendix A Project Management: Process, Techniques, and Tools.
Agile Methodologies: Comparative Study and Future Direction 林佳蓁 資工 4B.
Capability Maturity Models Software Engineering Institute (supported by DoD) The problems of software development are mainly caused by poor process management.
COMP 208/214/215/216 Lecture 3 Planning. Planning is the key to a successful project It is doubly important when multiple people are involved Plans are.
Software Engineering Management Lecture 1 The Software Process.
BIS 360 – Lecture Two Ch. 3: Managing the IS Project.
Software Project Management By Deepika Chaudhary.
Object-oriented Analysis and Design Stages in a Software Project Requirements Writing Analysis Design Implementation System Integration and Testing Maintenance.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Content The system development life cycle
2 Systems Analysis and Design in a Changing World, Fifth Edition.
Systems Analysis and Design in a Changing World, Fourth Edition
An Introduction to Software Engineering
SOFTWARE LIFE-CYCLE MODELS
Lecture 2 –Approaches to Systems Development Method 10/9/15 1.
Slide 3.1 © The McGraw-Hill Companies, 2002 Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach
Software Engineering At Glance. Why We Need Software Engineering? The aim of software engineering is to solve the software crisis Software is delivered.
Software Engineering Zhang Shuang
CS223: Software Engineering Lecture 16: The Agile Methodology.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
Systems Development Life Cycle
Chapter 2- Software Development Process  Product Components  Software Project Staff  Software Development Lifecycle Models.
Slide 3.1 © The McGraw-Hill Companies, 2002 SOFTWARE LIFE-CYCLE MODELS.
Software Development - Methodologies
Methodologies and Algorithms
Appendix B Agile Methodologies
Fundamentals of Information Systems, Sixth Edition
Methodologies By Akinola Soyinka.
Software Engineering Lecture 09 & 10.
Software Engineering Lecture 18.
Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach
Software Engineering Lecture 17.
Appendix B Agile Methodologies
Presentation transcript:

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 Learn UML Practice different modeling methods: –Use Case Modeling –Object Modeling –Dynamic Modeling Learn how to use tools Component-Based Software Engineering

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

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

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

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

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 How do you measure the quality of your project? What is your budget and deadline?

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.

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

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

Abstraction Inherent human limitation to deal with complexity –the phenomena –chunking: Group collection of objects –ignore unessential details: => Models

Models Provide Abstractions Many layers of models Models for different stages: –System Models –Task Models –Issues Models

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?

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?

PERT Charts

Gantt Charts

Organizational Charts

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

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

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”

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

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

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

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

The Incremental Model

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

… 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

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

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

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

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

Simplified Spiral Model

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