1 / 42

Programming Techniques Course

Programming Techniques Course. מוקדש לזכרו של פרופ' לב ברוטמן (1939-2001) חוקר בעל שם עולמי, ממייסדי החוג למדעי המחשב באוניברסיטת חיפה, איש מדע, מורה ומחנך, גידל דורות לאהבת המתמטיקה והמדע, תוך קידוש ערכי המצויינות, המופת, הכבוד ההדדי, הסובלנות ואהבת האדם. Version 1.0.

paley
Download Presentation

Programming Techniques Course

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. Programming Techniques Course • מוקדש לזכרו של פרופ' לב ברוטמן (1939-2001) חוקר בעל שם עולמי, ממייסדי החוג למדעי המחשב באוניברסיטת חיפה, איש מדע, מורה ומחנך, גידל דורות לאהבת המתמטיקה והמדע, תוך קידוש ערכי המצויינות, המופת, הכבוד ההדדי, הסובלנות ואהבת האדם

  2. Version 1.0 Chapter 1 –Software Engineering

  3. Table of contents • About the lecturer • Course objectives • Some administrative stuff • SW Engineering • Well known models • Object Orientation • The development process • Tools • The industry – current situation • Exercise

  4. Course Objectives • About the lecturer • Why am I here? • Why are you here? • Course objectives • Object Orientation – how it evolved • Modeling – Analysis, Design, Implementation • Tools and the industry • C++ as an OO Programming Language • Through all its capabilities and features • Learn and use • Understand Object Orientation, and what characterizes it • Understand why it is good, and why so much money is invested in it

  5. Administration • Lecture days and hours • Practices • Assistance • Labs • Homeworks • Grades • Exam • We are here for your success!!

  6. Credits & Bibliography • Dr. Shimon Cohen – תכנות מונחה עצמים - הכרה אינטואיטיבית של המודל- מהדורה 1.1 אפריל 1999 • Rational Software • UML and the Unified Process – Ivar Jacobson, from Rational Worldwide Software Symposium – speaker support notes • Bibliography • C++ Primer - Stanley B. Lippman, Josée LaJoie • Inside the C++ Object Model - Stanley B. Lippman • Visual C++\MFC - מדריך מקצועי - Meir Sela • “Effective C++”– Scott Meyers • “More Effective C++”– Scott Meyers • “Effective STL”– Scott Meyers • WEB

  7. SW Engineering • What is it all about? • Is it engineering at all? • Who cares about it? • Managers • Quality assurance personnel • Customer • Why do it? • Save money • Quality product, standards

  8. The Development Process • What is a development process? • Why a development process? • The development process • Requirements gathering • System analysis • System design • Implementation • Unit testing • Integration • System testing • Delivery • Maintenance

  9. Development Process - Waterfall • Waterfall

  10. Development Process – Spiral Iterative • Iterative, spiral

  11. Structured Programming Structured Programming Procedures Data

  12. Structured Programming • Traditional structured paradigm: • Identify the algorithm (functions) required to solve the problem: • Functional decomposition • Control flow • Identify the data structures needed by the functions. • Make them work together • Implement functions using/modifying the data

  13. OO Programming Object Oriented Programming Methods Data Objects

  14. Object Oriented Programming • Object-Oriented paradigm: • Identify the abstract objects (data) that represent the problem domain. • Identify the abstract operations supported by the objects, i.e., define the interface to the objects. • The problem solution is a sequence of calls to objects. • Objects exchange messages with one another

  15. Lets Examine An Example • Phone Book • Requirements • Entry for each person / business • Name, phone number, address • Operations • Add/remove/modify name/phone number/address • Well designed programs are more reusable and maintainable. • The more you invest in infrastructure the less problems you will have with later changes • Invest a lot in thinking, for gathering generic requirements

  16. What Is a Development Process? • For each iteration define who is doing what, when and to produce which result New or changed system New or changed requirements Software Engineering Process

  17. Creating the Unified Process Rational Unified Process 5.0 Functional testing Performance testing Requirements mgmt Conf. and change mgmt Business engineering Data engineering UI design 1998 Rational Objectory Process 4.1 1996-1997 The Rational Approach UML Objectory Process 1.0-3.8 1987-1995 The Ericsson Approach

  18. Overview of the Unified Process • The Unified Process is • Iterative and incremental • Use case driven • Architecture-centric • Why RUP – Rational Unified Process • There are other methodologies … • RUP was designed by the Trio: • Ivar Jacobson, Grady Booch, James Rumbaugh • RUP is fully integrated with UML and “Rational Rose”

  19. RUP • Buzzwords • RUP – Rational Unified Process • UML – Unified Modeling Language • Tools • Rational Rose / Rhapsody / XDE – CASE tool • Visio – Drawing++ tool • RUP: Rational Unified Process • Process’s Workflows • Requirements • Analysis • Design • Implementation • Testing

  20. time Lifecycle Phases • Inception Define the scope of the project and develop business case התחלה עיבוד מפורט בניה/יצירה העברה Inception Elaboration Construction Transition • Elaboration Plan project, specify features, and baseline the architecture • Construction Build the product • Transition Transition the product to its users

  21. time Vision Baseline Architecture Initial Capability Product Release Major Milestones Inception Elaboration Construction Transition

  22. The Birth Of OO • Projects size got larger • Complexity increased • More difficult for maintainability and evolution => More expensive • Looking for techniques for reducing complexity, increasing code reuse, more intuitive, unified technique for all development process activities, etc.

  23. Object Oriented Objectives • To enable coping with complex and scaleable projects, Object Oriented provides tools for: • Project design and modeling: • Enables understanding a project’s structure, the components it is built from, their relationships and roles. • Reflecting the real world in a better way. • Unified technique through all project stages • Fast “ramp up” into project • Reducing dependencies between components: • An internal component change should not effectthe entire project. • Parallel development, independent

  24. Object Oriented Objectives – cont’d • Code reusability: • Saves development time – each task is developed only once and is used by all required components. • Enables reasonable maintainability – any change, addition or bug fix in this task will be performed once, affecting all components using this code. • Creation of flexible and scaleable projects: • Enabling coping with future changes and additions.

  25. A Bit of History • Time: 1962 • Place: Norwegian Computing Center, Oslo • Project on simulation of ship movement in fjords • Many kinds of ships, each with its own characteristics… • Difficult to distribute the work within team • Team member responsible for • Kind of boats? • Must add code to every function • Particular operation? • Must be expert in all boat kinds

  26. A bit of history (cont.) • Difficult to share code between boat types • Difficult to add new boat types and operations • Difficult to maintain • Solution: group the ships into classes • Each class of ships type has its own data and behavior • Simula 67 language

  27. Object Oriented • A System: • Is a collection of objects interacting with each other through message passing • Relating to each other via some relationship • Is-part-of relationship • Is-a relationship • Referring-to relationship • Achieved by • Containment • Aggregation • Association • Inheritance • For instance: • A book contains many pages • …

  28. Object Object Method Msg Method Method Method Method Method Method Method Msg Object Object Method Msg Method Msg Method Method Method Method Method Method Msg Object Method Object Method Method Method Method Method Method Method Message Passing • Synchronous • A-Synchronous Msg

  29. Objects • An object: • Is a self contained entity • With its own characteristics • Reflected via: • Attributes • Operations • Inter-relationships • More… • An operation is invoked as a result of message passing • The operation is intended to take care of the sent message

  30. An Object Object Msg Msg Msg Msg Method Msg Msg Method Msg Msg Method Method Msg Msg

  31. Draw(...) Count () M1() M2() An Object Looks like: Object Int X Float Y

  32. Draw(...) Count() M1() M2() Relationships • “Part of” relation • “Reference to” relation Object Obj A Method Int X Method Float Y Obj B Pointer Method Method Object

  33. World Entities • An entity has • Characteristics • Operations • Responsibilities • Behavior • Relationships to other entities • Invariant state • May have an internal life cycle • So we pack all this into one “package”, and we call it a class • It is more intuitive, since we as human beings have similar view of the world • Classification, characterization, relationship description, etc.

  34. What did we achieve? • Described the problem in terms natural to the problem • Pre-OO, we talked in terms of ints and floats, like the computer • Now we can talk in terms of boats and maneuvres • Partitioned the problem into encapsulated sub-problems with well-defined interfaces • Adding new boat types is easy • And so is changing boat behavior

  35. Classes – cont’d The class Objects - Instances of the class Go Length Go Go 35 65 Coordinates Stop 123, 456 Stop 222,333 Stop The Ship class Different Ships objects

  36. Object Object Object Object Object Method Object Method Method Object Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Classes – cont’d Class

  37. Inheritance Inheritance Tree (definition)

  38. Boat PaddleBoat SailBoat MotorBoat AircraftCarrier Inheritance Tree Example: Employee

  39. Inheritance - Main Concepts • When a class inherits from a base class, it contains all functionality and characteristics of its base • A derived class can expand its specifications by: • Adding new data • Adding new functionality • Overriding the inherited functionality

  40. Location … … Engine … … Employee Inheritance - Tree Revisited Boat getLocation() move(Env) turn(Dir) SailBoat float sailArea move(Env) turn(Dir) MotorBoat float engineVolume move(Env) turn(Dir) start(Eng)

  41. ObjectsWhat Are They Good For ? • Understand the problem • a natural way of looking at things (problems) • Software Engineering • Encapsulation helps to achieve the goals of • Parallel Development • Each object is defined independently Why is it better to view the system as a collection of objects ?

  42. Objects - Encapsulation • Hiding implementation • What is it good for? • Can you give an example? • De-coupling / Decomposition • For reuse • For easier modifications, implementation free • Example: • Replace float sailArea with float sailAreas[]

More Related