Software Engineering

Context

Michael L. Collard, Ph.D.

Department of Computer Science, The University of Akron

Software & Jobs

Category Job Title
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

The U.S. News 100 Best Jobs ranks "Software Developer" as the #3 best job. According to the report, the projected number of new software developer jobs in the next 10 years is estimated at 410,400. This represents 38% of all projected jobs in the top ten and is almost 3 times the number of projected jobs for the next highest-ranked job.

Most software that people use is typically …

  • buggy
  • 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

  • The company provides a software-based service/product
  • The company provides a service/product with a (potential) software layer
  • The 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 Focus: Word Processing, not general computing

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 Focus: More specialized tasks, such as scientific simulations, development environments, or serving as a departmental server

Historical Platform: Apple IIs

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

Current Platform Sizes

Platform Size
PC 4.5 Billion
Installed PC Base 1.6 Billion
Yearly PC sales 275 Million
Windows 10 & 11 1.5 Billion
Active Mobile Phones 9.2 Billion
Active Smartphones 7.2 Billion
iOS: iPhone, iPad Total 2.4 Billion
Active iPhones 1.25 Billion
Yearly iPhone sales 220 Million
Xbox 170 Million
Apple Watch 145 Million

Expectations are changing

  • Reliability
  • Robustness
  • Transparency
  • New Features
  • Rate of Improvements
  • Security and Compliance
  • Usability and User Experience (UX)
  • Scalability and Performance
  • Sustainability and Ethical Considerations
  • Interoperability and Integration
  • Affordability and Business Alignment
  • Community and Collaboration
  • Support and Maintenance
  • Diversity and Inclusivity

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
  • ensure security and compliance
  • facilitate collaboration and communication

Stakeholders, i.e., 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