1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.

Slides:



Advertisements
Similar presentations
Ch 3: Unified Process CSCI 4320: Software Engineering.
Advertisements

Object-Oriented Software Development CS 3331 Fall 2009.
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
Software Process Models
Chapter 11 Analysis of Algorithms. Chapter Scope Efficiency goals The concept of algorithm analysis Big-Oh notation The concept of asymptotic complexity.
Introduction To System Analysis and Design
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.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
Chapter 1 Principles of Programming and Software Engineering.
© Copyright Eliyahu Brutman Programming Techniques Course.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Data Structures and Programming.  John Edgar2.
Introduction To System Analysis and design
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
Comp 245 Data Structures Software Engineering. What is Software Engineering? Most students obtain the problem and immediately start coding the solution.
Software Project Management Introduction to Project Management.
-Nikhil Bhatia 28 th October What is RUP? Central Elements of RUP Project Lifecycle Phases Six Engineering Disciplines Three Supporting Disciplines.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 A Discipline of Software Design.
Demystifying the Business Analysis Body of Knowledge Central Iowa IIBA Chapter December 7, 2005.
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.
What is a life cycle model? Framework under which a software product is going to be developed. – Defines the phases that the product under development.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Instructor: Peter Clarke
Software Engineering Management Lecture 1 The Software Process.
Introduction To System Analysis and Design
Programming in Java Unit 3. Learning outcome:  LO2:Be able to design Java solutions  LO3:Be able to implement Java solutions Assessment criteria: 
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
Object-oriented Analysis and Design Stages in a Software Project Requirements Writing Analysis Design Implementation System Integration and Testing Maintenance.
University of Southern California Center for Systems and Software Engineering Model-Based Software Engineering Supannika Koolmanojwong Spring 2013.
Review of Software Process Models Review Class 1 Software Process Models CEN 4021 Class 2 – 01/12.
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
Object-Oriented Software Engineering using Java, Patterns &UML. Presented by: E.S. Mbokane Department of System Development Faculty of ICT Tshwane University.
Software Engineering Review CS 244 Brent M. Dingle, Ph.D. Game Design and Development Program Department of Mathematics, Statistics, and Computer Science.
Software Engineering - Abdul Majeed. What is software? Definition of Software Engineering Software Process Generic view of Software Engineering Software.
1 CS 501 Spring 2004 CS 501: Software Engineering Lecture 2 Software Processes.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
Data Structures Using C++ 2E
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Chapter 2 Principles of Programming and Software Engineering.
Your Interactive Guide to the Digital World Discovering Computers 2012 Chapter 12 Exploring Information System Development.
C++ for Engineers and Scientists, Second Edition 1 Problem Solution and Software Development Software development procedure: method for solving problems.
© 2010 Pearson Addison-Wesley. All rights reserved. Addison Wesley is an imprint of CHAPTER 1: Introduction Java Software Structures: Designing and Using.
Introduction to Software Engineering 1. Software Engineering Failures – Complexity – Change 2. What is Software Engineering? – Using engineering approaches.
© NALO Solutions Limited NALO Solutions, presents the – Revenue Collector App Using Mobile Phones to gather Revenue SOFTWARE ENGINEERING.
© 2010 Pearson Addison-Wesley. All rights reserved. Addison Wesley is an imprint of Appendix A: UML Java Software Structures: Designing and Using Data.
Principles of Programming & Software Engineering
Software Engineering Management
Lecture 3 Prescriptive Process Models
CASE Tools and Joint and Rapid Application Development
Object-Oriented Software Engineering Using UML, Patterns, and Java,
Unified Modeling Language
Introduction to Analysis of Algorithms
Introduction to Analysis of Algorithms
Principles of Programming and Software Engineering
About the Presentations
Software Process Models
Chapter 1 Introduction.
CHAPTER 2: Analysis of Algorithms
Software life cycle models
Software Process Models
CHAPTER 2: Analysis of Algorithms
Presentation transcript:

1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life cycle models Explore the notation of the Unified Modeling Language (UML) Examine issues related to error handling Introduce the concept of algorithm analysis

1-2 Software Development Software Engineering – make s/w development a rigorous engineering discipline; study of techniques and theory that support the development of high-quality software Focus on controlling the development process to achieve consistently good results We want to: – satisfy the client – the person or organization who sponsors the development – meet the needs of the users – the people using the software for its intended purpose

1-3 Goals of Software Engineering Solve the right problem – more difficult than it might seem – client interaction is key (social?) Deliver a solution on time and under budget – there are always trade-offs Deliver a high-quality solution – beauty is in the eye of the beholder – we must consider the needs of various stakeholders

1-4 FIGURE 1.1 Aspects of software quality

1-5 Development Models A development life cycle defines a process to be followed during product development Many software development models have been introduced All of them address the following fundamental issues in one way or another: – problem specification (gather requirements) – design – implementation – evaluation – testing and debugging – maintenance and evolution

1-6 Problem Specification We must specify the requirements of the software system Must be based on accurate information Various techniques: – discussions and negotiations with the client – modeling the problem structure and data flow – observation of client activities – analysis of existing solutions and systems

1-7 Design We must develop a solution You would not consider building a bridge without a design Design involves determining: – the overall software structure (architecture) – the key objects, classes, and their relationships Alternatives should be considered Mostly program language independent

1-8 Implementation We must turn the design into functional software Too many people consider this the primary act of software development May involve the reuse of existing software components

1-9 Evaluation/Analysis We must verify that the system conforms to the requirements This includes, but goes way beyond, testing code with test cases It is possible to build a system that has no bugs and yet is completely wrong Is system responsive enough?

1-10 Maintenance/Evolution After a system is initially developed, it must be maintained This includes: – fixing errors – making enhancements to meet the changing needs of users (evolution) The better the development effort, the easier the maintenance tasks will be

1-11 The Waterfall Model One of the earliest development models Each stage flows into the next Driven by documentation Advantages: – Lays out clear milestones and deliverables – Has high visibility – managers and clients can see the status Disadvantages: – late evaluation – not realistic in many situations

1-12 FIGURE 1.2 The waterfall software development model Specification

1-13 The Spiral Model Developed by Barry Boehm in the mid '80s Embraces an iterative process, where activities are performed over and over again for different aspects of the system Designed to reduce the risks involved Continually refines the system Each loop through the spiral is a complete phase of development

1-14 FIGURE 1.3 The spiral model of software development

1-15 The Unified Modeling Language The Unified Modeling Language (UML) has become a standard notation for software design It is unified in the sense that it is the synthesis of three separate notations It is language independent It includes various types of diagrams which use specific icons and notations However, it is flexible – the details you include in a given diagram depend on what you are trying to capture and communicate

1-16 UML Class Diagrams UML class diagrams may include: – The classes used in the system – The static relationships among classes – The attributes and operations of each class – The constraints on the connections among objects An attribute is class level data, including variables and constants An operation is essentially equivalent to a method May include visibility details

1-17 FIGURE 1.5 LibraryItem class diagram

1-18 FIGURE 1.6 A UML class diagram showing inheritance relationships

1-19 FIGURE 1.7 A UML class diagram showing an association

1-20 FIGURE 1.8 One class shown as an aggregate of other classes

1-21 Error Handling How problems are handled in a software system is a key design element In Java, an error generally represents an unrecoverable situation An exception is an unusual situation that might be handled in various ways Design questions include: – how are problems identified? – where are exceptions thrown and caught?

1-22 Analysis of Algorithms An aspect of software quality is the efficient use of resources, including the CPU Algorithm analysis is a core computing topic It gives us a basis to compare the efficiency of algorithms Example: which sorting algorithm is more efficient?

1-23 Growth Functions Analysis is defined in general terms, based on: – the problem size (ex: number of items to sort) – key operation (ex: comparison of two values) A growth function shows the relationship between the size of the problem (n) and the time it takes to solve the problem t(n) = 15n n

1-24 Growth Functions It's not usually necessary to know the exact growth function The key issue is the asymptotic complexity of the function – how it grows as n increases Determined by the dominant term in the growth function This is referred to as the order of the algorithm We often use Big-Oh notation to specify the order, such as O(n 2 )

1-25 FIGURE 1.11 Some growth functions and their asymptotic complexity

1-26 FIGURE 1.12 Increase in problem size with a ten-fold increase in processor speed

1-27 FIGURE 1.13 Comparison of typical growth functions

1-28 Analyzing Loop Execution A loop executes a certain number of times (say n) Thus the complexity of a loop is n times the complexity of the body of the loop When loops are nested, the body of the outer loop includes the complexity of the inner loop

1-29 Analyzing Loop Execution The following loop is O(n): for (int i = 0; i < n; ++i) { x = x + 1; }

1-30 Analyzing Loop Execution The following loop is O(n 2 ) because the loop executes n times, and the inner loop is O(n): for (int i = 0; i<n; ++i) { x = x + 1; for (int j = 0; j < n; ++j) { y = y - 1; }

1-31 SE and Data Structures The data structures examined we will examine lay the foundation for developing complex software Software Engineering techniques are needed as our software grows more complex As we discuss data structures, we will also practice good software engineering

1-32 Testing/Debugging w/assertions Use assert statement to assist debugging Can be turned off – don’t use to check preconditions Point p1 = new Point (); Point p2 = new Point (3, 4); double distance = p1.computeDistanceTo (p2); assert (Math.abs (distance – 5.0) < : "Distance incorrect");