CSCE 181 Guest Lecture 4

From Notes
Jump to navigation Jump to search

« previous | Tuesday, March 8, 2011 | next »


Large Scale Software Developing at High Speed

Mark Cathcart
Senior Distinguished Engineer; Director Software Engineering
Dell Inc.
http://cathcam.wordpress.com

Speed is of the essence

Developing software quickly ("agile development") is vital to stay ahead of the competition

Working in large groups is a very noisy/busy place

FYI: Dell website takes in more money that Amazon and eBay put together!

Engineering is a Discipline

Don't reinvent the wheel; adopt what is available and add value to it.

Never start from scratch

Common architecture across a series of products:

  • Linux Operating System
  • Pre-built components

Culture is Critical

World-wide distribution has to take into account other cultures

Even in the development workplace: different people learn and apply what they've learned differently.

A problem given to people in China and India:

  • China will have bad code, but do exactly what you asked for
  • India will have good code, but have a few "extras"

Process Matters

Documented Interfaces to keep coding standard:

Testing is crucial

A long time ago, compilation was expensive and slow. Now, everything is faster, so the software development process is more iterative.

Scalability - Will the architecture hold up under large amounts of stress?

Architecture has to enable Engineering

Customer First: Dell's Software Approach

Distributed computing:

Configuring new clients can be very hard

Developers have to keep it simple! Simple software is easier to develop


Questions

How do you overcome bugs/instability associated with rapid development?
Faster compilation allows for developers to test smaller pieces of code more often, so bugs that normally originate are found in a few days.
Do you run into any portability/compatibility errors when mixing and matching several pre-built components?
We've been told to write tests for our code and test often, but we've never been taught how. How do you write automated tests for code?