Software Engineering

Similar documents
(A Very Brief) Introduction to Software Engineering

SOFTWARE ENGINEERING

SOFTWARE ENGINEERING

Software Quality. What is Good Software?

Agile vs Fragile. Susmit Bhattacharya, Solution Architect, Asia Pacific. - The need for Automation in Agile Tricentis GmbH. All Rights Reserved.

Fundamentals of Computer Science CSCI 136 Syllabus Fall 2018

When Embedded Systems Attack. Unit 22. Therac-25. Therac-25. Embedded Failures. Embedded systems can fail for a variety of reasons

Dilbert Scott Adams. CSc 233 Spring 2012

If we aren t supposed to program to an implementation then how can we actually create new things? Reptile reptile = new Turtle(); Software Engineering

software engineering: what is it? software engineering: who? software engineering: why?

Tonight s Agenda. CSC340: Requirements Engineering. Course Objectives. Requirements Engineering. Software Engineering. What is Software Engineering?

Human-Computer Interaction IS David Sprague

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1,2 and 3, Spring 2017

Trusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout

Software Architecture and Engineering Introduction Peter Müller

CS 520 Theory and Practice of Software Engineering Fall 2017

Continuous Integration / Continuous Testing

San José State University Department of Computer Science CS151, Object Oriented Design, Section 04, Fall, 2016 (42968)

Test Automation. Fundamentals. Mikó Szilárd

CS4470: Intro to UI Software CS6456: Principles of UI Software. Fall 2006 Keith Edwards

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1, 2, and 3, Spring 2018

Human-Computer Interaction IS 4300

Introduction to CS 270 Math Foundations of CS

C07: Testing and JUnit

Tutorial 1 Answers. Question 1

Getting the Most from Eclipse

Studio 5000 Automation Engineering & Design Environment Enhance Productivity through Simplified System Development

COMP6471 WINTER User-Centered Design

We start by providing you with an overview of the key feature of the IBM BPM Process Portal.

Software Engineering with Objects and Components

Properties of High Quality Software. CSE219, Computer Science III Stony Brook University

ITM DEVELOPMENT (ITMD)

Chapter 1. Software and Software Engineering. What is this course about?

Agile Development

Scientific Computing. Error Analysis

Topic 01. Software Engineering, Web Engineering, agile methodologies.

Program Validation and Testing

Lecture 7: Software Processes. Refresher: Software Always Evolves

Software Testing Lecture 1. Justin Pearson

Connected vehicle cloud

3D Graphics Programming Mira Costa High School - Class Syllabus,

I am Stephen LeTourneau from Sandia National Laboratories Sandia s National Security Missions include: Nuclear Weapons Defense Systems & Assessments

Survey #3. Final Exam. Today is totally optional! University of British Columbia CPSC 111, Intro to Computation Alan J. Hu. Readings.


Floating-point Error

Leveraging Formal Methods Based Software Verification to Prove Code Quality & Achieve MISRA compliance

People tell me that testing is

Software Testing part II (white box) Lecturer: Giuseppe Santucci

Lecture 13 Introduction to Software Architecture

CS 4300 Computer Graphics

Now you can Microsoft Visual Studio 2010 with MSDN

Introduction & Formal Methods

Towards Lab Based MOOCs: Embedded Systems, Robotics, and Beyond

BECOME A LOAD TESTING ROCK STAR

Powering Knowledge Discovery. Insights from big data with Linguamatics I2E

The Power of Unit Testing and it s impact on your business. Ashish Kumar Vice President, Engineering

<Insert Picture Here> JavaFX 2.0

CISC 323 Introduction to Software Engineering

HTML5 and CSS3 for Web Designers & Developers

Profile: How to update your CV - just an idea. 1) Make sure your margins are a slim as possible. 2) Make sure your font size is 10-12

Working in Harmony: Integrating the efforts of usability engineers and agile software developers

Floating Point. CSC207 Fall 2017

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 17, 2018

Let s build. like they build. Markus Völter Bernd Kolb

Lecture 24 Wrap Up. Final Logistics CSE 331. Today. CSE 331 Software Design and Implementation. Wednesday, 8:30-10:20 AM

CSE 331 Software Design and Implementation. Lecture 24 Wrap Up

Introduction to Eclipse and Eclipse RCP

Agile Engineering. and other stuff I m working on

SAFe Atlassian Style (Updated version with SAFe 4.5) Whitepapers & Handouts

JBuilder 2007 Product Tour November 2006

Overcoming the Challenges of Reusing Software

CSCI 2600: Principles of Software. Spring 2017 Lecture 01 Bill Thompson

System Integration and Build Management

SE 2730 Final Review

Level: M.Ed. Credit Hour: 3 (2+1) Semester: Second Teaching Hour: 80(32+48)

Introduction - SENG 330. Object-Oriented Analysis and Design

Software Development Methodologies

Understanding Software Engineering

Analysis of the Test Driven Development by Example

Lecturer: Sebastian Coope Ashton Building, Room G.18

CSC105, Introduction to Computer Science I. Introduction. Perl Directions NOTE : It is also a good idea to

HCI-4/631 Software Architectures for User Interfaces, Fall 2006

Agile Software Development. Software Development Methodologies. Who am I? Waterfall. John York JOHN YORK EECS 441 FALL 2017 A BRIEF LOOK

CMSC 435: Software Engineering Section 0201

Programming in the Real World. Dr. Baldassano Yu s Elite Education

Welcome to Software Analysis and Testing.

Basic Definitions: Testing

Managerial Design Review Presentation

Problem Statement Document

Starting Out With Java: From Control Structures Through Data Structures (2nd Edition) (Gaddis Series) PDF

Object-Oriented and Classical Software Engineering

h(p://ihm.tumblr.com/post/ /word- cloud- for- hci- human- computer- interacbon CS5340 Human-Computer Interaction ! January 31, 2013!

Refactoring. Why? When? What?

Avi Silberschatz, Henry F. Korth, S. Sudarshan, Database System Concept, McGraw- Hill, ISBN , 6th edition.

Embarking on the next stage of hosted desktop delivery for international events management company

Structured Content and Personalization

Introduction to Assurance

CPSC 427: Object-Oriented Programming

Linux goes safety and takes it to the next level.

Introduction to Programming

Transcription:

CSC40232: SOFTWARE ENGINEERING Professor: Jane Cleland Huang : Introduction Wednesday, January 18 th sarec.nd.edu/courses/se2017 Department of Computer Science and Engineering Software Engineering Software Engineering is defined as the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. The term Software Engineering was first introduced by Fritz Bauer in the late 1960s at a conference to discuss the software crisis. 2 1

Some definitions.. 1. Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. http://www.sei.cmu.edu/(ieee Std 610-1990). 2. Software engineering is the technological and managerial discipline concerned with systematic production and maintenance of software products that are developed and modified on time and within cost estimates. (Fairley, R. Software Engineering Concepts. New York: McGraw-Hill, 1985). 3. Engineering is the systematic application of scientific knowledge in creating and building cost-effective solutions to practical problems in the service of mankind. http://www.sei.cmu.edu/ 3 Today s Software Systems are highly complex 4 2

Ariane 5 Flight 501 Background European Space Agency s reusable launch vehicle. Ariane-4 a major success. Ariane-5 developed for larger payloads. Events Launched 4 th June, 1996. $500 million payload Veered off course during launch. Self-destructed 40 seconds after take-off. Why? Unhandled floating point exception. Therac-25 One of the worst accidents in the computer industry. A medical device used to treat patients for tumors and cancers. Small amounts of radiation are applied to a patient through a set of filters that reduces the actual amount of radiation the patient receives. Resulted in 6 deaths. No safety interlocks programmed into the software system. 3

Recent Failures: http://www.computerworlduk.com/galleries/infrastructure/top-10-software-failures-of-2014-3599618/ In December 2015 more than 3,200 US prisoners were released early due to errors in the way a prisoner s sentence is computed according to good or bad behavior. Another one http://www.computerworlduk.com/galleries/infrastructure/top-10-software-failures-of-2014-3599618/ In 2014-2015 Nissan recalled airbags from over 1 million cars because of software errors in the way sensor information was used to determine whether an adult or child was in the front seat. 4

And one final one http://www.computerworlduk.com/galleries/infrastructure/top-10-software-failures-of-2014-3599618/ A Software glitch in the F-35 Joint Strike Fighter meant that its sensors couldn t differentiate between singular and multiple threats. Chaos Report Standish Research Group Report Project Success: Type 1. The project is completed on-time and on-budget, with all features and functions as initially specified. (2000: 28%) Project Challenged: Type 2. The project is completed and operational but over-budget, over the time estimate, and offers fewer features and functions than originally specified. (2000: 49%) Project Impaired: Type 3. The project is canceled at some point during the development cycle. (2000: 23%) (Are ALL impaired projects failures???) 5

What Makes a Great Software Engineer? Basic Computer Science Skills Business Acumen Willing to leverage existing code Focus on usable and maintainable code Discipline Attention to detail http://mastersinsoftwareengineering.net/15-qualities-every-software-engineer-should-have * Added to list by instructor What is this course about? Engineering! Elegant design Principles of Object Oriented Design Design Patterns Functionality is not enough! Designing and implementing larger systems Going beyond small solutions with 2-3 classes Leveraging basic UML designs to guide implementation Developing within a larger Life-Cycle Model Advancing your programming skills 12 6

Elegant Software Usability: Easy for client to use. Completeness: Does it satisfy all client s needs? (Qualities too!) Robustness: Will it deal with unusual situations gracefully and avoid system crashes? Will it perform the necessary computations in a reasonable amount of time, using a reasonable amount of memory and other resources? Readable: Can other programmers understand the design and code? Scalable: Will it perform correctly and efficiently when the problem scales up in size. Reusable: Can the code be reused in other settings? Simple: NOT unnecessarily complex. Course Overview Weeks 1-7 Software Engineering Design Principles Unit Testing Writing maintainable, extensible, reusable code in Java FX Weekly individual homework assignments (6) See schedule: http://sarec.nd.edu/courses/se2017/classschedule.pdf Where it all started. No need to purchase though. Weeks 8-15 Team-based projects. Collaborative Software Engineering tools using Java FX. Agile process however, I will provide each team with a set of user stories or EARS requirements to work from in Jira. Several team presentations and deliverables. User class time to meet with your team and the instructor and to work on your projects. 14 7

Why Java? 15 Programming Language Trends 16 8

Programming Language Trends 17 Why Java FX? AWT Swing JavaFX Abstract Window Toolkit: Original GUI framework but platform specific in terms of appearance. GUI Toolkit Behavior and appearance of Swing components is consistent across platforms. Designed for desktop Apps. Set of graphics and media packages that enables developers to design, create, test, debug, and deploy rich client applications that operate consistently across diverse 18 platforms 9

Team Projects An interactive, GUI based application for crowdsourcing threat modeling activities for software projects. (Requires some data mining) A new interactive TiQi Application that utilizes our TiQi engine. http://tinyurl.com/tiqidemo A utility for interactively visualizing the evolution of requirements and source code. (Some underlying code is available for detecting refactorings). An eclipse plugin for supporting impact analysis in Safety Critical Systems. 3-4 people per team. Max three teams per project. Program/Test Iteratively Code a little, test a little Code Design Test Iterate through the design. Refactor as necessary The good, the bad, and the ugly news Bad news: I will NOT help you to debug large big-bang projects. Build your projects in small pieces that are tested incrementally before you add the next piece. Good news: I will help you if you are stuck on small increments of your assignments. 20 10

Avoiding the Big Ball of Mud Every programmer starts off with great intentions of an elegant design. However, code often doesn t end up that way!! Big ball of mud" systems have usually been developed over a long period of time, with different individuals working on various pieces and parts. Systems developed by people with no formal architecture or programming training often fall into this pattern. Have you ever experienced such problems? The goal of this course is to equip you with the skills you need to produce and to maintain elegant code for non-trivially sized systems. 21 Homework #1 and Lecture 2 Professor Huang is out of town on January 23 rd. Lecture 2 is therefore online only. It consists of multiple video snippets to help you to get started with Java and Eclipse. Further, each video snippet is associated with a homework questions to be coded in java and tested using a JUnit test case. 22 11

Demo 23 12