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 #5 best job. According to the report, the projected number of new software developer jobs in the next 10 years is estimated at 303,700. This represents 29% of all projected jobs in the top ten and is almost 2 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

Diagram of user interacting with a large number of devices

"Software is eating the world"

PDF of 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 Type Software Role Developer Background Tools / Languages / IDEs Development Practices Example Companies
Physical Product Companies Supporting rather than core value Often from the physical product domain Can be idiosyncratic Physical product development practices Tesla, Boeing, John Deere
Service/Product w/ Software Layer Enhances but doesn’t define core business From physical product domain or separate groups Can be idiosyncratic Service/product development practices Uber, FedEx, Disney+
Software-Based Service/Product Software is the product From a software background More recent and more standard Modern software development practices GitHub, Google, Netflix

Hardware Platforms

  • Mainframe (Server)
  • Minicomputer (Server)
  • Desktop PC
  • Laptop PC
  • Tablet
  • Smartphone
  • Smartwatch
  • IoT: lights, appliances, locks, etc.

Platform: Mainframe

Picture of IBM System/360 Mainframe computer with tape drives, monitor, console typewriter with two operators/users

  • AKA "Big Iron"
  • Era: 1950s - present
  • Cost: 1 Million+
  • Large companies, government
  • E.g., IBM System/360
  • Accessed via terminals
  • Total Sold: 100,000
  • Active: 20,000 - 30,000
  • 5 Things Everyone Should Know about Mainframes
  • Software Focus: heavy-duty data processing tasks, such as database management, transaction processing, and batch processing.

Historical Platform: Word Processors

Office workers with a Word Processor

  • E.g., Sperry, etc.
  • Total Sold: 500,000 - 1 million
  • 1972 - 1984 (?)
  • Inactive
  • Software Focus: Word Processing, not general computing

Historical Platform: Minicomputers

Front view of a Digital Equipment Corporation VAX-11/780 mainframe computer

  • 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

Apple II

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

Current Platform Sizes

Platform Size
PC 5.0 Billion
Installed PC Base 1.8 Billion
Yearly PC sales 295 Million
Windows 10 & 11 1.4 Billion
Active Mobile Phones 7.5 Billion
Active Smartphones 7.3 Billion
iOS: iPhone, iPad Total 2.6 Billion
Active iPhones 1.56 Billion
Yearly iPhone sales 230 Million
Xbox 200 Million
Apple Watch 150 Million

AI & LLMs

  • Not talking here about AI in SE (or SE for AI)
  • Talking about new requirements that could not exist (or exist as well) without AI
  • What can I do with this? not What does this do? or Isn't this cool!
  • As for AI in SE, this means Software Engineers need a broader skill set

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