Outline. Definitions. Course schedule



Similar documents
How To Write Software

SE 367 Software Engineering Basics of Software Engineering

Software Engineering. Software Engineering. Software Costs

Ingegneria del Software. Gabriele Monfardini - Corso di Ingegneria del Software

Software Life Cycle Processes

Software Engineering. Objectives. Designing, building and maintaining large software systems

Software Engineering

Software Processes. Coherent sets of activities for specifying, designing, implementing and testing software systems

Component-based Development Process and Component Lifecycle Ivica Crnkovic 1, Stig Larsson 2, Michel Chaudron 3

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

SE464/CS446/ECE452 Software Life-Cycle and Process Models. Instructor: Krzysztof Czarnecki

Design with Reuse. Building software from reusable components. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14 Slide 1

Introduction to Software Paradigms & Procedural Programming Paradigm

Lecture Objectives. Software Life Cycle. Software Engineering Layers. Software Process. Common Process Framework. Umbrella Activities

Software Processes. The software process. Generic software process models. Waterfall model. Waterfall model phases

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

Engineering Process Software Qualities Software Architectural Design

Elite: A New Component-Based Software Development Model

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

And the Models Are System/Software Development Life Cycle. Why Life Cycle Approach for Software?

Advanced Software Engineering. Software Development Processes

What is a life cycle model?

Unit 1 Learning Objectives

Introduction to Software Engineering

IV. Software Lifecycles

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

Chapter 2 Software Processes

Basic Testing Concepts and Terminology

In the IEEE Standard Glossary of Software Engineering Terminology the Software Life Cycle is:

CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS)

Introduction to Software Project Management. CITS3220 Software Requirements & Project Management

Architecture. Reda Bendraou

International Journal of Advance Research in Computer Science and Management Studies

Classical Software Life Cycle Models

How To Understand The Software Process

Quality Management. Lecture 12 Software quality management

To introduce software process models To describe three generic process models and when they may be used

Lecture 1: Introduction to Software Quality Assurance

SystemDesign Methodologies

Software Development Process Models and their Impacts on Requirements Engineering Organizational Requirements Engineering

Rapid Development & Software Project Survival Guide Steve McConnell Dave Root (Developed with Mel Rosso-Llopart)

Acknowledgement. Software Engineering. CS 3141: Team Software Project Introduction

Why process models? Topic 3 Software process models. 3. Process models. What is a process model?

Dependable (Safe/Reliable) Systems. ARO Reliability Workshop Software Intensive Systems

SOFTENG250FC: Introduction to Software Engineering

A Process Model for Software Architecture

Modelli di sviluppo software. Enrico Giunchiglia

Software Process for QA

IT3205: Fundamentals of Software Engineering (Compulsory)

A COMPARISON BETWEEN DIFFERENT TYPES OF SOFTWARE DEVELOPMENT LIFE CYCLE MODELS IN SOFTWARE ENGINEERING

7 Component-based Development Process and Component Lifecycle

Lecture 3 Software Development Processes

Weaving the Software Development Process Between Requirements and Architectures

Software Life Cycle Models

Umbrella: A New Component-Based Software Development Model

What is BPM? Software tools enabling BPM

Surveying and evaluating tools for managing processes for software intensive systems

Chakra Vs Spiral Model - A Practical Approach

Introduction. Software Development and Change Management Recommendations

How To Understand Software Engineering

SOFTWARE DEVELOPMENT PLAN

Example Software Development Process.

IT3203 Fundamentals of Software Engineering (Compulsory) BIT 2 nd YEAR SEMESTER 3

Software Project Models

Introduction to Software Engineering. 8. Software Quality

Chapter 1 Introduction

A Comparision Between Traditional and Component Based Software Development Process Models

Unit I. Introduction

Software Engineering Reference Framework

The software process. Generic software process models. Waterfall model. Software Development Methods. Bayu Adhi Tama, ST., MTI.

The Role of the Software Architect

Software Engineering. Software Development Process Models. Lecturer: Giuseppe Santucci

Software Engineering/Courses Description Introduction to Software Engineering Credit Hours: 3 Prerequisite: (Computer Programming 2).

Introduction and Overview

Applications in Business. Embedded Systems. FIGURE 1-17 Application Types and Decision Types

THE EVOLUTION OF COMPONENT BASED SOFTWARE ENGINEERING FROM THE TRADITIONAL APPROACH TO CURRENT PRACTICES

Software Engineering Question Bank

Software Development Processes. Software Life-Cycle Models

General Problem Solving Model. Software Development Methodology. Chapter 2A

SOFTWARE ENGINEERING OVERVIEW

A Software Engineering Process for Operational Space Weather Systems. S. Dave Bouwer, W. Kent Tobiska Space Environment Technologies

Singhania University, Jhunjhunu, Rajasthan, India. 2 Department of Information Technology King Abdul Aziz University, Jeddah, Saudi Arabia

Software Life Cycle. Main issues: Discussion of different life cycle models Maintenance or evolution

A Software Engineering Model for Mobile App Development

Introduction to Software Engineering

Basic Trends of Modern Software Development

Software Development: The Waterfall Model

Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali

Process Models and Metrics

Transcription:

SENG480A/CSC576A Topics in Software Engineering Software Development, Architecture & Evolution Lectures, Sep 17, 20, 2001 Hausi A. Müller University of Victoria Outline Assignment 1 due Sep 27 Last week Software evolution Definitions Fall 2001 Course schedule Last week Architecture and Evolution of Compiler Systems Holger Kienle Architecture and Evolution of Web Site Systems Daniel German This week continuation of introduction Software evolution Software architecture Definitions Software evolution Software engineering Software architecture Software reverse engineering Software understanding

What is software engineering? Programming vs. engineering Development of software systems whose size/complexity warrants a team or teams of engineers multi-person construction of multi-version software [Parnas87] Scope study of software process, development and evolution principles, techniques and notations Goal Production, modification and evolution of quality software, delivered on time, within budget, satisfying users needs Software engineers must posses a broad range of skills including computer science, mathematics, economics, management, psychology, risk analysis, history, etc. Programming/coding Single developer Module or standalone program Few stakeholders Developer = user One-of-a-kind system Writing from scratch Coding phase Programming skills Engineering Team development, roles Complex systems Multiple stakeholders Developer # user # customer System families/product lines Modify/reuse Spans entire life cycle A variety of skills A unique brand of engineering Software life cycles Software is malleable Software is intangible Software analysis or understanding skills differ from programming skills Digital nature one bug can bring the entire system to its knees Maintenance costs constitute 60-90% of the costs of a software system Waterfall model Spiral model Evolutionary model Incremental model Rapid prototyping Investigate the history of life cycles models by searching the web

Waterfall model Problem Definition Requirements analysis Design Implementation Maintenance Waterfall model Feasibility Defining a preferred concept for the software product, and determining its life-cycle feasibility and superiority to alternative concepts Requirements A complete, verified specification of the required functions, interfaces, and performance for the software product. Product Design A complete verified specification of the overall hardware-software architecture, control structure, and data structure for the product, along with such other necessary components as draft user's manuals and test plans Detailed Design A complete verified specification of the control structure, data structure, interface relations, sizing, key algorithms, and assumptions of each program component Waterfall model Coding A complete, verified set of program components Integration A properly function software product composed of the software components Implementation A fully functioning operational hardware-software system, including such objectives as program and data conversion, installation, and training Maintenance A fully functioning update of the hardware-software system repeated for each update Phaseout A clean transition of the functions performed by the product to its successors. Waterfall model (2167A/498) Systems Concept/System Requirements Analysis Software Requirements Analysis Software Parametric Cost Estimating Preliminary Design Detailed Design Coding and Computer Software unit (CSU) Testing Computer Software Component (CSC) Integration and Testing Computer Software Configuration Item (CSCI) Testing System Integration and Operational Testing

Spiral model (1) Barry Boehm, "A Spiral Model of Software Development and Enhancement", ACM SIGSOFT Software Engineering Notes, August 1986. (2) Barry Boehm "A Spiral Model of Software Development and Enhancement" IEEE Computer, vol.21, #5, May 1988, pp 61-72. Basically, the idea is evolutionary development, using the waterfall model for each step; it's intended to help manage risks. Don't define in detail the entire system at first. The developers should only define the highest priority features. Define and implement those, then get feedback from users/customers (such feedback distinguishes "evolutionary" from "incremental" development). With this knowledge, they should then go back to define and implement more features in smaller chunks. Software qualities Software engineering is concerned with software qualities Qualities (a.k.a. ilities ) are goals in the practice of software engineering External qualities visible to the user reliability, efficiency, usability Internal qualities the concern of developers they help developers achieve external qualities verifiability, maintainability, extensibility, evolvability, adaptability Product qualities concern the developed artifacts maintainability, understandability, performance Process qualities deal with the development activity products are developed through process maintainability, productivity, timeliness

Correctness Ideal quality Established wrt. Requirements specification absolute Reliability Statistical quality Probability that software will operate as expected over a give period of time Relative Robustness Reasonable behaviour in unforseen circumstances Subjective A specified requirement is an issue of correctness Usability Ability of end-users to easily use software Extremely subjective Understandability Ability of developers to understand produced artifacts easily Internal product quality Subjective Verifiabilty Ease of establishing desired properties Performed by formal analysis or testing Internal quality Performance Equated with efficiency assessable by measurement, analysis, and simulation Evolvability ability to add or modify functionality addresses adaptive and perfective maintenance problem: evolution of implementation is too easy evolution should start at requirements or design Reusability ability to construct new software from existing pieces must be planned for occurs at all levels: from people to process, from requirements to code Interoperability ability of software (sub)systems to cooperate with others easily integratable into larger systems common techniques include APIs, plug-in protocols, etc. Scalability ability of a software system to grow in size while maintaining its properties and qualities assumes maintainability and evolvability goal of component-based development

Heterogeneity ability to compose a system from pieces developed in multiple programming languages, on multiple platforms, by multiple developers, etc. necessitated by reuse goal of component-based development Portability ability to execute in new environments with minimal effort may be planned for by isolating environment-dependent components necessitated by the emergence of highly-distributed systems an aspect of heterogeneity Maintainability the ease with which a software system or component can be modified to correct faults, improve performance, or other attributes, or adapt to a changed environment [IEEE 90]. Addresses corrective, adaptive, and perfective maintenance Evolvability addresses addresses adaptive and perfective maintenance Summary Life cycle models Get more background from your library and the web Software qualities External vs. internal qualities Process vs. product qualities 14 ilities but there are more Exams The posted slides are insufficient as study materials for the exams Attending the lectures and participating in the discussions is critical