Transcript
Page 1: (1) ICS 413/613: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii

(1)

ICS 413/613:Software Engineering

Philip JohnsonCollaborative Software Development

Laboratory Information and Computer Sciences

University of HawaiiHonolulu HI 96822

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

(2)

Contact Information Email:

[email protected][email protected]

Website:•http://groups.google.com/group/ics-software-engineering-fall-2009/

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

Office Hours:•MW 3-4pm

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

(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

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

(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”.•Provide an “image” to potential employers.

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

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

(6)

Three Prime Directives of OSS The system accomplishes a useful task.

An external user can successfully install and use the system.

An external developer can successfully understand and enhance the system.

Page 7: (1) ICS 413/613: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii

(7)

Prime Directive #1 The system successfully accomplishes a 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 413/613: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii

(8)

Prime Directive #2 An external 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 413/613: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii

(9)

Prime Directive #3 An external 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 413/613: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii

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

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

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

(13)

Course Architecture

Basic Java Capabilities

IDE

Cod

ing

S

tan

dard

sS

oft

ware

Revie

w

Au

tom

ate

d B

uild

Testi

ng

Con

fig

. M

an

.

Agile Development Practices

Software MeasurementIn

term

ed

iate

Ja

va

Au

tom

ate

d Q

A

Case Study: WebApp Development

ConcurrencyPerformance

Analysis

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

(14)

Architecture -> Schedule

QuickTime™ and a decompressor

are needed to see this picture.

Page 15: (1) ICS 413/613: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii

(15)

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

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

Page 16: (1) ICS 413/613: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii

(16)

Required Texts (cont) Effective Java, 2nd Edition•The best single book on intermediate-to-advanced Java practices.

Wicket in Action•Best introductory reference on Wicket.

Page 17: (1) ICS 413/613: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii

(17)

Almost all free online! University of Hawaii students can access Safari Online through their UH login and get access to:•Effective Java•Java in a Nutshell•Ant in Action•Java Cookbook

And many more!

Only one book not available: •Elements of Java Style

Page 18: (1) ICS 413/613: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii

(18)

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

(19)

Course prerequisites Java programming background•At least one year/one thousand lines of code

Development environment:•Unix, Macintosh OS/X, Windows XP-Pro are OK.•Windows 95/98/ME/XPHome are not OK!!!•Fast network connection•ICS Lab and TA machines not viable for this class.

•ICS Department has site license for XP-Pro; 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 20: (1) ICS 413/613: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii

(20)

Personal computational resources

Best solution:•A laptop with: >=2Ghz processor, >=1 GB RAM, >= 10GB free space, and wireless access.

•Example: Dell Inspiron 1501, $500 OK:•Home computer with similar configuration & DSL/cable.

•Probably requires 20% more time per week than Best solution to gain equivalent level of skill.

Page 21: (1) ICS 413/613: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii

(21)

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

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

(23)

Quizzes Most Mondays you will be assigned readings for the coming week along with tasks to support the readings.

The following Monday, I will have a short, in-class, CLOSED BOOK/NOTES quiz on the previous 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 413/613: Software Engineering Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii

(24)

Engineering Log ICS 413 is Writing Intensive

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

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

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

(27)

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

Here are some examples:

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

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

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

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

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

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

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

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

(35)

What’s next? Go to the 413 schedule page and read about your first assignments.


Recommended