Methodologies CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.

Slides:



Advertisements
Similar presentations
Unified process(UP) UP is an OO system development methodology offered by Rational(Rational Rose) s/w, now a part of IBM Developed by Booach,Rambaugh,Jacobson--
Advertisements

Chapter 2 – Software Processes Fall Chapter 2 – Software Processes Lecture 1 2Chapter 2 Software Processes.
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
 Dr. Syed Noman Hasany.  Review of known methodologies  Analysis of software requirements  Real-time software  Software cost, quality, testing and.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Alternate Software Development Methodologies
CS 325: Software Engineering January 15, 2015 Software Process & Methodology Prototyping Process Model Evolutionary Process Model Spiral Process Model.
Agile development By Sam Chamberlain. First a bit of history..
Software Life Cycles ECE 417/617: Elements of Software Engineering
COMP 350: Object Oriented Analysis and Design Lecture 2
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Chapter 3 – Agile Software Development Lecture 1 1Chapter 3 Agile software development.
The Rational Unified Process
Agile Software Development Chapter 3 – Lecture 1 Adrián Susinos.
Software Engineering CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Software Processes lecture 8. Topics covered Software process models Process iteration Process activities The Rational Unified Process Computer-aided.
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
Object-oriented Analysis and Design Stages in a Software Project Requirements Writing Analysis Design Implementation System Integration and Testing Maintenance.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
CSc 461/561 Software Engineering Lecture 2 – Software Processes.
Chapter 2 Iterative, Evolutionary, and Agile You should use iterative development only on projects that you want to succeed. - Martin Fowler 1CS
Chapter 3 Agile Software Development (1/2) Yonsei University 2 nd Semester, 2015 Sanghyun Park.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
Goals for Presentation Explain the basics of software development methodologies Explain basic XP elements Show the structure of an XP project Give a few.
Lecture 4 – XP and Agile 17/9/15. Plan-driven and agile development Plan-driven development A plan-driven approach to software engineering is based around.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
 Dr. Syed Noman Hasany.  Review of known methodologies  Analysis of software requirements  Real-time software  Software cost, quality, testing and.
Chapter 2 – Software Processes Lecture 1 1Chapter 2 Software Processes.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Software Engineering, 8th edition. Chapter 4 1 Courtesy: ©Ian Sommerville 2006 FEB 13 th, 2009 Lecture # 5 Software Processes.
CS223: Software Engineering Lecture 16: The Agile Methodology.
RUP RATIONAL UNIFIED PROCESS Behnam Akbari 06 Oct
Testing and Evolution CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
RATIONAL UNIFIED PROCESS PROCESS FRAMEWORK OVERVIEW.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Industrial Software Development Process Bashar Ahmad RISC Software GmbH.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
CS 389 – Software Engineering Lecture 2 – Part 2 Chapter 2 – Software Processes Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.
Project Management Software development models & methodologies
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Chapter 3 Agile software development 1 Chapter 3 – Agile Software Development.
Embedded Systems Software Engineering
CS223: Software Engineering
Agile Methods SENG 301.
TK2023 Object-Oriented Software Engineering
Software Development.
Methodologies and Algorithms
CS 389 – Software Engineering
Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University.
Software Processes (a)
Rapid software development
Software Processes.
Introduction to Software Engineering
COMP 350: Object Oriented Analysis and Design Lecture 2
Chapter 2 – Software Processes
Chapter 2 Software Processes
Chapter 2 – Software Processes
An Overview of Software Processes
Gathering Systems Requirements
SOFTWARE LIFE-CYCLES Beyond the Waterfall.
CS310 Software Engineering Lecturer Dr.Doaa Sami
Rapid software development
Gathering Systems Requirements
System Development Methods
SD5953 Successful Project Management AGILE SOFTWARE DEVELOPMENT
Presentation transcript:

Methodologies CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L

Outline USC CSCI 201L2/39 ▪Software Processes (Sommerville 2) ›Sommerville, Ian. Software Engineering, 9 th Edition. Addison Wesley, ISBN ▪Example

Methodologies ▪There are many different methodologies in use for software engineering ▪Plan-based software engineering produces a large amount of documentation for sustainable projects ›Waterfall ›Spiral ▪Agile-based software engineering sacrifices documentation for earlier release dates and more adaptability to changing requirements ›eXtreme Programming (XP) ›Scrum ›Scrum-but USC CSCI 201L3/39 Software Engineering

Project Methodology ▪To expose you to software engineering, we will use a waterfall approach (though I’m sure many of you will throw some agile methodologies into the development) ▪You will have to create the following documents ›Concept ›High-Level Requirements ›Technical Specifications ›Detailed Design Document ›Testing Document ›Implementation ›Deployment Document ▪There are many formats for each of those documents, and you will have to find a format that will work for your group USC CSCI 201L4/39 Software Engineering

Waterfall Model ▪Royce’s waterfall model follows a very strict lifecycle (paper on Lectures page) ▪Each phase is signed off before moving to the next USC CSCI 201L5/39 Software Engineering (Sommerville 2)

Incremental Development ▪Incremental development develops an initial implementation, exposes this to user comment, and evolves through several versions USC CSCI 201L6/39 Software Engineering (Sommerville 2)

Incremental Development Pros and Cons ▪Pros ›Cost of accommodating changing customer requirements is reduced ›Easier to get customer feedback on development ›More rapid delivery and deployment of useful software to the customer ▪Cons ›Process is not visible so management has a hard time measuring progress ›System structure degrades as new increments are added USC CSCI 201L7/39 Software Engineering (Sommerville 2)

Reuse-oriented Software Engineering ▪The initial requirements stage is similar to waterfall, but modification occurs later in the process based on what reusable components were discovered USC CSCI 201L8/39 Software Engineering (Sommerville 2)

Reuse-oriented Software Engineering Use ▪There are three types of software components that may be used in the reuse-oriented process ›Web services that are available for remote invocation ›Collections of objects developed as a package, such as J2EE or.NET ›Stand-alone software systems configured for use in a particular environment USC CSCI 201L9/39 Software Engineering (Sommerville 2)

Spiral Model ▪Developed by Barry Boehm of USC in 1988 (paper on Lectures page) ▪Process is represented as a spiral with no fixed phases ›Loops are chosen based on what is required and could represent different parts of the process ›Risks are explicitly assessed and resolved throughout the process USC CSCI 201L10/39 Software Engineering (Sommerville 2)

Rational Unified Process (RUP) ▪The RUP is a hybrid process model that brings together elements from the generic process models ▪Four phases in RUP ›Inception – establish the business case for the system ›Elaboration – develop an understanding of the problem domain and the system architecture ›Construction – system design, programming, and testing ›Transition – deploy the system in its operating environment USC CSCI 201L11/39 Software Engineering (Sommerville 2)

RUP Good Practice Recommendations ▪Develop software iteratively ›Plan increments based on customer priorities and deliver highest priority increments first ▪Manage requirements ›Explicitly document customer requirements and keep track of changes to these requirements ▪Use component-based architectures ›Organize the system architecture as a set of reusable components ▪Visually model software ›Use graphical Unified Modeling Language (UML) models to present static and dynamic views of the software ▪Verify software quality ›Ensure that the software meets organizational quality standards ▪Control changes to software ›Manage software changes using a change management system and configuration management tools USC CSCI 201L12/39 Software Engineering (Sommerville 2)

Rapid Software Development ▪Software is not developed as a single unit but as a series of increments ▪Here are some fundamental characteristics ›Documentation is minimized No detailed system specification Specification, design, and implementation are interleaved ›Customers are involved in the development process End-users and other stakeholders are involved in specifying and evaluating each version ›Releases are typically every 2-3 weeks User interfaces are often developed quickly through interactive development systems USC CSCI 201L13/39 Software Engineering (Sommerville 2)

Agile Methods ▪Agile method philosophy We are uncovering better ways of developing software by doing it and helping others do it. Through this work, we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more ▪DeMarco and Boehm discuss the advantages and disadvantages of agile methods (paper on Lectures page) USC CSCI 201L14/39 Software Engineering (Sommerville 2)

Principles of Agile Methods USC CSCI 201L15/39 Software Engineering (Sommerville 2)

Agile Methods USC CSCI 201L16/39 Software Engineering (Sommerville 2)

eXtreme Programming (XP) ▪XP Principles ›Incremental development is supported through small, frequent releases of the system ›Customer involvement is supported through the continuous engagement of the customer in the development team ›People, not process, are supported through pair programming, collective ownership of the code ›Change is embraced through regular system releases to customers ›Maintaining simplicity is supported by constant refactoring that improves code quality USC CSCI 201L17/39 Software Engineering (Sommerville 2)

Pair Programming in XP ▪Programmers work in pairs to develop software, with the following advantages ›Supports the idea of collective ownership and responsibility for the system ›Acts as an informal review process because each line of code is looked at by at least two people ›Helps support refactoring, which is a process of software improvement ▪The productivity of most pair programming actually rivals that of two programmers working independently ›Less rework, fewer errors ▪With more experienced programmers, the productivity was lower than two independent programmers though higher than one programmer USC CSCI 201L18/39 Software Engineering (Sommerville 2)

Scrum ▪Scrum focuses on managing iterative development rather than specific technical approaches to agile software engineering ▪There are three phases to scrum ›Outline planning phase – establish the general objectives for the project and design the software architecture ›Series of sprint cycles – each cycle develops an increment of the system ›Project closure phase – wraps up the project, completes required documentation, and assess the lessons learned from the project USC CSCI 201L19/39 Software Engineering (Sommerville 2)

Sprints in Scrum ▪Key characteristics of sprints in scrum ›Fixed length, normally 2-4 weeks ›The starting point for planning is the product backlog, which is the list of work to be done on the project ›The selection phase involves all of the project team who work with the customer to selected the functionality to be developed in the sprint ›The team organizes themselves to develop the software through short daily meetings to review progress and possibly reprioritize work ›At the end of the sprint, the work is reviewed and presented to stakeholders before beginning the next sprint cycle ▪The scrum master (not project manager) is a facilitator who arranges daily meetings, tracks the backlog, records decisions, measures progress, and communicates with customers ▪Everyone participates in scrum so there is no top-down direction from the scrum master USC CSCI 201L20/39 Software Engineering (Sommerville 2)

Agile vs Plan-Based Methods ▪Is it important to have a very detailed specification and design before moving to implementation? ▪Is an incremental delivery strategy realistic? ▪How large is the system being developed? ▪What type of system is being developed? ▪What is the expected system lifetime? ▪What technologies are available to support system development? ▪How is the development team organized? ▪Are there cultural issues that may affect the system development? ▪How good are the designers and programmers in the development team? ▪Is the system subject to external regulation? USC CSCI 201L21/39 Software Engineering (Sommerville 2)

Outline USC CSCI 201L22/39 ▪S▪Software Processes (Sommerville 2) ▪E▪Example

Factory Code Documentation ▪There is an example of documentation provided on the Lectures page of the course web site for the Factory Program USC CSCI 201L23/39 Example

Concept ▪Many projects start off with a concept document ▪This would usually consist of 1-2 paragraphs explaining what the stakeholder would like ▪It sometimes also includes motivation for wanting the project implemented USC CSCI 201L24/39 Example

Example – Concept ▪ It would be great if students could submit a programming assignment and have it graded instantaneously in an automated manner. This would reduce time and money paying a grader and provide students an opportunity to submit their program more than once in an effort to improve their score. USC CSCI 201L25/39 Example

High-Level Requirements ▪The high level requirements for a piece of software usually originate from the person, department, or organization requesting the software to be developed ›The people do not need to be technical ▪The requirements should be detailed enough for a programmer (or technical person) to be able to write out detailed technical specifications that will be passed along to the programmers ›The details of the implementation should not be included in the requirements document ▪Conceptual screenshots could be included, though this is not necessary USC CSCI 201L26/39 Example

Example – High-Level Requirements ▪ We need to create a web interface where students can upload their Java source code to a program. The program should be executed on known input and validated against known output. The students will then be given a score representing how much of the output is correct. USC CSCI 201L27/39 Example

Technical Specifications ▪Whereas the high-level requirements could have come from a non-technical person, the technical specifications are written by a technical person ›They ultimately will be approved by the person who requested the project to be completed ▪The requirements should have been detailed enough for technical specifications to be written ›The technical specifications include hardware requirements, software requirements, benchmarks to meet, estimate of hours, cost estimation ›Language and platform do not need to be included unless they are critical to the project These are typically a design decision USC CSCI 201L28/39 Example

Example – Technical Specifications ▪ Web interface (4 hours) › The web interface needs to have a login page with a username field, a password field, and a Login button › Upon verification, another form should be displayed with a drop-down list specifying the assignment number, a file chooser field that allows the user to select the source code file, and a Submit button › The submission page should show the user the final grade based on how much of the output was correct ▪ Assignment grading (8 hours) › When a Java source code file is uploaded, it needs to be compiled and executed › The output will be compared against known outputs provided by the instructor › The percentage of the output that matches exactly will be returned to the user ▪ Database (8 hours) › The database will consist of two tables – a User table and a Submission table. › The User table will be used for validating users and consist of userID, username, password, fname, lname, and timestamp representing the last login time › The Submission table will consist of the name of the file uploaded, userID, assignment number, percentage of output that matches, and a timestamp USC CSCI 201L29/39 Example

Design Document ▪Now that you have the technical specifications document, you need to start thinking about how you will actually implement them ▪The detailed design document will include the specific hardware and software to use ›This will include programming language ▪It will also include the class diagram, inheritance hierarchy, method and variable descriptions, pseudo-code, and algorithms to be used ▪After the design document is created and approved, you should be able to start writing code USC CSCI 201L30/39 Example

Example – Detailed Design ▪ The login page should look like ▪ The UserAuthentication class will access the User table in a MySQL database named AutomateProgram using the jdbc:mysql driver › The authenticate() method will take two strings as parameters, representing the username and password › It will return a Boolean value specifying whether the user was authenticated or not against the User table ▪ There will be a lot more in the Detailed Design document, but this gives you a general idea USC CSCI 201L31/39 Example

Example – Detailed Design (cont.) ▪ Sample class diagrams ▪ Sample state diagram USC CSCI 201L32/39 Example

Testing ▪Now that you have the detailed designed document, you need to start thinking about testing the design ▪There are different testing strategies, including ›Black box testing – test the entire application without looking at the code ›White box testing – test the entire application while looking at the code ›Unit testing – test individual functionality of the code by writing customized programming ›Stress testing – test the extensibility of the program by trying to find the limits ›Regression testing – when changes are made, make sure the changes don’t affect other parts of the program USC CSCI 201L33/39 Example

Example – Testing ▪ Test Case 1 › White Box Test – test the login functionality by specifying a username that exists and a password that does not match. The user should be taken back to the login page with a message “Invalid login.” ▪ Test Case 2 › White Box Test – test the login functionality by specifying a username that does not exist. The user should be taken back to the login page with a message “Invalid login.” ▪ Test Case 3 › White Box Test – test the login functionality by specifying a username that exists and a password that matches. The user should be taken to the assignment submission page. ▪ Test Case 4 › Unit Test – insert SQL code in the username variable of the UserAuthentication.authenticate() method. Verify that the SQL code specified is not executed against the database. USC CSCI 201L34/39 Example

Implementation ▪We have now completed the high-level specifications, technical requirements, detailed design document, and testing strategies ▪We are ready to start implementing our design ›This typically involves setting up servers (development servers, testing servers, QA servers, deployment servers) installing third-party applications, writing code, ensuring the program meetings the specifications, and testing ▪Everything else that is required up to actually launching the program goes in the implementation phase USC CSCI 201L35/39 Example

Example - Implementation ▪ Set up the servers ▪ Write the code ▪ Test the code ▪ Ensure alignment with specifications ▪ Prepare to turn over to client for approval before deployment USC CSCI 201L36/39 Example

Deployment ▪Deployment is the process of promoting a fully- tested and approved application ▪Deployment could require different promotion processes ›For web applications, it would require promoting the application to a server, testing, then redirecting DNS ›For standalone applications, it would require producing media or downloadable packages ›For software as a service, there are licensing issues that need to be determined ▪Ensure data migration to the live server has occurred completely USC CSCI 201L37/39 Example

Example – Deployment ▪ Step 1 - push the application to a live server ▪ Step 2 - ensure all of the data was migrated to the live server from the existing system › To do this, run the verify.sql script ▪ Step 3 – perform a full regression test of the application ▪ Step 4 - notify the users of the updated application and provide them with the URL USC CSCI 201L38/39 Example

Complete Documentation ▪After the application has been deployed, provide complete documentation to the user ▪This will include all of the documents you have generated in a single document with a title page, table of contents, page numbers, and any references or related work USC CSCI 201L39/39 Example