The “Lifecycle” of Software. Chapter 5. Alternatives to the Waterfall Model The “Waterfall” model can mislead: boundaries between phases are not always.

Slides:



Advertisements
Similar presentations
Configuration Management
Advertisements

COMP8130 and 4130Adrian Marshall Verification & Validation INSPECTIONS Adrian Marshall.
Software Process Models
Software Engineering CSE470: Process 15 Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities:
Arlow and Neustadt ch.21 What is the unified process? People are more important than any process. Good people with a good process will outperform good.
Chapter 4 Quality Assurance in Context
Software Engineering Session 14 INFM 603. Software Software represents an aspect of reality –Input and output represent the state of the world –Software.
Chapter 7: Key Process Areas for Level 2: Repeatable - Arvind Kabir Yateesh.
Code Inspections CS 414 – Software Engineering I Donald J. Bagert Rose-Hulman Institute of Technology January 23, 2003.
Rational Unified Process
Week 7: Requirements validation Structured walkthroughs Why have walkthroughs When to have walkthroughs Who participates What procedures are helpful Thoughtless.
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
I n t e g r i t y - S e r v i c e - E x c e l l e n c e Business & Enterprise Systems Introduction to Hewlett Packard (HP) Application Lifecycle Management.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Chapter 2- Software Process Lecture 4. Software Engineering We have specified the problem domain – industrial strength software – Besides delivering the.
Configuration Management
Effective Methods for Software and Systems Integration
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
INFO 637Lecture #31 Software Engineering Process II Launching & Strategy INFO 637 Glenn Booker.
Extreme Programming Software Development Written by Sanjay Kumar.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
Chapter 2 The process Process, Methods, and Tools
Prologue: The Software Process. Main Phases of Software Process 1. Requirements Analysis (answers “WHAT?”) Specifying what the application must do 2.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 10: Testing and Inspecting to Ensure High Quality Part 4:
Rational Unified Process Fundamentals Module 4: Disciplines II.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Software Testing Course Shmuel Ur
By Touseef Tahir Software Testing Basics. Today's Agenda Software Quality assurance Software Testing Software Test cases Software Test Plans Software.
Capability Maturity Models Software Engineering Institute (supported by DoD) The problems of software development are mainly caused by poor process management.
Software Testing. What is Testing? The process consisting of all life cycle activities, both static and dynamic, concerned with planning, preparation.
INFO 637Lecture #101 Software Engineering Process II Review INFO 637 Glenn Booker.
Requirements as Usecases Capturing the REQUIREMENT ANALYSIS DESIGN IMPLEMENTATION TEST.
Quality Assurance IS 101Y/CMSC 101Y November 12, 2013 Carolyn Seaman University of Maryland Baltimore County.
Software Testing and Maintenance 1 Code Review  Introduction  How to Conduct Code Review  Practical Tips  Tool Support  Summary.
CEN5011, Fall CEN5011 Software Engineering Dr. Yi Deng ECS359, (305)
Configuration Management and Change Control Change is inevitable! So it has to be planned for and managed.
Requirements Management with Use Cases Module 10: Requirements Across the Product Lifecycle Requirements Management with Use Cases Module 10: Requirements.
Software Configuration Management (SCM). Product Developer Disciplines One view of the world is that there are three types of activities are required.
Chapter 8 Workflows of the Process Taken from Walker Royce’s textbook – Software Project Management plus a number of Personal Comments.
Chapter 1: Fundamental of Testing Systems Testing & Evaluation (MNN1063)
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Software Engineering Lecture # 1.
Software Configuration Management (SCM) Source: Pressman, R., Software Engineering: A Practitioner ’ s Approach. Boston: McGraw Hill, Inc., 2005; Ghezzi,
Software Development Life Cycle (SDLC)
Rational Unified Process Fundamentals Module 4: Core Workflows II - Concepts Rational Unified Process Fundamentals Module 4: Core Workflows II - Concepts.
© Michael Crosby and Charles Sacker, 2001 Systematic Software Reviews Software reviews are a “quality improvement process for written material”.
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
Requirements Engineering Requirements Validation and Management Lecture-24.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Requirement engineering & Requirement tasks/Management. 1Prepared By:Jay A.Dave.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
RUP RATIONAL UNIFIED PROCESS Behnam Akbari 06 Oct
Week # 4 Quality Assurance Software Quality Engineering 1.
What is a software? Computer Software, or just Software, is the collection of computer programs and related data that provide the instructions telling.
Software Engineering Session 12 INFM 603. Software Software represents an aspect of reality –Input and output represent the state of the world –Software.
The Software Lifecycle Stuart Faulk. Definition Software Life Cycle: evolution of a software development effort from concept to retirement Life Cycle.
Configuration Management
Chapter 11: Software Configuration Management
Configuration Management
Level 1 Level 1 – Initial: The software process is characterized as ad hoc and occasionally even chaotic. Few processes are defined, and success depends.
Applied Software Implementation & Testing
Lecture 09:Software Testing
Computer Science Life Cycle Models.
Software life cycle models
Chapter 11: Software Configuration Management
SDLC (Software Development Life Cycle)
Presentation transcript:

The “Lifecycle” of Software. Chapter 5

Alternatives to the Waterfall Model The “Waterfall” model can mislead: boundaries between phases are not always distinct, nor are the “activities” in the phases strictly exclusive. The Waterfall model is not the only model there is!

The spiral model The “Spiral” model suggests that activities might be repeated: that is, during the software lifecycle there are several “waterfall” model cycles. The software is finished only when a predefined level or risk has been satisfied!

Exploratory programming Exploratory programming is for the development of programs in environments where the requirements are volatile or there are no expert “customers” As the requirements are explored using code, when a satisfactory product is achieved, the project is complete.

Opportunistic development Opportunistic development is driven more by a business model, in which allocated resources drive the rate of development and activities. Many times, resources are put on the most difficult problems first, leading to the nickname “hardest-part-first” development.

The Phases of Development The phases of development are not exclusive. For instance, design can legitimately happen during the requirements phase. Ideally, though, the activities reserved to other phases are kept to a minimum The general phases are: requirements, specification, design, coding, and testing. (Maintenance is not included in this discussion, but be aware that it exists!)

Requirements During the requirements phase, activities revolve around the definition of the problem. These activities usually include interviews with end-users, recording requirements information, exploration of any existing workflows or systems, use-case identification, and so on.

Specification The specification phase involves translating the information from the requirements phase into a more structured form. In addition, analysis usually takes place, which systematically explores the requirements for conflicts, or identifies missing or incorrect requirements. The output of this phase is information suitable for partitioning into a design (and testing!)

Design During design, a software architecture is developed, and the specified requirements are partitioned into the design. The architecture can be developed formally (as in the case of SA/SD), or can be laid down based on experience acquired from developing similar systems. The output from this phase is module specifications suitable for development of code.

Code The coding phase translates the design (and as a result, the specification), into executable code. The output from the coding phase is code suitable for testing. Typically, this means that it compiles, links, and satisfactorily passes a subset of sets, sometimes called a “smoke test.”

Testing Testing compares the developed code to the requirements and specifications, using a set of specifically designed tests. The problems found during testing (defects, or “bugs”), are turned back over to the development team for correction, then the test activity begins again with the next release.

Software inspection One of the best ways to catch software defects is to find them before they are “built into” the system. Software inspection provides a method for doing this. Simply put, software inspection uses “many eyes” to check work as it is released for production.

Inspection works It has been demonstrated many times that software inspection traps defects early in the process. Inspection can be used on every software artifact: requirements, specifications, design, code, and even tests.

The participants and the procedure Author: Producer of software artifact (code, specification, design, test, whatever). Inspectors: Critical reviewers of artifact. Recorder: Records comments from inspectors. Moderator: Keeps the discussion “on topic”.

The participants and the procedure (cont’d) Inspectors take turn critiquing a page, module, function, or whatever has been agreed upon as a “unit”. Recorder records inspectors comments. Author may ask for elaboration or points, moderator make sure discussion doesn’t “escalate”. Next instructor critiques the same page, and so on until all instructors have critiqued the “unit”. The cycle begins again with the next page (or “unit.”)

Inspection is expensive Inspection is “expensive” in resources. Time is required to prepare the materials, study the materials, and attend the review. Other activities must halt while the inspection activities occur.

What can an individual do? In the event that an entire “formal” inspection is prohibitive (four people minimum), alternative forms exist. Work with another engineer to perform a scaled- down version of the inspection. This can work if both engineers are experienced in inspection, and have a good handle on their ego, as well as a sensitivity to the other person’s feelings!

Maintenance Throughout the Lifecycle “Maintenance” is “corrective” action: in essence, updating documents (and code) to fix defects. The “defects” may be a changed requirement, design element, or test. These changes can have an impact on may software artifacts, so they need to be updated, or “maintained.”

Debugging Debugging can reveal problems that are really ‘bugs’ in the specification: it behaves exactly as specified, but it is wrong! Inspections can also be considered “debugging”, and can also uncover design flaws, specification flaws, and so on.

Configuration management Configuration management is not just version control! Configuration management outlines how a change moves through a review process, how changes to documents are made, and how changed documents are distributed! This make sure every group has a chance to assess the impact of a change before it is made!

Managing a Development Lifecycle Fundamental questions pop up during software development: Are we on track? Do we have enough people? What are the current issues and problems? A few simple tools can help with some of these basic questions, and any software engineer can put these together at any time.

Progress reports Progress reports can be prepared by the individual or team to outline basic ‘status’. These reports contain basic information essential to management: what was done this week, what is planned for next, and what obstacles have been encountered.

Dividing effort among the phases Knowing how effort escalates during the development process, and knowing how this effort relates to the calendar is important for managers! Remember, schedule is calendar-days, while effort is man-months (or weeks, or whatever.) A man-month might well fit into a week: four engineers working for one-week (schedule) is a man-month (effort).