CSC 490: Advanced Software Project

Slides:



Advertisements
Similar presentations
Prescriptive Process models
Advertisements

2003 Mateusz Żochowski, Marcin Borzymek Software Life Cycle Analysis.
Development Process. Four Factors People –10 to 1 variation in programmer productivity with the same experience Process –Methodology Product –Size Technology.
Software Project Management.  Leadership  Communications  Problem Solving  Negotiating  Influencing the Organization  Mentoring  Process.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Lecture # 2 : Process Models
Unit 2. Software Lifecycle
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 المحاضرة الثانية.
CSE 470 : Software Engineering The Software Process.
The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
Chapter 2 – Software Processes
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Software Process Models
CSC 425: Advanced Software Project
Software Engineering.
CSE 403 Lecture 8 Risk assessment. Lecture goals Understand risk management and assessment techniques Guarding against failure to meet delivery deadline,
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Process Models.
Fundamentals of Information Systems, Second Edition
Project Management Session 7
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Chapter 2- Software Process Lecture 4. Software Engineering We have specified the problem domain – industrial strength software – Besides delivering the.
Dr. Nguyen Hai Quan.  Overview  Classic Mistakes  Project Manager Requirements  Project Management Phases.
Release & Deployment ITIL Version 3
Rapid Development (Part 1) Mihail V. Mihaylov RammSoft.
1 CSE 403 Classic Mistakes Reading: Rapid Development Ch3 These lecture slides are copyright (C) Marty Stepp, 2007, with significant content taken from.
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
1 CSE 403 Software Lifecycle Models Reading: Rapid Development Ch. 7, 25 (further reading: Ch. 21, 35, 36, 20) These lecture slides are copyright (C) Marty.
Chapter 2 The process Process, Methods, and Tools
Software Processes.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
1 ISA&D7‏/8‏/ ISA&D7‏/8‏/2013 Systems Development Life Cycle Phases and Activities in the SDLC Variations of the SDLC models.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 1 Software Processes (Chapter 3)
Software Processes lecture 8. Topics covered Software process models Process iteration Process activities The Rational Unified Process Computer-aided.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
Software Engineering Management Lecture 1 The Software Process.
Yazd University, Electrical and Computer Engineering Department Course Title: Advanced Software Engineering By: Mohammad Ali Zare Chahooki The Project.
CSE 403, Spring 2007, Alverson Software Projects – the challenges we face RD:McConnell.
Object-oriented Analysis and Design Stages in a Software Project Requirements Writing Analysis Design Implementation System Integration and Testing Maintenance.
1 SWE Introduction to Software Engineering Lecture 4.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Lecture 1 Introduction, Fundamentals, Classic Mistakes 1.
Systems Analysis and Design in a Changing World, Fourth Edition
An Introduction to Software Engineering
Chapter 2 – Software Processes Lecture 1 Chapter 2 Software Processes1.
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Unit – I Presentation. Unit – 1 (Introduction to Software Project management) Definition:-  Software project management is the art and science of planning.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Software Development Life Cycle (SDLC)
Introduction to Project management and Principles.
1 Chapter 2 SW Process Models. 2 Objectives  Understand various process models  Understand the pros and cons of each model  Evaluate the applicability.
1 Project Management Skills Leadership Communications Problem Solving Negotiating Influencing the Organization Mentoring Process and technical expertise.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini II. Software Life Cycle.
Advanced Software Engineering Dr. Cheng
Methodologies and Algorithms
Lecture 3 Prescriptive Process Models
Chapter 2 SW Process Models
Life Cycle Models PPT By :Dr. R. Mall.
Software life cycle models
How to fail at delivering software
CS310 Software Engineering Lecturer Dr.Doaa Sami
Presentation transcript:

CSC 490: Advanced Software Project Fall 2005 Dr. Chuck Lillie

Course Outline Goals: Objectives: Evaluation Comprehend quality software development methodologies. Apply software engineering principles. Construct a quality software product. Objectives: By the end of this course the student should be able to: Recognize and define five major software development lifecycle models. Evaluate a Statement of Work (SOW) and determine project requirements. Create a Work Breakdown Structure (WBS) for a software project. Develop a software requirements analysis document. Design and document a software project. Write and execute a software test plan. Implement a programming project using an established software development process. Evaluation Weekly Progress Reports 20% Programming Project 40% Team Evaluation 20% Final Exam 20%

Course Outline Chapters 1, 2, 4 Chapter 3 Chapter 6 Chapter 7 Software development strategy Software development fundamentals Chapter 7 Lifecycle planning Waterfall, spiral, prototype Chapters 8, 9 Estimation Scheduling Chapter 5 Risk management Project SOW, requirements analysis, WBS, technical specifications, test plan Midterm Exam Chapters 1, 2, 4, 5, 7, 8, 9 Chapter 3 Classical mistakes Chapter 6 Core issues Time versus quality Chapters 10, 11, 12, 13 Customer oriented development Motivation Teamwork Team structure Best Practices Project Project reports Test results Working demonstration User’s manual Final Exam Comprehensive

Course Outline Software Development Process Major Programming Project Problem Definition Requirements Analysis Development Lifecycle Program Management Major Programming Project Project Definition and Planning Implementation Status Reports Project Presentation

Effective Practices Ineffective Practices Effective Practices Set of Practices You Use on Any Particular Project Schedule- Oriented Practices

Scheduled Oriented Practices Speed- Oriented Practices Schedule- Risk Oriented Practices Visibility- Oriented Practices

General Development Strategy Best Possible Schedule Classic Mistake Avoidance Development Fundamentals Risk Management Schedule Oriented Practices

Software Development Fundamentals Management Technical Quality-Assurance

Management Fundamentals Estimation and Scheduling Planning Tracking Measurement

Technical Fundamentals Requirements Management Design Construction Software Configuration Management

Quality-Assurance Fundamentals Error-Prone Modules Testing Technical Reviews Walkthroughs Code Reading Inspections

Software Development Activities Problem Definition Requirements Analysis Implementation Planning High-level Design (or Architecture) Detailed Design Coding and Unit Testing (Debugging) Integration and System Testing Deployment and Maintenance Documentation, Verification, Management

Failure to define problem may cause you to solve the wrong problem Problem Definition A clear statement of the problem Defines problem without any reference to solution Should be in user’s language Not in technical terms Failure to define problem may cause you to solve the wrong problem

Requirements Analysis This is the what is to be solved Helps ensure that the user rather than the programmer drives system’s functionality Helps avoid arguments Minimizes changes to the system after development begins Change is inevitable Set up change-control procedure Use development approaches that accommodate changes Specifying requirements adequately is a key to project success

Implementation Planning Defines how the product will be implemented Establishes development schedule Identifies resources required Labor hours and people Other direct costs Estimated budget Create Work Breakdown Structure (WBS) This is the roadmap that will be used throughout the development process. Without a roadmap you don’t know where you are going and you won’t know that you arrived.

High-level Design (or Architecture) This is how to solve the problem (recall that requirements is the what is to be solved) Defines the overall organization of the system in terms of high-level components and interactions All design levels are documented in specification documents that keep track of design decisions High-level and detail-level are usually not separated

Detailed Design Components are decomposed into lower level modules Precisely defined interactions Interfaces are defined Constraints are identified The purpose of the design phase is to specify a particular software system that will meet the stated requirements

Coding and Unit Testing (Debugging) Produces the actual code that will be delivered to the customer Typically develop modules that are independently tested Results in an implemented and tested collection of modules

Integration and System Testing All the modules that have been developed and tested individually are put together – integrated – and are tested as a whole system Integrated and tested progressively (on larger sets of modules) Some coding may be necessary to complete the integration The final stage is “actual” use or alpha testing.

Deployment and Maintenance Deployment: defines the physical run-time architecture of the system Set proper system parameters Install applications Maintenance: long-term development 60% of total cost of software is maintenance Cost of maintenance: 40% to changes in user’s requirements 17% to changes in data formats 12% to emergency fixes 9% to routine debugging 6% to hardware changes 5% to improvements in documentation 4% to improvements in efficiency 7% to other sources

Documentation, Verification, Management Common to all the other activities Documentation Main result of any activity – each activity products at least one document Verification and Validation Verification: Assessment of the internal correctness of process Validation: how the product responds to needs of customer Performed as quality control as reviews, walk-througs, and inspections Discovery and removal of errors as early as possible Management Budget, schedule, resources

Development Lifecycle Models Waterfall (Pure Waterfall) Spiral (Spiral) Evolutionary (Evolutionary Prototype) Incremental (Staged Delivery) Commercial-off-the-shelf (COTS) Integration (COTS) Rehost/port Reengineering Automated Application Generation (AAG) Maintenance

Development Lifecycle Models -- Features Requirements are defined first Multiple internal development cycles Multiple customer deliveries Functional content primary driver Process primary driver Requirements are defined first: Customer needs are analyzed and requirements are developed for the entire system prior to any of the remaining DLM activities being initiated. Multiple internal development cycles: Multiple subprojects implementing a subset of the system are planned and conducted as part of the overall project. Multiple customer deliveries: Multiple deliveries (I.e., builds) of the system are provided to the customer at interim points in the project. Only the finial build typically contains the total functionality of the system. Functional content primary driver: Refers to the primary kind of information that determines the functionality of the system. Process primary driver: Refers to the primary process related issues that has heavy influence on selecting the most appropriate DLM.

Development Lifecycle Models – Selection Criteria Does the system have a precedent (I.E., Have similar systems been built before)? Is the technology understood and stable? Are the requirements understood and stable? Are suitable COTS products available and ready to be used in end products? Is this a large or complex project or product? Is the project fully funded at startup? Is the project cost or schedule constrained and requirements cannot be reduced? Is there a need for engineering subprojects driven by risk identification and mitigation? Is the existing system’s maintenance cost too high/is her a need to facilitate future system enhancements? Requirements are defined first: Customer needs are analyzed and requirements are developed for the entire system prior to any of the remaining DLM activities being initiated. Multiple internal development cycles: Multiple subprojects implementing a subset of the system are planned and conducted as part of the overall project. Multiple customer deliveries: Multiple deliveries (I.e., builds) of the system are provided to the customer at interim points in the project. Only the finial build typically contains the total functionality of the system. Functional content primary driver: Refers to the primary kind of information that determines the functionality of the system. Process primary driver: Refers to the primary process related issues that has heavy influence on selecting the most appropriate DLM.

Waterfall Description An orderly sequence of steps from the initial software concept through system testing A review at the end of each phase Document driven Phases are discontinuous

Waterfall Advantages Disadvantages Helps minimize planning overhead Works well for projects that are well understood buy complex Works well when quality requirements dominate cost and schedule Works well if you have a technically weak staff Disadvantages Have to fully specify requirements at beginning of project Waterfall model isn’t flexible Generates few visible signs of progress until the very end Excessive amount of documentation

Waterfall Model Stakeholders Needs Analysis System Requirements Architecture Design Detailed Design Coding And Testing System Testing

Spiral Description A metamodel that can accommodate any process development model A particular model is chosen based on level of risk Spiral model is cyclic Four stages Objectives identified Alternatives evaluated and risk areas identified Develop and verify next level of product Review and plan for next iteration

Spiral http://www.stsc.hill.af.mil/crosstalk/2001/05/boehm.html

Spiral Advantages Disadvantages Requirements not well understood Risks not known As costs increase risks decrease Provides management insight Disadvantages Difficult to use for contracted software Don’t know the outcome at beginning of project Only as good at mitigating risk as engineers are at identifying risks

Evolutionary Description Advantages Disadvantages Develop system concept as you move through the project Develop prototypes including real requirements analysis, real design, and real maintainable code Advantages Manage changing requirements Unsure of optimal architecture or algorithms Produces steady, visible signs of progress Disadvantages Don’t know time required to complete project Can become an excuse to do code-and-fix

Evolutionary Design and implement initial prototype Refine prototype until acceptable Initial concept Refine prototype until acceptable Refine prototype until acceptable Refine prototype until acceptable Complete and release prototype

Incremental Description Advantages Disadvantages Also known as Staged Delivery Deliver software in successive stages throughout the project Advantages Put useful functionality into hands of customer early Provides tangible signs of progress Disadvantages Won’t work without careful planning Determining stage dependencies

Requirements Analysis Incremental Software concept Requirements Analysis Architectural Design Stage 1: Detailed design,. Code, debug, test, and delivery Stage 2: Detailed design,. Code, debug, test, and delivery Stage n: Detailed design,. Code, debug, test, and delivery

Commercial-off-the-shelf (COTS) Integration Description Advantages Disadvantages

Rehost/port Description Advantages Disadvantages

Reengineering Description Advantages Disadvantages

Automated Application Generation (AAG) Description Advantages Disadvantages

Maintenance Description Advantages Disadvantages

Estimation Size Estimation Effort Estimation Schedule Estimation Most projects overshoot their estimated schedules by anywhere from 25% to 100% Without an accurate schedule estimate, there is no foundation for effective planning

Estimation Constructing software is like constructing a house: you can’t tell exactly how much it is going to cost until you know exactly what “it” is. As with building a house, you can either build your dream house – expense be hanged – or you can build to a budget, you have to be very flexible about the product characteristics. Whether you build to a budget or not, software development is a process of gradual refinement, so some imprecision is unavoidable. Unlike building a home, in software the only way to refine the product concept and thereby the estimate is to actually build the software. Estimates can be refined over the course of a project. Promise your customer that you will provide more refined estimates at each stage.

Estimation Process Estimate the size of the product (number of lines of code or function points) First need to estimate the size of the program to be build Estimate the effort (man-months) Need accurate size estimates and historical data on past projects Estimate the schedule (calendar months) With size and effort estimates, schedule is easy Selling the schedule is HARD Provide estimates in ranges and periodically refine the ranges to provide increasing precision as the project progresses

Size Estimation Use an algorithmic approach, such as function points, that estimates program size from program features. Use size-estimation software that estimates program size from your description of program features (screens, dialogs, files, database tables, etc.) Estimate each major piece of the new system as a percentage of the size of a similar piece of an old system. Add the pieces to get the total size. Size estimation should be in terms of lines-of-code

Estimation Tips Avoid off-the-cuff estimates Allow time for the estimate, and plan it Use data form previous projects Use developer-based estimates Estimate by walk-through Estimate by categories Estimate at a low level of detail Don’t omit common tasks Use software estimation tools Use several different estimation techniques, and compare the results Change estimation practices as the project progresses

Effort Estimation Use estimation software to create an effort estimate directly from the size estimate Use organization's historical data to determine how much effort previous projects of the estimated size have taken Use an algorithmic approach such as Barry Boehm’s COCOMO model or Putnam and Myer’s lifecycle model to convert a lines-of-code estimate into an effort estimate Effort estimates should be in terms of man-months

Schedule Estimation Can get schedule estimate from effort estimate with the following equation Schedule in months = 3.0 * man-months1/3 Example 65 man-months to build project 12 months = 3*651/3 65 man-months / 12 months = 5 or 6 team members One of the common problems with schedule estimates is that they are usually done so crudely that people pad them to give themselves a margin of error.

Risk Management Risk Identification Risk Assessment Risk Analysis Risk Prioritization Risk Management Risk Management Planning Risk Control Risk Resolution Risk Monitoring

Risk Identification Most Common Schedule Risks Feature creep Requirements or development gold-plating Shortchanged quality Overly optimistic schedules Inadequate design Silver-bullet syndrome Research oriented development Weak personnel Contractor failure Friction between developers and customers

Risk Analysis Risk identified Probability of loss (%) Size of loss (weeks) Risk exposure (weeks)

Risk Prioritization Helps to identify the most important risks Plan mitigation Assign resources as needed

Risk Control Risk management planning Risk resolution Risk monitoring Avoid the risk Transfer the risk from one part of a system to another Buy information about the risk Estimate the root cause of the risk Assume the risk Publicize the risk Control the risk Risk monitoring

Classic Mistakes People related mistakes Process related mistakes Product related mistakes Technology related mistakes

Classic Mistakes People Related Mistakes Undermined motivation Weak personnel Uncontrolled problem personnel Heroics Adding people to late project Noisy, crowded offices Friction between developers and customers Unrealistic expectations Lack of effective project sponsorship Lack of stakeholder buy-in Politics placed over substance Wishful thinking

Classic Mistakes Process Related Mistakes Overly optimistic schedules Insufficient risk management Contractor failure Insufficient planning Abandonment of planning under pressure Wasted time during the fuzzy front end Shortchanged upstream activities Inadequate design Shortchanged quality assurance Insufficient management controls Premature or overly frequent convergence Omitting necessary task from estimates Planning to catch up later Code-like-hell programming

Classic Mistakes Product Related Mistakes Requirements gold-platting Feature creep Developer gold-platting Push-me, pull-me negotiation Research-oriented development

Classic Mistakes Technology Related Mistakes Silver-bullet syndrome Overestimated savings from new tools or methods Switching tools in the middle of a project Lack of automated source code control

Best Practices Change Board Group that controls changes to software Efficacy Potential reduction from nominal schedule: Fair Improvement in progress visibility: Fair Effect on schedule risk: Decreased Risk Chance of first-time success: Very Good Major Risk Approving to few or too many changes

Best Practices Daily Build and Smoke Test Product is built every day (compiled, linked, and combined into an executable program) – the product is then tested to see if it “smokes” Efficacy Potential reduction from nominal schedule: Good Improvement in progress visibility: Good Effect on schedule risk: Decreased Risk Chance of first-time success: Very Good Major Risk Pressure to release interim versions of a product too frequently

Best Practices Designing for Change Identifying likely changes, developing a change plan, and hiding design decisions so that changes do not ripple through a program. Efficacy Potential reduction from nominal schedule: Fair Improvement in progress visibility: None Effect on schedule risk: Decreased Risk Chance of first-time success: Good Chance of long-term success: Excellent Major Risk Overeliance on the use of programming languages to solve design problems rather than on change-oriented design practices

Best Practices Evolutionary Delivery Deliver selected portions of the software earlier than would otherwise be possible. Efficacy Potential reduction from nominal schedule: Good Improvement in progress visibility: Excellent Effect on schedule risk: Decreased Risk Chance of first-time success: Very Good Chance of long-term success: Excellent Major Risk Feature creek, diminished project control, unrealistic schedule and budget expectations, inefficient use of development time by developers.

Best Practices Evolutionary Prototyping System developed in increments so that it can readily be modified in response to end-user and customer feedback. Efficacy Potential reduction from nominal schedule: Excellent Improvement in progress visibility: Excellent Effect on schedule risk: Increased Risk Chance of first-time success: Very Good Chance of long-term success: Excellent Major Risk Unrealistic schedule and budget expectations, inefficient use of prototyping time, unrealistic performance expectations, poor design, poor maintainability

Best Practices Goal Setting Use goals to motivate software developers (Shorten schedule, decrease risk, maximum visibility) Efficacy Potential reduction from nominal schedule: Very Good, None, None Improvement in progress visibility: None, Good, Excellent Effect on schedule risk: Increased Risk, Decreased Risk, Decreased Risk Chance of first-time success: Good, Good, Good Chance of long-term success: Very Good, Very Good, Very Good Major Risk Significant loss of motivation if goals are changed

Best Practices Inspections Formal technical review Efficacy Major Risk Potential reduction from nominal schedule: Very Good Improvement in progress visibility: Fair Effect on schedule risk: Decreased Risk Chance of first-time success: Good Chance of long-term success: Excellent Major Risk None

Best Practices Joint Application Development (JAD) Requirements-definition and user-interfaced design methodology in which end-users, executives, and developers attend intense off-site meetings to work out a system’s details. Efficacy Potential reduction from nominal schedule: Good Improvement in progress visibility: Fair Effect on schedule risk: Decreased Risk Chance of first-time success: Good Chance of long-term success: Excellent Major Risk Unrealistic productivity expectations following the JAD sessions, premature, inaccurate estimates of remaining work following JAD sessions

Backup Slides

Waterfall Model Software Requirements Analysis Software Detailed Design Software Integration Stakeholders Needs Analysis Software Architectural Design Software Coding And Testing Software Qualification Testing System Requirements Analysis Software Item n System Qualification & Release Activities Software/Hardware Component Integration & Qualification System Architecture Design Hardware Item n Hardware Component Requirements Hardware Qualification Testing Hardware Design Hardware Make/Buy Decision Fabrication/Purchase And Assembly