R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.

Slides:



Advertisements
Similar presentations
Software Quality Assurance Plan
Advertisements

CS487 Software Engineering Omar Aldawud
Software Engineering CSE470: Process 15 Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities:
CSC 480 Software Engineering
What is Software Design?. Systems Development Life- Cycle Planning Analysis Design Implementation Design.
Chapter 3 Process Models
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.
CS3773 Software Engineering Lecture 01 Introduction.
Chapter 2 The Software Process
Introduction to Software Engineering Dr. Basem Alkazemi
Capability Maturity Model (CMM) in SW design
1 Lecture 5 Introduction to Software Engineering Overview  What is Software Engineering  Software Engineering Issues  Waterfall Model  Waterfall Model.
© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Requirements.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
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
CIS 321—IS Analysis & Design
S/W Project Management
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
Software Project Management
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.
Software Process and Models
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.
PART ONE The Product and the Process Chapter 2 The Process  Software Engineering: A Layered Technology a “quality” focus process model methods tools.
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.
Chapter 2 Process: A Generic View
Lecture 1 Introduction to Software Engineering
Software Requirements Engineering CSE 305 Lecture-2.
Capability Maturity Models Software Engineering Institute (supported by DoD) The problems of software development are mainly caused by poor process management.
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 Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
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 Software Engineering: A Practitioner’s Approach, 7/e Chapter 2 Process: A Generic View Software Engineering: A Practitioner’s Approach, 7/e Chapter 2.
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 Engineering (CSI 321) Software Process: A Generic View 1.
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.
Advanced Software Engineering Dr. Cheng
Software Project Configuration Management
Lecture 3 Prescriptive Process Models
CS4311 Spring 2011 Process Improvement Dr
Software Engineering CSE470 (Fall 2000)
Software Life Cycle “What happens in the ‘life’ of software”
Advanced Software Engineering Dr. Cheng
CEN 5011 Advanced Software Engineering
Overview: Software and Software Engineering
Software Engineering I
Presentation transcript:

R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering and Development Processes CSE870 (Spring 2005)

R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering2 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)

R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering3 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)

R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering4 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?

R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering5 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.

R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering6 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

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

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

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

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

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

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

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

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

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

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

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

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

R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering19 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

R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering20 Spiral Process Model PlanningRisk Analysis Engineering Customer Evaluation

R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering21 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

R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering22 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 Software Engineering Institute:

R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering23 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

R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering24 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

R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering25 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

R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering26 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