CSCI 3428: Software Engineering Tami Meredith Chapter 1 Why Software Engineering.

Slides:



Advertisements
Similar presentations
Test process essentials Riitta Viitamäki,
Advertisements

Lecture # 2 : Process Models
Object-Oriented Software Development CS 3331 Fall 2009.
CS487 Software Engineering Omar Aldawud
Software Engineering CSE470: Process 15 Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities:
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
CS 3500 SE - 1 Software Engineering: It’s Much More Than Programming! Sources: “Software Engineering: A Practitioner’s Approach - Fourth Edition” Pressman,
CS540 Software Design Lecture 1 1 Lecture 1: Introduction to Software Design Anita S. Malik Adapted from Budgen (2003) Chapters 1.
Chapter 1 4th Edition What is Software Engineering Shari L. Pfleeger
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
What is software engineering?
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Introduction to Systems Analysis and Design
Planning and Tracking Software Quality Yordan Dimitrov Telerik Corporation
CSC230 Software Design (Engineering)
Software Engineering (Chapter 15 in text). Science vs. Engineering The difference between science and engineering:  Science seeks to explain phenomena.
Managing Software Quality
Quality Assurance ITEC Rick Price. Expectations This course is not purely a lecture course – Classroom participation is a large portion – Everyone.
Dillon: CSE470: SE, Process1 Software Engineering Phases l Definition: What? l Development: How? l Maintenance: Managing change l Umbrella Activities:
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
What is software? Software is a set of items or objects that form a configuration that includes: –Programs –Documents –Data.
Software System Engineering: A tutorial
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Chapter 1 What is Software Engineering Shari L. Pfleeger Joanne M. Atlee 4 th Edition.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
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.
Software Testing and Quality Assurance Software Quality Assurance 1.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
OHT 1.1 Galin, SQA from theory to implementation © Pearson Education Limited 2004 The uniqueness of software quality assurance The environments for which.
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
Topics Covered Phase 1: Preliminary investigation Phase 1: Preliminary investigation Phase 2: Feasibility Study Phase 2: Feasibility Study Phase 3: System.
What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,
Developing Business/IT Solutions Chapter 12 McGraw-Hill/IrwinCopyright © 2011 by The McGraw-Hill Companies, Inc. All rights reserved.
Chapter 1 Quality terminology Error: human mistake Fault: result of mistake, evidenced in some development or maintenance product Failure: departure from.
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
Improving Design #1 Reduce complexity - narrow-down the project scope - optimize underlying process - eliminate unneeded parts # 2 Find and eliminate redundancies.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Chapter 2 Object-Oriented Paradigm Overview. Getting Acquainted with the Class Project Read the requirements specification carefully Make note of any.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
CSE 303 – Software Design and Architecture
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. Objectives Have a basic understanding of the origins of Software development, in particular the problems faced in the Software Crisis.
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
IS444: Modern tools for applications development Dr. Azeddine Chikh.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
© NALO Solutions Limited NALO Solutions, presents the – Revenue Collector App Using Mobile Phones to gather Revenue SOFTWARE ENGINEERING.
What is a software? Computer Software, or just Software, is the collection of computer programs and related data that provide the instructions telling.
Chapter 1 SOFTWARE ENGINEERING What is Software Engineering.
 System Requirement Specification and System Planning.
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
Advanced Software Engineering Dr. Cheng
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
SEVERITY & PRIORITY RELATIONSHIP
McCall’s Quality Factors
Software engineering.
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
مقدمه اي بر مهندسي نيازمنديها
Thursday’s Lecture Chemistry Building Musspratt Lecture Theatre,
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
CS 1120: Computer Science II Software Life Cycle
CS 1120: Computer Science II Software Life Cycle
SOFTWARE DEVELOPMENT LIFE CYCLE
Chapter 1: Software and Software Engineering
Presentation transcript:

CSCI 3428: Software Engineering Tami Meredith Chapter 1 Why Software Engineering

I am WRONG (sometimes...) There is no guaranteed correct, no fail, approach, method, technique, tool, etc. QUESTION EVERYTHING! What worked last time might not work this time. IMPROVISE, ADAPT, OVERCOME! Your strongest tool is your ability to THINK! The quality of piece of software is equivalent to the quality of the thought that went into it.

Problem Solving 1. Define the problem space: a) Input: What we have to work with, tools, resources b) Output: What we must produce, goal c) Constraints and limitations d) Evaluation: How can we tell when we have achieved the goal and the output is correct? 2. Develop and evaluate solution(s) 3. Implement the solution 4. Evaluate the result 5. Repeat as necessary

Software Engineering Software Engineering is Problem Solving 90% of the work is figuring out what to do, how to do it, and making sure you have it right 10% of the work is programming the solution. Skipping steps leads to massive disasters! Goal: Produce a profitable product Method: Use basic problem solving Key: Avoid risks!

Assumptions Write a program to count to 10 #include void main() { int i; for (i = 0;i<10;i++) printf("%d\n",i); } User interface, language, output (voice), speed of counting etc. You must explore the problem space fully before you start to program The more you think, the less you program, the more likely you have a satisfactory solution Assumptions frequently indicate that you FAILED TO EXPLORE THE PROBLEM SPACE

Terms Analysis: Problem decomposition Synthesis: Solution Construction Fault: A mistake made during development Failure: Deviation of the system from correct "Bug": Coding fault Safety Critical: Human life depends upon S/W Mission Critical: Task completion depends on S/W COTS: Commercial Off The Shelf CSP: Commercial Software Product cf., contracted, commissioned, custom S/W

Models of Quality Transcendental: We can recognise but not define quality User: Fitness for a purpose, how well it works Manufacturing: Conformance to specification Product: Conformance to metrics (e.g., complexity, efficiency, MTF) Value-Based: What's it worth?

(Some) Components of Quality Correctness Efficiency Maintainability Flexibility Reusability Security Reliability Usability Testability Portability Accessibility Interoperability

Software Development The basic and necessary stages of development: 1. Requirements analysis and definition 2. System design 3. Program design 4. Implementation 5. Unit testing 6. Integration testing 7. System testing 8. Delivery 9. Maintenance

Waterfall Model

Software Developers Analysts – Domain experts vs. S/W experts Designers, Architects Programmers System & DB Administrators Librarian, Build-Master Testers – Technical vs. User Trainers, Customer Service Representatives Technical Writers & Illustrators Managers – Business, MIS

"Changes in Development" 1996 w.r.t. 1970s mainframe systems Criticality of time-to-market for CSPs Shift of costs from hardware to software Increasing ability of hardware ("power") Extensive use of networking Availability of OOP GUIs, Windowing, Mice Unpredictability of the waterfall model

"Changes in Development" 2015 Criticality of time-to-market for Service Oriented Software Increasing ability of hardware Mandatory use of networking Luxury vs. necessity of computing Pad computing, smart phones Massive amounts of storage (Hard drives, Cloud) Unpredictability of the all models, agile methods Changes in system complexity and size Automatic update

The Discipline of Classical S/E Abstraction and hierarchies: layered views with various levels of detail Analysis and design methods and notations:  structured design + flowchart, OOP + UML User interface prototyping Software architecture Software process Reuse and refactoring Measurement and evaluation Tools and IDEs

Discussion A. Software engineering is a science. Application of key principles and techniques with rigour and discipline will ensure the best quality product. B. Software engineering is an art. It requires creativity and imagination to develop effective solutions. Every problem is different and needs a different approach. C. Software engineering is bunk! A good programmer will know what to do and can do the job without the endless overhead that process creates.

Famous Moments in Software Engineering Ariane 5 1. strict precondition 1: {Set."x"=FLPT and Set."y"=INT16 and <= x <= } 2. strict precondition 2: {Set."x"=FLPT and Set."y"=INT16 and int(x) in INT16} 3. strict precondition 3: {Set."x"=FLPT and Set."y"=INT16 and int(x) in Set."y"} 4. program code (convert floating point x to fixed point integer y): y := int(x) 5. postcondition: {Set."x"=FLPT and Set."y"=INT16 and y=int(x)} Summary: Take 16bit Ariane 4 code, add new 64bit Ariane 5 code, put unneeded 64 bit float into 16 bit int variable, catch exception, shut-down flight control program, watch BOOM! Note that:  this error was in code that serves no purpose after lift off.  The system was never correctly tested.  The backup system was identical (same code) to the main system.  See: