G Saunders' Home Page

Software

Computers don't do anything without software. Some software is burned or flashed into ROM or other chips to become 'firmware', but it all started life as software.

Types of Software: Operating Systems; Utilities; Malware: Virus, Worms, Spyware/Keystroke Loggers, Rootkits, Trojans, Bots; Security: Anti-Virus, Firewall, IDS, Anti-Spam, Surveillance & Motion Detection; Programming Languages, IDE, Frameworks; Version Control; DBMS; Artificial Intelligence; Web Servers: HTTP, SMTP, POP, IMAP, SSL; Application Software: Office/Productivity, Single vs. Multi-user vs. Enterprise!, ERP, 'Vertical Market' for practically every category of business; Games; Graphics: CAD 2D & 3D, Drawing, Animation, Photo Editors, Video Capture, Editing & Compositing; SCADA & other Process Control; &c, &c...

Was this a comprehensive list? What's left out? Sometimes 'free software' and 'proprietary software' are the answer for 'what kinds of software are there?' but that's not what the instructor's looking for on a quiz...

Software (Outlines software chapter in text). 'Structured' and 'Object Oriented' are the two most important topics!

Diagram on board how software can get to the OS Executive: 1GL, 2GL, 3GL to Executable, 4GL is DB-aware and 'writes' 3GL code as developer drags/drops, middleware like .NET Framework or JVM-Java Virtual Machine runs Bytecode, which is a compilation from a 3GL like VB or C# or Java. Open Source scripts like PHP, Perl, Ruby, or Python are Interpreted line at a time by their interpreter which produces binary for the Executive. DMA and SMP are included in the discussion.

Version Control Software is Essential for Software Development

Professional software development, revisions, and upgrades are managed using 'version control' or 'revision control' systems so that programmers don't step on each others' efforts as they work, and managers can control and audit software as it is installed and revised on the computers they manage. 'Configuration Managers' use version control systems to tie the software they install all the way back to the requirements definitions and other contractual agreements with the developers to make sure the software they install is what was ordered.

GitHub is the #1 most used version control software, either at github.com or with git installed on private servers. Setting up and working projects with buddies is a good way to develop skills you can show off in a technical interview. Along with a LinkedIn profile and portfolio, a GitHub account can be the most powerful piece in a professional portfolio!

There are dozens of other source code development and revision control applications in the legacy. Microsoft provides 'VSS-Visual Source Safe' for small projects, and 'TFVC-Team Foundation Version Control' can scale to large projects. There are Open Source tools for revision control. 'CVS-Concurrent Versions System' has decades of use and is freely available. On-line resources like Git Hub are popular with open-source development teams, as are SourceForge, BitBucket, and several other websites that facilitate collaboration on software projects.

Adopting a version control software is one step an organization can take to maturity in application development.

There is a very real risk that changes to a business system can 'take the system down' or take the business down. Procedures are important to test, accept, install, roll back the installation if necessary, and recover data lost in the process.

'Configuration Manager' is one of the higher-paid specialties in IT, git started on these valuable skills today!

Generations of Programming Languages:

This is not to be confused with 'Generations of Computers', which is mostly about advances in miniaturization of hardware components. The generations of programming languages do advance across the same decades as generations of computers, but they're all in current use today, none of the generations is obsolete. It's important for IT pros to understand how each generation of code is produced, all impact system security, recoverability, and portability among platforms.

Sketch and discuss the several ways program code gets to the OS Executive from the programmer and some of the tradeoffs involved:

Machine Cycles - Little Man Computer

(On your own) Little Man Computer exercise: Machine cycles, instruction set and otherwise expand on the text. First mention of Data Structures, static in RAM of the LMC.


G Saunders,
Dept of Information Systems
VCU School of Business

G Saunders Wings

Content © 1999 - Today
By G Saunders
Images are Available on the Web