© Copyright Eliyahu Brutman Programming Techniques Course מוקדש לזכרו של פרופ' לב ברוטמן ( ) חוקר בעל שם עולמי, ממייסדי החוג למדעי המחשב באוניברסיטת חיפה, איש מדע, מורה ומחנך, גידל דורות לאהבת המתמטיקה והמדע, תוך קידוש ערכי המצויינות, המופת, הכבוד ההדדי, הסובלנות ואהבת האדם
© Copyright Eliyahu Brutman Chapter 1 – Software Engineering Version 1.0
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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
© Copyright Eliyahu Brutman Programming Techniques – Chapter Administration Lecture days and hours Practices Assistance Labs Homeworks Grades Exam We are here for your success!!
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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
© Copyright Eliyahu Brutman Programming Techniques – Chapter Development Process - Waterfall Waterfall
© Copyright Eliyahu Brutman Programming Techniques – Chapter Development Process – Spiral Iterative Iterative, spiral
© Copyright Eliyahu Brutman Programming Techniques – Chapter Structured Programming Procedures Data
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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
© Copyright Eliyahu Brutman Programming Techniques – Chapter OO Programming Object Oriented Programming Methods Data Objects
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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
© Copyright Eliyahu Brutman Programming Techniques – Chapter New or changed requirements New or changed system Software Engineering Process What Is a Development Process? For each iteration define who is doing what, when and to produce which result
© Copyright Eliyahu Brutman Programming Techniques – Chapter Creating the Unified Process Functional testing Performance testing Requirements mgmt Conf. and change mgmt Business engineering Data engineering UI design Rational Unified Process RationalObjectory Process Objectory Process TheEricsson Approach The Rational Approach UML
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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 ”
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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
© Copyright Eliyahu Brutman Programming Techniques – Chapter Lifecycle Phases time InceptionElaborationConstruction Transition Inception Define the scope of the project and develop business case Elaboration Plan project, specify features, and baseline the architecture Construction Build the product Transition Transition the product to its users עיבוד מפורטהתחלהבניה/יצירההעברה
© Copyright Eliyahu Brutman Programming Techniques – Chapter Major Milestones time VisionBaseline Architecture Initial Capability Product Release InceptionElaborationConstruction Transition
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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.
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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 effect the entire project. Parallel development, independent
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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.
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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 …
© Copyright Eliyahu Brutman Programming Techniques – Chapter Msg Object Method Object Method Object Method Object Method Object Method Object Method Msg Message Passing Synchronous A-Synchronous
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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
© Copyright Eliyahu Brutman Programming Techniques – Chapter An Object Object Method Msg
© Copyright Eliyahu Brutman Programming Techniques – Chapter An Object Object Draw(...) Count () M1() M2() Int X Float Y Looks like:
© Copyright Eliyahu Brutman Programming Techniques – Chapter Relationships Object Draw(...) Count() M1() M2() Int X Float Y Obj B Method Obj A Method Object “ Part of ” relation “ Reference to ” relation Pointer
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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.
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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
© Copyright Eliyahu Brutman Programming Techniques – Chapter Classes – cont’d Objects - Instances of the classThe class Different Ships objects The Ship class Length Coordinates Go Stop , 456 Go Stop ,333 Go Stop
© Copyright Eliyahu Brutman Programming Techniques – Chapter Classes – cont’d Object Method Object Method Object Method Object Method Object Method Object Method Object Method Class
© Copyright Eliyahu Brutman Programming Techniques – Chapter Inheritance Inheritance Tree (definition)
© Copyright Eliyahu Brutman Programming Techniques – Chapter Inheritance Tree Example: Employee Boat SailBoatMotorBoatPaddleBoat AircraftCarrier
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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
© Copyright Eliyahu Brutman Programming Techniques – Chapter Employee Inheritance - Tree Revisited Boat getLocation() move(Env) turn(Dir) Location … SailBoat float sailArea move(Env) turn(Dir) MotorBoat float engineVolume move(Env) turn(Dir) start(Eng) Engine …
© Copyright Eliyahu Brutman Programming Techniques – Chapter Objects What 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 ?
© Copyright Eliyahu Brutman Programming Techniques – Chapter 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[]