260 likes | 404 Views
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/MCS270 Overview Chapters 1 and 2 in Textbook. MCS 270 Object-Oriented Software Development.
E N D
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/MCS270 Overview Chapters 1 and 2 in Textbook
MCS 270 Object-Oriented Software Development Course Info Web Site: www.gac.edu/~hvidsten/courses/MCS270 Class Syllabus Class Schedule Class Development Environment/Tools
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
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
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
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
MCS 270 Object-Oriented Software Development Textbook Object-Oriented Modeling and Design with UML, 2nd ed. by Michael Blaha and James Rumbaugh
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
MCS 270 Object-Oriented Software Development Historical Perspective on Software “Engineering” 1940s:computers invented 1950s: assembly language, Fortran, Lisp 1960s: COBOL, ALGOL, PL/1, Basic 1969: First conference on Software Engineering 1970s: multi-user, databases, UNIX, Procedural Programming (C), First OO (Simula, Smalltalk), First Logic (Prolog), First DB (SQL), Pascal, Scheme
MCS 270 Object-Oriented Software Development Historical Perspective on Software “Engineering” 1980s: Networking, PC’s, Embedded systems, Parallel computing, C++, ADA, Obj C 1990s: Internet, Distributed systems, Java RAD -- Scripting Languages: Javascript, Python, Perl, PHP, Ruby (OO in widespread use) 2000s: Web Commerce, Virtual reality, Voice recognition, Video, C#, XML
MCS 270 Object-Oriented Software Development Historical Perspective on Software “Engineering” 2010s: Mobile Computing, HTML5, “Ubiquitous” Computing, Agile Software Development, Cloud Computing, Social Computing
MCS 270 Object-Oriented Software Development The Cost of Developing Software
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, 50K LOC Nuclear power plant, pacemaker
MCS 270 Object-Oriented Software Development Why is Software so Expensive? Medium: 3 years, 10s of programmers, 100K LOC Optimizing compiler (gcc), Geometry Explorer Large: 5 years, 100s of programmers, 1M LOC MS Word, Excel Very large: 10 years, 1Ks of programmers, 10M LOC Air traffic control, Telecommunications, space shuttle Very2 Large: 15+ years, 10Ks programmers, 35M LOC Y2K
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?
MCS 270 Object-Oriented Software Development Hardware Lifecycle
MCS 270 Object-Oriented Software Development Software Lifecycle
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)
Data-oriented model Object-oriented model Software system Real world Software system Real world 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 and maintain Directly related to reality -- no "semantic gap”
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
MCS 270 Object-Oriented Software Development Encapsulation Problem Domain Class Diagram switch Switch 1 W Battery 5V Resistor 5 V Light light
MCS 270 Object-Oriented Software Development Inheritance Class Structure
MCS 270 Object-Oriented Software Development Polymorphism 2DShape Class Circle extends 2DShape area public double area() { return Math.PI*getRadius()*getRadius(); } Circle Class Ellipse extends 2DShape public double area() { double a = getMajorLength()/2.0; double b = getMinorLength()/2.0; return Math.PI*a*b } Ellipse
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.