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

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

Embed Size (px)

Citation preview

Page 1: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(1)

ICS 314:Software Engineering

Philip Johnson

Collaborative Software Development Laboratory

Information and Computer Sciences

University of Hawaii

Honolulu HI 96822

Page 2: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(2)

Contact Information Email:• [email protected]

Website:• http://ics314f13.wordpress.com/

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

Office Hours:•MW 12:30 – 1:30, or whenever my door is open

Page 3: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(3)

My SE 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:•Automated software measurement and analysis (Java)•Software Engineering for High Performance Computing Systems•Smart Grid/Smart Consumer applications (Java, Javascript)

2010's:•Energy, sustainability, gamification research (kukuicup.org)

Page 4: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(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, LinkedIn.•Support your entry into “real world”.•Create a positive “image” for potential employers.

Page 5: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(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: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(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: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(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: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(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: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(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: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(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: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(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: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(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: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(13)

Texts Thinking in Java, 4th edition•Good intro to the Java language.•Optional if you are skilled in Java• $25 ebook

Elements of Java Style• Best guide to best practices in code

formatting and documentation.• $10 ebook

Play for Java, early access edition•Only book on Play Framework• "early access" -> still some bugs• $40 ebook

Page 14: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(14)

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 15: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(15)

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, $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 16: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(16)

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 17: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(17)

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 18: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(18)

Quicky Quizzes

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

Each Monday, I will have at least one short, in-class, CLOSED BOOK/NOTES quiz on the current module.

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 19: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(19)

Engineering Log Software Engineering is a writing intensive discipline.

To help you acquire proficiency, you will create and maintain an engineering log in WordPress.

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 20: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(20)

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 21: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(21)

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 22: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(22)

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

Here are some examples:

Page 23: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(23)

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 SE, coding SHOULD be continuous at short intervals from day to day. It's hard. I know.

Page 24: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(24)

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 25: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(25)

Read 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 26: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(26)

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 27: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(27)

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 SE so much easier.

Page 28: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(28)

Best case scenario•Take advantage of the valuable resource that is Dr. Johnson.  Prior to enrolling in ICS SE with Dr. Johnson, I was very confused about what I was doing in ICS and sometimes lacked motivation. After one month in ICS SE, 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 29: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(29)

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 30: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(30)

Course Process Use the Calendar page to find out when modules and assignments are due.

You are responsible for having studied all of the resources associated with a module as of the day it is listed in the calendar. If a module is listed on Monday, then there could be a QQ on that module on that Monday.

Page 31: (1) ICS 314: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu

(31)

What to do now Look through the website.

Start work on the initial modules.

Have fun!