Design and Programming Chapter 7 Applied Software Project Management, Stellman & Greene See also:

Slides:



Advertisements
Similar presentations
Object Oriented Analysis And Design-IT0207 iiI Semester
Advertisements

Testing Relational Database
Making the System Operational
CSC271 Database Systems Lecture # 18. Summary: Previous Lecture  Transactions  Authorization  Authorization identifier, ownership, privileges  GRANT/REVOKE.
Test-Driven Development and Refactoring CPSC 315 – Programming Studio.
Systems Analysis, Prototyping and Iteration Systems Analysis.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Chapter 17: Rapid software development November 3, 2008.
Test-Driven Development and Refactoring Project 3 Lecture 1 CPSC 315 – Programming Studio Fall 2009.
CSI 101 Elements of Computing Spring 2009 Lecture #2 Development Life Cycle of a Computer Application Monday January 26th, 2009.
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
Source Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
Database System Development Lifecycle Transparencies
Introduction to Software Testing
2007 Adobe Systems Incorporated. All Rights Reserved. 1 Joe Berkovitz VP Engineering Allurent, Inc. Continuous Integration with Flex, FlexUnit, and Ant.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
Configuration Management Managing Change. Points to Ponder Which is more important?  stability  progress Why is change potentially dangerous?
October 30, 2008 Extensible Workflow Management for Simmod ESUG32, Frankfurt, Oct 30, 2008 Alexander Scharnweber (DLR) October 30, 2008 Slide 1 > Extensible.
Chapter 9 Database Planning, Design, and Administration Sungchul Hong.
Database Planning, Design, and Administration Transparencies
Database System Development Lifecycle © Pearson Education Limited 1995, 2005.
Systems Analysis – Analyzing Requirements.  Analyzing requirement stage identifies user information needs and new systems requirements  IS dev team.
Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects.
ABSTRACT Zirous Inc. is a growing company and they need a new way to track who their employees working on various different projects. To solve the issue.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
1 Shawlands Academy Higher Computing Software Development Unit.
Implementation & Integration Phase Implementation, then integration: Implementation, then integration:  Each module is implemented by member of programmer.
Applied Software Project Management Andrew Stellman & Jennifer Greenehttp:// Applied Software Project Management Chapter 1: Introduction.
Software Engineering Modern Approaches
Sumedha Rubasinghe October,2009 Introduction to Programming Tools.
Moving into the Testing Phase Revised for October 22, 2008.
Subversion, an Open Source Version Control System An Introduction.
1 Lecture 19 Configuration Management Software Engineering.
Configuration Management (managing change). Starter Questions... Which is more important?  stability  progress Why is change potentially dangerous?
1 Software Development Configuration management. \ 2 Software Configuration  Items that comprise all information produced as part of the software development.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
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.
Software Life Cycle Requirements and problem analysis. –What exactly is this system supposed to do? Design –How will the system solve the problem? Coding.
This chapter is extracted from Sommerville’s slides. Text book chapter
Object-Oriented Analysis & Design Subversion. Contents  Configuration management  The repository  Versioning  Tags  Branches  Subversion 2.
Database System Development Lifecycle 1.  Main components of the Infn System  What is Database System Development Life Cycle (DSDLC)  Phases of the.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Database Design and Management CPTG /23/2015Chapter 12 of 38 Functions of a Database Store data Store data School: student records, class schedules,
COMP 121 Week 1: Testing and Debugging. Testing Program testing can be used to show the presence of bugs, but never to show their absence! ~ Edsger Dijkstra.
TEST-1 6. Testing & Refactoring. TEST-2 How we create classes? We think about what a class must do We focus on its implementation We write fields We write.
Configuration Management and Change Control Change is inevitable! So it has to be planned for and managed.
The Software Development Process
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
WinCvs. WinCVS WinCvs is a window based version control system. Use WinCvs when  You want to save every version of your file you have ever created. CVS.
Intermediate 2 Computing Unit 2 - Software Development.
Click to add text Systems Analysis, Prototyping and Iteration.
Winter 2011SEG Chapter 11 Chapter 1 (Part 1) Review from previous courses Subject 1: The Software Development Process.
SEG 4110 – Advanced Software Design and Reengineering Topic T Introduction to Refactoring.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
SOFTWARE TESTING Date: 29-Dec-2016 By: Ram Karthick.
Regression Testing with its types
Configuration Management (managing change)
Applied Software Implementation & Testing
Design and Programming
Lecture 09:Software Testing
Chapter 3 – Agile Software Development
Applied Software Project Management
CMSC 345 Programming.
Overview Activities from additional UP disciplines are needed to bring a system into being Implementation Testing Deployment Configuration and change management.
Presentation transcript:

Design and Programming Chapter 7 Applied Software Project Management, Stellman & Greene See also:

Options for Programmers  Start building code, creating objects and user interface elements  Build a user interface prototype to demonstrate to users, stakeholders and team  Create pictures, flowcharts, dataflow diagrams, database design diagrams, or other visual tools  Develop object models using code, UML, or class diagrams  Write a design specification using some or all of these tools... The team determines which of these is appropriate

The design must be reviewed  Walkthrough with users  Many users may be confused or uninterested in object models or UML diagrams  Consider reviewing differently for different audiences

Version Control  With several people working together, there must be a current and updated version of the software  Repository contains each of the system’s files  Changes must not get lost  Some call this configuration management

Subversion  Free and open source version control system  Functions are accessed via command line  Uses copy-modify-merge model instead of lock- modify-unlock Programmer retrieves current version from repository, makes updates, and commits Uses version numbers

Making updates  Programmer checks out repository onto a local machine; copy is called working copy Can check out all or part of repository  There can be several working copies out  Each working copy keeps track of who has it and when it was checked out  When it is committed, the repository is updated to look like the local copy Subversion performs an atomic commit (all changes are made, or none)

Making updates  Subversion does not let user modify an out-of-date copy  Subversion notifies user that the working copy is out- of-date, and it is up to the user to ask for Subversion to update the working copy  A conflict occurs when two users make different changes to the same line; the second committer must determine which change will be committed (see tables 7-2 and 7-3)  See pages 140 – 149 and author’s slides for Subversion details

Refactoring: Improving the design of a program without altering its behavior  Choices that impact how easy the code is to and to understand Variable names Breaking code into functions Choosing more efficient statements  As project progresses, programmers may realize/discover better design Team may choose to review changes only Refactoring examples: pages  Extract method: changes made during code review p. 151  Replace Magic Number with symbolic constant p. 152  Decompose conditional p. 153  Introduce explaining variable p. 154

Refactoring pays for itself  Code that may have once been acceptable becomes spaghetti code  It may take as much time to refactor difficult code as it does to trace through  The clearer the code is, the less likely it is to have defects  When to do: When a reasonably large amount of code is added

Unit Testing  Code is made up of objects, functions, modules, or other non-trivial units  The purpose of unit testing is to create a set of tests for each unit to verify that it performs its function correctly  Test-driven development Programmer writes the unit test before writing the unit Ensures that requirements are understood Ensures that testing is not forgotten

Test all of the code, test all of the possibilities  It takes multiple tests to verify a single unit (e.g. object in Java, function in C)  A good test verifies that: The unit correctly performs its intended functions The unit functions properly at its boundary conditions (values at the edge of the range The unit is robust: it gracefully handles unexpected values and error conditions  See JUnit and Example p

Test Cases  A test case is a piece of code that verifies one behavior of the software  Tests run without input from user  Output: pass, fail, or generate error  Use a Framework Piece of software that automatically runs tests and reports results  Test cases are grouped into suites that verify specific units or functions  Run test suites after each refactoring

Who does What?  Programmers do unit testing Verify that the software works as the programmer intended (unit tests)  Software testers (Quality Assurance, QA) Verify that the software meets its requirements specified in SRS (functional tests) Verify that the software meets the needs of the users and stakeholders specified in the Vision and Scope document  Each is looking for different things

Other  Code that passes unit tests does not necessarily mean that the code does what it is supposed to do  QA runs software as if they were users without access to individual units  Some defects may only appear when units are put together... Putting it all together is the job of QA  Up front time cost to write tests ⇨ saves time over finding bugs later and rebuilding object entirely

Using Automation  When projects become complex and require many steps, it is easy to forget something  It often requires much of a senior team member’s time to generate new builds on a regular basis ⇨ causing delays  Automated build tools honor dependencies so that code is built only when supporting libraries are available: Make, Apache Ant, Jam  Other tools allow tasks to be configured to run on a schedule: Cruise Control and TinderBox  However! Tools may be overwhelming and slow down the works

For Next Time  Present project design Using power point Approximately 8-10 slides  Download Subversion: who will try it?