Software Design and Development

The Option topic here is the Evolution of Programming Languages

16 October 2007 Software
Date: 16 October 2007 6:19 PM
Category: School

Rights and Responsibilities
  • Authorship
  • Reliability
  • Quality
  • Response to Problems
  • Code of Conduct
  • Viruses
Software Piracy and Copyright
  • Intellectual Property
  • Plagiarism
Classification of Software in terms of Copyright
Ownership Vs. Licensing
Copyright law
Network Use

Got a task to create a game that has to do with computeing

4 February 2008 Software
Date: 4 February 2008 9:38 PM
Category: School

Defining and Understanding the Problem

The first stage of the software development cycle. It formally identifies the problem that you will solve.

Ask questions about the project: What is the problem, what are the needs, objectives and boundaries of the project?

Needs are a want that exists, it usually spawns a project
Objectives: What you want to achieve with a project.
Boundaries: The limits of the system you create.

Feasibility study

Determines I a project should continue the development process.
4 main questions: Is is technically, economically, operationally feasible, can you complete it in time and what are the alternatives. I can’t count.

6 February 2008 Software
Date: 6 February 2008 1:39 PM
Category: School

Design Specifications

To interpret needs objectives and boundaries
For the designer it means dataflow diagrams, IPO charts etc
For the user it means screen designs and anything that will affect the experience of the user.

Communication Issues
Consider the user’s needs.
Formal communication with the client involves questionaires, memos, interviews etc.
Informal communication involves talking with the client in passing. This gives more useful feedback.

8 February 2008 Software
Date: 8 February 2008 1:43 PM
Category: School

Modelling - Representing a System with Diagrams

System flowcharts: represent logic and data movement
Dataflow diagrams: describe data flow between elements in a system.
Structure diagrams: Top down design visualisation
Storyboards: screen navigation
IPO Chart: show how inputs are turned into outputs
Data Dictionary: defines all variables in the solution, what they are for and their data type.
Screen designs: simulates the solution so that the user can try it out

Structure Diagram
Creates a template in preparation for the actual code. Shows each module and how it calls submodules. A box signifies a module. Lines to other boxes indicate calls. Arrows with a circle on them indicate parameters passed to the module. If the circle is filled in, it changes the order in which processes are executed.

16 February 2008 Software
Date: 16 February 2008 6:14 PM
Category: School

Insertion sort: Put items into an array in the right slot, sorted straight away
Selection sort: Finds the largest item and moves it to the back
Bubble sort: Items move to their positions one slot at a time

26 February 2008 Software
Date: 26 February 2008 5:49 PM
Category: School

Custom Designed Logic in Software Solutions

Stepwise refinement/Top down design involves modulation of the solution.
A good way to start with making a module is
- IPO Chart to define inputs outputs and processes
- algorithm to show how the solution will work (pseudocode)
- Data dictionary for showing the variables that will be used
- Desk check to check everything will go well

3 March 2008 Software
Date: 3 March 2008 7:15 PM
Category: School

Implementing Software Solutions
The third stage of the software dev cycle. Source code is written here. Also tested. The plans created in earlier stages are implemented here.

Interface Design
If your language is event drive, a UI is very important. Not so much for sequential.
Consider factors such as consistency between programs, targeted audience. the data you need to get from the user, current trends in design and help screens.

6 March 2008 Software
Date: 6 March 2008 8:58 PM
Category: School


The brain and heart of computer.
Circuits manage to interpret and execute operations in machine language. Controls data transfer to and from secondary and main memory.
Made of the control unit, the Arithmetic Logic Unit and the registers.

Controller tells everything what to do.
ALU executes arithmetic and logic commands. Arithmetic e.g. 1+1 Logic e.g. AND/OR/NOT
Accumulator: A register where arithmetic and logical results from the ALU are stored. They will be used soon in calculations.
Registers are memory on the CPU and they are really fast.
Buses transfer data from different bits of the computer.

Source Code: Written by and for humans. Must be compiled to object
Object Code: Compiled, compacted code, often called a binary.
Machine Code: Lowest language that the CPU executes directly.

Computer word: a word is the amount of stuff a CPU can do. A word length of 32 bits is like a normal CPU.

11 March 2008 Software
Date: 11 March 2008 8:27 PM
Category: School


Is a cycle. Fetch, Decode, Execute, Store
FETCH: (where) CPU gets instruction form main memory. Register stores this and gets more instructions
DECODE: (what) separates opcode from data addresses. opcode loaded into instruction register and data addresses are copied into an address register.

17 March 2008 Software
Date: 17 March 2008 8:27 PM
Category: School

EXECUTE: (do) the instruction in the instruction register is sent to the ALU where it is executed.
STORE: (save) copies the result of the calculation to the accumulator. Saved to maine memory when the instructions are finished.

The main line of the program calls on subprograms. These subprograms are either in the program, in the programming language structure, in the operating system.

A linker links the subprogram to the main program.

DLL is short for dynamic link library.

Saves subprograms so that lots of applications can use it.

20 March 2008 Software
Date: 20 March 2008 3:02 PM
Category: School

Translation methods:

The process of converting source code into machine code.
Interpretation changes code line by line.
Compilation converts the whole program at once.
Incremental Compilation is like compiling but it only compiles the code that has been changed since the last compile.

27 March 2008 Software
Date: 27 March 2008 8:25 PM
Category: School

Program development, techniques for software solutions:

Top down design/stepwise refinement
Every task is broken into little modules. You can test them separate from a big solution
Can be used multiple times but only in a project once

It is good to include only one task in a module/subroutine
This is to keep the modules as simple as possible and so they can be reused in other solutions
The modules should be made to be elegant: using as few lines of code as possible

2 June 2008 Software
Date: 2 June 2008 7:10 PM
Category: School


Alpha testing: Testing within the software company.
Beta testing: Testing within a limited group outside the software company.

Care the final solution with the original specifications

Black box testing: to establish there is a problem without knowing the internal workings of the code.
White box testing: finding the problem with the code that causes errors by using techniques that utilise aspects of the code.

10 June 2008 Software
Date: 10 June 2008 8:50 PM
Category: School

Test Documentation:

Test Description
Describe what will happen in the test, the system environment
Test Plan
What are you testing? What test data will you input
Test Report
What happened when you finished the test? What was the outputs?

11 June 2008 Software
Date: 11 June 2008 8:49 PM
Category: School

White Box testing:
Statement coverage testing
Decision condition coverage testing
Multiple decision condition coverage testing
Exhaustive condition decision condition coverage

Black box testing:
Boundary analysis
Equivalence Partitioning

18 June 2008 Software
Date: 18 June 2008 12:29 PM
Category: School

Maintenance of software solutions.

Maintenance is a broad term that describes work that is put into a solution after implementation. Maybe you need to fix a bug or improve efficiency.
You should follow the design steps during maintenance. Changing user requirement might also be a problem.

22 July 2008 Software
Date: 22 July 2008 9:15 PM
Category: School

Generations of languages.

1st Gen: Machine code written in binary.
2nd Gen: Symbolic variables (the exact memory location no longer needs to be referenced, only it’s ‘name’)
3rd Gen: Machine actions are given familiar names or put into more sensible sentence type statements.
4th Gen: Usually depends on a database of information. Focuses on what to solve rather than how.
5th Gen: Allows a computer to draw inferences by setting down rules.

25 July 2008 Software
Date: 25 July 2008 3:39 PM
Category: School

Basic building blocks of a paradigm

Imperative: Variables and data structures
Functional: Functions
Logical: Facts
Object Oriented: Objects

Logic Paradigm:
Non-procedural, declarative programs. Aim to make computers do what humans are good at: inferring.
It focuses on facts and rules. A database of rules and facts are created then people input a goal and it is checked against facts and rules.
Heuristics: Several different solutions output.
Backward Chaining: Prove a statement true/false
Forward CHaining: Get a solution based on facts.

13 August 2008 Software
Date: 13 August 2008 9:05 PM
Category: School

Functional Programming

This paradigm designates that the language should be stuffed full of functions.
There are only constants, no variables. Limits ‘side effects’ or errors from uncontrolled variables.
Suitable for AI
e.g.: LISP, APL

The effect on programmer’s productivity of different paradigms
Speed of code generation
Approach to testing
Effect on maintenance
Efficiency of solution once coded
Learning Curve