1 / 42

COMS W4156: Advanced Software Engineering

COMS W4156: Advanced Software Engineering. Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu http://bank.cs.columbia.edu/classes/cs4156/. Objectives of this course. To introduce advanced concepts in software engineering and their embodiment in selected methodologies and technologies

gerodi
Download Presentation

COMS W4156: Advanced Software Engineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu http://bank.cs.columbia.edu/classes/cs4156/ COMS W4156

  2. Objectives of this course • To introduce advanced concepts in software engineering and their embodiment in selected methodologies and technologies • To apply those concepts within a multi-iteration team software development project COMS W4156

  3. Topics covered in this lecture • Overview of software engineering • Overview of the course • Pair design exercise • If time permits: Introduction to pair programming COMS W4156

  4. Software Engineering as a Discipline COMS W4156

  5. What is software? • Computer programs and associated documentation such as requirements, design models, test plans and user manuals. • Software products may be developed for a particular customer or may be developed for a general market. • New software can be created by developing new programs, customizing generic software systems and/or combining existing software. COMS W4156

  6. What is software engineering? • Software engineering is an engineering discipline that is concerned with all aspects of software production. • NOT just programming • NOT just programming [part of] a large software system • NOT just programming as a member of a large team • Software engineering is a systematic and organized approach to software development using appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available. COMS W4156

  7. What do software engineers do? • Anyone can call themselves a software engineer, but not all programmers are software engineers (and not all software engineers are programmers) • Newly hired software engineers typically assigned to test or maintain someone else’s pre-existing 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 COMS W4156

  8. What do software engineers do? • 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 COMS W4156

  9. What is the difference between software engineering and computer science? • Computer science is concerned with theory and fundamentals. • Software engineering is concerned with the practicalities of developing and delivering useful software. COMS W4156

  10. Why study software engineering? • Writing a program is easy • Program ~= code (possibly with comments) • Developing a software system is harder • System ~= program plus technical documentation sufficient such that someone other than original developers can maintain and extend • Developing a software product is very hard • Product ~= system plus customers, fulfilling the business needs of those customers, with customer-oriented documentation and support COMS W4156

  11. Why study software engineering? • To attain high-quality software products, software engineers must be skilled professionals who follow defined processes and “best practices” • Some schools offer entire degree programs in software engineering (e.g., CMU, Drexel) • At present there is no licensing of software engineers in the US, only specialty “certifications” offered by vendors (e.g., IBM, Microsoft, Sun) and by vendor-neutral organizations (e.g., IEEE, Linux Professional Institute) • Most other kinds of “engineer” must be licensed by the state government, but licensing of software engineers is very controversial COMS W4156

  12. THIS Software Engineering course COMS W4156

  13. Course content • Software process • Pair programming, requirements, modeling, architecture, design patterns, refactoring, … • Component-based software development • Component model frameworks (COM+, .NET, EJB, Web Services) • Quality assurance • Code inspection, unit and integration testing, stress testing, test planning COMS W4156

  14. Why is this course called Advanced Software Engineering? • Until ~2002, undergraduate CS majors were required to take COMS W3156 Introduction to Software Engineering, oriented towards sophomores and juniors, whereas 4156 was an equivalent elective oriented towards seniors and graduate students • Both courses presented a traditional view of the software lifecycle focused on detailed documentation, independent of any particular implementation technology, and stepped through the full lifecycle (through delivery to “customers”) • 3156 replaced by COMS W3157 Advanced Programming • 4156 now assumes introductory level software engineering background (preferably from the real world) • Concentrates on recent trends towards component technology and emphasizes quality assurance COMS W4156

  15. Who am I? • Gail Kaiser • kaiser+4156@cs.columbia.edu (note the +4156) • Professor at Columbia since 1985 • 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 • Research in software testing, collaborative work, computer and network security, parallel and distributed systems, self-managing systems, Web technologies, information management, software development environments and tools COMS W4156

  16. Who are the TAs? • Mr. Nipun Arora, third year graduate student • Mr. Palak Baid, second year graduate student • Mr. Jonathan Bell, senior in SEAS COMS W4156

  17. Who are you? • Graduate and upper level undergraduate students in Computer Science, Computer Engineering, Biomedical Informatics, Electrical Engineering, IEOR, maybe others • Sincerely interested (hopefully) in learning to apply Software Engineering methodologies and technologies – not just programming skills – to developing useful and usable software products • 4156 is required for the CS MS Software Systems track (unless you “import” a prior upper-level software engineering course from another institution) COMS W4156

  18. Textbooks • Required: Ian Sommerville, Software Engineering, 8th edition, Addison-Wesley, ISBN 9780321313799 • Recommended: Ron Patton, Software Testing, 2nd edition, Sams Publishing, ISBN 0672327988 • Ordered for this class through the Columbia University Bookstore COMS W4156

  19. Final Grade Breakdown • 50% Team Project • 2 iterations @ 25% each • 40% Individual Assessments [exams] • 20% midterm • 20% final • 10% Class participation and “pop quizzes” • Assignments must be submitted via CourseWorks COMS W4156

  20. Team Project • Students work primarily in pairs (2 people) • Grouped into 2-pair teams (4 people) • Each team will invent, design, code and test a very small software system using some component model framework • 2 rapid iterations of project - each ~3 weeks long • All major system functionality should be (more or less) operational by the end of the 1st iteration • 2nd iteration will focus on quality assurance issues COMS W4156

  21. Pairs and Teams • Pairs ideally self-chosen – find a partner (if odd enrollment, one triplet permitted but no onesies) • Meet someone in class or advertise on the 4156 discussion forum on CourseWorks • 2 pairs can 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 develop COMS W4156

  22. Do the Team Project AS A TEAM • Develop and test your project code together with your pair partner • Integrate together with your team’s other pair • Co-author project documentation with all team members • Demonstrate your project to the teaching staff • All members of the same team must use the same component model framework (e.g., EJB, .NET) COMS W4156

  23. Project Grading • Team members who do not contribute appropriately should be brought to the attention of the teaching staff as soon as possible.  • Such team members may receive a significantly lower grade for the relevant project assignment(s) than the rest of that team, possibly "zero", may be reassigned to another team, and/or may be asked to withdraw from the course.  • Team members who contribute “above and beyond the call of duty” may receive a higher grade than the rest of the team COMS W4156

  24. Frequently Asked Questions • Do I have to join a pair/team? • YES! • Can I do the project alone? • NO! • I work full time, I have a heavy class schedule, I have a long commute, I don’t like working in groups, I prefer to program in an obscure language that no one else knows, etc. - Can I do the project alone? • NO! COMS W4156

  25. Frequently Asked Questions • Do we have to use a component model framework? • YES! • Can we use a component model framework not covered in class? • Yes, but only if it provides component services for developing N-tier applications COMS W4156

  26. Individual Assessments • Midterm and Final • Take-home examinations that must be completed by each student working individually • Demonstrate your understanding of software engineering principles and technologies, and how they are applied (graded) • Evaluate your own, your partner’s and your team’s work on the project thus far (not graded, but contributes to project grade differentials) COMS W4156

  27. Class Participation • Attendance is required • Short “pop quizzes” will be given during several class periods • Please ask questions of general interest in class COMS W4156

  28. Final Grade Breakdown • 50% Team Project • 2 iterations @ 25% each • 40% Individual Assessments [exams] • 20% midterm • 20% final • 10% Class participation and “pop quizzes” • Assignments must be submitted via CourseWorks COMS W4156

  29. Pair Design Exercise (details announced in class) COMS W4156

  30. Pair Programming COMS W4156

  31. What Is Pair Programming? • Two software engineers work side-by-side at one computer, sliding keyboard and mouse back and forth (or simulated via desktop sharing technologies) • Continuously collaborate on same design, algorithm, code, test, etc. • Continuous informal review COMS W4156

  32. What Is NOT Pair Programming? • Splitting up the work • Taking turns doing the work • One person doing all the work COMS W4156

  33. What About Productivity? • Very controversial – common practice in some software development organizations and unthinkable in others • Demonstrated in some studies to improve productivity and quality of software products under some circumstances • Particularly novice-novice pairs (vs. novice solos) or expert-expert pairs (vs. expert solos) • 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 COMS W4156

  34. Benefits • Increased discipline. Pairing partners are more likely to "do the right thing" and are less likely to take long breaks. • Fewer interruptions. People are more reluctant to interrupt a pair than they are to interrupt someone working alone. • Resilient flow. Pairing leads to a different kind of mental dynamic than programming alone. COMS W4156

  35. Benefits • Better code. Pairing partners are less likely to produce a bad design due to their immersion, and tend to come up with higher quality designs. • Multiple developers contributing to design. If pairs are rotated frequently, several people will be involved in developing a particular feature. This can help create better solutions, particularly when a pair gets stuck on a particularly tricky problem • Collective code ownership. When everyone on a project is pair programming, and pairs rotate frequently, everybody gains a working knowledge of the entire codebase. COMS W4156

  36. Benefits • Mentoring. Everyone, even junior programmers, possess knowledge that others don't. Pair programming is a way of spreading that knowledge. • Improved morale. Pair programming can be more enjoyable for some engineers than programming alone. • Team cohesion. People get to know each other more quickly when pair programming. Pair programming may encourage team gelling. COMS W4156

  37. Drawbacks • Experienced developers may find it tedious to tutor a less experienced developer in a paired environment. • A less experienced developer may feel intimidated pairing with a more experienced developer, which may result in less participation. • Differences in coding style may result in conflict. • Personality conflicts can result in one or both developers feeling awkward or uncomfortable. • Some software engineers prefer to work alone, and may find the paired environment cumbersome. COMS W4156

  38. Drawbacks • In the case where the team has slightly different work schedules, which is common in an environment that values work-life balance, the pair is only available during the overlap of their schedules. Therefore, not only does it require more man-hours to complete a task, a typical day has fewer pair-hours available, which further increases the overall task completion time. • Where a company values telecommuting (working from home) or when an employee must work from outside the office for whatever reasons, pair programming can be difficult. COMS W4156

  39. Final Notes COMS W4156

  40. First Assignment Due Next Week! • Due Tuesday 15 September, 10am • Posted on course website • Submit via CourseWorks • Pair Formation COMS W4156

  41. Upcoming Deadlines • Teams announced September 22nd • Team project concept due September 29th • Project concept feedback by October 6th • First iteration begins October 6th COMS W4156

  42. COMS W4156: Advanced Software Engineering Prof. Gail Kaiser Kaiser+4156@cs.columbia.edu http://bank.cs.columbia.edu/classes/cs4156/ COMS W4156

More Related