CS 160 and CMPE/SE 131 Software Engineering January 28 Class Meeting

Slides:



Advertisements
Similar presentations
CS3773 Software Engineering Lecture 01 Introduction.
Advertisements

T /5115 Software Development Project I/II Project Planning Jari Vanhanen Ohjelmistoliiketoiminnan ja –tuotannon laboratorio Software Business and.
General information CSE 230 : Introduction to Software Engineering
CMSC 132: Object-Oriented Programming II
Software Engineering About the Course Software Engineering Qutaibah Malluhi Computer Science and Engineering Department Qatar University.
1 IS380 Class Agenda 01/11/05 Sock H. Chung 1.Syllabus 2.Chapter 1 3.Introduction 4. Request.
CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
CS565 Advanced Software Development (1 unit) Lecturer: Adrian O’Riordan Contact: is Office: prefab, behind.
1 Software Engineering--Introduction. 2 1.Syllabus, grading, schedule--class + lab--will all be on 2.Contact.
CS 153: Concepts of Compiler Design August 25 Class Meeting Department of Computer Science San Jose State University Fall 2014 Instructor: Ron Mak
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 3, Project Organization and Communication.
CS 235: User Interface Design January 22 Class Meeting
CS 160: Software Engineering August 25 Class Meeting Department of Computer Science San Jose State University Fall 2014 Instructor: Ron Mak
CS 160: Software Engineering August 27 Class Meeting Department of Computer Science San Jose State University Fall 2014 Instructor: Ron Mak
CS 235: User Interface Design August 27 Class Meeting Department of Computer Science San Jose State University Spring 2015 Instructor: Ron Mak
CS 235: User Interface Design August 27 Class Meeting Department of Computer Science San Jose State University Fall 2014 Instructor: Ron Mak
Software Development Concepts ITEC Software Development Software Development refers to all that is involved between the conception of the desired.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 3, Project Organization and Communication.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
CSE Graphical User Interface Design & Implementation Jason Murphy Lecture 1 - Introduction.
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 1, Introduction to Software Engineering.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
CS 149: Operating Systems January 22 Class Meeting Department of Computer Science San Jose State University Spring 2015 Instructor: Ron Mak
Software Engineering II (Spring 2008) Instructor: Instructor:Dr. Damla Turgut Office: Office:450 ENGR 1 Bldg Office Phone: Office Phone:(407)
SYSE 802 John D. McGregor Module 0 Session 1 Course Introduction.
Welcome to CS 3331, Advanced Object-Oriented Programming Fall 2009 Dept. of Computer Science University of Texas at El Paso.
CS 153: Concepts of Compiler Design August 24 Class Meeting Department of Computer Science San Jose State University Fall 2015 Instructor: Ron Mak
CS 160: Software Engineering October 8 Class Meeting
CS 732 Software Engineering Semester 1/2545 Dr.Choonhapong Thaiupathump.
Tablet PC Capstone CSE 481b Richard Anderson Craig Prince.
IENG 471 Facilities Planning
SE-308 Software Engineering-II 7th Term SE University of Engineering & Technology Taxila, Pakistan Software Engineering Department.
CSE 436 Software Engineering Workshop Course Overview Christopher Gill CSE 436 January 2007 Department of Computer Science and Engineering.
CS 235: User Interface Design August 25 Class Meeting Department of Computer Science San Jose State University Fall 2014 Instructor: Ron Mak
CMSC 345, Spring CMSC 345 Software Design and Development Spring 2003 Section 0101 Ms. Susan Mitchell “Welcome to the School of Hard Knocks”
Course Introduction Software Engineering
10/10/2015 IENG 471 Facilities Planning 1 IENG Lecture END Project Report Requirements & Project Presentation Information.
Welcome to CS 115! Introduction to Programming. Class URL Write this down!
CEN 4010 First Lecture January 9, 2006 CEN 4010 Introduction to Software Engineering Spring 2006 Instructor: Masoud Sadjadi
Introduction to CS Senior Design Project I / II Prof. Dr. H. Altay Güvenir.
CMSC 345, Fall CMSC 345 Software Design and Development Fall 2003 Section 0101 Ms. Susan Mitchell Leave Your Ego at the Door!
CS 153: Concepts of Compiler Design August 26 Class Meeting Department of Computer Science San Jose State University Fall 2015 Instructor: Ron Mak
CS 160: Software Engineering October 22 Class Meeting Department of Computer Science San Jose State University Fall 2014 Instructor: Ron Mak
Course Introduction CEN 5016 Software Engineering Dr. David A. Workman School of EE and Computer Science January 9, 2007.
CS 152: Programming Language Paradigms January 27 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak.
CEN First Lecture CEN 4010 Introduction to Software Engineering Instructor: Masoud Sadjadi
CS 151: Object-Oriented Design October 15 Class Meeting Department of Computer Science San Jose State University Fall 2013 Instructor: Ron Mak
Yazd University, Electrical and Computer Engineering Department Course Title: Advanced Software Engineering By: Mohammad Ali Zare Chahooki The Rational.
CPSC 871 John D. McGregor Process – an introduction Module 0 Session 3.
CS 154 Formal Languages and Computability January 28 Class Meeting Department of Computer Science San Jose State University Spring 2016 Instructor: Ron.
CS 235: User Interface Design March 17 Class Meeting Department of Computer Science San Jose State University Spring 2015 Instructor: Ron Mak
CS 160 and CMPE/SE 131 Software Engineering February 23 Class Meeting Department of Computer Science Department of Computer Engineering San José State.
CSE 403, Spring 2008, Alverson CSE 403 Software Engineering Pragmatic Programmer Tip: Care about Your Craft Why spend your life developing software unless.
CS 160 and CMPE/SE 131 Software Engineering March 22 Class Meeting Department of Computer Science Department of Computer Engineering San José State University.
CS 160 and CMPE/SE 131 Software Engineering March 15 Class Meeting Department of Computer Science Department of Computer Engineering San José State University.
Course Overview Stephen M. Thebaut, Ph.D. University of Florida Software Engineering.
CS 160 and CMPE/SE 131 Software Engineering May 12 Class Meeting Department of Computer Science Department of Computer Engineering San José State University.
CS 160 and CMPE/SE 131 Software Engineering March 24 Class Meeting Department of Computer Science Department of Computer Engineering San José State University.
CS 160 and CMPE/SE 131 Software Engineering May 3 Class Meeting Department of Computer Science Department of Computer Engineering San José State University.
CS 153: Concepts of Compiler Design August 24 Class Meeting
CS 153: Concepts of Compiler Design August 29 Class Meeting
CMPE 152: Compiler Design January 25 Class Meeting
Data Mining: Concepts and Techniques Course Outline
CMPE 152: Compiler Design August 21 Class Meeting
CS & CS Capstone Project & Software Development Project
CMPE 152: Compiler Design January 24 Class Meeting
CMPE/SE 131 Software Engineering February 21 Class Meeting
CMPE 280 Web UI Design and Development May 9 Class Meeting
CMPE/SE 131 Software Engineering March 7 Class Meeting
CMPE 152: Compiler Design August 22 Class Meeting
Presentation transcript:

CS 160 and CMPE/SE 131 Software Engineering January 28 Class Meeting Department of Computer Science Department of Computer Engineering San José State University Spring 2016 Instructor: Ron Mak www.cs.sjsu.edu/~mak

Basic Info Office hours Class website TuTh 4:30 – 5:30 PM MH 413 http://www.cs.sjsu.edu/~mak/ Green sheet Assignments Lecture notes

Add Codes? CS 160 Hand in a filled-out paper Add Code form. Email me a copy of your transcript with the prerequisite courses highlighted. CMPE/SE 131 You must fill out the online request form at http://goo.gl/forms/tRFrljscFW. I will provide add codes to qualified students. Up to the enrollment limit. Graduating seniors have priority (email me a copy of your card).

Goals of the Course Learn the general concepts of software engineering and relevant topics of the software development process within the context of a hands-on team project. Understand the additional challenges of programming-in-the-large over programming-in-the-small. Work on a small team to build and deploy a web application using the full-stack Ruby on Rails framework.

What is software engineering? The Big Question What is software engineering? Why do we need it?

“Programming in the small” “Programming in the large” Programming “Sizes” “Programming in the small” “Programming in the large”

Programming: Small vs. Large Small (school) Large (industry) Number of developers 1, sometimes up to 4 Often many (dozens) Planning Usually minimal Can be elaborate Timeframe Short, < one semester Often long (years) Requirements Usually well defined Often unclear Program complexity Relatively simple Can be very complex Subject to change Usually not Usually yes Highly reliable Usually not necessary Usually necessary Highly robust Testing Usually extensive Documentation Can be a lot

Complexity Change The Major Challenge With any nontrivial software application, the major software engineering challenge is dealing with Complexity and Change

What Makes Software Complex? Size A “large” school assignment: 5-10 Java classes A compiler or interpreter: ~150 classes and interfaces A major enterprise application: hundreds of classes and interfaces. Number of developers An individual school assignment: 1, up to 4 A medium-size project: 5-12 A major enterprise application: dozens.

What Makes Software Complex? cont’d Technology Software packages: Ruby on Rails Tools: Git, Heroku, Gantt charts, ... Project artifacts (written and oral) Requirements specifications, software design, design reviews, project plans, test plans, project schedules, code reviews, demos, …

What Changes? Requirements Schedule Resources Customers don’t know what they want. Customers change their minds. Marketing decides new features are necessary. etc. Schedule We need it done sooner! Resources Technology and tools Personnel Money

“The 5 C’s” Complexity + Change Collaboration Communication Teamwork Methodologies Processes Communication Developers talk to their managers Developers talk to the customers Developers talk to each other Coordination (or: Control) Project management “The 5 C’s”

Software Process “A software process is a set of activities that leads to the production of a software product.” Ian Sommerville, Software Engineering, 7th ed. “A software process [is] a framework for the tasks that are required to build high-quality software. [It] defines the approach that is taken as software is engineered.” Roger Pressman, Software Engineering: A Practitioner’s Approach, 6th ed.

Method A method is a reusable technique or algorithm for solving a specific problem. This is the common definition of method, not to be confused with a method (operation) of a class in the object-oriented sense. Example methods Object-oriented design techniques Source control Online bug tracking

Methodology “A methodology is a collection of methods for solving a class of problems.” Bernd Bruegge and Allen Dutoit, Object-Oriented Software Engineering Using UML, Patterns, and Java, 3rd ed. “[A methodology] specifies how and when each method should be used.” ibid

Software Process, cont’d A software process is the application of a methodology in order to develop software. Every methodology has: Beliefs and assumptions Prescribed rules of behavior Criteria to determine what’s good and what’s bad “Sacred documents” that describe the methodology and “gurus” who promote it Believers and nonbelievers. Methodology = religion?

Software Engineering is … … team-based processes that manage complexity and change in order to successfully develop software products. Successful software products! } Team-based Processes Manage complexity Manage change.

Take roll!

Team Member Roles A role defines the set of tasks that a team member is expected to complete. A task can be technical or managerial, programming or not. When you assign a role to a team member, you make that team member responsible for completing the role’s tasks.

Examples of Team Member Roles Project lead Software architect User interface (UI) designer HTML programmer Java programmer Quality assurance (tester) Database architect Database administrator Documenter etc.

Team Member Roles, cont’d Not all roles need to be filled in each team. Each team member must have at least one role. A team member can have more than one role during the project. Can have multiple roles simultaneously. A role can be filled by more than one team member.

Team Projects Learn software engineering within the context of an actual project. Apply what you learn immediately. Simulate the “real world” software product development process. Projects will be done by small project teams. Projects may be broken up into assignments. Form your own teams of 4 members each.

Ruby on Rails Design, build, and deploy a complete web application with Ruby on Rails framework. Front end: Dynamically generated web pages Middleware: Server-side business logic Back end: Relational database repository SQLite

Ruby on Rails Features Model-view-controller (MVC) architecture Representational State Transfer (REST) Object-relational mapping (ORM) Active record design pattern

Team Projects, cont’d Each team chooses its web application. The application must insert, update, and delete data in the back-end data repository. Previous class projects: Car pool arranger Class scheduler Textbook rental service Restaurant reviews Product reviews

Project Teams Choose your team members wisely! Be sure you’ll be able to meet and communicate with each other and work together well. No moving from team to team. Each team member will receive the same score on each team assignment and on the team project.

Project Teams, cont’d Each team email to ron.mak@sjsu.edu by Monday, February 1: Your team name A list of team members and email addresses A 1-paragraph description of the team’s web application (you can change it later) Subject: CS 160-section Team Team Name or: CMPE 131 Team Team Name Examples: CS 160-01 Team Super Coders CMPE 131 Team Hyper Hackers

Individual Responsibilities You are personally responsible for participating and contributing to your team’s work, and for understanding each part of the work for every assignment whether or not you worked on that part.

Postmortem Assessment Report At the end of the semester, each student will individually turn in a short (one page) report: A brief description of what you learned in the course. An assessment of your personal accomplishments for your project team. An assessment of each of your project team members.

Project Team Activities Generate written artifacts. Requirements specification Design document Project plan and schedule Test plan Make oral presentations. Product pitch Design review Code review Product demo Class attendance and participation are especially important during oral presentations!

Grading Team scores (up to 100 points each) Each team member gets the same score for each assignment. Written project artifacts Oral presentations Completed web application project How well it fulfilled the project requirements? How well it met the project schedule’s milestones? How professionally well done it is?

Grading, cont’d Individual scores (up to 100 points each) Midterm Final Individual class grade will be based on the class curve. 30% assignments 35% project 15% midterm 20% final Your individual class grade will be adjusted up or down depending on your level and quality of participation, as determined by the project tracking tools and your teammates’ postmortem reports.

Required Textbooks Beginning Software Engineering Rod Stephens Wrox/Wiley, 2015 978-1118969144 Rails Crash Course: A No-Nonsense Guide to Rails Development Anthony Lewis No Starch Press, 2015 978-1593275723

Software to Install Locally As described in Rails Crash Course: Ruby, Rails, Git, Heroku Updated Windows instructions:http://www.cs.sjsu.edu/~mak/CS160/RCC-Windows-install Download and install either of the following: SQLite Studio http://sqlitestudio.pl/?act=download SQLite Manager (Firefox add-on) https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/ Also download and install: GanttProject: http://www.ganttproject.biz There may be other software packages announced during the semester.

Reminders: By Monday, February 1 Form teams. Email me your team information. team name team members and email addresses 1-paragraph description of your team’s web application.

High-Level Architecture of a Web Application Client-server architecture Murach’s Java Servlets/JSP, 2nd ed. © 2008, Mike Murach & Associates, Inc.

Static Web Pages The contents of the chosen HTML page is static. “Brochure ware” Murach’s Java Servlets/JSP, 2nd ed. © 2008, Mike Murach & Associates, Inc.

Dynamic Web Pages The web application dynamically generates the HTML for a web page that contains elements based on the request parameters. The browser doesn’t care whether the HTML was static or dynamically generated. Murach’s Java Servlets/JSP, 2nd ed. © 2008, Mike Murach & Associates, Inc.

Architecture of a Rails Application http://www.tracecode.com.au/blog/more-ruby-resources-for-beginners/

Architecture of a Rails Application, cont’d http://binaryhash.com/ruby-on-rails