37
1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu HI 96822

(1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

Embed Size (px)

DESCRIPTION

(3) My programming background 1970’s: Business applications programming (COBOL) 1980’s: Real-time data communication software (Assembler) EEC-IV compiler validation for Ford (Pascal-like) AI blackboard technology (Lisp) Type inferencing system (Lisp) 1990’s: Collaborative software infrastructure (Lisp, C++) Software metrics technology (Java) 2000’s: Sensor-based web service for automated software measurement and analysis (Java) Software Engineering for High Performance Computing Systems Smart Grid/Smart Consumer applications (Java, Javascript)

Citation preview

Page 1: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(1)

ICS 314 and 613:Software Engineering

Philip JohnsonCollaborative Software Development Laboratory

Information and Computer SciencesUniversity of HawaiiHonolulu HI 96822

Page 2: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(2)

Contact Information Email:• [email protected]

Website:• https://sites.google.com/site/ics314fall2011/

Office/Phone:•POST 307A (CSDL Office)• 956-3489

Office Hours:• TTh 3-4pm, or whenever my door is open

Page 3: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(3)

My programming background 1970’s: •Business applications programming (COBOL)

1980’s:•Real-time data communication software (Assembler)•EEC-IV compiler validation for Ford (Pascal-like)•AI blackboard technology (Lisp)• Type inferencing system (Lisp)

1990’s:•Collaborative software infrastructure (Lisp, C++)•Software metrics technology (Java)

2000’s:•Sensor-based web service for automated software measurement

and analysis (Java)•Software Engineering for High Performance Computing Systems•Smart Grid/Smart Consumer applications (Java, Javascript)

Page 4: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(4)

Goals of the class Learn how to build high quality, large scale software systems. •By “growing” a high quality, small scale system into a

large one.•By pursuing the open source “prime directives”•By using tools whenever possible to assess various

“quality” attributes.

Develop a “professional persona”•Portfolio, Blog, TechHui, etc.•Support your entry into “real world”.•Create a positive “image” for potential employers.

Page 5: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(5)

What is “Quality”? Attributes of a high quality software system:•Easy for users to:

-adopt and use to achieve their goals•Easy for administrators to:

-install, upgrade, debug, obtain help•Easy for developers to:

-read, enhance, build, test, debug, optimize

This is (relatively) easy... for a small scale system.

This class is about maintaining “easiness” as the:• system becomes large (i.e. 100,000 -> 1M+ LOC)• development group becomes large (5 -> 10 -> 50+ devs)

Page 6: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(6)

Three Prime Directives of Open Source Software

The system accomplishes at least one useful task.

A new user can successfully install and use the system.

A new developer can successfully understand and enhance the system.

Page 7: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(7)

Prime Directive #1 The system successfully accomplishes at least one useful task.•No complex system is ever “complete”.• Instead:

-QUICKLY implement a core set of functions -Extend and improve system forever based upon user feedback, changing environment, etc.

•PD#1 is facilitated by standards for:-User interface-User documentation-Interaction with other systems

Achieving and maintaining PD#1 requires regular feedback from external end-users.

Page 8: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(8)

Prime Directive #2 A new user can successfully install and use the system.•The documentation is sufficient to enable non-developers of the software to download, install, and benefit from the “useful task” implemented by the software.

•PD#2 is facilitated by standards for:-Packaging the software into a distribution.-Installation procedures

Achieving and maintaining PD#2 requires regular feedback from external installers.

Page 9: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(9)

Prime Directive #3 A new developer can successfully understand and enhance the system.•Successful open source software “takes on a life of its own” and does not require continuing participation from the original developer (Linux, Emacs, Java, SendMail, etc.)

•PD#3 is facilitated by standards for:-Coding (coding standards)-Design (design patterns)-Packaging (Make, Ant)-Unit tests (coverage, Unit tests)-Documentation (JavaDoc, etc.)

Achieving and maintaining PD#3 requires regular feedback from external developers.

Page 10: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(10)

Standards and feedback A consistent theme across all three PDs is the importance of standards and feedback:

Standards:•Allow higher quality communication to occur by removing low-level obstacles including:-Idiosyncratic coding, package structure, user interface, etc.

-A reasonable standard observed by all participants is better than individual, differing, more highly optimized approaches.

Feedback:•As the developer, you cannot put yourselves in the shoes of outside users and developers. To achieve and maintain the PDs, you must seek outside feedback early and often.

Page 11: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(11)

Standards We will employ many standards in this class in order to improve the quality of communication and facilitate achieving the three PDs:•Coding standards•Package structuring standards•Engineering log standards•Review process standards•Tool standards

Page 12: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(12)

Feedback Feedback in this class comes from the following sources:•Your group members (for group projects)•Other class members (via code/design review)•Me•ICS Software Engineering mailing list•Tools (Checkstyle, PMD, FindBugs, etc.)•Outside community (mailing lists, forums, potential users, etc.)

Page 13: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(13)

Course Architecture

Basic Java Capabilities

IDE

Cod

ing

Stan

dard

s

Softw

are

Rev

iew

Aut

omat

ed B

uild

Test

ing

Con

fig. M

an.

Agile Development Practices

Software MeasurementIn

term

edia

te J

ava

Aut

omat

ed Q

A

Case Study: WebApp Development

ConcurrencyPerformance Analysis

Page 14: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(14)

Required Texts Java in a Nutshell, 5th Edition•Best concise reference to the Java Language.•$30 at Amazon

Elements of Java Style•Best concise guide to best practices in code formatting and documentation.•$14 at Amazon

Page 15: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(15)

Required Texts (cont) Effective Java, 2nd Edition•The best single book on

intermediate-to-advanced Java practices.•314: Optional, 613: Required•$45 at Amazon

Wicket in Action•Best introductory reference on

Wicket.•$33 at Amazon

Page 16: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(16)

Getting the books Option 1: Buy all 4 books:•$122 plus shipping (Amazon).

Option 2: Rent all but EJS from Safari Online using “10 Slot Bookshelf”:•$23/month * 4 months = $92•Buy Elements of Java Style @$14.•Total cost: $106

Safari Online will give you access to many other books as well.

Page 17: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(17)

Java vs. Ruby, Python, etc. Common question: why teach Java when the class project is a simple client-server web app (SCSWA)?

Non-Answer: Because Java is best for SCSWAs.•RubyOnRails is almost unequivocably better than Java for

simple web apps.

Real answer:•On average, you all know Java best:

-I don’t want the semester to revolve around syntax.• Java has the best suite of open source tools:

-Ant, JUnit, PMD, FindBugs, Checkstyle, etc. • Java allows us to explore interesting SE/language issues:

-Generic collections for advanced data structures-Concurrency issues and approaches

We look at these issues in the context of SCSWA.

Page 18: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(18)

Course prerequisites Java programming background•At least one year/one thousand lines of code.•You must have taken and passed ICS 211 (or equivalent) PRIOR to

this course.

Development environment:•Unix, Macintosh OS/X, Windows XP-Pro or 7 are OK.•Windows 95/98/ME/XPHome/Vista are not OK!!!• Fast network connection• ICS Lab and TA machines not viable for this class. • ICS Department has site license for XP-Pro/7; get it!

Lots and lots of time:•Software development takes a lot of hours.•What you put in determines what you get out. •Not everyone has the time, energy, or interest to become skilled at

software engineering.

Page 19: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(19)

Personal computational resources What you need:•A laptop with: >=2Ghz processor, >=1 GB RAM, >= 10GB free space, and wireless access.•Recommended: 15” screen or better.•Example: Dell Inspiron, $500

This class involves a large amount of in-class programming; if you do not have a “developer level” laptop, you can not take advantage of those experiences.

“Netbooks” are not “developer level” laptops.•Underpowered (tools take too long to run)•Screen size too small

Page 20: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(20)

Grading Tentative grading scheme:•30%: Quizzes•20%: Final•50%: Programming assignments and homework

The weights and assignments may change.

Guarantees:•90-100% guarantees an A•80-89% guarantees a B•70-79% guarantees a C

Page 21: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(21)

314 vs. 613 The structure of 314 and 613 is the same.

In 613, •all assignments should be completed with a higher level of quality•there will be extra components to assignments for 613

Page 22: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(22)

Lectures and Labs Most lectures will be made available online as screencasts.

Class time will be dedicated to “labs” in which you do software development, either alone or in small groups. Attendence is mandatory!

You are responsible for listening to the lectures before the class period associated with the topic.

Page 23: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(23)

Quicky Quizzes Each Friday, I will release the modules to be covered during the following week.

The following week, I will have at least one short, in-class, CLOSED BOOK/NOTES quiz on the week’s material.

Goal of quizzes:•Provide incentive for you to keep up with readings. •Ensure that you have assimilated the material to some extent. •Provide me with feedback on how the class is doing.

Page 24: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(24)

Engineering Log ICS 314 is Writing Intensive (and ICS 613 is too, informally)

To fulfill the WI requirements, you will create and maintain an Online Engineering Log (Blog) this semester.

This will provide practice in writing technical prose for public use, and also enable you to create an archival record of your growth and experiences in software engineering.

Page 25: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(25)

Professional Persona A goal of this class is to help you develop your “professional persona” via:•Your online engineering log.•Your professional portfolio.•The open source code you authored.•Your participation in professional social networking sites (TechHui, LinkedIn)

Your professional persona:•is distinct from your “personal” persona (FaceBook, MySpace, etc.)•will help/hurt your job opportunities•is a career-long project.

Page 26: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(26)

Collaboration vs. Cheating Collaboration:• Talking with classmates about the most appropriate design for a

system.•Helping a classmate debug an error by reading their code and

suggesting diagnosis experiments.•Reusing open source code from the Net with attribution

Cheating:• Taking a copy of someone else’s code (either classmates or from

the net) and submitting it as your own (perhaps after minor rewriting to disguise the similarity.)

Cheating destroys the learning environment. If I catch you, you get an automatic F for the course.

If you are not sure if an activity constitutes collaboration or cheating, ASK ME!

Page 27: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(27)

Lessons Learned By the end of the semester, many students show insights!

Here are some examples:

Page 28: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(28)

Start early•If you start early then you should have more time to develop your project. You can allocate a portion of this time to explore different ways of doing things.

•Although I hate to be obvious, waiting till the last minute to code is not a very good idea. Considering the level of coding required for ICS 413/613, coding SHOULD be continuous at short intervals from day to day. It's hard. I know.

Page 29: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(29)

Unit testing actually helps•Unit testing helps a lot from the middle to the end of the development cycle. Initially, tests take extra time to create but it does pay off…

•JUnit is your friend. JUnit is the main tool to develop a set of tests which will ensure you have software that works the way you expect it to. Unit tests are what real Software Engineers who are serious about making high quality software use.

Page 30: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(30)

Read a lot of code•I've been able to learn much more about java, and programming concepts from reading code, than I have from writing java. 

•Code examples are your best friends. Nothing will explain to you how to do something as well as a good example can. Learn from the experience of others by reading what they've done.

Page 31: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(31)

Follow the standards

•You will not be the only person examining your code. For this reason, it's a good idea to practice programming following the Java programming style conventions. This improves readability and prevents you from having to go back and change everything later so someone else can understand what you have written.

Page 32: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(32)

Suspend your disbelief•Even though the things learned in class seem like a bunch of extra stuff that will just take up your time and not accomplish anything useful, once you start using all of the things you learn in class it makes it easy to create high quality software. Basically do it now, you'll be happy you did later.

•Take advantage of your resident expert Dr. Johnson. Try not to argue with him because believe it or not, he does know what the #@&%! he's talking about. It will make your life in ICS 413 so much easier.

Page 33: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(33)

Best case scenario•Take advantage of the valuable resource that is Dr. Johnson.  Prior to enrolling in ICS 413 with Dr. Johnson, I was very confused about what I was doing in ICS and sometimes lacked motivation. After one month in ICS 413, I was more confident and possessed a greater drive to learn than I ever had previously.  He may push you and sometimes require a lot out of you, but believe you me, it is well worth it.

Page 34: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(34)

Worst Case Scenario•Taking class from this professor is not worth the time and money as you could just might as well research software engineering on google and read the book and study on your own and come off learning more than he ever teaches - if he even actually teaches is questionable.

Page 35: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(35)

Course Process Use the Schedule page and see which modules are scheduled for a given week and which assignments are due.

Modules are generally released on Friday of the week prior to their appearance on the schedule.

You are responsible for the contents of the module on the day it is listed in the schedule.

Page 36: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(36)

Schedule, Modules, Assignments

Page 37: (1) ICS 314 and 613: Software Engineering Philip Johnson Collaborative Software Development Laboratory…

(37)

What to do next Look through the website.

Start work on the Introduction module.

Come to class on Tuesday!