Introduction to Software Engineering

Similar documents
Scope of OOSE. A. Starts. CMPSC 487 Lecture 01 Topics: Schach - Chap 1. The Scope of Object-Oriented Software Engineering

Object-oriented Analysis and Design

Requirements Gathering using Object- Oriented Models

Computer Science: Disciplines. What is Software Engineering and why does it matter? Software Disasters

Software Life Cycle Models

Computer Science: Who Cares? Computer Science: It Matters. Computer Science: Disciplines

Course Introduction and Overview of Software Engineering. Richard N. Taylor Informatics 211 Fall 2007

Information Systemss and Software Engineering. Computer Science & Information Technology (CS)

UNIT-III LIFE-CYCLE PHASES

UNIT VIII SYSTEM METHODOLOGY 2014

Course Outline Department of Computing Science Faculty of Science

IS 525 Chapter 2. Methodology Dr. Nesrine Zemirli

Avoiding the Problems

A New - Knot Model for Component Based Software Development

By the end of this chapter, you should: Understand what is meant by engineering design. Understand the phases of the engineering design process.

The Evolution Tree: A Maintenance-Oriented Software Development Model

UNIT IV SOFTWARE PROCESSES & TESTING SOFTWARE PROCESS - DEFINITION AND IMPLEMENTATION

Introduction to Software Requirements and Design

VALLIAMMAI ENGNIEERING COLLEGE SRM Nagar, Kattankulathur DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

Application of Definitive Scripts to Computer Aided Conceptual Design

Code Complete 2: Realities of Modern Software Construction

Systems Engineering Overview. Axel Claudio Alex Gonzalez

A FRAMEWORK FOR PERFORMING V&V WITHIN REUSE-BASED SOFTWARE ENGINEERING

THE APPLICATION OF SYSTEMS ENGINEERING ON THE BUILDING DESIGN PROCESS

Introduction to Software Engineering

Fundamentals of Systems Engineering. Human-Systems Engineering

IECI Chapter Japan Series Vol. 5 No. 2, 2003 ISSN

Introduction to adoption of lean canvas in software test architecture design

CHAPTER 1 INTRODUCTION TO THE GUIDE

Software Project Management 4th Edition. Chapter 3. Project evaluation & estimation

ACE3 Working Group Session, March 2, 2005

TELEMETRY SOFTWARE DEVELOPMENT LIFE CYCLE

Information Technology Fluency for Undergraduates

Radically better software development with Extreme Programming. Carl Erickson Atomic Object LLC October 2002

Testing in the Lifecycle

Software Development Lifecycle

A New Approach to Software Development Fusion Process Model

Policy-Based RTL Design

Introduction to Software Engineering (Week 1 Session 2)

Service-Oriented Software Engineering - SOSE (Academic Year 2015/2016)

Project Lead the Way: Civil Engineering and Architecture, (CEA) Grades 9-12

A MODEL-DRIVEN REQUIREMENTS ENGINEERING APPROACH TO CONCEPTUAL SATELLITE DESIGN

Development of Concurrent Engineering Tool for Early Design of Mechatronics Product

Strategic Considerations when Introducing Model Based Systems Engineering

Our Acquisition Challenges Moving Forward

LL assigns tasks to stations and decides on the position of the stations and conveyors.

Hardware-Software Co-Design Cosynthesis and Partitioning

Scientific Certification

Component Based Mechatronics Modelling Methodology

Design of an Object-Oriented Framework for Measurement Systems

Code Complete 2: A Decade of Advances in Software Construction Construx Software Builders, Inc. All Rights Reserved.

Revised April High School Graduation Years 2015, 2016, and 2017

CONCURRENT ENGINEERING

CC532 Collaborative System Design

An Integrated Simulation Method to Support Virtual Factory Engineering

Editorial for the Special Issue on Aspects and Model-Driven Engineering

An introduction to software development. Dr. C. Constantinides, P.Eng. Computer Science and Software Engineering Concordia University

A Theory about the Structure of GTSEs

Software Requirements

Refinement and Evolution Issues in Bridging Requirements and Architectures

INTEGRATING DESIGN AND ENGINEERING, II: PRODUCT ARCHITECTURE AND PRODUCT DESIGN

Separation of Concerns in Software Engineering Education

NAVAL POSTGRADUATE SCHOOL THESIS

STUDY ON FIREWALL APPROACH FOR THE REGRESSION TESTING OF OBJECT-ORIENTED SOFTWARE

Agent-Oriented Software Engineering

Principled Construction of Software Safety Cases

LSI Design Flow Development for Advanced Technology

Planning and Organising Two

Understanding Requirements. Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman. For non-profit educational use only

Computer Science and Philosophy Information Sheet for entry in 2018

CS 480: GAME AI TACTIC AND STRATEGY. 5/15/2012 Santiago Ontañón

Systems Engineering Process

Intersections of Philosophy Logic and Biology in Design

Co-evolution of agent-oriented conceptual models and CASO agent programs

Probability with Set Operations. MATH 107: Finite Mathematics University of Louisville. March 17, Complicated Probability, 17th century style

Win and Influence Design Engineers--- Change Their Affordability DNA

22c181: Formal Methods in Software Engineering. The University of Iowa Spring Propositional Logic

Evolving a Software Requirements Ontology

INFORMATION AND COMPUTATION HIERARCHY

TRACEABILITY WITHIN THE DESIGN PROCESS

Integrity Monitoring? New thinking in the approach to Subsea IMMR. Dr Karl Woods, Snr Subsea Reliability Engineer 22/2/2017

Overview of the Research Process Comments by Dan A. Simunic, UBC

EMC Testing to Achieve Functional Safety

Software Eng. 2F03: Logic For Software Engineering

Prototype to product the difficult transition

Pragmatic Strategies for Adopting Model-Based Design for Embedded Applications. The MathWorks, Inc.

Ingegneria del Software Corso di Laurea in Informatica per il Management. Introduction to software engineering

Concurrent Increment Sequencing and Synchronization with Design Structure Matrices in Software- Intensive System Development

ENGAGE MSU STUDENTS IN RESEARCH OF MODEL-BASED SYSTEMS ENGINEERING WITH APPLICATION TO NASA SOUNDING ROCKET MISSION

VLSI testing Introduction

Integrated Product Development: Linking Business and Engineering Disciplines in the Classroom

CSE 435: Software Engineering

Model-Based Systems Engineering Methodologies. J. Bermejo Autonomous Systems Laboratory (ASLab)

Design Science Research Methods. Prof. Dr. Roel Wieringa University of Twente, The Netherlands

Object-Oriented Design

TDEC for PAM4 Potential TDP replacement for clause 123, and Tx quality metric for future 56G PAM4 shortwave systems

Ivica Crnkovic Mälardalen University Department of Computer Science and Engineering

An aspect-oriented approach towards enhancing Optimistic Access Control with Usage Control by. Keshnee Padayachee

Towards Integrated System and Software Modeling for Embedded Systems

An Industrial Application of an Integrated UML and SDL Modeling Technique

Transcription:

Introduction to Software Engineering Somnuk Keretho, Assistant Professor Department of Computer Engineering Faculty of Engineering, Kasetsart University Email: sk@nontri.ku.ac.th URL: http://www.cpe.ku.ac.th/~sk Somnuk Keretho/Kasetsart University

Outline of this presentation Scope of Software Engineering Object-Oriented Software Development Software Process Software Life-Cycle Models Object Orientation Software Quality Assessment Reference to Chapter 1/2/3 of Software Engineering with JAVA, S.R. Schach, McGraw-Hill, 1997. Somnuk Keretho/Kasetsart University 2

Scope of Software Engineering Software engineering is a discipline whose aim is the production of fault-free software, that is delivered on time, within budget, and satisfies the user s needs. Somnuk Keretho/Kasetsart University 3

Scope of Software Engineering Historical Aspects: 1967, a NATO group coined the term Software Engineering 1968 NATO Software Engineering Conference concurred that Software production should be an engineering-like activity. Using philosophies and paradigms of established engineering disciplines to solve Software Crisis: that the quality of software was generally unacceptably low and that deadlines and cost limits were not being met. Somnuk Keretho/Kasetsart University 4

Scope of Software Engineering Economic Aspects Software Engineering v.s. Computer Science The computer scientist investigates several ways to produce software, some good and some bad. But the software engineer is interested in only those techniques that make sound economic sense. For example: A coding technique that can execute very efficiently but with higher maintenance cost may not be a good choice. Somnuk Keretho/Kasetsart University 5

Scope of Software Engineering Maintenance Aspects Software Life Cycle / Software Process Requirements Phase Specification (Analysis) Phase Planning Phase Design Phase Implementation Phase Integration Phase Maintenance Phase (highest cost among all these phases) Corrective, Perfective, and Adaptive Maintenance Retirement Somnuk Keretho/Kasetsart University 6

Scope of Software Engineering Maintenance is so important, a major aspect of software engineering consists of techniques, tools, and practices that lead to a reduction in maintenance cost. Maintenance 67% Requirement 2% Specification 4% Planning 1% Design 6% Module Coding 5% Module Testing 7% Integration 8% Maintenance 76% Approximate relative costs of the phases of the software life cycle. Somnuk Keretho/Kasetsart University 7

Scope of Software Engineering Specification and Design Aspects Software professionals are humans, and humans can make error. The fact that so many faults are introduced early in the software life cycle, highlights another important aspects of software engineering, namely, techniques that yield better specifications and designs. For example, reducing specification and design faults by 10% will reduce the overall number of faults by 6-7%. Somnuk Keretho/Kasetsart University 8

Scope of Software Engineering Team Programming Aspects Most software being developed and maintained by a team of software engineers Scope of software engineering must also include techniques for ensuring that teams are properly organized and managed. For example, team programming leads to interface problems among code components and communication problems among team members. Somnuk Keretho/Kasetsart University 9

Scope of Software Engineering Several techniques have been suggested to help solve the software crisis. ~1975-1985: Structured Paradigm Structured Systems Analysis, Composite/Structured Design, Structured Programming, Structured Testing Lead to major improvements for software industry. But only good for small programs (say, 5,000-50,000 lines of codes) Not scale well with today larger programs (say, 500.000-5,000,000 LOC) Not so good in software maintenance aspects, (for instance, because of the separation of action-oriented and data-oriented in structured paradigm). Object-Oriented Paradigm An object is a unified software component that incorporates both data and actions that operate of those data. Somnuk Keretho/Kasetsart University 10

Scope of Software Engineering Structured Paradigm Requirement Phase Specification (Analysis) Phase Planning Phase Design Phase Implementation Phase Integration Phase Maintenance Phase Retirement Object-Oriented Paradigm Requirement Phase Object-Oriented Analysis Phase Planning Phase Object-Oriented Design Phase Object-Oriented Programming Phase Integration Phase Maintenance Phase Retirement Comparison of life cycles of structures paradigm and object-oriented paradigm. Somnuk Keretho/Kasetsart University 11

Object-Oriented Software Development Three key words. Software Development Object Orientation Let us look at each in turn Somnuk Keretho/Kasetsart University 12

Software Programs Documentation during the development of programs (e.g. specification) Primary aids for running the programs (e.g. user manuals) Secondary aids for running the programs (e.g. key boards overlays) Software is not just programs! Somnuk Keretho/Kasetsart University 13

Software Life Cycle Software is like humans. It has a life cycle. Software in a system is conceptualized first. It becomes obsolescent at the end. The period in between is called the software life cycle. Somnuk Keretho/Kasetsart University 14

Software Life Cycle Models Build-and-Fix Model Waterfall Model Rapid prototyping model Incremental Model Spiral Model Concurrent Development Model Formal Methods Model For the first four items, please refer to Chapter 3 of Software Engineering with JAVA, S.R. Schach, McGraw-Hill, 1997. Somnuk Keretho/Kasetsart University 15

Built-and-Fix Model Unfortunately, many s/w products are developed with built-and-fix model. Without specification or any attempt in design, just build a product, and reworked as many times needed to satisfy the customer. Unsatisfactory for any size of s/w development, we better specify the various phases of software process. Somnuk Keretho/Kasetsart University 16

Why use a life cycle model? Life cycle model breaks down the development process into phases or stages. This is because software development is complex. Breaking down the development process makes it easier to manage. Each phase can be performed in various ways. Somnuk Keretho/Kasetsart University 17

Waterfall Model Requirement Verify Changed Requirements verify Specification Verify Planning Verify Design Verify Implementation Testing Integration Testing Development Maintenance Operation Mode Retirement Somnuk Keretho/Kasetsart University 18

Rapid Prototyping Model A rapid prototype is a working model that is functionally equivalent to a subset of the product (internal structure is not concerned yet). The sole use of rapid prototyping is to determine what the client s real needs are, construct the rapid prototype as rapidly as possible to speed up the s/w development process. Somnuk Keretho/Kasetsart University 19

Rapid Prototyping Model Rapid Prototype Verify Changed Requirements verify Specification Verify Planning Verify Design Verify Implementation Testing Integration Testing Development Maintenance Operation Mode Retirement Somnuk Keretho/Kasetsart University 20

Incremental Model The s/w product is designed, implemented, integrated, and tested as a series of incremental builds, where a build consists of code pieces from various modules interacting to provide a specific functional capability. It is sometimes necessary to re-specify, re-design, re-code, or at worst, throw away what has already been completed and start again. Somnuk Keretho/Kasetsart University 21

Incremental Model Requirement Verify Specification Verify Planning Verify Architectural Design Verify For each build: Perform detailed design, implementation, and integration. Test. Deliver to client. Development Maintenance Operation Mode Retirement Somnuk Keretho/Kasetsart University 22

Spiral Model The idea of minimizing risk via the use of prototypes and other means is the concept underlying the spiral model. A simplified spiral model is as a waterfall model with each phase preceded by risk analysis. Before commencing each phase, an attempt is made to control (resolve) the risks. If it is impossible to resolve all the significant risks at a stage, then the project is immediately terminated. Somnuk Keretho/Kasetsart University 23

Full Spiral Model [Boehm, IEEE 1998] Review Determine objectives, alternatives, constraints Commitment Partition Plan next phase Requirement plan life-cycle plan Cumulative cost Development Plan Integration and Test Plan Progress through steps Risk Analysis Concept of Operation Requirement Validation Design validation and verification Implementation Risk Analysis Risk Analysis Prototype 1 Prototype 2 Prototype 3 Software Requirements Acceptance Test Evaluate alternatives, identify, resolve risks Risk Analysis Operational Prototype Simulations, models, benchmarks Software Product Design Integration Test Unit Test Detailed Design Code Develop, verify next-level product Somnuk Keretho/Kasetsart University 24

Software Development Software is developed using a life cycle model. Just a life cycle model is insufficient for development. We need: A broad philosophy A set of tools which support the philosophy. A language which supports the philosophy. Somnuk Keretho/Kasetsart University 25

Software Development Paradigm A paradigm provides a general approach to work during each phase of the life cycle model. A paradigm is a broad philosophy. A paradigm is not a specific model. Somnuk Keretho/Kasetsart University 26

Some Software Development Paradigms Functional Composition Logic Programming Structured Development Object Orientation Somnuk Keretho/Kasetsart University 27

Functional Development A problem is expressed in termed of a set of mathematical functions. e.g. Double(x) = Add(x, x). An algorithm is not specified. Language such as Miranda, Gofer, Haskell support this paradigm. Poor execution speed. Somnuk Keretho/Kasetsart University 28

Logic Programming Consists of a problem description only. e.g. Factorial(0) = 1. Factorial(N) = N x Factorial(N -1). Doesn t describe how to solve the problem. Languages Prolog & Lisp support this paradigm. Somnuk Keretho/Kasetsart University 29

Structured Development Also called SASD, SADT & Functional Decomposition. Breaks the system into processes & decomposes them. Languages C, Fortran, Pascal, Cobol, Basic and a lot more support this paradigm. By far the most popular paradigm. Somnuk Keretho/Kasetsart University 30

Object Orientation Most recent paradigm. Treats a problem as a collection of objects. Becoming very popular now. More and more languages support this paradigm now. Somnuk Keretho/Kasetsart University 31

Tools for OO Rambaugh (OMT) Coad-Yourdon Booch UML Somnuk Keretho/Kasetsart University 32

Languages for OO C++ Smalltalk Eiffel Object C Object Pascal Java Somnuk Keretho/Kasetsart University 33

Software Quality Assessment CMM by SEI ISO 9000 Somnuk Keretho/Kasetsart University 34