MCS 270 Spring 2014 ObjectOriented Software Development MCS
MCS 270 Spring 2014 Object-Oriented Software Development
MCS 270 Object-Oriented Software Development Today’s schedule Course information Web Site: www. gac. edu/~hvidsten/courses/MCS 270 Overview Chapters 1 and 2 in Textbook GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Course Info Web Site: www. gac. edu/~hvidsten/courses/MCS 270 Class Syllabus Class Schedule Class Development Environment/Tools GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Course Topics – What we will cover: Object-Oriented Programming -- Java Object-Oriented Design and Modeling UML (Unified Modeling Language) Version Control (GIT) TDD (Test Driven Design) -- Unit Testing (JUint) Team Project GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Course Goals – What will you learn? Programming Skills: Fundamentals of object-oriented programming: encapsulation, polymorphism, and inheritance Understand the relationships between objects, classes, and interfaces Build complex systems having many interacting classes GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Course Goals – What will you learn? Software Modeling and Design Skills: Use good practices of design to develop robust, maintainable object-oriented software : Modeling and Design Principles using UML Agile Techniques GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Course Goals – What will you learn? General Skills: Version Control Testing Professional Development tools (Eclipse, GIT, Google App) Team Programming GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Textbook Object-Oriented Modeling and Design with UML, 2 nd ed. by Michael Blaha and James Rumbaugh GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Challenges of Software Development Complexity of software systems Longevity and evolution of software systems High user expectations User needs change over time GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Historical Perspective on Software “Engineering” 1940 s: computers invented 1950 s: assembly language, Fortran, Lisp 1960 s: COBOL, ALGOL, PL/1, Basic 1969: First conference on Software Engineering 1970 s: multi-user, databases, UNIX, Procedural Programming (C), First OO (Simula, Smalltalk), First Logic (Prolog), First DB (SQL), Pascal, Scheme GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Historical Perspective on Software “Engineering” 1980 s: Networking, PC’s, Embedded systems, Parallel computing, C++, ADA, Obj C 1990 s: Internet, Distributed systems, Java RAD -- Scripting Languages: Javascript, Python, Perl, PHP, Ruby (OO in widespread use) 2000 s: Web Commerce, Virtual reality, Voice recognition, Video, C#, XML GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Historical Perspective on Software “Engineering” 2010 s: Mobile Computing, HTML 5, “Ubiquitous” Computing, Agile Software Development, Cloud Computing, Social Computing GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development The Cost of Developing Software GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Why is Software so Expensive? Size of programs continues to grow: Tiny: < 1 month, 1 programmer, < 500 LOC, CS I, II assignments Very small: 4 months, 3 -4 programmers, 2000 LOC MCS 270 Course project Small: 2 years, 3 -10 programmers, 50 K LOC Nuclear power plant, pacemaker GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Why is Software so Expensive? Medium: 3 years, 10 s of programmers, 100 K LOC Optimizing compiler (gcc), Geometry Explorer Large: 5 years, 100 s of programmers, 1 M LOC MS Word, Excel Very large: 10 years, 1 Ks of programmers, 10 M LOC Air traffic control, Telecommunications, space shuttle Very 2 Large: 15+ years, 10 Ks programmers, 35 M LOC Y 2 K GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Challenges of Software Development H/W advances, Feature explosion, Security needs Maintenance - Aging Software Costs and schedules – hard to estimate Failures: Arianne Missile, Therac (Radiation Treatment), ACA? GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Hardware Lifecycle GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Software Lifecycle GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Robust Software Development – based on: Rigorous theories addressing the modeling and design of complex systems Testing of Systems both in development and after Communication with customers (iterative design) Reduction of Complexity (we can only cope with about 7 ideas at once) GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Chapters 1 and 2 – Overview of Modeling Object-orientation as a base for modeling Problem modeled as set of objects that interact Easy to understand maintain Directly related to reality -- no "semantic gap” Data-oriented model Real world Software system GUSTAVUS ADOLPHUS COLLEGE Object-oriented model Real world Software system gustavus. edu
MCS 270 Object-Oriented Software Development 3 basic OO concepts Encapsulation - separate external (public) aspects from internal (private) aspects Inheritance- subclasses share attributes of parents Polymorphism- same operation may perform different on different classes GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Encapsulation Problem Domain switch Class Diagram Switch 1 W Battery 5 V 5 V light GUSTAVUS ADOLPHUS COLLEGE Resistor Light gustavus. edu
MCS 270 Object-Oriented Software Development Inheritance Class Structure GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
MCS 270 Object-Oriented Software Development Polymorphism 2 DShape Class Circle extends 2 DShape area public double area() { return Math. PI*get. Radius(); } Circle Class Ellipse extends 2 DShape public double area() { double a = get. Major. Length()/2. 0; double b = get. Minor. Length()/2. 0; return Math. PI*a*b } GUSTAVUS ADOLPHUS COLLEGE Ellipse gustavus. edu
MCS 270 Object-Oriented Software Development Assignments Tuesday - First Lab: Meet in Olin 326 Thursday – Read Chapters 1, 2 and 3. 1 -3. 4 in text. GUSTAVUS ADOLPHUS COLLEGE gustavus. edu
- Slides: 26