Advanced Software Engineering FYI!



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

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

IF2261 Software Engineering. Introduction. What is software? What is software? What is software? Failure Curve. Software Applications Type

Introduction and Overview

A Capability Maturity Model (CMM)

What is a life cycle model?

Best-Practice Software Engineering: Software Processes to Support Project Success. Dietmar Winkler

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

Hardware in the Loop (HIL) Testing VU 2.0, , WS 2008/09

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

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

IV. Software Lifecycles

Module 1. Introduction to Software Engineering. Version 2 CSE IIT, Kharagpur

Software Development Life Cycle (SDLC)

Course Overview CEN 5035 Software Engineering

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

Karunya University Dept. of Information Technology

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

CSE 435 Software Engineering. Sept 16, 2015

Information Systems Analysis and Design CSC340. XXIV. Other Phases

Software Production and Lifecycle Models

CMSC 435: Software Engineering Course overview. Topics covered today

What do you think? Definitions of Quality

WORK PROGRAMME Topic ICT 9: Tools and Methods for Software Development

Software Engineering: Analysis and Design - CSE3308

Sistemi ICT per il Business Networking

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

Basic Trends of Modern Software Development

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

4. Software Project Management

Classical Software Life Cycle Models

School of Computer Science

Software Development Process Selection Approaches

SOFTENG250FC: Introduction to Software Engineering

Software Project Models

Software Engineering. Introduction. Lecturer: Giuseppe Santucci

Process Models and Metrics

Software Engineering. What is a system?

ELEC 5260/6260/6266 Embedded Computing Systems

Basic academic skills (1) (2) (4) Specialized knowledge and literacy (3) Ability to continually improve own strengths Problem setting (4) Hypothesis

(Refer Slide Time: 01:52)

CS4507 Advanced Software Engineering

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

Multi-core Curriculum Development at Georgia Tech: Experience and Future Steps

From Big Data to Smart Data Thomas Hahn

Application of software product quality international standards through software development life cycle

Outline. Definitions. Course schedule

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

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

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

CDC UNIFIED PROCESS JOB AID

Illinois Digital Government Summit. Blue Asterisk. Cloud Computing. John Teoh, Senior Technical Staff Member. September 15, IBM Corporation

Chapter 2 Software Processes

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

The Software Process. The Unified Process (Cont.) The Unified Process (Cont.)

Chapter 13: Program Development and Programming Languages

MASTER OF SCIENCE (MSc) IN ENGINEERING (SOFTWARE ENGINEERING) (Civilingeniør, Cand. Polyt. i Software Engineering)

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

SEER for Software - Going Beyond Out of the Box. David DeWitt Director of Software and IT Consulting

SOA and API Management

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

Manage Software Development in LabVIEW with Professional Tools

Software Development Process and Activities. CS 490MT/5555, Fall 2015, Yongjie Zheng

CSE4213 Lecture Notes

Cost Estimation Strategies COST ESTIMATION GUIDELINES

A Quick Overview of Software Engineering. Paul Klint

22C:22 (CS:2820) Object-Oriented Software Development

The most suitable system methodology for the proposed system is drawn out.

A Comparison between Five Models of Software Engineering

SYSTEMS, CONTROL AND MECHATRONICS

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

LECTURE 1. SYSTEMS DEVELOPMENT

3 SOFTWARE AND PROGRAMMING LANGUAGES

SOFTWARE PROCESS MODELS

A Survey of Software Development Process Models in Software Engineering

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

CSE 3231 (Approved): Software Engineering Techniques

INTERNATIONAL JOURNAL OF ADVANCES IN COMPUTING AND INFORMATION TECHNOLOGY An International online open access peer reviewed journal

Development (60 ЕCTS)

Reaching CMM Levels 2 and 3 with the Rational Unified Process

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

Applying CMMI SM In Information Technology Organizations SEPG 2003

ASSESSMENT OF SOFTWARE PROCESS MODELS

Software Development Process

Five best practices for deploying a successful service-oriented architecture

CONCEPTUALIZING BUSINESS INTELLIGENCE ARCHITECTURE MOHAMMAD SHARIAT, Florida A&M University ROSCOE HIGHTOWER, JR., Florida A&M University

Module 2. Software Life Cycle Model. Version 2 CSE IIT, Kharagpur

Software Life Cycle. Management of what to do in what order

DATABASE DEVELOPMENT LIFE CYCLE

Big Data Driven Knowledge Discovery for Autonomic Future Internet

ICT : Internet of Things and Platforms for Connected Smart Objects

Software Engineering CS5704: First Class

Unit I. Introduction

A. Waterfall Model - Requirement Analysis. System & Software Design. Implementation & Unit Testing. Integration & System Testing.

Transcription:

Advanced Software Engineering Dr. Overview of Software Engineering and Development Processes! CSE870! CSE870: Advanced Software Engineering (): Intro to Software Engineering 1 FYI! Professor in CSE! Here at MSU for > 20 years! Software Engineering and Network Systems (SENS) Lab! Digital Evolution (DEVOLab)! BEACON: NSF Science and Technology Center ( Evolution in Action )! esearch and Instruction areas:! High-assurance systems! Model-driven engineering! Autonomic (self-adaptive) systems! ecently, also working in following areas:! Evolutionary-based computing! Systems Biology! Work extensively with industrial collaborators (e.g., Ford, GM, Continental Automotive, Motorola, BAE Systems, Siemens)! ecently completed a one-year sabbatical with time in France and other parts of Europe.! Focus: How computing systems deal with uncertainty! 1

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 (): Intro to Software Engineering 3 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 (): Intro to Software Engineering 4 2

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 (): Intro to Software Engineering 5 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 computingbased systems to be repeatable and manageable.! CSE870: Advanced Software Engineering (): Intro to Software Engineering 6 3

Objectives of Course! Provide exposure to leading-edge topics! Emphasize model-driven engineering! Emphasize requirements and design! Emphasize assurance of computing-based systems! Provide hands-on experience to reinforce concepts! Homework assignments! Modeling and specification assignments! Synthesize several topics into mini-projects! Programming/design Project with written component! Prepare presentation materials for lay audience.! Overarching application theme: assurance for onboard automotive systems! 7 Tentative Topics! equirements Engineering! Unified Modeling Language (UML)! Architectural Styles! Design Patterns! Security! Aspect-Oriented Programming! (Search-based Software Engineering)! (Software Product Lines)! CSE870: Advanced Software Engineering (): Intro to Software Engineering 8 4

Administrative Work! Background Survey! Initial Assessment! Tentative Evaluation Mechanisms:! Exams (2)! 40 %! Homework/Design Exercises! 25 %! Mini-Project(s)! 35 %! CSE870: Advanced Software Engineering (): Intro to Software Engineering 9 PAUSE! CSE870: Advanced Software Engineering (): Intro to Software Engineering 10 5

Historical Perspective! 1940s: computers invented! 1950s: assembly language, Fortran! 1960s: COBOL, ALGOL, PL/1, operating systems! 1969: First conference on Software Eng! 1970s: multi-user systems, databases, structured programming! Historical Perspective (cont.)! 1980s: networking, personal computing, embedded systems, parallel architectures! 1990s: information superhighway, distributed systems, OO in widespread use." 2000s: virtual reality, voice recognition, video conferencing, global computing, pervasive computing...! 2010s: EMs, autonomous vehicles, new security awareness,...! 6

Hardware Costs vs Software Costs (% of overall costs)! h/w costs s/w costs Time Why is software so expensive?! Hardware has made great advances! But, software has made great advances...! We do the least understood tasks in software.! When task is simple & understood, encode it in hardware! Why?! Demand more and more of software! Consider your cell phone! 7

Size of programs continues to grow! Trivial: 1 month, 1 programmer, 500 LOC,! Intro programming assignments! Very small: 4 months, 1 programmer, 2000 LOC! Course project! Small: 2 years, 3 programmers, 50K LOC! Nuclear power plant, pace maker! Medium: 3 years, 10s of programmers, 100K LOC! Optimizing compiler! Size of programs continues to grow! Large: 5 years, 100s of programmers, 1M LOC! MS Word, Excel! Very large: 10 years, 1000s of programmers, 10M LOC! Air traffic control,! Telecommunications, space shuttle! Very, Very Large: 15+ years, 1000s programmers, 35M LOC! W2K! Ultra-Large Scale:? years,? developers distributed,! 1000s of sensors, decision units,! heterogeneous platforms, decentralized control! Intelligent transportation systems; healthcare systems! 8

New Scale! Ultra-Large Scale SW-Intensive Systems Healthcare Infrastructure Ultra-Large-Scale Systems Linda Northrop, ICSE 2007 2007 Carnegie Mellon University 17 New Scale! Intelligent Transportation and Vehicle Systems Ultra-Large-Scale Systems Linda Northrop, ICSE 2007 2007 Carnegie Mellon University 18 9

The ULS Ecosystem! Key elements:! Computing devices! Business and organizational policies! Environment (including people)! Forces:! Competition for resources! Unexpected environmental changes! Decentralized control! Demand for assurance! Context: Sufficient System Health! High-level Objective:! How to design a safe adaptive system with incomplete information and evolving environmental conditions! Execution environment " How to model environment" How to effectively monitor changing conditions" Adaptive monitoring" Decision-making for dynamic adaptation! Decentralized control! Assurance guarantees (functional and non-functional constraints)! Adaptation mechanisms:! Application level! Middleware level! 10

What s the problem?! Software cannot be built fast enough to keep up with! H/W advances! ising expectations! Feature explosion! Increasing need for high reliability software! What s the problem?! Software is difficult to maintain!! aging software! Difficult to estimate software costs and schedules! Too many projects fail! Arianne Missile! Denver Airport Baggage System! Therac! 11

Why is software engineering needed?! To predict time, effort, and cost! To improve software quality! To improve maintainability! To meet increasing demands! To lower software costs! To successfully build large, complex software systems! To facilitate group effort in developing software! Software Engineering Phases! Definition: What?! Development: How?! Maintenance: Managing change! Umbrella Activities: Throughout lifecycle! CSE870: Advanced Software Engineering (): Intro to Software Engineering 24 12

Definition! equirements definition and analysis! Developer must understand! Application domain! equired functionality! equired performance! User interface! CSE870: Advanced Software Engineering (): Intro to Software Engineering 25 Definition (cont.)! Project planning! Allocate resources! Estimate costs! Define work tasks! Define schedule! System analysis! Allocate system resources to! Hardware! Software! Users! CSE870: Advanced Software Engineering (): Intro to Software Engineering 26 13

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 (): Intro to Software Engineering 27 Development (cont.)! Coding! Develop code for each module! Integration! Combine modules! System testing! Unit testing! CSE870: Advanced Software Engineering (): Intro to Software Engineering 28 14

Maintenance! Correction - Fix software defects! Adaptation - Accommodate changes! New hardware! New company policies! Enhancement - Add functionality! Prevention - make more maintainable! CSE870: Advanced Software Engineering (): Intro to Software Engineering 29 Umbrella Activities! eviews - assure quality! Documentation - improve maintainability! Version control - track changes! Configuration management - integrity of collection of components! CSE870: Advanced Software Engineering (): Intro to Software Engineering 30 15

Development Process!! Step-by-step procedure to develop software! Typically involves the major phases:! analysis! design! coding! testing! CSE870: Advanced Software Engineering (): Intro to Software Engineering 31 Waterfall Process Model! equirements" Design" Coding" Testing" Maintenance" CSE870: Advanced Software Engineering (): Intro to Software Engineering 32 16

Prototyping Process Model! equirements" Quick Design" Prototype" Evaluate" Design" CSE870: Advanced Software Engineering (): Intro to Software Engineering 33 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 (): Intro to Software Engineering 34 17

Spiral Process Model! Planning isk Analysis Customer Evaluation Engineering CSE870: Advanced Software Engineering (): Intro to Software Engineering 35 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 (): Intro to Software Engineering 36 18

Capability Maturity Model! Level 1: Initial! ad hoc! success depends on people! Level 2: epeatable! track cost, schedule, functionality! Level 4: Managed! collect detailed metrics! Level 5: Optimizing! continuous process improvement! built-in process improvement! Level 3: Defined! use standardized processes! Software Engineering Institute: http://www.sei.cmu.edu/cmm/ CSE870: Advanced Software Engineering (): Intro to Software Engineering 37 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! eal time requirements! eliability requirements! CSE870: Advanced Software Engineering (): Intro to Software Engineering 38 19

Why is software development difficult? (cont.)! Personnel characteristics! Ability! Prior experience! Communication skills! Team cooperation! Training! Facilities and resources! Identification! Acquisition! Management issues! ealistic goals! Cost estimation! Scheduling! esource allocation! Quality assurance! Version control! Contracts! CSE870: Advanced Software Engineering (): Intro to Software Engineering 39 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 (): Intro to Software Engineering 40 20

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