Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

Copyright © 1998 by Addison Wesley Longman, Inc. 1 Chapter One Preliminaries, including –Why study PL concepts? –Programming domains –PL evaluation criteria.
Object-Oriented Software Development CS 3331 Fall 2009.
Extensibility, Safety and Performance in the SPIN Operating System Presented by Allen Kerr.
Object-Oriented Software Construction Bertrand Meyer 2nd ed., Prentice Hall, 1997.
Introduction To System Analysis and Design
Unit 251 Implementation and Integration Implementation Unit Testing Integration Integration Approaches.
Review Amit Shabtay. March 3rd, 2004 Object Oriented Design Course 2 Review What have we done during the course? Where to learn more? What is for the.
Reasons to study concepts of PL
ISBN Chapter 1 Preliminaries. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.1-2 Chapter 1 Topics Motivation Programming Domains.
Chapter 1 Principles of Programming and Software Engineering.
(c) 2007 Mauro Pezzè & Michal Young Ch 1, slide 1 Software Test and Analysis in a Nutshell.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
ISBN Chapter 1 Topics Motivation Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language.
Object-oriented design CS 345 September 20,2002. Unavoidable Complexity Many software systems are very complex: –Many developers –Ongoing lifespan –Large.
Copyright © 1998 by Addison Wesley Longman, Inc. 1 Concepts of Programming Languages Chapter 1.
1 Programming Languages Marjan Sirjani 2 1- The Study of Programming Languages The purpose of language is simply that it must convey meaning. (Confucius)
1 Object Oriented Programming Computer Systems Engineering (D2) and Programming (P)
Language Evaluation Criteria
PROGRAMMING LANGUAGES The Study of Programming Languages.
Chapter 1: Introduction to Visual Basic.NET: Background and Perspective Visual Basic.NET Programming: From Problem Analysis to Program Design.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Managing Software Quality
1 Shawlands Academy Higher Computing Software Development Unit.
CSI315 Web Applications and Technology Overview of Systems Development (342)
Software Qualities. Unique Properties of Software (Teams: What are the properties of software that make it unique from other engineering disciplines?)
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Vladimir Misic: Design111:43:34 AM Software design.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
Introduction To System Analysis and Design
1 Programming Languages Marjan Sirjani Course web site:
1 Introduction Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages.
 OOPLs  Help companies reduce complexity  Increase competition in open markets  Speeds up development  Improves maintenance, resusability, modifiability.
1 Life Cycle of Software Specification Design –Risk Analysis –Verification Coding Testing –Refining –Production Maintenance.
Ceg860 (Prasad)L1SQ1 Software Quality Object-Oriented Programming Paradigm.
I Power Higher Computing Software Development The Software Development Process.
What Is Java? According to Sun in a white paper: Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture-neutral, portable,
Dale Roberts Object Oriented Programming using Java - Introduction Dale Roberts, Lecturer Computer Science, IUPUI Department.
LESSON 3. Properties of Well-Engineered Software The attributes or properties of a software product are characteristics displayed by the product once.
The Software Development Process
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
CS 127 Introduction to Computer Science. What is a computer?  “A machine that stores and manipulates information under the control of a changeable program”
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Engr. Isabelo Jun D. Paat, ME-CoE Lecturer 1 Programming Languages.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
CSE 303 – Software Design and Architecture
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
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.
Computer Programming CONTENTS Introduction to Operating Systems Introduction to programming languages Introduction to perl programming language Programming.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Lesson 1 1 LESSON 1 l Background information l Introduction to Java Introduction and a Taste of Java.
Chapter 2 Principles of Programming and Software Engineering.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
PROGRAMMING FUNDAMENTALS INTRODUCTION TO PROGRAMMING. Computer Programming Concepts. Flowchart. Structured Programming Design. Implementation Documentation.
Principles of Programming & Software Engineering
Programming III Introduction.
Chapter 1 Reasons to study concepts of PLs Programming Domains
1.1 Reasons to study concepts of PLs
Introduction CSE 1310 – Introduction to Computers and Programming
Ada – 1983 History’s largest design effort
CS 1120: Computer Science II Software Life Cycle
CS 1120: Computer Science II Software Life Cycle
Chapter 2. Problem Solving and Software Engineering
Presentation transcript:

Ranga Rodrigo

The purpose of software engineering is to find ways of building quality software.

Learning Outcomes Demonstrate competency in the use of a representative secure programming language: Eiffel. Be able to analyze programs and programming languages to identify sources of insecurity. Be able to identify and critically evaluate language features which address common sources of insecurity. Demonstrate a knowledge of case history of, and the resulting lessons learned, from disasters involving software error. Apply and evaluate quality measurement in software development.

Evaluation Coursework (40%) Programming exercise: demonstration of type safety problems in polymorphism, late-binding, design by contract, exceptions: November 16 th. Written report: historical or external context: October 12 th. Examination (60%) Two-hour examination: syntax, semantics of Eiffel, characterize sources of insecurity, critically evaluate the feature.

Secure Languages This module addresses aspects of the question of how to write software that we can depend on. Studying disasters due to software failure will help us make progress by learning from mistakes.

Secure The word secure refers to the contribution that programming language design can make to writing applications which are robust and correct. C is insecure: Type conversations not checked by the compiler. Extensive use of dynamically allocated storage and pointers.

Aspects Supporting Dependable Software Data abstraction The design of control structures Data types and typing Inheritance Design by contract Dynamically allocated storage Genericity Garbage collection

Eiffel Although not as widely used in industry as C++ and Java, Eiffel does have a real-world presence. It was specifically designed to be a simple and secure O-O language. It includes in the language support for the specification of software quality.

External and Internal Factors Perceptible to users and clients. External quality factors Perceptible to designers and implementers. Internal quality factors

External and Internal Factors In the end, only external factors matter. If I use a web- browser or live near a computer-controlled nuclear plant, little do I care whether the source program is readable or modular, if graphics take ages to load, or if a wrong input blows up the plant. Key to achieving external factors is through the internal ones.

External Factors Correctness is the ability of software products to perform their exact task as defined by their specifications. Correctness

External Factors Robustness is the ability of a software system to react appropriately to abnormal conditions. Robustness

Robustness and Correctness Robustness complements correctness. Robustness Specification correctness

External Factors Extendibility is the ease of adapting software products to changes of specifications. Extendibility

Improving Extendibility Design Simplicity A simple architecture will always be easier to adapt to changes than a complex one. Decentralization The more autonomous the modules, the higher the likelihood that a simple change will affect just one module.

External Factors Reusability is the ability of software elements to serve for the construction of many different applications. Reusability

External Factors Compatibility is the ease of combining software elements with others. Compatibility

External Factors Efficiency is the ability of a software system to place a few demands as possible on hardware resources. Efficiency

Assume that there is a new machine twice as fast as the old. Let n be the size of the problem to solve, and N the maximum n that can be handled by a certain algorithm in a given time. Then if the algorithm in O(n), the new machine will allow us to handle problems of sixe 2N for large N. For an algorithm in O(n 2 ) the new machine will only yield 41% increase of N. An algorithm in O(2 n ) would just add one to N.

External Factors Portability is the ease of transferring software products to various hardware and software elements. Portability

External Factors Ease of use is the ease with which people of various backgrounds and qualifications can learn to use software products and apply them to solve problems. It also covers the ease of installation, operation and monitoring. Ease of use

External Factors Functionality is the extent of possibilities provided by a system. Functionality

External Factors Timeliness is the ability of a software system to be released when or its uses want to use it. Timeliness

Tradeoffs Integrity Ease of use

Tradeoffs EconomyFunctionality

Tradeoffs Adaptation to specifications Reusability

Tradeoffs TimelinessExtendibility

Software Maintenance This consumes a large portion of software costs. Maintainability is not given as a quality factor because this problem is addressed by developing quality software. Object oriented technology helps achieve this.

Four Important Qualities Reliability CorrectnessRobustness Modularity ExtendibilityReusability

Object-oriented method directly addresses software quality.