Advanced Software Engineering Dr. Cheng

Slides:



Advertisements
Similar presentations
Software Quality Assurance Plan
Advertisements

Software Engineering CSE470: Process 15 Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities:
What is Software Design?. Systems Development Life- Cycle Planning Analysis Design Implementation Design.
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
SEP1 - 1 Introduction to Software Engineering Processes SWENET SEP1 Module Developed with support from the National Science Foundation.
Using UML, Patterns, and Java Object-Oriented Software Engineering 15. Software Life Cycle.
CS 325: Software Engineering January 13, 2015 Introduction Defining Software Engineering SWE vs. CS Software Life-Cycle Software Processes Waterfall Process.
Chapter 2 The Software Process
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Introduction to Software Engineering Dr. Basem Alkazemi
1 Lecture 5 Introduction to Software Engineering Overview  What is Software Engineering  Software Engineering Issues  Waterfall Model  Waterfall Model.
Software Process CS 414 – Software Engineering I Donald J. Bagert Rose-Hulman Institute of Technology December 17, 2002.
Software Verification and Validation (V&V) By Roger U. Fujii Presented by Donovan Faustino.
Introduction to Computer Technology
S/W Project Management
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
1 CMPT 275 Software Engineering Software life cycle.
PGD-1303 Software Project Management?. What is software? Software  Computer programs and associated documentation Documentation includes  requirements.
Capability Maturity Model Part One - Overview. History Effort started by SEI and MITRE Corporation  assess capability of DoD contractors First.
Chapter 2 The process Process, Methods, and Tools
Chapter 2 The Process.
Dillon: CSE470: SE, Process1 Software Engineering Phases l Definition: What? l Development: How? l Maintenance: Managing change l Umbrella Activities:
1 Chapter 2 The Process. 2 Process  What is it?  Who does it?  Why is it important?  What are the steps?  What is the work product?  How to ensure.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Introduction to Software Engineering LECTURE 2 By Umm-e-Laila 1Compiled by: Umm-e-Laila.
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
CEN st Lecture CEN 4021 Software Engineering II Instructor: Masoud Sadjadi What.
Lecture 1 Introduction to Software Engineering
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Jump to first page (c) 1999, A. Lakhotia 1 Software engineering? Arun Lakhotia University of Louisiana at Lafayette Po Box Lafayette, LA 70504, USA.
Software Engineering Spring (C) Vasudeva VarmaClass of 32 CS3600: Software Engineering: Process and Product* *Most of the Content drawn.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
Lecture Introduction to Software Development SW Engg. Development Process Instructor :Muhammad Janas khan Thursday, September.
Systems Analysis and Design in a Changing World, Fourth Edition
Chapter 4 프로세스 모델 Process Models
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
Developed by Reneta Barneva, SUNY Fredonia The Process.
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.
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.
Overview: Software and Software Engineering n Software is used by virtually everyone in society. n Software engineers have a moral obligation to build.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Software Development Life Cycle (SDLC)
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
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.
LECTURE 5 Nangwonvuma M/ Byansi D. Components, interfaces and integration Infrastructure, Middleware and Platforms Techniques – Data warehouses, extending.
Software Development Process includes: all major process activities all major process activities resources used, subject to set of constraints (such as.
Chapter 2: The Process. What is Process? Software Engineering Process is the glue that holds the technology layers together and enables rational and timely.
Chapter 1 The Systems Development Environment
Software Project Configuration Management
Chapter 1 The Systems Development Environment
Lecture 3 Prescriptive Process Models
Lecture 0 Software Engineering Course Introduction
CS4311 Spring 2011 Process Improvement Dr
Software Engineering CSE470 (Fall 2000)
Software Life Cycle “What happens in the ‘life’ of software”
Chapter 1 The Systems Development Environment
Advanced Software Engineering Dr. Cheng
Software Engineering (CSI 321)
Chapter 1 The Systems Development Environment
LEVEL OF TESTING J.ALFRED DANIEL, AP/CSE.
Software Engineering (CSE 314)
Chapter 1 The Systems Development Environment
IT Systems Analysis & Design
CEN 5011 Advanced Software Engineering
Overview: Software and Software Engineering
CIS 375 Bruce R. Maxim UM-Dearborn
Software Engineering I
Chapter 1 The Systems Development Environment
Chapter 1: Introduction to Systems Analysis and Design
Presentation transcript:

Advanced Software Engineering Dr. Cheng Overview of Software Engineering and Development Processes CSE870 (Spring 2003) CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

What is Software Engineering? Systematic approach for developing software Methods and techniques to develop and maintain quality software to solve problems. (Software Engineering: Methods and Management, Pfleeger, 1990) Study of the principles and methodologies for developing and maintaining software systems. (``Perspectives on Software Engineering,'' Zelkowitz, 1978) CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

What is Software Engineering? Practical application of scientific knowledge in the design and construction of computer programs and the associated documentation required to develop, operate, and maintain them. (``Software Engineering,'' Boehm, 1976) Deals with establishment of sound engineering principles and methods in order to economically obtain software that is reliable and works on real machines. (``Software Engineering,'' Bauer, 1972) CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Questions addressed by Software Engineering How do we ensure the quality of the software that we produce? How do we meet growing demand and still maintain budget control? How do we avoid disastrous time delays? CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Why apply Software Engineering to Systems? Provide an understandable process for system development. Develop systems and software that are maintainable and easily changed. Develop robust software and system. Allow the process of creating computing-based systems to be repeatable and manageable. CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Objectives of Course Provide exposure to leading-edge topics Emphasize object-orientation Emphasize reuse Provide hands-on experience to reinforce concepts Homework assignments Programming assignments Synthesize several topics into a mini-project Programming Project Written Component CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Tentative Topics Unified Modeling Language (UML) Security Design Patterns Object-Oriented Frameworks Aspect-Oriented Programming CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Administrative Work Background Survey Initial Assessment Tentative Evaluation Mechanisms: Exams (2) 40 % Homework/Design Exercises Mini-Project(s) 20 % CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities: Throughout lifecycle CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Definition Requirements definition and analysis Developer must understand Application domain Required functionality Required performance User interface CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Definition (cont.) Project planning System analysis Allocate resources Estimate costs Define work tasks Define schedule System analysis Allocate system resources to Hardware Software Users CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Development Software design User interface design High-level design Define modular components Define major data structures Detailed design Define algorithms and procedural detail CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Development (cont.) Coding Integration Develop code for each module Unit testing Integration Combine modules System testing CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Maintenance Correction - Fix software defects Adaptation - Accommodate changes New hardware New company policies Enhancement - Add functionality Prevention - make more maintainable CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Umbrella Activities Reviews - assure quality Documentation - improve maintainability Version control - track changes Configuration management - integrity of collection of components CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Development Process Step-by-step procedure to develop software Typically involves the major phases: analysis design coding testing CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Waterfall Process Model Requirements Design Coding Testing Maintenance CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Prototyping Process Model Requirements Quick Design Prototype Evaluate Design CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

When to use prototyping? Help the customer pin down the requirements Concrete model to “test out” Often done via the user interface Explore alternative solutions to a troublesome component e.g., determine if an approach gives acceptable performance Improve morale Partially running system provides visibility into a project CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Spiral Process Model Planning Risk Analysis Engineering Customer Evaluation CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Process Models Idealized views of the process Different models are often used for different subprocesses may use spiral model for overall development prototyping for a particularly complex component waterfall model for other components CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Capability Maturity Model Level 1: Initial ad hoc success depends on people Level 2: Repeatable track cost, schedule, functionality Level 3: Defined use standardized processes Level 4: Managed collect detailed metrics Level 5: Optimizing continuous process improvement “built-in” process improvement CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Why is software development so difficult? Communication Between customer and developer Poor problem definition is largest cause of failed software projects Within development team More people = more communication New programmers need training Project characteristics Novelty Changing requirements 5 x cost during development up to 100 x cost during maintenance Hardware/software configuration Security requirements Real time requirements Reliability requirements CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Why is software development difficult? (cont.) Personnel characteristics Ability Prior experience Communication skills Team cooperation Training Facilities and resources Identification Acquisition Management issues Realistic goals Cost estimation Scheduling Resource allocation Quality assurance Version control Contracts CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Summary Software lifecycle consists of Definition (what) Development (how) Maintenance (change) Different process models concentrate on different aspects Waterfall model: maintainability Prototype model: clarifying requirements Spiral model: identifying risk Maintenance costs much more than development CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering

Bottom Line U.S. software is a major part of our societal infrastructure Costs upwards of $200 billion/year Need to Improve software quality Reduce software costs/risks CSE870: Advanced Software Engineering (Cheng, Sp2003): Intro to Software Engineering