Context

Michael L. Collard, Ph.D.

Department of Computer Science, The University of Akron

Software

  • software engineering - Software Engineer
  • software development - Software Developer
  • programming - Computer Programmer

Fundamental Activities

Software Development Diagram

Best Time to Develop Software

  • Free and easy access to tools
  • Free and easy access to documentation, examples, etc
  • Free and easy ways to post information
  • Easy, low overhead, inexpensive ways to distribute and collect payment

Reflected in Career

U.S. News “100 Best Jobs” for 2023 has “Software Developer” ranked at #1 #5, previously (#2 and #1). For software developers, for projected jobs (i.e., the number of expected new U.S. jobs in the next 10 years) the estimate is 370,500 409,500, which is 37% 40% of all projected jobs in the top ten, and 2.65 almost 3 times the number of projected jobs of the next highest. Also, of those that do not require a graduate degree, “Software Developer” is one of 6 5 jobs and the third second highest in median salary.

Reflected in Career

In Northeast Ohio, a recent report by TeamNEO (see Page 8 of the PDF) shows that in 2021, the entry-level demand was 5,902 jobs for Computer and IT Workers, while the credentials awarded were 2,725; 2 potential jobs per graduating student.

Most software that people use is typically …

  • ugly and painful to use
  • challenging to add new features or get bugs fixed
  • not updated frequently enough

Changes in the software environment

"Software is eating the world"

  • A software layer gets introduced into an industry
  • Computer hardware iterates faster than mechanical systems or people
  • Software iterates faster than computer hardware
  • Companies based on a software layer often have reduced costs and can bring features to the unserved
  • Older companies are unable to adapt, so they die or become insignificant, e.g., first digital camera

Computing in Companies

  • Company provides a software-based service/product
  • Company provides a service/product with a (potential) software layer
  • Company provides a physical product

Hardware Platforms

  • mainframe (server)
  • minicomputer (server)
  • desktop PC
  • laptop PC
  • tablet
  • smartphone
  • smartwatch
  • IoT: lights, appliances, locks, etc.

Platform: Mainframe

Historical Platform: Word Processors

  • E.g., Sperry, etc.
  • Total Sold: 500,000 - 1 million
  • 1972 - 1984 (?)
  • Inactive
  • Software:

Historical Platform: Minicomputers

  • E.g., DEC VAX
  • Cost: $150,000+
  • Smaller companies, Math & Engineering departments
  • Era: 1964 - 1985
  • UNIX O.S.
  • Total: 1 million
  • Software:

Historical Platform: Apple IIs

  • Era: 1977 - 1993
  • Cost: $1,000+
  • Total: 6 Million
  • Software

Current Platform Sizes

  • World Population: 8 Billion
  • U.S. Population: 332 Million
  • PC: 4.5 Billion
    • Installed Base: 1.5 Billion
    • Yearly sales: 305 Million
    • Windows 10 & 11: 1.4 Billion
  • Active Mobile Phones: 9 Billion
    • Active Smartphones: 7 Billion
  • iOS: iPhone, iPad Total: 2.2 Billion
    • Active iPhones: 1.2 Billion
    • Yearly sales: 200 Million
  • Xbox: 166 Million
  • Apple Watch: 142 Million

Expectations are changing

  • Reliability
  • Robustness
  • Transparency
  • New features
  • Rate of improvements

Processes needed to…

  • Fix bugs quickly and safely
  • Introduce new features quickly and safely
  • Get users what they need
  • Stay current with changes in the software environment

Stakeholders, e.g., People

  • Developers
  • Developers' management
  • Other parts of the company
  • Users
  • Users' management
  • Other parts of the users' company
  • Others in the same industry
  • Reviewers and the outside world

Single Project Development

  Education/Class Industry
Total Time days months-years
Time Span days months-years
Number of Developers 1 - 3 3 - hundreds
Number of Programming Languages 1 > 1

Goal: Success

  • Improve quality
  • Add new features
  • Update current features
  • Reduce needed development resources
  • Reduce time-to-market