CSCI 260 – Software Design Instructor: Allen Tucker Background.

Slides:



Advertisements
Similar presentations
1 Chapter 4 - Part 1 Software Processes. 2 Software Processes is: Coherent (logically connected) sets of activities for specifying, designing, implementing,
Advertisements

Software Engineering Software Engineering is the science and art of building significant software systems that are: 1) on time 2) on budget 3) with acceptable.
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
SE curriculum in CC2001 made by IEEE and ACM: Overview and Ideas for Our Work Katerina Zdravkova Institute of Informatics
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Software Engineering.
Software Engineering COMP 201
Notion of a Project Notes from OOSE Slides - modified.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
CSC230 Software Design (Engineering)
 Software Software  Program vs Software Products Program vs Software Products  Software Characteristics Software Characteristics  Software Crisis.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 1 Software Prototyping l Rapid software development to validate requirements l.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Introduction to Software Engineering CEN 4010.
Chapter 1: Software and Software Engineering
Introduction to Software Engineering. Topic Covered What is software? Attribute of good S/w? Computer Software? What is Software Engineering? Evolving.
Software Engineering Methodologies (Introduction)
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Objectives of the Lecture
SOFTWARE ENGINEERING Hoang Huu Hanh, Hue University hanh-at-hueuni.edu.vn.
GROUP PROJECTS IN SOFTWARE ENGINEERING EDUCATION Jiang Guo Department of Computer Science California State University Los Angeles April 3-4, 2009.
Software EngineeringIntroduction Slide 1 Software Engineering Mr. Ahmad Al-Ghoul.
SOFTWARE ENGINEERING1 Introduction. Software Software (IEEE): collection of programs, procedures, rules, and associated documentation and data SOFTWARE.
Team Skill 6: Building the Right System From Use Cases to Implementation (25)
Instructor: Peter Clarke
Introduction to Software Engineering
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
CSCI-383 Object-Oriented Programming & Design Lecture 1.
© Lethbridge/Laganière 2005 Chapter 1: Software and Software Engineering1 Warm Up Question: What do you think are the most important attributes of a piece.
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
Lecture 1Software Engineering1 (Trimester I Session 2002/2003) Lecturer / Tutor Name : Mr. R. Logeswaran
111 Notion of a Project Notes from OOSE Slides – a different textbook used in the past Read/review carefully and understand.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Software Engineering EKT 420 MOHAMED ELSHAIKH KKF 8A – room 4.
10/23/2015CPSC , CPSC , Lecture 141 Software Engineering, CPSC , CPSC , Lecture 14.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering 1.
What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,
Software Engineering 1 Object-oriented Analysis and Design Applying UML and Patterns An Introduction to Object-oriented Analysis and Design and Iterative.
CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A.
CSCE 240 – Intro to Software Engineering Lecture 2.
IS444: Modern tools for applications development Dr. Azeddine Chikh.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Object-Oriented Software Engineering Chapter 1 Software and Software Engineering.
Formal Methods in Software Engineering1 Today’s Agenda  Mailing list  Syllabus  Introduction.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
1 welcome. 2 Object Oriented Software Systems Engineering Meetings: Every second Saturday, 9:00-15:30pm Instructor: Panayiotis Alefragis
SEG 3300: Sections A&B Introduction to Software Engineering Lecture 1: Software and Software Engineering Based on Presentations LLOSENG (Lethbridge, Laganiere,2001,
Software Engineering Session 2007/2008 Semester 1 Universiti Malaysia Perlis.
Software Engineering Session 2008/2009 Semester 1 University Malaysia Perlis Lecture 1.
INTRODUCTION CSE 470 : Software Engineering. Goals of Software Engineering To produce software that is absolutely correct. To produce software with minimum.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Chapter 1: Software and Software Engineering The Nature of Software... Software is intangible  Hard to understand development effort Software.
Advanced Software Engineering Dr. Cheng
Chapter 1- Introduction
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
CSCE 240 – Intro to Software Engineering
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Software engineering Lecturer: Nareena.
Software Engineering Software Engineering is the science and art of
Software Engineering I
CS385T Software Engineering Dr.Doaa Sami
CS310 Software Engineering Lecturer Dr.Doaa Sami
Software Engineering Software Engineering is the science and art of
Chapter 1: Software and Software Engineering
UML Design for an Automated Registration System
Chapter 1: Software and Software Engineering
Presentation transcript:

CSCI 260 – Software Design Instructor: Allen Tucker Background Course overview Course work Course resources References

Background: The Nature of Software... Software is intangible Software is easy to reproduce –Cost is in its development The industry is labor-intensive –Hard to automate Untrained people can hack something together –Quality problems are hard to notice Software is easy to modify Software does not ‘wear out;” it deteriorates over time –in ways not anticipated, thus making it complex

So… Much software has poor design and is getting worse Demand for software is high and rising We are in a perpetual ‘software crisis’ We have to learn to ‘engineer’ software

The Software Crisis: Only 9% of all software projects are delivered on time and on budget. IEEE Software (April 1998). –E.g., the Ariane 5 disaster [6] –E.g., "Software Quality Is Still a Work in Progress, Offshore and in the U.S.” Computerworld (Sept 2003) –E.g., “Why Software is so bad,” MIT Technology Review, 2002.Why Software is so bad –E.g., the Therac-25 disaster

The Ariane 5 Disaster [6] In 1996, the European Space Agency’s Ariane 5 launcher crashed on take-off: cost = $500 million. Cause of the crash: failure of the on-board computer system. Cause of the failure: conversion of 64-bit floating point value (called the horizontal_bias) to a 16-bit integer produced an arithmetic overflow exception. This exception was not trapped by the software (the designers had decided that it could not occur). With “design by contract,” the following line of code could have prevented the disaster: require horizontal_bias <= Max_horizontal_bias;

The software crisis has many contributors … 1. The nature of software itself –Pervasive –Complex 2. The software profession 3. Academia 4. Customers

Software is Pervasive Transportation and Aeronautics Health Care Process Control and Manufacturing Defense Electronic Commerce and Banking Energy Systems

Software is Complex Millions of Lines of Code (LOC) e.g., MS Word ~ 1m LOC MS NT ~ 10m LOC a pacemaker ~ 100k LOC Number of States e.g., an int has ~ 4.2m states (2 32 values) a program with 5 int variables has 5x2 32 states So what about MS Word? So traditional testing methods can sample only a small fraction of a program’s state space. Formal methods can provide a complement to testing.

What is Software Engineering?... The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraints Solving customers’ problems –Sometimes the solution is to buy, not build (COTS) Systematic development –An engineering process (IEEE/ISO standardization of practices) Large, high quality software systems –Teamwork and co-ordination are required Cost, time and other constraints –The benefit must outweigh the cost –Underestimation of cost and time have caused many project failures

Elements of a Software Engineering Project (Steps 1-6 = the “software lifecycle”) 1.Requirements and specifications 2.Design Systems engineering: hardware / software mix Software architecture: Identifying subsystems and their interactions Detailed design of each subsystem User interface design Database design 3.Modeling Use cases Structural (static) Dynamic 4.Programming 5.Testing and verification 6.Deployment Process management

Types of Software Engineering Projects: 1.Most projects are evolutionary or maintenance projects, involving work on legacy systems 2.Few are ‘Green field’ projects, involving entirely new applications 3.Some projects involve building on a framework or combining existing components. –A framework is an application that is missing some important details. –Such projects Benefit from reusing reliable components. Provide some freedom to innovate as in green field projects

The majority view: mathematical rigor is unimportant in Software Design Lethbridge [5]: “Relatively little mathematics turns out to be important for software engineers in practice, and it tends to be forgotten.” …“If we continue to teach the amount and type of mathematics [that we now teach], we must justify it by other means than saying it is important to a software developer's work.”

Why Include Mathematical Rigor in Software Design? … We can design more reliable software. E.g., at Miami University [8], an elevator scheduling system was designed by 19 teams of students: –Six teams used formal methods and 13 teams used traditional design methods. –All had the same level of mathematics and computer science training. –Six sets of data were used to test the systems. –Outcomes All the formal methods teams’ solutions executed all six sets of test data correctly. only 6 of the 13 other teams' solutions did so.

More success stories… Six software developers [7] reported that the use of formal methods creates more reliable, efficient, and maintainable code. Two reported a 40% reduction in post-delivery failures compared with traditional methods. The use of formal methods in a system design [3] resulted in a failure rate of 0.04 defects per 1000 lines of code, far below the industry average. The use of formal methods in the design, code proof, and validation phases of a safety-critical system [4] found 140 faults.

So in this course, we’ll study: 1.What is software? 2.What is the traditional software design process, and how can it be improved? 3.What new tools and techniques are available for software design? UML – the “universal modeling language” Design by Contract – a process model JML – the “Java modeling language” 4. What benefits do they offer? 5. What are their drawbacks (costs)?

Course Content A study of the software design process, including: –tools for software modeling (UML) –Review logic and proof, and explore their use in software design –Use of formal methods (e.g., preconditions, postconditions, design by contract) for writing software specifications –Use of lab tools (e.g., Eclipse, UML, and JML) to model and implement our software specifications –A software design project to test our understanding of these ideas

Course Work 1.Weekly meetings –Two classes per week (10:00 TTh, Searles 223/224) 2.Written Assignments (6) –Individual 3.Tests (2) 4.Team Project 5.Resources –Syllabus –Assignments and Project –Powerpoint lecture notes –Tutorials and References (Java, Eclipse, UML, JML)

Lab Resources (Searles 224) Environments and tools (free download) –Eclipse/Java –UML/OCL –JML shtml shtml Team project data

Team Project Course registration system Client-server architecture / on-line registration Realistic rules and regulations –Student Transcripts and Preferences –Courses –Prerequisites –Advising function Live data (~1600 students and ~300 courses) See for general background.

Tips All work must be handed in on its due date. –hardcopy to Searles 220, and –electronic copy to Team work is required for the project Individual work is required for all assignments and tests (help may be given/received on technical questions about using Eclipse/UML/JML, but not on substantive questions)

References 1.Lethbridge, T What Knowledge Is Important to a Software Professional? IEEE Computer (May 2000), Tucker, A. and B. Boehm. On the Balance between Theory and Practice. IEEE Software (September 2002), Leveson, N. Medical Devices: the Therac-25, short version here.Medical Devices: the Therac-25 here 4.Mann, Why Software Is So BadWhy Software Is So Bad 5.Hall, A. and R. Chapman. Correctness by Construction: Developing a Commercial Secure System. IEEE Software (Jan-Feb 2002), King, S. et al. Is Proof More Cost-Effective Than Testing? IEEE Trans on Software Engineering 26, 8 (August 2000),

Elements of Software Quality Usability Efficiency Reliability Maintainability Reusability