CMPESE 131 Software Engineering January 26 Class Meeting

  • Slides: 42
Download presentation
CMPE/SE 131 Software Engineering January 26 Class Meeting Department of Computer Engineering San José

CMPE/SE 131 Software Engineering January 26 Class Meeting Department of Computer Engineering San José State University Spring 2017 Instructor: Ron Mak www. cs. sjsu. edu/~mak

Basic Info o Office hours n n o Th 2: 30 – 4: 30

Basic Info o Office hours n n o Th 2: 30 – 4: 30 PM ENG 250 Website n n n Faculty webpage: http: //www. cs. sjsu. edu/~mak/ Class webpage: http: //www. cs. sjsu. edu/~mak/CMPE 131/ Green sheet Assignments Lecture notes Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 2

Permission Codes? o If you need a permission code to enroll in this class,

Permission Codes? o If you need a permission code to enroll in this class, see the department’s instructions at https: //cmpe. sjsu. edu/content/Undergraduate. Permission-Number-Requests o Complete the form at https: //goo. gl/forms/Ayl 0 jabl. W 5 Ythquf 1 Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 3

Prerequisite Checking o New department policy: Instructors must check that each student has taken

Prerequisite Checking o New department policy: Instructors must check that each student has taken the required course prerequisites. o Therefore, you must submit into Canvas a copy of your transcript with the prerequisites highlighted. o Also submit a signed copy of the Honesty Pledge. Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 4

Goals of the Course o Learn the general concepts of software engineering and relevant

Goals of the Course o Learn the general concepts of software engineering and relevant topics of the software development process within the context of a hands-on team project. o Understand the additional challenges of programming-in-the-large over programming-in-the-small. o Work on a small team to build and deploy a web application using the full-stack Ruby on Rails framework. Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 5

Software Engineering, Not Web Programming o This is a software engineering class, not a

Software Engineering, Not Web Programming o This is a software engineering class, not a web programming class. o You will be graded on your performance in software engineering. o How well your web project turns out should be a result of how successfully you applied the software engineering tools and methodologies that you learned in this class. Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 6

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

The Big Question What is software engineering? Why do we need it? Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 7

Programming “Sizes” o “Programming in the small” o “Programming in the large” Computer Engineering

Programming “Sizes” o “Programming in the small” o “Programming in the large” Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 8

Programming: Small vs. Large Small (school) Large (industry) Number of developers 1, sometimes up

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 Usually not necessary Usually necessary Testing Usually minimal Usually extensive Documentation Usually minimal Can be a lot Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 9

Take roll! Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering ©

Take roll! Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 10

The Major Challenge With any nontrivial software application, the major software engineering challenge is

The Major Challenge With any nontrivial software application, the major software engineering challenge is dealing with Complexity and Change Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 11

What Makes Software Complex? o Size n n n o A “large” school assignment:

What Makes Software Complex? o Size n n n o A “large” school assignment: 5 -10 classes A compiler or interpreter: ~150 classes and interfaces A major enterprise application: hundreds of classes and interfaces. Number of developers n n n An individual school assignment: 1, up to 4 A medium-size project: 5 -12 A major enterprise application: dozens. Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 12

What Makes Software Complex? cont’d o Technology n n o Software packages: Ruby on

What Makes Software Complex? cont’d o Technology n n o Software packages: Ruby on Rails Tools: Git, Heroku, Gantt charts, . . . Project artifacts (written and oral) n Requirements specifications, software design, design reviews, project plans, test plans, project schedules, code reviews, demos, … Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 13

What Changes? o Requirements n n o Schedule n o Customers don’t know what

What Changes? o Requirements n n o Schedule n o Customers don’t know what they want. Customers change their minds. Marketing decides new features are necessary. etc. We need it done sooner! Resources n n Technology and tools Personnel Money etc. Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 14

Complexity + Change o Collaboration n o “The 5 C’s” Communication n o Teamwork

Complexity + Change o Collaboration n o “The 5 C’s” Communication n o Teamwork Methodologies Processes Developers talk to their managers Developers talk to the customers Developers talk to each other Coordination n Project management Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 15

Method o A method is a reusable technique or algorithm for solving a specific

Method o A method is a reusable technique or algorithm for solving a specific problem. n o 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 n n n Object-oriented design techniques Source control Online bug tracking Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 16

Methodology o “A methodology is a collection of methods for solving a class of

Methodology o “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, 3 rd ed. o “[A methodology] specifies how and when each method should be used. ” ibid Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 17

Methodology, cont’d o Every methodology has: n n n o Beliefs and assumptions Prescribed

Methodology, cont’d o Every methodology has: n n n o 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? Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 18

Software Engineering is … … team-based methodologies that manage complexity and change in order

Software Engineering is … … team-based methodologies that manage complexity and change in order to successfully develop software products. o o o } Team-based methodologies Manage complexity Manage change. Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak Successful software products! 19

Team Member Roles o A role defines the set of tasks that a team

Team Member Roles o A role defines the set of tasks that a team member is expected to complete. n o 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. Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 20

Examples of Team Member Roles • Project lead • Software architect • User interface

Examples of Team Member Roles • Project lead • Software architect • User interface (UI) designer • HTML programmer • Java programmer Computer Engineering Dept. Spring 2017: January 26 • Quality assurance (tester) • Database architect • Database administrator • Documenter • etc. CMPE/SE 131: Software Engineering © R. Mak 21

Team Member Roles, cont’d o Not all roles need to be filled in each

Team Member Roles, cont’d o Not all roles need to be filled in each team. o Each team member must have at least one role. o A team member can have more than one role during the project. n Can have multiple roles simultaneously. o A role can be filled by more than one team member. Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 22

Team Projects o o Learn software engineering within the context of an actual project.

Team Projects o o Learn software engineering within the context of an actual project. n Apply what you learn immediately. n Simulate the “real world” software product development process. Projects will be done by small project teams. n o Weekly assignments will add progress to projects. Form your own teams of 4 members each. Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 23

Ruby on Rails o Design, build, and deploy a complete web application with Ruby

Ruby on Rails o Design, build, and deploy a complete web application with Ruby on Rails framework. o Front end: Dynamically generated web pages o Middleware: Server-side business logic o Back end: Relational database repository n SQLite Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 24

Ruby on Rails Features o Model-view-controller (MVC) architecture o Representational State Transfer (REST) o

Ruby on Rails Features o Model-view-controller (MVC) architecture o Representational State Transfer (REST) o Object-relational mapping (ORM) n Active record design pattern Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 25

Team Projects, cont’d o Each team chooses its web application. o The application must

Team Projects, cont’d o Each team chooses its web application. o The application must insert, update, and delete data in the back-end data repository. o Previous class projects: n n n Car pool arranger Class scheduler Textbook rental service Restaurant reviews Product reviews Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 26

Project Teams o Choose your team members wisely! n n o Be sure you’ll

Project Teams o Choose your team members wisely! n n o 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. Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 27

Project Teams, cont’d o Each team email to ron. mak@sjsu. edu by Wednesday, February

Project Teams, cont’d o Each team email to ron. mak@sjsu. edu by Wednesday, February 1: n n o o 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: CMPE 131 Team Name n Example: CMPE 131 Team Hyper Hackers Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 28

Project Teams, cont’d o Students who are majoring in the following fields are valuable

Project Teams, cont’d o Students who are majoring in the following fields are valuable team assets! n n n o Industrial and Systems Engineering (ISE) Industrial Technology/Manufacturing Systems Business Administration/MIS They are great designers and project planners. n No more than one of them per team. Au, Trinh My Ducusin, Christopher Montepalco Gamboa, Jennifer Lindsey Haryanto, Alan Martin, Thomas Robert Computer Engineering Dept. Spring 2017: January 26 Mc. Lane, Danny Devonne Minaise, Anthony Joseph Saini, Manisha Trinh, Sandy CMPE/SE 131: Software Engineering © R. Mak 29

Individual Responsibilities You are personally responsible for participating and contributing to your team’s work,

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. Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 30

Postmortem Assessment Report o At the end of the semester, each student will individually

Postmortem Assessment Report o At the end of the semester, each student will individually turn in a short (one page) report: n A brief description of what you learned in the course. n An assessment of your personal accomplishments for your project team. n An assessment of each of your project team members. Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 31

Project Team Activities o Generate written artifacts. n n o Make oral presentations. n

Project Team Activities o Generate written artifacts. n n o Make oral presentations. n n o Requirements specification Design document Project plan and schedule Test plan Product pitch Design review Code review Product demo Class attendance and participation are especially important during oral presentations! Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 32

Grading o Team scores (up to 100 points each) o Each team member gets

Grading o Team scores (up to 100 points each) o Each team member gets the same score for each assignment. n n o Written project artifacts Oral presentations Completed web application project n n How well it fulfilled the project requirements? How well it met the project schedule’s milestones? How professionally well done it is? How good was the software engineering? Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 33

Final Individual Class Grade o o o o 30% assignments 35% project 15% midterm

Final Individual Class Grade o o o o 30% assignments 35% project 15% midterm 20% final Your final 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. During the semester, keep track of your progress in Canvas. At the end of the semester, students with the median score will get the B grade. Higher and lower grades will then be assigned based on how the scores cluster above and below the median. Therefore, your final class grade will be based primarily on your performance relative to the other students in the class. Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 34

Required Textbooks Rails Crash Course: A No-Nonsense Guide to Rails Development Anthony Lewis No

Required Textbooks Rails Crash Course: A No-Nonsense Guide to Rails Development Anthony Lewis No Starch Press, 2015 978 -1593275723 A free online Ruby on Rails Tutorial: https: //www. railstutorial. org/book/ Your project must be more than mere copies of the book examples. Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 35

Software to Install Locally o As described in Rails Crash Course: n n Ruby,

Software to Install Locally o As described in Rails Crash Course: n n Ruby, Rails, Git, Heroku Updated Windows instructions: http: //www. cs. sjsu. edu/~mak/CMPE 131/RCC-Windows-install o Download and install either of the following: n SQLite Studio o n SQLite Manager (Firefox add-on) o o http: //sqlitestudio. pl/? act=download https: //addons. mozilla. org/en-US/firefox/addon/sqlite-manager/ Also download and install: n Gantt. Project: o http: //www. ganttproject. biz Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak There may be other software packages announced during the semester. 36

Reminders: By Wednesday, February 1 o Form teams. o Email me your team information.

Reminders: By Wednesday, February 1 o Form teams. o Email me your team information. n n o team name team members and email addresses 1 -paragraph description of your team’s web application. Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 37

High-Level Architecture of a Web Application Client-server architecture Computer Engineering Dept. Spring 2017: January

High-Level Architecture of a Web Application Client-server architecture Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak Murach’s Java Servlets/JSP, 2 nd ed. © 2008, Mike Murach & Associates, Inc. 38

Static Web Pages o The contents of the chosen HTML page is static. n

Static Web Pages o The contents of the chosen HTML page is static. n “Brochure ware” Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak Murach’s Java Servlets/JSP, 2 nd ed. © 2008, Mike Murach & Associates, Inc. 39

Dynamic Web Pages o The web application dynamically generates the HTML for a web

Dynamic Web Pages o The web application dynamically generates the HTML for a web page that contains elements based on the request parameters. o The browser doesn’t care whether the HTML was static or dynamically generated. Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak Murach’s Java Servlets/JSP, 2 nd ed. © 2008, Mike Murach & Associates, Inc. 40

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

Architecture of a Rails Application http: //www. tracecode. com. au/blog/more-ruby-resources-for-beginners/ Computer Engineering Dept. Spring 2017: January 26 CMPE/SE 131: Software Engineering © R. Mak 41

Architecture of a Rails Application, cont’d Computer Engineering Dept. Spring 2017: January 26 http:

Architecture of a Rails Application, cont’d Computer Engineering Dept. Spring 2017: January 26 http: //binaryhash. com/ruby-on-rails CMPE/SE 131: Software Engineering © R. Mak 42