Stanford GSB High Tech Club Tech 101 – Session 1 Introduction to Software, Distributed Architectures, and ASPs Presented by Shawn Carolan Former Manager of Software Architecture, Open Port Technology February 22, 2001 Mission To equip the MBA audience with a fundamental understanding of the software industry and its terminology in hopes that they’ll sound better in interviews, and have a better idea where to look for more information (highly recommended). Topics What is software? How it is developed? And distributed systems? Application Service Providers (ASPs) Industry trends What is Software? Set of instructions: tells the hardware what to do Applications Application Programming Interfaces (APIs), Libraries Operating System (OS) Hardware Word, Excel, Quicken Win32, ODBC, OpenGL Windows, Sun Solaris, Linux Intel x86, Sun Sparc, DEC Alpha How is Software Developed? Assembly Code Programming Languages (C, C++, Java) Scripting Languages (Perl, Tcl, Shell) Other programming “environments” (Application Servers, Visual Basic, etc.) Source Code Compiler Executable (Binary) How is Software Developed? Product management – Helps gather customer and market requirements, prioritize features, negotiate schedules, position product, etc. Programmers – Research available tools/libraries/components, plan software architecture, write source code, fix bugs/improve efficiency Quality Assurance (QA) – Tries to break the software before it is release to customers. Find bugs. Client Support – Interfaces with customers to help them solve problems and answer questions. Often file bugs. And Distributed Systems? Required for when applications scale past the capabilities of a single machine. File Servers Database Servers Napster The Internet! And Distributed Systems? The “Layered” Network Model Application Presentation Session Transport Network Data Link Physical HTTP, SMTP, SNMP, etc. TCP IP Optical, Copper Wire, Wireless And Distributed Systems? Ubiquitous Client/Server Application Domain Name Server (DNS) Client (Internet Browser) Server (Apache Web Server) And Distributed Systems? Napster, a peer-to-peer (P2P) application Napster Server (Holds Song to IP mapping) Napster User 1 (Client + Server) Napster User 2 (Client + Server) ASPs Classic client/server, but with much more complex server functionality (it runs the whole application!) Client 1 Client 2 Client 3 Server (session for 1, 2, 3) ASPs Drivers Include Company gets to focus on their core competency Easy upgrades, access to latest technology Eliminates heavy infrastructure costs Scalability, availability, backups Fewer IT personnel, developers Trends, Hot Fields Outsourcing apps, infrastructure (ASPs, LoudCloud) Outsourcing development (BaliCamp) Proliferation of devices (IP v6) Ad-hoc, often wireless networks (Jini) Standard data exchange (XML) Peer-to-peer applications