Introduction to Software Engineering (2/2)

Slides:



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

Object-Oriented Software Development CS 3331 Fall 2009.
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
CS540 Software Design Lecture 1 1 Lecture 1: Introduction to Software Design Anita S. Malik Adapted from Budgen (2003) Chapters 1.
What is Software Engineering? And why is it so hard?
Software Development Concepts ITEC Software Development Software Development refers to all that is involved between the conception of the desired.
Profile and a quick introduction Software Engineering: ) هندسة البرمجيات (in Arabic: is the branch of computer science Designed to develop a set rules.
Introduction to Software Engineering (2/2) Moonzoo Kim KAIST (slides from CS550 ‘06 taught by prof. D. Bae)
PROJECT MILESTONES Group Presentations: ~ 5 mins presentations.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
1 Scope of Software Engineering Somnuk Keretho, Assistant Professor Department of Computer Engineering Faculty of Engineering, Kasetsart University
1 Introduction to Software Engineering Lecture 1.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Chapter 19 Verification and Validation.
Software Engineering - Abdul Majeed. What is software? Definition of Software Engineering Software Process Generic view of Software Engineering Software.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
CS 1120: Computer Science II Software Life Cycle Slides courtesy of: Prof. Ajay Gupta and Prof. James Yang (format and other minor modifications by by.
Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
Requirement Analysis SOFTWARE ENGINEERING. What are Requirements? Expression of desired behavior Deals with objects or entities, the states they can be.
SOFTWARE DEVELOPMENT Presented By : Emporiumtech This presentation is brought you by
Information Systems Development
Chapter 1 The Systems Development Environment
Methodologies and Algorithms
Review of last class Software Engineering Modeling Problem Solving
Chapter3:Software Processes
Chapter 1 The Systems Development Environment
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Introduction to Software Engineering (1/2)
Definition CASE tools are software systems that are intended to provide automated support for routine activities in the software process such as editing.
Modern Systems Analysis and Design Third Edition
Chapter 18 Maintaining Information Systems
Software Life Cycle “What happens in the ‘life’ of software”
Chapter 1 The Systems Development Environment
The Software Development Cycle
SYSTEM ANALYSIS AND DESIGN
Introduction to System Analysis and Design
Principles of Programming and Software Engineering
Software Process Models
Chapter 1 The Systems Development Environment
CS453: Automated Software Testing
Software Engineering (CSE 314)
Rekayasa Perangkat Lunak
Software Design Methodology
HCI in the software process
Chapter 1 The Systems Development Environment
Software Prototyping Animating and demonstrating system requirements.
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Software Development Cycle
Information Systems Development
Introduction to Problem Solving
CS 1120: Computer Science II Software Life Cycle
Chapter 1 Introduction(1.1)
Software Engineering Software Engineering is the science and art of
HCI in the software process
Chapter 7 –Implementation Issues
Cost Estimation Van Vliet, chapter 7 Glenn D. Blank.
CS310 Software Engineering Lecturer Dr.Doaa Sami
Software Engineering Software Engineering is the science and art of
Rekayasa Perangkat Lunak
MANAGING THE DEVELOPMENT AND PURCHASE OF INFORMATION SYSTEMS
HCI in the software process
Software Development Cycle
What Is Good Software(Program)?
CS 1120: Computer Science II Software Life Cycle
Human Computer Interaction Lecture 14 HCI in Software Process
Software Development Cycle
Chapter 1 The Systems Development Environment
The Software Development Cycle
Presentation transcript:

Introduction to Software Engineering (2/2) Moonzoo Kim KAIST (slides from CS550 ‘06 taught by prof. D. Bae)

Software Development Process A SW Development Framework for SW with High Assurance Requirement analysis System design Design analysis Implement- ation Testing Monitoring Formal require- ment Spec. Formal system modeling Model analysis/ verification Model- assisted code generation Model- based testing Runtime monitoring and checking

Sources of Errors in S/W Developments Logic design & Misunderstanding 20% Functionality & Misunderstanding 15% Documentation & Others 35% Coding 30%

Scope of S/W Engineering Historical Aspects Economic Aspects Maintenance Aspects Specification & Design Aspects Team Programming Aspects

Historical Aspects 1967, A NATO group coined the term " Software Engineering" 1968, NATO conference concluded that software engineering should use the philosophies and paradigms of established engineering disciplines, to solve the problem of software crisis

Economic Aspects Relationship between computer science and software engineering cf: chemistry and chemical engineering Software engineer is intended in only those techniques which make sound economic sense, while computer scientists investigate a variety of ways of producing software, some good and some bad

Maintenance Aspects Maintenance 67 % Requirements 3% Specification 4% Planning 2% Design 6% Module coding 5% Module Testing 7% Integration 6%

Specification and Design Aspects Requirements Specification Planning Design Implementation Integration Maintenance Approximate relative cost to detect and correct a fault

Team Programming Aspect Parnas, "Multi-person construction of multiversion software." Programming : personal activity S/W engineering : team activity

Team Programming Aspect (Cont.) (From programming to sw engineering) Programming in early days The problem is well understood. Mostly scientific applications. By a person, who is an expert in that area. User = programmer = maintainer User and programmer separation User: specify the problem(tasks) Programmer: interpret and translate into code

Team Programming Aspect (Cont.) Team project started in late 1960's IBM OS/360 Software crisis observed ``Software Engineering'' coined Solutions to software crisis Management techniques Team organization Chief programmer team Democratic team Hierarchical team Better languages and tools Standards ==> Applying engineering approach Brooks' observations in “The Mythical Man-Month” are based on his experiences of managing the development of OS/360

Team Programming Aspect (Cont.) Requirements in the programming-in-the-small Good programming skill Skilled in data structures and algorithms Fluent in programming languages Requirements in the programming-in-the large Needs communication skills and interpersonal skills Be familiar with design approaches (i.e. system abstraction) Top-down design Divide and conquer paradigm Component based integration Be able to translate vague requirements and desires into precise spec. Be able to build and use a model of the application Needs ability to schedule work Relevant topics in The Mythical Man-Month Communication Conceptual integrity Formal documents The pilot system The mythical man-month

Three Elements of S/W Development Water-fall process Incremental process Evolutionary process Agile process Process Facilities Staff Budget OOP Model based testing Technology Resources Quality/Productivity Improvement Product Product Product

Special Software Domain:Commercial Electronics and Embedded System

Strong IT Industry in South Korea Time-to-Market? SW Quality? Not method oriented, but problem oriented research Moonzoo Kim

What’s Different About Embedded Systems Embedded systems have different design constraints than general purpose systems Cost may matter more than speed Long life cycle may dominate design decision Since ubiquitous computing paradigm occurred, this aspect is changing Reliability/safety may constraint design choice Because applications are often unique, software development may wait for hardware to become available need for simulator/emulators/etc Time to market constraints Rapid redesign for changing form factors Rapid redesign for changing control algorithms

Software Characteristics by Domain Ordinary IT Software System(e.g. systems developed by SI organizations) Size : Very Large Domain consistency: Low New technology sensitivity: High Hardware dependency: Low Time-to-market pressure: Low

Software Characteristics by Domain Commercial Software(e.g. systems developed by software vendors) Size : Large Domain consistency: High New technology sensitivity: High Hardware dependency: Low Time-to-market pressure: Moderate

Software Characteristics by Domain Controller Systems/Automation Systems Size : Medium Domain consistency: High New technology sensitivity: Low Hardware dependency: Moderate Time-to-market pressure: Moderate

Software Characteristics by Domain Embedded Systems /Commercial Electronics Size : Small Domain consistency: High (-> Moderate) New technology sensitivity: High Hardware dependency: High Time-to-market pressure: High

Software Engineering Applicability In general, Controller Systems/Automation Systems (and Embedded Systems /Commercial Electronics) can give much higher rewards for software engineering activity Domain consistency is high and new technology sensitivity is low Ease of accumulating empirical data High reusability in accumulated developments assets(e.g. requirements specification, domain model, test cases, modules) Ease of continuous improvement

General Obstacles Hardware dependency is high Software development may wait for hardware to become available Confident testing environment is not supported even until complete hardware is ready May need for effective simulator/emulator for testing Time-to-market pressure is high High schedule pressure causes difficulties in software engineering activities Overcome the hardware dependency as much as possible Set up process to reduce redundant time consumption Asset reuse

Embedded Software in Two Different Domains Conventional Testing Concolic testing Model checking Consumer Electronics Safety Critical Systems Examples Smartphones, flash memory platforms Nuclear reactors, avionics, cars Market competition High Low Life cycle Short Long Development time Model-based development None Yes Important value Time-to-market Safety Not method oriented, but problem oriented research Moonzoo Kim