View
213
Download
0
Tags:
Embed Size (px)
Citation preview
E-commerce Project
Erik Zeitler
23-04-18 Erik Zeitler 2
Lab 2
Will be anounced and scheduled later
We will deploy Java Server Pages on a Tomcat server.
23-04-18 Erik Zeitler 3
Form groups
I want the following information from each group:• Names, ”personal numbers”, e-mail
addresses• Contact person (”project leader”)
Deadline for group formation: Friday Feb 1st
23-04-18 Erik Zeitler 4
Project plan
Project plan deadline: Feb 8th
Project plan:• Description of the business case
”How will you make money?”
• A system architecture ”How will it work?” Must include
• ER diagram• Use cases• Description of user interface
• An implementation plan
23-04-18 Erik Zeitler 5
Office hours
I will be available for questions during the following times,
<see posting on web page>
23-04-18 Erik Zeitler 6
Mid term report
Request a time slot from me• E-mail me• During week 10 (Mar 3rd – Mar 7th)• Any time between 10.15 and 17.15
We will talk about the progress of your project
23-04-18 Erik Zeitler 7
Final presentation
Presentations• Mon, Mar 31st (all day)• Presentation of your project• Demonstration of a working solution
23-04-18 Erik Zeitler 8
Final report
A written report, including• The business case• A description of the system
Deadline• To be announced. • Probably Tue, Apr 1st
We will ask questions
23-04-18 Erik Zeitler 9
Dream up a business case
Think of a service you want to see Figure out how to do it in a way that
doesn’t suck Do it
23-04-18 Erik Zeitler 10
How to do it?
Think about the use cases• How will the service be used
Cut the work into pieces• User Interface, application code, database
Assign pieces within the project group Use Test Driven Development
• Test each piece (unit tests)• Test all pieces together
(integration/regression tests)
23-04-18 Erik Zeitler 11
Rapid prototyping
Make a simple prototype ASAP• See what new ideas it gives you• ”Often, users don’t know what they want
until they see it”
– Steve Jobs
Show the prototype to other project groups• Give feedback to each other
23-04-18 Erik Zeitler 12
E-commerce and security?
How can you make sure that• The customers won’t fool you• The customers won’t fool each other• Your site won’t be compromised
(Test Driven) Software Development
Erik Zeitler
23-04-18 Erik Zeitler 14
Three-tier architecture
User Interface• What should the user see?• Make drawings
Database• What information will you keep?• Do data modelling, using ER diagrams
Business logic• How will you present the data to the users?• For any non-trivial function, do test driven
development
23-04-18 Erik Zeitler 15
Data modelling
Keep persistent data in a database• Customer information• Banking information• Inventory
What do you carry, and how much do you have right now?
• Past activity What has the customer bought? What has the customer looked at?
What information do you want to store? Why? Make an Entity Relationship diagram
• Translate the ER diagram into SQL tables
23-04-18 Erik Zeitler 16
Example of an ER diagram
23-04-18 Erik Zeitler 17
Why ER diagrams?
”Keep talking about the algorithms, and everyone will stay totally mystified”
”Show the ER diagram, and everything else will be obvious”
23-04-18 Erik Zeitler 18
Software development is all about Getting Things Done
Priorities in software development:• Make it work• Make it beautiful• Make it fast
23-04-18 Erik Zeitler 19
How?
1. How to make it work?• First write tests,
then write code.This is called Test Driven Development.
2. How to make it beautiful?• Re-factor
3. How to make it fast?• Don’t worry about performance until
performance is a problem.
23-04-18 Erik Zeitler 20
Why?
Because• Debugging sucks• Testing rocks
Because does it A test is a specification
• The capabilities of a program is defined by its tests
• If the tests passwe know that the program works – for the test cases.
A test is a piece of documentation
23-04-18 Erik Zeitler 21
The rules of TDD are simple
1. You can't write production code unless there is a broken test.
• First write a test, then write the code
2. When there is a broken test, you change your code to make it pass.
3. When your code is working, you refactor to eliminate any code smells…
23-04-18 Erik Zeitler 22
What is code smell?
”Something is fishy about the code” http://en.wikipedia.org/wiki/Code_smell Examples:
• Large method A function that is > 1 page
• Duplicated method A method, function, or procedure that is very
similar to another.
• Contrived Complexity Forced usage of overly complicated design
patterns where simpler design would suffice
23-04-18 Erik Zeitler 23
A good set of tests
1. covers all code2. performs tests of different scales3. tests for all cases, including edge
cases and errors
23-04-18 Erik Zeitler 24
Different sized tests
isolation,speed
confidence in whole system
Large(regression)
Medium(integration)
Small(unit)
23-04-18 Erik Zeitler 25
Where is the bug?
vs.
”Test failed”
”Test failed”
23-04-18 Erik Zeitler 26
Does the entire system work?
vs.
+
+
+ +
23-04-18 Erik Zeitler 27
Tests for edge cases and errors
No data, null pointers, garbage data
Very important!• Make sure that no component crashes
• Then, the entire system is more likely to stay alive.
Write tests for invalid input data, like• empty strings• null pointers• broken input data
Generate exceptions in the production code,catch these exceptions in the test code
23-04-18 Erik Zeitler 28
Automated tests
Netbeans has some infrastructure for testing• You did it in Lab 1, ”Java SE Intro”:Right-click the LibClass.java node in the
Projects window and choose Tools >Create JUnit Tests (Ctrl-Shift-U).