1 Introduction. 2 Why? We need to deliver good programs Bugs: results may be catastrophic Long time to get something working Expensive to change: software.

Slides:



Advertisements
Similar presentations
AGILE DEVELOPMENT Outlines : Quick Look of agile development Agility
Advertisements

Study What’s that? Why? How?. School does not “do stuff” to you You do stuff to school – it is active You do stuff to school – it is active This is about.
Topics in Programming Reactive Systems Prof. Ronen Brafman and Dr. Gera Weiss.
BORIS MILAŠINOVIĆ KREŠIMIR FERTALJ UNIVERSITY OF ZAGREB FACULTY OF ELECTRICAL ENGINEERING AND COMPUTING CROATIA Teaching staff role in students projects.
MADALINA CROITORU Software Engineering week 1 Madalina Croitoru IUT Montpellier.
COMPUTER APPLICATIONS IN BUSINESS
SIMS 213: User Interface Design & Development Marti Hearst Tues, Feb 25, 2003.
1 Introduction. 2 Administrative 70% Exam, 30% Homeworks Must pass exam 4-5 Homeworks Homework grades: 80 is easy, 100 is hard 1-2 Class exercises Lecture.
BORIS MILAŠINOVIĆ FACULTY OF ELECTRICAL ENGINEERING AND COMPUTING UNIVERSITY OF ZAGREB, CROATIA Experiences after three years of teaching “Development.
SIMS 213: User Interface Design & Development Marti Hearst Tues Feb 13, 2001.
Health Informatics Series
Marcelo Santos – OOAD-CDT309, Spring 2008, IDE-MdH Object-Oriented Analysis and Design - CDT309 Period 4, Spring 2008 Introduction.
Data Abstraction and Object- Oriented Programming CS351 – Programming Paradigms.
Vakgroep Informatietechnologie – IBCN Software Architecture Prof.Dr.ir. F. Gielen Quality Attributes & Tactics (4) Modifiability.
Code Generation CS 480. Can be complex To do a good job of teaching about code generation I could easily spend ten weeks But, don’t have ten weeks, so.
10th Workshop "Software Engineering Education and Reverse Engineering" Ivanjica, Serbia, 5-12 September 2010 First experience in teaching HCI course Dusanka.
INTRODUCTION.- PROGRAM EVALUATION
Introduction to Statistics for the Social Sciences SBS200, COMM200, GEOG200, PA200, POL200, or SOC200 Lecture Section 001, Fall, 2014 Room 120 Integrated.
1 Object Oriented Programming Computer Systems Engineering (D2) and Programming (P)
Language Evaluation Criteria
Introduction to Project Management
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 Introduction to VBA Development in Excel.
User Interface Overview Jeff Offutt SWE 432 Design and Implementation of Software for the Web.
Software Refactoring Part I: Introduction Bartosz Walter Advanced Object-Oriented Design Lecture 5.
Software Engineering Management Lecture 1 The Software Process.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
11 Partnership for Performance How to hear this lecture Click on the icon: to hear the narration for each slide.
XRules An XML Business Rules Language Introduction Copyright © Waleed Abdulla All rights reserved. August 2004.
Chapter 11 Maintaining the System System evolution Legacy systems Software rejuvenation.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
1 Introduction to Software Engineering Lecture 1.
ITEC 370 Lecture 23 Maintenance. Review Questions? Project update on F, next F give prototype demonstration Maintenance –Reactive –Proactive.
1 Introduction. 2 Administrative ~80% Exam, ~20% Homeworks Must pass exam 4-5 Homeworks Homework grades: 80 is easy, 100 is hard 1-2 Class exercises Lecture.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
SOFTWARE ENGINEERING1 Introduction. SOFTWARE ENGINEERING2 Software Q : If you have to write a 10,000 line program in C to solve a problem, how long will.
Design Process … and some design inspiration. Course ReCap To make you notice interfaces, good and bad – You’ll never look at doors the same way again.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
Software Maintenance Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Refactoring Mehdi Einali Advanced Programming in Java 1.
CSC 480 Software Engineering Lecture 1 August 18, 2004.
SEG 4110 – Advanced Software Design and Reengineering Topic T Introduction to Refactoring.
Refactoring Agile Development Project. Lecture roadmap Refactoring Some issues to address when coding.
Data Structures and Algorithms in Java AlaaEddin 2012.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Lecture 6 Title: Project Cost Management MIS 434.
Principles and examples
Overview of E-Learning Authoring Software
Usability Overview Upsorn Praphamontripong CS
Software Engineering Management
CSC207 Fall 2016.
Introduction SOFTWARE ENGINEERING.
Object-Oriented Programming
CPSC 873 John D. McGregor GQM.
Distribution and components
CSE 403 Software Engineering
Extreme Programming.
Object oriented system development life cycle
BASICS OF SOFTWARE TESTING Chapter 1. Topics to be covered 1. Humans and errors, 2. Testing and Debugging, 3. Software Quality- Correctness Reliability.
Software Quality Engineering
CS 1302 Programming Principles II
Introduction To System Analysis and Design PART 2
UNIT 3 CHAPTER 1 LESSON 4 Using Simple Commands.
CSCI1600: Embedded and Real Time Software
The Computer Skills Divide
CSCI1600: Embedded and Real Time Software
Chapter 13: Construction
Design Joshua Lewis Project questions Assignment questions
The New Methodology Martin Fowler Paper Presented by Vyshali Belagodu
Presentation transcript:

1 Introduction

2 Why? We need to deliver good programs Bugs: results may be catastrophic Long time to get something working Expensive to change: software is not “soft” (!) Project is 95% done, 80% of the time In short: programs are complicated Two issues Definition of quality Techniques for achieving quality

3 Quality in Software ? #bugs in the present #bugs in the future Time to develop Time to add a feature Time to learn the code LOC #Users Revenues

4 “Design, by nature, is a series of trade-offs. Every choice has a good and bad side, and you make your choice in the context of overall criteria defined by necessity. Good and bad are not absolutes, however. A good decision in one context might be bad in another. If you don't understand both sides of an issue, you cannot make an intelligent choice; in fact, if you don't understand all the ramifications of your actions, you're not designing at all. You're stumbling in the dark” Allen Holub, “Why getter and setter methods are evil”,

5 Teaching this Course is Hard We want to emulate Changing requests Partial/Underspecified requests Project is never closed – no end point Large teams Large code base Time factor – human memory is limited Multiple users Multiple versions Wide area – many non-overlapping topics Interfacing with external “things” Lecture time is limited - cannot present complex code Too much code vs. too much explanations

6 Learning this Course is Hard Close to social science/literature No formulas No proofs Subjective observations Most notions are not well defined No right answer – many tradeoffs Thought leaders You need to forget a few things Wide but not deep No linear order Extrapolation: from the simple examples to complex scenarios Requires a different state of mind

7 On the other Hand… 95% of the material is applicable in 95% of all programming jobs

8 Administrative 70% Exam, 30% Homeworks Must pass exam 4-5 Homeworks Last homework is a team effort Joint grade Homework grades: 80 is easy, 100 is hard Some homework: a fail/pass grade Two class ex. => Must attend No global postponements Reverse order of lecture/tutorial

9 Properties of Programs Have a recursive structure Defined elements can be used to define new elements Non-continuous There’s no guarantee that a program is bug-free If it can be done, it can be done in many ways

10 What is Design (I) Sufficient information for a craftsman of typical skill to be able the build the artifact without excessive creativity. (Guy Steele)

11 public class A { int x; public A(int n) { x = n; } public int add(int y) { return x + y; } public int sub(int y) { return x – y; } }

12 Protocol as a Language Compute 5 + 9, put result in x int x = 5 + 9; int x = new A(5).add(9); Protocols induce a new programming language

13 What is Design (II) Design is the language induced by the protocols of the objects that are available in a certain context

14 High Quality Design (interim) A design that Minimizes the number of bugs Minimizes the effort for adding new features

15 Course Plan Week 1 – 3 Introduction, stylistic approaches, basic techniques Week 4 – 5 Regulatory approaches Week 6 – 8 Adaptive approaches Week 9 – 14 Advanced techniques “Approaches” vs. “Techniques” Approaches : chronological order We will group similar approaches together Techniques: difficulty order

16 What will I Gain? You will program slower You will learn cool buzzwords You will be able to compare benefits You will read code better You will write code with less bugs You will programs faster Not teaching how to determine if A is better than B

17 References Richard P. Gabriel Kent Beck Martin Fowler Gang of Four Joel Spolsky Steve Yegge

18 Our Context Every programming is maintenance Feature = change = bug fix OOP Static & Dynamic typing UI, DB, Web-apps Free of charge development Things everyone can adopt within a day Out of scope: RT, Embedded Heavily regulated domains Proprietary development methodologies

19 Characterization of Approaches Philosophy – Assumptions, Ground rules Values – Properties we want to encourage Principles – Generalization of practices Practices – How to achieve the values (Not mandatory)