Software Engineering and Best Practices Sources: Various. Rational Software Corporation slides, OOSE textbook slides, Per Kroll talk, How to Fail with.

Slides:



Advertisements
Similar presentations
Basic SDLC Models.
Advertisements

Prescriptive Process models
1 Requirements and the Software Lifecycle The traditional software process models Waterfall model Spiral model The iterative approach Chapter 3.
Chapter 3 Process Models
Software Process Models
30 Software Engineering and Best Practices Sources: Various. Rational Software Corporation slides, OOSE textbook slides, Per Kroll talk, How to Fail with.
W5HH Principle As applied to Software Projects
PRJ270: Essentials of Rational Unified Process
® IBM Software Group © 2006 IBM Corporation PRJ480 Mastering the Management of Iterative Development v2 Module 8: Post-Project Analysis.
Software Engineering. How many lines of code? Average CS1004 assignment: 200 lines Average CS4115 project: 5000 lines Corporate e-commerce project: 80,000.
Software Engineering.
Requirements - Why What and How? Sriram Mohan. Outline Why ? What ? How ?
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Continuing Best Practices ► Slide information taken in large part from former Rational Corporation slides considerably modified and supplemented for classroom.
1 SOFTWARE PRODUCTION. 2 DEVELOPMENT Product Creation Means: Methods & Heuristics Measure of Success: Quality f(Fitness of Use) MANAGEMENT Efficient &
Iterative development and The Unified process
Mastering OOA/OOD with UML. Contents Introduction Requirements Overview OOAOOD.
211 Continuing Best Practices ► Slide information taken in large part from former Rational Corporation slides. Considerably modified and supplemented for.
Unified Software Practices v D Copyright  1998 Rational Software, all rights reserved 1 Best Practices of Software Engineering.
© 2005 Prentice Hall14-1 Stumpf and Teague Object-Oriented Systems Analysis and Design with UML.
Principles of Object Technology Module 1: Principles of Modeling.
Rational Unified Process
Object-Oriented Analysis and Design Iterative Development and the Unified Process.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
1 IBM Software Group ® Mastering Object-Oriented Analysis and Design with UML 2.0 Module 1: Best Practices of Software Engineering.
Chapter 2 The process Process, Methods, and Tools
-Nikhil Bhatia 28 th October What is RUP? Central Elements of RUP Project Lifecycle Phases Six Engineering Disciplines Three Supporting Disciplines.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Identify steps for understanding and solving the
Capability Maturity Models Software Engineering Institute (supported by DoD) The problems of software development are mainly caused by poor process management.
MCS 270 Spring 2014 Object-Oriented Software Development.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Systems Design Approaches The Waterfall vs. Iterative Methodologies.
SOFTWARE ENGINEERING MCS-2 LECTURE # 3. SOFTWARE PROCESS  A software development process, also known as a software development life- cycle (SDLC), is.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
1 SEG4910 – Projet génie logiciel en fin d’études / Software Engineering Capstone Project Review of Analysis and Iterative Development Timothy C. Lethbridge.
Software Process Or how to make strength productive Tools Requirements Management Visual Modeling Test coverage and metrics Change Management Requirements.
Rational Unified Process (RUP) Process Meta-model Inception Phase These notes adopted and slightly modified from “RUP Made Easy”, provided by the IBM Academic.
J. Scott Hawker p. 1Some material © Rational Corp. Rational Unified Process Overview See and use the RUP Browser on lab machines.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Yazd University, Electrical and Computer Engineering Department Course Title: Advanced Software Engineering By: Mohammad Ali Zare Chahooki The Rational.
Software Development Life Cycle (SDLC)
Overview of RUP Lunch and Learn. Overview of RUP © 2008 Cardinal Solutions Group 2 Welcome  Introductions  What is your experience with RUP  What is.
Rational Unified Process (RUP)
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
Rational Unified Process Fundamentals Best Practices of Software Engineering Rational Unified Process Fundamentals Best Practices of Software Engineering.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 5 Slide 1 Project management.
Object-Oriented Software Engineering Chapter 1 Software and Software Engineering.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Unified Software Practices v 5.0 Copyright  1998 Rational Software, all rights reserved 1 R Rational Unified Process  “de facto standard”, framework.
Unified Software Practices v D Copyright  1998 Rational Software, all rights reserved 1 Practice 5: Verify Software Quality Control Changes Develop.
RUP RATIONAL UNIFIED PROCESS Behnam Akbari 06 Oct
Yazd University, Electrical and Computer Engineering Department Course Title: Advanced Software Engineering By: Mohammad Ali Zare Chahooki The Rational.
26 Software Engineering and Best Practices Sources: Various. Rational Software Corporation slides, OOSE textbook slides, Per Kroll talk, How to Fail with.
Methodologies and Algorithms
Lecture 3 Prescriptive Process Models
Software Engineering and Best Practices
Requirements and the Software Lifecycle
Introduction to Software Engineering
Software Process Models
Software Engineering and Best Practices
CS385T Software Engineering Dr.Doaa Sami
Teaching slides Chapter 13
Software Engineering and Best Practices
Presentation transcript:

Software Engineering and Best Practices Sources: Various. Rational Software Corporation slides, OOSE textbook slides, Per Kroll talk, How to Fail with the RUP article, textbooks Most slides have been modified considerably

What is Software Engineering? ► The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraints ► Note:  Process, systematic (not ad hoc), evolutionary…  Constraints: high quality, cost, time, meets user requirements

Analysis of the Definition: ► Systematic development and evolution  An engineering process involves applying well understood techniques in a organized and disciplined way  Many well-accepted practices have been formally standardized ► e.g. by the IEEE or ISO  Most development work is evolution ► Large, high quality software systems  Software engineering techniques are needed because large systems cannot be completely understood by one person  Teamwork and co-ordination are required  Key challenge: Dividing up the work and ensuring that the parts of the system work properly together  The end-product that is produced must be of sufficient quality ► Cost, time and other constraints  Finite resources  The benefit must outweigh the cost  Others are competing to do the job cheaper and faster  Inaccurate estimates of cost and time have caused many project failures

Comments: ► $250 billion annually in US. ► Over 175,000 projects! ► Complexity, size, distribution, importance push our limits. ► Business pushes these limits:  Great demands for rapid development and deployment ► Incredible pressure to develop applications that are:  On time, Within budget, Meets the users’ requirements ► Figures in the late 90s indicated that at most  70% of projects completed  Over 50% ran over twice the intended budget  $81 billion dollars spent in cancelled projects!! ► We are doing something wrong as an industry!

What Happens in Practice Sequential activities: (Traditional ‘Waterfall’ Process) Requirements Design Code Integration Test Late Design Breakage 100% Project Schedule Development Progress (% coded) Original Target Date Integration Begins Risk inadequately addressed Process not receptive to Change Problems not really ‘seen’ until near delivery date! Until then, ‘all is well…’ Big Bang approach – full delivery Long development cycles… Little user involvement, etc. etc…

Symptoms of Software Development Problems ► Inaccurate understanding of end-user needs ► Inability to deal with changing requirements ► Modules that don’t fit together (integration) ► Software that’s hard to maintain or extend (brittle) ► Late discovery of serious project flaws (integration) ► Poor software quality (architecture, risks unanticipated…) ► Process not responsive to Change (Gantt Charts…) ► Unacceptable software performance (Risk, architecture, …) ► Team members in each other’s way, unable to reconstruct who changed what, when, where, why (software architecture, … ► …and we could go on and on…

► We need a process that  Will serve as a framework for large scale and small projects  Adaptive – embraces ‘change!’ ► Opportunity for improvement not identification of failure!  Iterative (small, incremental ‘deliverables’)  Risk-driven (identify / resolve risks up front)  Flexible, customizable process (not a burden; adaptive to projects)  Architecture-centric (breaks components into ‘layers’ or common areas of responsibility…)  Heavy user involvement ► Identify best ways of doing things – a better process – acknowledged by world leaders… Need a Better Hammer!

Develop Iteratively Control Changes Use Component Architectures ManageRequirements ModelVisually VerifyQuality Best Practices of Software Engineering Know these!

Symptoms end-user needs changing requirements modules don’t fit hard to maintain late discovery poor quality poor performance colliding developers build-and-release Root Causes insufficient requirements ambiguous communications brittle architectures overwhelming complexity undetected inconsistencies poor testing subjective assessment waterfall development uncontrolled change insufficient automation Best Practices develop iteratively manage requirements use component architectures model the software visually verify quality control changes Addressing Root Causes Eliminates the Symptoms

Practice 1: Develop Software Iteratively Develop Iteratively Control Changes Use Component Architectures Manage Requirements Verify Quality Considered by many practitioners to be the most significant of the six

Practice 1: Develop Software Iteratively ► Until recently, we were developing systems under the assumption that most requirements can be identified up front. ► The research deconstructing this myth includes work by Capers Jones. (See next slide) In this very large study of 6,700 projects, creeping requirements — those not anticipated near the start—are a very significant fact of software development life, ranging from around 25% on average projects up to 50% on larger ones.

Interestingly, ► An initial design will likely be flawed with respect to its key requirements. Requirements rarely fully known up front! ► Late-phase discovery of design defects results in costly over-runs and/or project cancellation  Oftentimes requirements change – during development! ► While large projects are more prone to cost overruns, medium-size/small projects are vulnerable to cancellation. ► The key reasons continue to be  poor project planning and management,  shortage of technical and project management expertise,  lack of technology infrastructure,  disinterested senior management, and  inappropriate project teams.”

Waterfall Delays Risks RISKRISK T I M E Integration System Test Code Design Requirements Waterfall risk Walker Royce, 1995

Iterative Development Earliest iterations address greatest risks Each iteration produces an executable release Each iteration includes integration and test Iteration 1Iteration 2 Iteration 3

Accelerate Risk Reduction Iterative T I M E Iteration Risk reduction RISKRISK Waterfall risk Walker Royce, 1995

Iterative Development Characteristics ► Critical risks are resolved before making large investments ► Initial iterations enable early user feedback  Easy to resolve problems early.  Encourages user feedback in meaningful ways ► Testing and integration are continuous – assures successful integration (parts all fit)  Continuous testing. ► Objective milestones provide short-term focus ► Progress measured by assessing implementations ► Partial implementations can be deployed  Waterfall method – no delivery  Incremental development? May be some great values in delivering key parts of application. Critical components delivered first? ► No big-bang approach!

Iterative Lifecycle Graph In an, you may walk through all disciplines In an iteration, you may walk through all disciplines CONTENTSTRUCTURECONTENTSTRUCTURE T I M E

Executable Releases RUP Iterations and Phases An iteration is a distinct sequence of activities with an established plan and evaluation criteria, resulting in an executable release. Preliminary Iteration Architect. Iteration Architect. Iteration Devel. Iteration Devel. Iteration Devel. Iteration Transition Iteration Transition Iteration ElaborationConstructionTransitionInception

Enables and encourages user feedback Serious misunderstandings evident early in the life cycle Development focuses on critical issues – break it down! Objective assessment thru testing Inconsistencies detected early Testing starts earlier – continuous! Risks identified and addressed early - via planned iterations! Problems Addressed by Iterative Development Root Causes Solutions  Insufficient requirements  Ambiguous communications  Brittle architectures  Overwhelming complexity  Subjective assessment  Undetected inconsistencies  Poor testing  Waterfall development  Uncontrolled change  Insufficient automation

No Free Lunch- Traps Abound… ► Major impacts on Project Managers, though…. ► Trap: When the initial risks are mitigated, new ones emerge Do not do just the easy stuff, to look good. Do not do just the easy stuff, to look good. Keep re-planning based on all new information. Keep re-planning based on all new information. ► Trap: Remember that ‘some’ Rework enables you to enhance your solution your solution Accommodate change early in the project Accommodate change early in the project ► Trap: Iterative development does not mean never to commit to commit to a solution to commit to a solution ► Monitor ‘scrap and rework’ ► Trap: Must Control “requirement creep, ” however… Some clients will now naturally recognize many ‘musts…’ clients will now naturally recognize many ‘musts…’

Many Traps in Iterative Development Here is another trap: Too long initial iteration ► Winning is fun. A winning team works better than a loosing team ► Better to have a short initial iteration, than a too long  Cut scope if necessary ► Avoid ‘analysis-paralysis’ by time-boxing, you can enhance in later iterations (more later) ► Establish an even rhythm for project (at least within a phase) ► Not completing iterations makes you lose most of the benefit ► Focus on results and deliverables, not activities

Problem: Dangerous Iteration Patterns Teams not synchronized -> chaos First iteration too loaded -> panic Too much overlap -> no feedback loop

Problem: Fixed Plans Produced Upfront ► Trap: Fine grained planning from start to end ► Trap: Too much uncertainty makes detailed plans for the entire project meaningless (also not true!)  Does not mean that we should not plan  Establish milestones and track progress relative to milestones

Solution: Plan With Evolving Levels of Detail – Be Careful!!! Current Iteration Next Iteration Phases and major milestones  What and when Iterations for each phase  Number of iterations  Objectives and Duration One For Entire Project Fine-grained Plans: Iteration Plans Coarse-grained Plan: Software Development Plan  Iterative does not mean less work and shorter schedule  It is about greater predictability  It is within the fine-grained plans that we have predictability…

Iterations Are Time-boxed ► Work is undertaken within an iteration. ► The iteration plan defines the artifacts to be delivered, roles and activities. ► An iteration is clearly measurable. ► Iterations are RISK DRIVEN

The Iteration Plan Defines…. The deliverables for that iteration. The to do list for the team members

Project progress is made against MILESTONES ► Each phase is defined by a milestone. ► Progress is made by passing milestones. ► Phases - NOT TIMEBOXED. ► Iterations ARE TIMEBOXED. ► Milestones measure success Inception ElaborationConstructionTransition Major Milestones