PL/T Programming Language for Time Supervised by Professor Alfred V. Aho Teaching Assistant: Mr. Yan Zou Laurent Charignon (lc2817): Project Manager Sameer.

Slides:



Advertisements
Similar presentations
Design, prototyping and construction
Advertisements

Introducing Formal Methods, Module 1, Version 1.1, Oct., Formal Specification and Analytical Verification L 5.
Introduction To Compilers And Phase 1 Inside a compiler. Inside a C-- compiler. The compilation process. Example C-- code. Extended Backus-Naur.
Key-word Driven Automation Framework Shiva Kumar Soumya Dalvi May 25, 2007.
Alternate Software Development Methodologies
 What is FitNesse / Slim? (10’)  Setting up FitNesse – demo (10’)  Introduction to Snacks-R-Us (10’)  Iteration 1 (35’)  Iteration 2 (35’)  Integration.
Software Testing and Quality Assurance
Use cases and requirement specification - 1 Use case diagrams 3 use cases System boundaries Remember: Use case diagramming is a tool, not the requirements.
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.
SwE 313 Introduction to Rational Unified Process (RUP)
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
Chapter 1 Program Design
Introduction to LabVIEW Seth Price Department of Chemical Engineering New Mexico Tech Rev. 10/5/14.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
High Level: Generic Test Process (from chapter 6 of your text and earlier lesson) Test Planning & Preparation Test Execution Goals met? Analysis & Follow-up.
Writing algorithms using the while-statement. Previously discussed Syntax of while-statement:
General Issues in Using Variables
By Bob Bunson  Simulation of software development project  Fictitious system from Concept to Code  Oriented around the.
Struts 2.0 an Overview ( )
Owl Andrew Olowude Ben Klingher Belai Lencho Kenneth Cheng Martin Li A language for finite automata Team 20 _________ /_ ___ \ \ \ \__/\___/ / \_\/______/
Lecture 6 Software Testing and jUnit CS140 Dick Steflik.
Software Testing. Definition To test a program is to try to make it fail.
THE HOG LANGUAGE A scripting MapReduce language. Jason Halpern Testing/Validation Samuel Messing Project Manager Benjamin Rapaport System Architect Kurry.
Applied Software Project Management Andrew Stellman & Jennifer Greenehttp:// Applied Software Project Management Chapter 1: Introduction.
Implementation Yaodong Bi. Introduction to Implementation Purposes of Implementation – Plan the system integrations required in each iteration – Distribute.
CS 7: Introduction to Computer Programming Algorithms.
Software Engineering 2003 Jyrki Nummenmaa 1 CASE Tools CASE = Computer-Aided Software Engineering A set of tools to (optimally) assist in each.
1 CSC 201: Computer Programming I B. S. Afolabi. Introduction  3 unit course  2 hours of lecture/week Thursdays 4.00pm – 6.00pm Mondays 4.00pm – 6.00pm.
Design and Programming Chapter 7 Applied Software Project Management, Stellman & Greene See also:
Chapter 1: Introducing JAVA. 2 Introduction Why JAVA Applets and Server Side Programming Very rich GUI libraries Portability (machine independence) A.
Introduction Algorithms and Conventions The design and analysis of algorithms is the core subject matter of Computer Science. Given a problem, we want.
CoZy: A very cool language for temperature control Project Manager: Hannah Keiler Language and Tools Guru: Nate Booth System Architect: Giovanni Ortuno.
Turnt. A TURN BASED GAME CREATION LANGUAGE.. turnt Language JEFFREY TAO.
University of Southern California Center for Systems and Software Engineering Model-Based Software Engineering Supannika Koolmanojwong Spring 2013.
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
Unit Testing 101 Black Box v. White Box. Definition of V&V Verification - is the product correct Validation - is it the correct product.
1 5 Nov 2002 Risto Pohjonen, Juha-Pekka Tolvanen MetaCase Consulting AUTOMATED PRODUCTION OF FAMILY MEMBERS: LESSONS LEARNED.
BUILD ON THE POLYGLOT COMPILER FRAMEWORK MIHAL BRUMBULLI 7th Workshop “SEERE” Montenegro-Risan 9-14 September 2007 SimJ Programming Language.
SIMetro Welcome!. SIMetro A Language for Simulating Metro Systems.
Discovering object interaction. Use case realisation The USE CASE diagram presents an outside view of the system. The functionality of the use case is.
1 An Aspect-Oriented Implementation Method Sérgio Soares CIn – UFPE Orientador: Paulo Borba.
What to expect or Now that I have gotten used to Prof. Fitzpatrick, here is this new guy with his weird foreign accent…
Refactoring & Testability. Testing in OOP programming No life in flexible methodologies and for refactoring- infected developers without SOME kind of.
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
Celluloid An interactive media sequencing language.
Chapter 6 CASE Tools Software Engineering Chapter 6-- CASE TOOLS
Core Java Introduction Byju Veedu Ness Technologies httpdownload.oracle.com/javase/tutorial/getStarted/intro/definition.html.
MODPI: A parallel MOdel Data Passing Interface for integrating legacy environmental system models A. Dozier, O. David, Y. Zhang, and M. Arabi.
ESIP Semantic Web Products and Services ‘triples’ “tutorial” aka sausage making ESIP SW Cluster, Jan ed.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Introduction Selenium IDE is a Firefox extension that allows you to record, edit, and debug tests for HTML Easy record and playback Intelligent field selection.
Dharmen Mehta (Project Manager) Nimai Buch (Language Guru) Yash Parikh (System Architect) Amol Joshi (System Integrator) Chaitanya Korgaonkar (Verifier.
Yazd University, Electrical and Computer Engineering Department Course Title: Advanced Software Engineering By: Mohammad Ali Zare Chahooki The Project.
Ivar Jacobson, Grady Booch, and James Rumbaugh The Unified Software Development Process Addison Wesley, : James Rumbaugh's OOMD 1992: Ivar Jacobson's.
Michel Grootjans Pascal Mestdach.  Michel Grootjans ◦ Enterprise Architect ◦
COMS W4115 Programming Languages and Translators Professor Alfred V. Aho GROUP 13 Project Manager - Neeraja Ramanan (nr2404) Language and Tools Guru -
Lecture1 Instructor: Amal Hussain ALshardy. Introduce students to the basics of writing software programs including variables, types, arrays, control.
CS Class 04 Topics  Selection statement – IF  Expressions  More practice writing simple C++ programs Announcements  Read pages for next.
Michael J. Voss and Rudolf Eigenmann PPoPP, ‘01 (Presented by Kanad Sinha)
SOFTWARE DEVELOPMENT FOUNDATIONS, 1/12/12 J. Yates Monteith, Clemson University.
Welcome! Simone Campanoni
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Basic concepts of C++ Presented by Prof. Satyajit De
Content Programming Overview The JVM A brief look at Structure
Chapter No. : 1 Introduction to Java.
Topics Introduction to Repetition Structures
The Java Programming Language
Advantages OF BDD Testing
Sridhar Narayan Java Basics Sridhar Narayan
Automated test.
Presentation transcript:

PL/T Programming Language for Time Supervised by Professor Alfred V. Aho Teaching Assistant: Mr. Yan Zou Laurent Charignon (lc2817): Project Manager Sameer Choudhary (sc3363): System Integrator Imré Frotier de la Messelière (imf2108): Language Guru Tao Song (ts2695): System Architect Abhijeet Tirthgirikar (apt2120): Tester and Validator

Introduction to PL/T Example Scenario You want to make an alarm clock. Set it up to ring at 8:00pm today. You can input “y” to snooze it for another 10 mins. You have to terminate the program to stop the alarm otherwise it will keep on running for an hour. The alarm clock will ring for 1s and wait for input to snooze for 1s, and it will keep doing that for 1 hour.

Introduction to PL/T (Continued…) PL/T has following properties:- Simple and Easy to Learn Powerful Robust Portable Intuitive Precise

Sample Programs void main ( ) { #|5| every 1s{ cout << "hello"; }

Sample Programs (Continued…) void countDown(time t) { time n = now(); time p = t; # every 1s{ cout << p; p = p-1s; } cout<< "Time over!"; }

Motivation In general purpose programing languages it is difficult to write time based programs Requires knowledge of threads Idea of having time as a primitive data type To make writing time based general purpose operations like looping etc. easy

Project Management What we wanted Avoid stress by having something working quickly Don't have to cross our fingers the last day Learn new practices

Project Management (Continued…) What we have actually did Made some compromises on the scope of the project when it was needed Considered the individual comfort as a top priority Tried several paths when we are blocked Refactored a lot Tested the most critical features to feel confident and avoid this

Important Language syntactic constructs Time time t1 = 1h2m5s1i; time t2 = 1h1m; t1+t2 => 2h3m5s1i 2*t2 => 2h2m t2/2 => 30m30s t1 true t1 >t2 => false

Important Language syntactic constructs Time time t = now(); cin >> t; cout << t; number n = 5; t = NumberToTime(n); n=TimeToNumber(t);

Important Language syntactic constructs # Loop #|5|{... } #|3| every 1h{... } time t = now(); # {... } # every 2s{... }

Important Language syntactic constructs # Loop #|5|{... } #|3| every 1h{... } time t = now(); # {... } # every 2s{... }

Compiler Architecture Fig 1: Architecture Diagram in a nutshell

Compiler Architecture(Continued…) Fig 2: Detailed Architecture Diagram

Execution (Continued) 1. input.plt void main(){ time p = 10s; cout << p; } 2. Main.java import java.util.*; import java.lang.*; class Main{ public static void main(String argv[]) double d =10000; System.out.println(BIF.intToTi me((int)(p))); } 3. Comiler Output 10s

Testing Unit Testing JUnit Test Framework To extensively test AST and the code it generates Factory methods to define complex getCode functions Functional Testing Complete test suite of PLT programs to test the compiler Same set of PL/T programs are used to test symbol table Cucumber JVM - Behavior driven development Executes plain-text functional descriptions as automated tests

Tools Used JFlex CUP Eclipse Egit Cucumber al/ ng A voir sur cette page pour reproduir ele logo en texte a decouper /modern/java/CUP/

Conclusions Communication! The minutes and the meetings matter more than the code, be sure that everybody knows the status of the project Have a good morale condition: no rush and focus on building a prototype early Keep the iteration shorts and switch roles to maintain a good morale condition. Welcome ideas from everyone and discuss it altogether DVCS is a very important tool, it saves you a great amount of time Use a set of tools you are confident with, it will matter a lot Team building matters Don't hesitate to change your idea Trust your tests to refactor often and have a maintainable code