# Software Engineers Handbook

The purpose of this online collaboration is to provide to software engineers, software developers, computer scientists, and information technology professionals a good place to look when they are starting something new. The introductory material would be given here, including vocabulary necessary to search the web effectively, and references to web sites, articles, and texts for more in depth coverage.
* About to try a new programming language? See the language dictionary.
* Have an interview in a new industry? See the sector pages.
* Switching to another operating system? See the operating system pages.
* Been asked to put together your configuration management strategy for your project? See the supporting processes pages.
* Don't find what you need? Create a page or request one using the talk page
* Please contribute to pages within your area of expertise.

## Contents
### Life Cycle

* Development Methodologies
** Extreme Programming
** Traditional Waterfall
* Problem Analysis
* Requirements
** Software Requirements Specification
* Design
** Choosing an Algorithm
** Choosing a Data Structure
** Large Scale Projects
** Methodologies
** Patterns
* Implementation
** Choosing a Programming Language
** Coding Standards
** Refactoring
* Software Quality Assurance (SQA)
** Testing
** Unit Testing
** Integration Testing
** User-Acceptance Testing

### Supporting Processes

* Configuration Management
* Computer-Aided Software Engineering

### Software Engineering General Links

* Software Engineering Body of Knowledge (SWEBOK)

### Operating Systems

* OS X
* Linux
* Unix
* Windows
* Forth over bare iron
* Smalltalk over bare iron
* CP/M
* OS/360
* VMS

#### RTOS - RealTime Operating Systems

* µC/OS-II - A highly portable multitasking Real-Time Kernel, ROMable, very scalable, preemptive real-time, multitasking kernel (RTOS) for microprocessors and microcontrollers
* uSmartX - A non-preemptive, multitasking, priority based RTOS for small foot-print embedded designs.
* ESF RTOS - an elegant, simple, powerful, and easily customizable, object-oriented interface to kernel services, such as thread creation and synchronization.
* Micro Itron - A japanese Operating System.

### Sectors/areas of industry specialization

* Finance
* Imaging
* Security
* Automotive

### Fields/areas of development specialization

* Database
* Embedded Systems
* Office Automation
* Web

### Language Dictionary

Here is the language dictionary sample template. Please use it for new language entries. (Open, edit, copy, click cancel, go to the page you're adding, and paste it in the editing page. Edit to match the language being added. And thanks for adding a new language!)

#### Multi-paradigm

* Ada
* C++
* Perl
* PHP
* Python
* C#

#### Object Oriented

* Java
* Ruby
* Smalltalk
* Visual J++
* Visual Basic .NET

#### Procedural

* COBOL
* FORTH
* Perl
* PHP
* PL/B
* PL/I
* Visual Basic

#### Imperative

* ALGOL
* BASIC
* C
* FORTRAN
* Pascal

#### Functional

* Erlang
* Haskell
* J
* Joy
* Lisp
* ML
* Ocaml
* Qi
* RPG

#### Scripting

* bash
* csh
* rexx

#### Mini

* bc

#### Markup Languages

* HTML
* XML
* Wikitext

#### Code Generators

* Rhapsody
* Rational Rose Realtime
* Tau Telelogic

#### Assembly (template)

* Burroughs B5700
* DEC PDP-11
* IBM
** IBM 360
** IBM 709
** IBM 1401
* x86
** FASM
** GAS
** GoAsm
** HLA
** Ideal
** MASM
** NASM

#### Logical

* Prolog
* Mercury
* Oz

#### Concurrent Constraint

* Janus
* ToonTalk

## Further Reading

* Embedded Systems