120 likes | 276 Views
P rogramming i n t he M any Software Engineering Paradigm for the 21 st Century. Nenad Medvidovic Center for Software Engineering Computer Science Department University of Southern California Los Angeles, CA 90089-0781 neno@usc.edu http://sunset.usc.edu/~neno/. PITL in a Nutshell.
E N D
Programming in the ManySoftware Engineering Paradigm for the 21st Century Nenad Medvidovic Center for Software Engineering Computer Science Department University of Southern California Los Angeles, CA 90089-0781 neno@usc.edu http://sunset.usc.edu/~neno/
PITL in a Nutshell • The past: programming in the small (PITS) • small, simple systems • single developer (or small teams) • programs are hacked • developer = customer = user • The present: programming in the large (PITL) • large, complex systems • powerful hardware • teams of developers • systems are engineered • many people, many roles
Why PITL? This is a simple software system!
Yesterday’s Tool: Design Abstraction We have to do better!
A Peek into the Future • Large, complex, highly distributed systems • Teams of developers • Many people, many roles • Heterogeneous hardware • desktop, laptop, palmtop • “smart dust” and “smart paint” • Mobility • One application runs on many devices • each device has limited resources Guess what: the future is now!
Resource Constraints • This is / will become your computer • This has beenyour computer
What Is an Engineer to Do? • Engineer • Do not “hack” • by reusing the best practices of PITL • Component-based system composition • Explicit architectures with powerful connectors • Modeling and analysis before construction • Mechanisms to support distribution and heterogeneity • and adapting them to the needs and constraints imposed by PITM • Shrink • Optimize • Distribute • Automate
Calibrate Display Display An Example of PITM in Action M M M GUI Display M M M M M M M M M M M M M
PITM Challenges • Processor speed, memory size, network bandwidth • PITL taught us not to worry about them • True heterogeneity • Hardware platforms • Operating systems • Programming languages • Interaction paradigms • Modeling, analysis, simulation, and generation • Partial information • Decentralized ownership and control • Inter-device interaction and code mobility • Limited resources • Frequently missing infrastructure • Effectively developing ITM using software architecture concepts • What is the price of insisting on “proper” abstractions? • How can those abstractions be properly realized?