Software Industry – Historical View Dr. Jeyakesavan Veerasamy University of Texas at Dallas
Agenda Software: Then & Now SW Efficiency – does it matter? Latest buzz Trends in CS education Open Q&A Note: Almost all the content is based on my observations & my experience only.
Complexity of software projects: historical snippets Ad-hoc development model Waterfall model – slow & unpredictable – heavy documentation effort – cost overruns & missed deadlines
My experience with huge SW projects (Waterfall model) Period of instability collisons during merge product delays Is it good enough to release?
Agile process
Agile methods Limited documentation Better tracking of current status Frequent releases Continuous interaction with the customer Several refinements: XP, SCRUM, …
A typical industry project in 1990 C standard library Home-grown library New code
Same industry project NOW C++/Java standard library Home-grown library Open source components Commercial libraries for industry segment IDE modules New code
Questions Any disadvantages of the latest approach? Expert programmer: what does it mean? Future projects: No code? Just integration? Knowledge of Java/C++/… down the drain?
Application Specific Programming M1M2M3 Intrepreter Mn script … …
Data Exchange A1 A3 A2 A4
Data Exchange Binary or text data XML or JSON … Independent data checkers tools available. A1 A3 A2 A4
Design decisons Purchase commercial modules or use open- source?.NET or Java?
Running time of a program or transaction processing time ????
Running time of a program or transaction processing time amount of input: n basic algorithm / actual processing memory access speed CPU/processor speed # of processors? compiler/linker optimization?
Running time of a program or transaction processing time amount of input: n min. linear increase basic algorithm / actual processing depends on algorithm! memory access speed by a factor CPU/processor speed by a factor # of processors? yes, if multi-threading or multiple processes are used. compiler/linker optimization? ~20%
Compare 3 algorithms AlgorithmO(log n)O(n)O(2 n ) When n goes up by 1 neglegibleGoes up by 1 unit Doubles! When n doubles Goes up by 1 unit DoublesGoes up by 2 n
Software efficiency: Do we really care? Goal is to make software work & meet deadline for most industry projects. For example, an intranet application may take 5 seconds to process a transaction, while hand-coded optimized version may take 4 seconds. Is this ok? However there are exceptions. Let us consider a few such scenarios.
Game Console Inefficient algorithm takes longer to run requires higher-end CPU to keep realism Higher end CPU higher price for the console product fails amid competition
Web-server Consider 2 web-server algorithm implementations that take 1 second and 5 second respectively to process a transaction. Issues: – algorithm #2 tests web-users’ patience – 2 nd web server capacity is low. We can add 4x servers to improve the web- server capacity, but what can we do with the user’s wait-time?
Daily data crunching Any network collects tons of data to measure operational efficiency. Telecom network is no exception. Daily data crunching (post-processing) is used to generate daily reports for management. Issue: # of network nodes increased more data process Scripts started to take >1 day to run.
Data crunching pseudocode initial setup loop – read one tuple – open db connection – send request to db – get response from db – close db post-processing
Data crunching pseudocode initial setup loop – read one tuple – open db connection – send request to db – get response from db – close db post-processing Equation for running time = c 1. n + d 1 Time complexity is O(n)
Data crunching pseudocode initial setup open db connection loop – read one tuple – send request to db – get response from db close db post-processing
Data crunching pseudocode initial setup open db connection loop – read one tuple – send request to db – get response from db close db post-processing Equation for running time = c 2. n + d 2 Time complexity is still O(n), but the constants are different. c 2 < c 1 d 2 > d 1
Reasons for original design? Why the initial script implementation was so inefficient? Designed for small network – “get it done” mentality – works for now! Not much thought process went into it. It is an internal project. Clearly it was not of “commercial” grade project.
A few more points … Standalone applications Enterprise bundles Local SW installation intranet based Build in-house Buy & customize Heavy text based coding visual programming (GUI builders & debuggers …) Desktops Laptops Smartphones
SW projects: Multi-dimensional problem Companies want to complete Software Projects with Smaller team Limited resources Higher quality Reduced cost On-time delivery This is what each project manager tries to do
Cloud computing Possible for a small company to have just employees, laptops & web connectivity to do business! Enables company data access from anywhere! Even large companies move specific applications to the cloud - supports multiple locations naturally! Example for personal cloud usage: Google Docs Example for commercial cloud usage: Electronic medical records Security concerns remain, but industry is gaining confidence.
Smart-phone development My kids know/play games in Android phone For me, , calendar and contacts are in sync with company data Question: can we do more with them? Industry trend is to port several meaningful business applications to smartphones. Example for cross-platform development
Game development Lot of interest in real-time action games Most games done in C/C++ in Los Angeles area Algorithm optimization at work!
Latest trends in CS education in USA Difficulty in attracting US students to CS Introduction to Programming : going visual – Alice, Scratch, GUI games, … Java dominates in CS1 & CS2 courses Industry projects in the final year Online courses becoming popular, augmenting education landscape Lots of online multimedia lectures in the web Game design programs & Smart-phone applications Augmenting open-source applications
Questions & Answers Dr. Jeyakesavan Veerasamy