40
05 September 2006 Kaiser: COMS W4156 Fall 2 006 1 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser [email protected] http://york.cs.columbia.edu/clas ses/cs4156/

05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser [email protected]

Embed Size (px)

Citation preview

Page 1: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 1

COMS W4156: Advanced Software Engineering

Prof. Gail Kaiser

[email protected]

http://york.cs.columbia.edu/classes/cs4156/

Page 2: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 2

What is Software Engineering?

• Treating computers (including hardware, data structures, algorithms, computations, programming languages, compilers and interpreters, operating systems, databases, networks, graphics, user interface paradigms and devices, etc.) as problem-solving tools – To design and implement solutions to problems – To solve any problem, computers must run some appropriate

software that exploits and integrates the resources above

• Stakeholders working together as a team – including customers, users, administrators, technical writers and product managers as well as designers, programmers and testers

Page 3: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 3

Why Study Software Engineering?

• Writing a program is easy• Developing a software product is hard• Software Engineering aims at supporting the

development of high-quality software products– High-quality software products are robust, efficient

and effective– High-quality software products are easier to

understand, modify, and compose with other high-quality software products

• To attain high-quality software, software engineers are skilled professionals who follow defined processes and “best practices”

Page 4: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 4

What do Software Engineers Do?

• Newly hired software engineers typically assigned to maintain (or test) someone else’s code

• Maintenance: Everything after initial deployment– When was the last time you used a commercial or open source

program labeled “Version 1.0”?– 50-90+% of total lifecycle costs

• Categories of maintenance– Corrective - reactive modification to correct discovered problems– Adaptive - modification to keep it usable in a changed or

changing environment– Perfective - improve performance or maintainability– Preventive - modification to detect and correct latent faults

• However, 4156 will focus primarily on development, for practical reasons

Page 5: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 5

Who am I?

• Gail Kaiser• [email protected] • Professor at Columbia for >20 years (!)• BS from MIT, MS and PhD from CMU• Worked summers and/or consulted for startups, defense

contractors, industry research labs, Software Engineering Institute, Educational Testing Service, Center for Computational Learning Systems

• Research in self-managing systems ("autonomic computing"), software testing, publish/subscribe event systems, computer and network security, applied AI, Web technologies, collaborative work, information management, distributed systems, and software development environments and tools

Page 6: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 6

Who is the TA?

• Mr. Anurag Chakravarti

[email protected]

• 2nd year MS

• Two years professional experience in SIP-based networking systems

Page 7: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 7

Who are you?

• Seniors and graduate students in Computer Science, Computer Engineering, Biomedical Informatics, maybe others

• Sincerely interested in learning to apply Software Engineering methodologies and technologies – not just programming skills - to building and maintaining useful and usable software products

Page 8: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 8

Textbooks

• Clemens Szyperski, Component Software: Beyond Object Oriented Programming, 2nd edition, Addison-Wesley, ISBN 0201745720

• Ron Patton, Software Testing, 2nd edition, Sams Publishing, ISBN 0672327988

• Ordered for this class through the Columbia University Bookstore

Page 9: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 9

Assignments

• Most course work revolves around a team project • Students work primarily in pairs (2 people)• Grouped into 2-pair teams (4 people)• Each team will build a very small software system• 2 rapid iterations of project - each 3-4 weeks long• Major system functionality should be (more or less)

operational by the end of the 1st iteration• 2nd iteration will focus on quality assurance issues

Page 10: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 10

Pairs and Teams

• Pairs ideally self-chosen – find a partner• Meet someone in class or advertise on the

4156 discussion forum on CourseWorks (http://courseworks.columbia.edu)

• 2 pairs may request each other for a team• Unattached individuals and pairs will be

assigned by the teaching staff• Each team will submit a proposal for the

very small system they want to build

Page 11: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 11

Computer Accounts

You may use any account you like, provided you can

1. Access the class website and CourseWorks

2. Submit written assignments in plain text, MS Word or Adobe PDF

3. AND last but not least…

Page 12: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 12

Do the Team Project AS A TEAM

1. Develop and test your project code together with your programming pair partner

2. Integrate together with your team’s other pair

3. Demonstrate your project to the teaching staff

PLEASE use same programming language, operating system platform, programming environments and tools !!!

Page 13: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 13

Exams

• Midterm and Final "Individual Assessments" • Take-home assignments that must be completed

by each student working individually• Demonstrate your understanding of software

engineering principles and how they apply to your team project

• Evaluate your own, your partner’s and your team’s work on the project thus far

• No other exams

Page 14: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 14

Final Grade Breakdown

• 50% Team Project– 2 iterations at 25% each

• 35% Individual Assessments – 15% midterm– 20% final

• 15% Individual Development Assignments – A few small homeworks to develop and demonstrate

proficiency on component-based technologies– To acquire skills to be used in the team project

Page 15: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 15

Frequently Asked Questions

• Do I have to join a pair/team?

YES!• Can I do the project alone?

NO!

Page 16: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 16

Course Outline

1. Component-based software development– Component models and frameworks

2. Quality assurance– Code review, unit and integration testing

3. Other software engineering topics– Pair programming, requirements, software

process, refactoring, UML, ???

Page 17: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 17

Pair Programming Overview

• Two programmers work side-by-side at one computer

• Continuously collaborate on same design, algorithm, code, test, etc.

• Continuous informal review

Page 18: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 18

What about productivity?

• Demonstrated to improve productivity and quality of software products– Two programmers work together nearly twice as fast and

think of more solutions to a problem as two working alone– While attaining higher defect prevention and defect

removal

• One well-known empirical study (by Laurie Williams)– 15% lower overall productivity– But 50% fewer bugs (85% tests passed vs. 70%)– http://www.cs.utah.edu/~lwilliam/Papers/ieeeSoftw

are.PDF

Page 19: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 19

All I Really Need to Know I Learned in Kindergarten : Uncommon Thoughts on Common Things

Robert Fulghum, 1988

Page 20: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 20

All I Really Need to Know about Pair Programming I Learned in

Kindergarten. Laurie Williams and Robert R. Kessler.

Communications of the ACM, 43(5):108-114, May 2000.

http://collaboration.csc.ncsu.edu/laurie/Papers/Kindergarten.PDF

Page 21: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 21

Share everything

• Two programmers are assigned to jointly produce one artifact

• One person typing or writing, the other continuously reviewing

• Both equal participants

• Both partners own everything

Page 22: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 22

Play fair

• One person “drives” while the other continuously reviews

• Important to take turns “driving”, even if one programmer much more experienced than other

• Observer is active and engaged, not passive

• Continuous analysis, design and code reviews

Page 23: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 23

Don’t hit your partner

• But make sure your partner stays focused and on-task

• Less time wasted (reading email, IMing, surfing web, etc.) than when working alone, since partner awaiting continuous contribution and input

• Each partner expects the other to follow prescribed development practices

Page 24: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 24

Put things back where they belong• Put negative thoughts in the trash can• Very difficult to work with someone with great

insecurity or anxiety about their programming skills• Should view pair programming as an opportunity

to improve skills by watching and obtaining feedback

• Also difficult to work with big egos• No one is infallible and above the input of another

Page 25: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 25

Clean up your mess

• Many obvious but unnoticed defects become noticed by another person watching over your shoulder

• Defects removed without the animosity that might develop during a formal inspection meeting

Page 26: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 26

Don’t take things too seriously

• Ego-less programming

• Don’t be defensive with receiving criticism

• But don’t always just agree with your partner

• Initial adjustment period to pair programming in general and partner in particular

Page 27: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 27

Say you’re sorry when you hurt somebody while moving furniture

• Appropriate workspace layout critical to success

• Slide the keyboard, don’t move the chairs

• Effective communication, within pairs and among pairs, is paramount

• Programmers need to see each other, ask each other questions, and make decisions on things such as integration issues

Page 28: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 28

Wash your hands of skepticism before you start

• Partner buy-in critical to success

• A jelled team is a group of people so strongly knit that the whole is greater than the sum of the parts

Page 29: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 29

Flush

• When pair programmers work on something independently, need to throw away and then rewrite jointly

• Or at least review jointly – but more likely then to still have defects

Page 30: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 30

Warm cookies and cold milk are good for you

• Pair programming can be very intense and mentally exhausting

• Periodically take a break

Page 31: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 31

Live a balanced life – learn some and think some and draw and paint and sign and dance and play and

work every day some

• Communicate with others on a regular basis• Most programmers would probably say they

preferred to work alone in a place where they wouldn’t be disturbed by other people

• But informal discussions allow for effective idea exchange and efficient transfer of information

Page 32: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 32

Take a break from working together every afternoon

• Might do experimental prototyping, tough deep concentration problems, and logical thinking alone

• Simple, well-defined, rote coding more efficiently done alone and then reviewed with a partner

Page 33: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 33

When you go out into the world, watch out for traffic, hold hands and

stick together

• No competition between the paired programmers

• Both work for a singular purpose• Do not place blame for defects or

problems on either partner• Pair should trust each other’s judgment

and loyalty to the team

Page 34: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 34

Be aware of the power of two brains

• When two people working together, each has own set of knowledge and skills

• Large common subset allows to interact effectively

• Pool resources to accomplish tasks

Page 35: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 35

Page 36: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 36

What is NOT pair programming?

• Splitting up the work

• Taking turns doing the work

• One person doing all the work

• Being located in different places

• Sitting at different computers

• (Exception – it’s ok to use remote shared desktop technology, such as VNC, if absolutely necessary)

Page 37: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 37

In-Class Workshop

• Form a pair right now (e.g., the person sitting next to you - this does not have to be the same person you will pair with for the team project!)

• Spend no more than 10 minutes developing a proposed solution to the assigned problem (to be announced in class)

• Spend no more than 5 minutes writing up your approach in the provided blue book (partners take turns writing)

• Submit before leaving class

Page 38: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 38

Pair Formation assignment due Thursday September 14th

• Find a partner• Make sure your schedules are compatible!• Make sure you both use the same

language and platform!• Both submit the assignment (see website) • May optionally indicate the other pair with

whom you’d like to work in a team (otherwise will be assigned)

• Teams will be announced September 26th

Page 39: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 39

Upcoming

• Individual development assignment #1 due September 19th

• Individual development assignment #2 due September 26th

• Teams announced September 26th• Team project concept due October 3rd

• Individual development assignment #3 due October 10th

• Revised project concept due October 17th

Page 40: 05 September 2006Kaiser: COMS W4156 Fall 20061 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu

05 September 2006 Kaiser: COMS W4156 Fall 2006 40

COMS W4156: Advanced Software Engineering

Prof. Gail Kaiser

[email protected]

http://york.cs.columbia.edu/classes/cs4156/