Introduction to CSCI-230: Software Development. Introduction Purchasing/developing software has become the largest single expenditure for companies Why.

Slides:



Advertisements
Similar presentations
Object Oriented Analysis And Design-IT0207 iiI Semester
Advertisements

Programming Paradigms and languages
Ch 3: Unified Process CSCI 4320: Software Engineering.
Object-Oriented Software Development CS 3331 Fall 2009.
Syllabus Case Histories WW III Almost Medical Killing Machine
1 Miscellaneous Vocabulary Object-Oriented Stuff Algorithms Software Design Testing and Types of Errors.
CS 3500 SE - 1 Software Engineering: It’s Much More Than Programming! Sources: “Software Engineering: A Practitioner’s Approach - Fourth Edition” Pressman,
Software Engineering Disasters
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Software Engineering.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
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.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Software Reliability: The “Physics” of “Failure” SJSU ISE 297 Donald Kerns 7/31/00.
Software Development Concepts ITEC Software Development Software Development refers to all that is involved between the conception of the desired.
CIS 321—IS Analysis & Design
Chapter 2: Approaches to System Development
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
Design-Making Projects Work (Chapter7) n Large Projects u Design often distinct from analysis or coding u Project takes weeks, months or years to create.
SOFTWARE ENGINEERING1 Introduction. Software Software (IEEE): collection of programs, procedures, rules, and associated documentation and data SOFTWARE.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
CPSC 2150 August 21, Chapter 1 Object Oriented Software Development This is an introductory course In this chapter we will look at 3 topics Challenges.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
June 05 David A. Gaitros Jean Muhammad Introduction to OOD and UML Dr. Jean Muhammad.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
1 CS 501 Spring 2004 CS 501: Software Engineering Lecture 2 Software Processes.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
LESSON 3. Properties of Well-Engineered Software The attributes or properties of a software product are characteristics displayed by the product once.
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.
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
Formal Methods in Software Engineering1 Today’s Agenda  Mailing list  Syllabus  Introduction.
1 SYS366 Week 1 - Lecture 1 Introduction to Systems.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
From the customer’s perspective the SRS is: How smart people are going to solve the problem that was stated in the System Spec. A “contract”, more or less.
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.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
CHPATER Agenda Software Development  Challenges of Software Development Software Engineering Software Development Life Cycle  Water-fall.
INTRODUCTION CSE 470 : Software Engineering. Goals of Software Engineering To produce software that is absolutely correct. To produce software with minimum.
Advanced Software Engineering Dr. Cheng
Principles of Programming & Software Engineering
What is Wrong with Models?
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
C++ Plus Data Structures
CSCI-235 Micro-Computer Applications
Chapter 18 Maintaining Information Systems
CSE 403 Software Engineering
ECE 103 Engineering Programming Chapter 2 SW Disasters
Introduction to Software Engineering
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Chapter 1 Introduction(1.1)
Chapter 7 –Implementation Issues
CS310 Software Engineering Lecturer Dr.Doaa Sami
Systems development life cycle (SDLC)
What Is Good Software(Program)?
Software Engineering Disasters
Presentation transcript:

Introduction to CSCI-230: Software Development

Introduction Purchasing/developing software has become the largest single expenditure for companies Why bother? The cost of maintaining and upgrading occupies the largest portion of this cost Software costs continue to increase while hardware costs continue to decrease. Why? OO software development (OOSD) aims to significantly improve the software development practice

Software Challenges (1) Size and complexity of software systems Windows NT OS 6 million lines of code $150 million to develop 200 developers, testers and technical writers 5 years Windows Vista 50 million lines of code (XP ~ 35 million) $2 billion in investment (programming and testing) 4000 developers, testers and technical writers 7 years in the making [ Delayed three or four times]

Software Challenges Complexity results from Problems intended to be solved and services to be provided High user expectations No individual can comprehend every detail of the system Communications (2) Software requires continuous maintenance What causes the need for maintenance? Usually results in over budgeting and delays Maintenance cost of a software system over its lifetime is far greater than its initial development goal

Software Challenges (3) Software systems tend to be “buggy” “To err is human, but to really foul things up you need a computer.” – Paul Ehrlich Software can’t and isn’t required to be 100% error free! How good is enough?

Example 1 Mariner Bugs Out (1962) Cost: $18.5 million Disaster: The Mariner 1 rocket with a space probe headed for Venus diverted from its intended flight path shortly after launch. Mission Control destroyed the rocket 293 seconds after liftoff. Cause: A programmer incorrectly transcribed a handwritten formula into computer code, missing a single superscript bar. Without the smoothing function indicated by the bar, the software treated normal variations of velocity as if they were serious, causing faulty corrections that sent the rocket off course. 3.12¯34 for …

Example 2 Toyota’s Prius hybrid vehicles (2005) Cost: not reported Disaster: In 2005, Toyota announced a recall of 160,000 of its Prius hybrid vehicles (04 and 05 models) following reports of vehicle warning lights illuminating for no reason, and cars' engines stalling unexpectedly Cause: Prius’s issue wasn't a hardware problem - it was a programming error in the smart car's embedded code

Example 3 World War III… Almost (1983) Cost: Nearly all of humanity Disaster: On September 26, 1983, anew Soviet early warning system falsely indicated the United States had launched five nuclear missiles. Fortunately the Soviet duty officer had a “funny feeling in my gut” and reasoned if the U.S. was really attacking they would launch more than five missiles, so he reported the apparent attack as a false alarm. Cause: A bug in the Soviet software failed to filter out false missile detections caused by sunlight reflecting off cloud-tops. the sun, the Soviet satellite, and U.S. missile fields all lined up in such a way as to maximize the sunlight reflected from high-altitude clouds.

First “Bug” In 1947, engineers working on the Mark II computer at Harvard University found a moth stuck in one of the components They taped the insect in their logbook and labeled it “first actual case of bug being found.” The words “bug” and “debug” soon became a standard part of the language of computer programmers.

Engineering? Software engineering developing and delivering useful “high-quality” software in a cost- effective manner Compared to other well-established engineering disciplines Civil engineering uses mechanics to help them predict with high confidence that a building or bridge will stand Aerospace engineering uses aerodynamics and simulation to build correctly functioning airplanes Software engineering depends largely on testing and debugging to establish confidence

Engineering? In well-established engineering fields, the same type of failures are rarely repeated Carefully documented to prevent future reoccurrences Solution knowledge is codified for reuse in future solutions Manuals and books

CS230 Software Development Object Oriented with UML and Java (in a Linux environment)

Software Development CS161 and 162 used small well specified programming assignments Primarily single programmer Small in size (day to a week) Single iteration Techniques are different for most software projects

Why Object Oriented? provides developer with real-world programmable components reducing software dev costs capability to share and reuse code with O-O techniques reduces time to develop

Object Oriented(cont.) Reduces and localizes the effects of modifications faster enhancement development more reliable and more robust software capability to manage complexity allows developers to address more difficult applications

Why Java? Exclusively O-O focused System Independent JVM - program can run on any machine can focus on development of functionality, not compatibility errors/bugs are not platform dependent => greater reliability Reuse of libraries Can run within a browser

Why UML? (Unified Modeling Language) Visual language for modeling application in abstract and yet precise terms Helps to organize thinking about domain and problem Facilitates communication with users Facilitates communication with other developers Industry standard

Desirable Software Qualities Usefulness Timeliness Reliability Maintainability Easy to make changes, corrections and adaptations Flexibility (loose coupling) Simplicity Readability Reusability User friendliness Efficiency

History of Software Development – Managing Complexity through Abstraction Early 60s – performance and core memory usage Spaghetti code common (“GOTO”) Early 70s – structured analysis, modular programming (COBOL, FORTRAN, ALGOL) From individual to team (mythical man month)

History con’t 80s – Imperative programming (C, Pascal) Complicated Interactions, communications large High degree of coupling – dependence of one piece of code on another Fixes to one piece broke another piece Partition code into subroutines 90s and beyond – OO programming

Coupling and Cohesion Coupling – the degree to which each program module relies on each one of the other modules. Cohesion – how strongly-related the functionality expressed by the source code of a software module is Complexity resulted from high coupling, poor cohesion Systems are unmaintainable

Software Development Process Development of a system – modeling activity Specification model black box in terms of business value Analysis model – How the specification model will be realized Design model – description of how the analysis will be coded Code model – implementation of the design model

Software Development Process Requirements collection, analysis and specification Design Implementation & Unit Testing Integration and system Testing Maintenance

“Waterfall” Model Every phase must be approved first!

Iterative Software Development Consists of a number of successive iterations During each Identifying classes Identifying methods and attributes for each Identifying relationships among classes Implementing classes Each iteration deals with a relatively smaller increment of the system Incremental developed vs. monolithic Each results in a release or an executable product Continues until system is complete Change is embraced Don’t prevent it, deal with it