Software Engineering Session 14 INFM 603. Software Software represents an aspect of reality –Input and output represent the state of the world –Software.

Slides:



Advertisements
Similar presentations
Object-Oriented Software Development CS 3331 Fall 2009.
Advertisements

Virtual University - Human Computer Interaction 1 © Imran Hussain | UMT Imran Hussain University of Management and Technology (UMT) Lecture 16 HCI PROCESS.
CS487 Software Engineering Omar Aldawud
CS 325: Software Engineering January 13, 2015 Introduction Defining Software Engineering SWE vs. CS Software Life-Cycle Software Processes Waterfall Process.
Processes. Outline Definition of process Type of processes Improvement models Example Next steps… 1.
Sharif University of Technology Session # 3.  Contents  Systems Analysis and Design Sharif University of Technology MIS (Management Information System),
The “Lifecycle” of Software. Chapter 5. Alternatives to the Waterfall Model The “Waterfall” model can mislead: boundaries between phases are not always.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Alternate Software Development Methodologies
Chapter 6 The Process of Interaction Design Presented by: Kinnis Gosha, Michael McGill, Jamey White, and Chiao Huang.
Requirements - Why What and How? Sriram Mohan. Outline Why ? What ? How ?
1 CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
Software Development Process and Introduction to Java Session 1 LBSC 790 / INFM 718B Building the Human-Computer Interface.
1 CMSC 132: Object-Oriented Programming II Software Development III Department of Computer Science University of Maryland, College Park.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
SE 555 Software Requirements & Specification 1 SE 555 Software Requirements & Specification Prototyping.
SDLC. Information Systems Development Terms SDLC - the development method used by most organizations today for large, complex systems Systems Analysts.
Implementation. We we came from… Planning Analysis Design Implementation Identify Problem/Value. Feasibility Analysis. Project Management. Understand.
CODING Research Data Management. Research Data Management Coding When writing software or analytical code it is important that others and your future.
Chapter 9 – Software Evolution and Maintenance
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Data Structures Session 8 LBSC 790 / INFM 718B Building the Human-Computer Interface.
Software Engineering Week 12 INFM 603. The System Life Cycle Systems analysis –How do we know what kind of system to build? User-centered design –How.
INTROSE Introduction to Software Engineering Raymund Sison, PhD College of Computer Studies De La Salle University Software: Definitions,
UML - Development Process 1 Software Development Process Using UML (2)
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Chapter 2 The process Process, Methods, and Tools
SE-280 Dr. Mark L. Hornick 1 Process Adaptations.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Understand Application Lifecycle Management
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Chapter 8 – Software Testing Lecture 1 1Chapter 8 Software testing The bearing of a child takes nine months, no matter how many women are assigned. Many.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Teaching material for a course in Software Project Management & Software Engineering – part II.
Capability Maturity Models Software Engineering Institute (supported by DoD) The problems of software development are mainly caused by poor process management.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
Systems Design Approaches The Waterfall vs. Iterative Methodologies.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Software Development Cycle What is Software? Instructions (computer programs) that when executed provide desired function and performance Data structures.
Software Assurance Session 13 INFM 603. Bugs, process, assurance Software assurance: quality assurance for software Particularly assurance of security.
Debugging Strategies from Software Carpentry. Agan's Rules Many people make debugging harder than it needs to be by: Using inadequate tools Not going.
Rational Unified Process Mr Hisham AlKhawar. Iterative versus Waterfall  We need to use a life cycle model in order to approach developing a system easily,
Systems Analysis and Design in a Changing World, Fourth Edition
Chapter 4 프로세스 모델 Process Models
PROC-1 1. Software Development Process. PROC-2 A Process Software Development Process User’s Requirements Software System Unified Process: Component Based.
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
CS 5150 Software Engineering Lecture 2 Software Processes 1.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
Chapter 2 – Software Processes Lecture 1 1Chapter 2 Software Processes.
Sistemas de Información Agosto-Diciembre 2007 Sesión # 9.
Modelling the Process and Life Cycle. The Meaning of Process A process: a series of steps involving activities, constrains, and resources that produce.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Lectures 2 & 3: Software Process Models Neelam Gupta.
Introduction Requirements and the Software Lifecycle (3)
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Software Engineering Salihu Ibrahim Dasuki (PhD) CSC102 INTRODUCTION TO COMPUTER SCIENCE.
Software Engineering Session 12 INFM 603. Software Software represents an aspect of reality –Input and output represent the state of the world –Software.
Software Development Life Cycle. The Software Life Cycle  Encompasses all activities from initial analysis until end of work  Formal process for software.
Chapter 2: The Process. What is Process? Software Engineering Process is the glue that holds the technology layers together and enables rational and timely.
Software Development - Methodologies
Software Development.
Level 1 Level 1 – Initial: The software process is characterized as ad hoc and occasionally even chaotic. Few processes are defined, and success depends.
Introduction to Software Engineering
Testing and Test-Driven Development CSC 4700 Software Engineering
Baisc Of Software Testing
Extreme Programming.
Presentation transcript:

Software Engineering Session 14 INFM 603

Software Software represents an aspect of reality –Input and output represent the state of the world –Software describes how the two are related Programming languages specify the model –Data structures model things –Structured programming models actions –Object-oriented programming links the two A development process organizes the effort

Software Engineering Systematic –Repeatable Disciplined –Transferable Quantifiable –Managable

Tradition Heroic age of software development: small teams of programming demigods wrestle with many-limbed chaos to bring project to success, or die in the attempt Kind of fun for programmers... … not so fun for project stakeholders!

The Waterfall Model Key insight: invest in the design stage –An hour of design can save a week of debugging! Three key documents –Requirements Specifies what the software is supposed to do –Specification Specifies the design of the software –Test plan Specifies how you will know that it did it

The Waterfall Model Requirements Specification Software Test Plan

Bug Hunting Bugs are your code not behaving as you designed it Many can be found by testing for expected behavior But some are not found until operational use! Users can report bugs And in the mean time, they need workarounds

Bug Tracking Even with good processes, (alleged) bugs will still turn up in system-level products, both in development and in deployment Tools for managing, tracking, performing statistics on such bugs and vulnerabilities essential, particularly on large projects. A core tool is the bug tracker e.g., Bugzilla

Bug Counting How good a metric of software quality is “number of oustanding bugs”? Are there other reasons you (as a manager) might want to introduce it as a metric? What would you expect to be the most immediate effect if you introduced it as a metric (and tied programmer appraisal to it)?

Design! Bad design leads to messy workarounds; messy workarounds lead to bugs and vulnerabilities Catch mistakes early! The later in the development process you find bugs, the more difficult and expensive they are to fix

Coding Coding standards Layout: readable code is easier to debug Design Patterns: avoid common pitfalls, build code in the expected manner Verification: code checkers Code review Computers don't criticize; other coders do! Formalized in pair programming (Proofs of correctness) Code less Bugs per 100 lines surprisingly invariant Libraries: maximise re-use of code, yours and others

Debugging is harder than coding! “Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it” – Brian W. Kernighan and P. J. Plauger, The Elements of Programming

Testing Manual vs. automated testing How can you design to facilitate automation? Unit, integration, and system testing Test: components separately; integrated subsystems; then full system for implementation of requirements How to design for this model of testing? Regression testing, and test-driven development Keep bugs fixed; keep non-bugs absent Test, then code

The Spiral Model Build what you think you need –Perhaps using the waterfall model Get a few users to help you debug it –First an “alpha” release, then a “beta” release Release it as a product (version 1.0) –Make small changes as needed (1.1, 1.2, ….) Save big changes for a major new release –Often based on a total redesign (2.0, 3.0, …)

The Spiral Model

Unpleasant Realities The waterfall model doesn’t work well –Requirements usually incomplete or incorrect The spiral model is expensive –Rule of thumb: 3 iterations to get it right –Redesign leads to recoding and retesting

The Rapid Prototyping Model Goal: explore requirements –Without building the complete product Start with part of the functionality –That will (hopefully) yield significant insight Build a prototype –Focus on core functionality, not in efficiency Use the prototype to refine the requirements Repeat the process, expanding functionality

Rapid Prototyping + Waterfall Update Requirements Choose Functionality Build Prototype Initial Requirements Write Specification Create Software Write Test Plan

Objectives of Rapid Prototyping Quality –Build systems that satisfy the real requirements by focusing on requirements discovery Affordability –Minimize development costs by building the right thing the first time Schedule –Minimize schedule risk by reducing the chance of requirements discovery during coding

The Specification Formal representation of the requirements Represent objects and their relationships –Using a constrained entity-relationship model Specify how the behavior is controlled –Activity diagrams, etc.

Characteristics of Good Prototypes Easily built (about a week’s work) –Requires powerful prototyping tools –Intentionally incomplete Insightful –Basis for gaining experience –Well-chosen focus (DON’T built it all at once!) Easily modified –Facilitates incremental exploration

Prototype Demonstration Choose a scenario based on the task Develop a one-hour script –Focus on newly implemented requirements See if it behaves as desired –The user’s view of correctness Solicit suggestions for additional capabilities –And capabilities that should be removed

A Disciplined Process Agree on a project plan –To establish shared expectations Start with a requirements document –That specifies only bedrock requirements Build a prototype and try it out –Informal, focused on users -- not developers Document the new requirements Repeat, expanding functionality in small steps

What is NOT Rapid Prototyping? Focusing only on appearance –Behavior is a key aspect of requirements Just building capabilities one at a time –User involvement is the reason for prototyping Building a bulletproof prototype –Which may do the wrong thing very well Discovering requirements you can’t directly use –More efficient to align prototyping with coding

Agile Methods Prototypes that are “built to last” Planned incremental development –For functionality, not just requirements elictitation Privileges time and cost –Functionality becomes the variable

Agile Methods Return to the heroic age of software development: small teams of programming demigods wrestle with many-limbed chaos to bring project to success, or die in the attempt Kind of fun for programmers... … and for project stakeholders!

Agile Methods

Comparing Agile Methods