H1 SOFTWARE SOLUTIONS H1.1 Social and ethical issues (Chp 1) H1.1.1 Rights and responsibilities of software developers H1.1.2 Software piracy and copyright H1.1.3 The software market H1.1.4 Significant social and ethical issues H1.2 Software development (Chp 2) H1.2.1 Approaches used in commercial systems H1.2.1.1 The structured approach H1.2.1.2 Prototyping H1.2.1.3 Rapid application development (RAD) H1.2.1.4 End User Development H1.2.1.5 Combinations Of Any Of The Above H1.2.2 Methods of implementation H1.2.2.1 Direct cut over H1.2.2.2 Parallel H1.2.2.3 Phased H1.2.2.4 Pilot H1.2.3 Current trends in software development H1.2.3.1 Outsourcing H1.2.3.2 Popular Approaches H1.2.3.3 Popular Languages H1.2.3.4 Employment Trends H1.2.3.5 Networked Software H1.2.3.6 Customised off-the-shelf packages H1.2.4 Use of CASE tools and their application in large systems development H1.2.4.1 Software Version H1.2.4.2 Data dictionary H1.2.4.3 Test data H1.2.4.4 Product of documentation H2 SOFTWARE DEVELOPMENT CYCLE H2.1 Defining & understanding (Chp 3) H2.1.1 Defining the problem H2.1.1.1 Identifying the problem H2.1.1.1.1 Needs H2.1.1.1.2 Objectives H2.1.1.1.3 Boundaries H2.1.1.2 Determining the feasibility of the solution H2.1.1.2.1 Is it worth solving? H2.1.1.2.2 Constraints H2.1.1.2.3 Budgetary H2.1.1.2.4 Operational H2.1.1.2.5 Technical H2.1.1.2.6 Scheduling H2.1.1.2.7 Possible alternatives H2.1.1.2.8 Social and ethical considerations H2.1.2 Design specifications H2.1.2.1 The developer’s perspective H2.1.2.1.1 Data types H2.1.2.1.2 Algorithms H2.1.2.1.3 Variables H2.1.2.2 The user’s perspective H2.1.3 Modelling H2.1.3.1 Representing a system using diagrams H2.1.3.1.1 IPO diagrams H2.1.3.1.2 Story boards H2.1.3.1.3 Data flow diagrams H2.1.3.1.4 Systems flowcharts H2.1.3.1.5 Screen designs H2.1.3.1.6 Consideration of use of a limited prototype H2.1.4 Communication issues H2.2 Planning and design (Chp 4) H2.2.1 Standard algorithms for searching and sorting H2.2.1.1 Standard logic used in software solutions H2.2.1.1.1 Finding max and min values in arrays H2.2.1.1.2 Processing strings H2.2.1.1.3 File processing H2.2.1.1.4 Linear search H2.2.1.1.5 Binary search H2.2.1.1.6 Bubble sort H2.2.1.1.7 Insertion sort H2.2.1.1.8 Selection sort H2.2.2 Custom-designed logic used in software solutions H2.2.2.1 Requirements H2.2.2.1.1 Identification of I.P.O. H2.2.2.1.2 Representation as an algorithm H2.2.2.1.3 Definition of required data structures H2.2.2.1.4 Use of data structures H2.2.2.1.5 Use of random numbers H2.2.2.1.6 Thorough Testing H2.2.3 Standard modules (library routines) used in software solutions H2.2.3.1 Requirements for generating or subsequent use H2.2.3.1.1 Identification of appropriate modules H2.2.3.1.2 Consideration of local and global variables H2.2.3.1.3 Appropriate use of parameters (arguments) H2.2.3.1.4 Appropriate testing using drivers H2.2.3.1.5 Thorough documentation H2.2.4 Customisation of existing software solutions H2.2.4.1 Identification of relevant products H2.2.4.2 Customisation H2.2.4.3 Cost Effectiveness H2.2.5 Documentation of the overall software solution H2.2.5.1 Tools for representing a complex software solution H2.2.5.1.1 Algorithm descriptions H2.2.5.1.2 System flowcharts H2.2.5.1.3 Structure diagrams H2.2.5.1.4 Data flow diagrams H2.2.5.1.5 Data dictionary H2.2.6 Selection of language to be used H2.2.6.1 Event-driven software H2.2.6.1.1 Driven by the user H2.2.6.1.2 Program logic H2.2.6.2 Sequential approach H2.2.6.2.1 Defined by the programmer H2.2.6.3 Relevant language features H2.2.6.4 Hardware ramifications H2.2.6.5 Graphical User Interface (GUI) H2.3 Implementation (Chp 5) H2.3.1 Interface design in software solutions H2.3.1.1 The Design of individual screens H2.3.1.1.1 Identification of data required H2.3.1.1.2 Current popular approaches H2.3.1.1.3 Design of help screens H2.3.1.1.4 Audience identification H2.3.1.1.5 Consistency in approach H2.3.2 Language syntax required for software solutions H2.3.2.1 Use of BNF, EBNF and railroad diagrams to describe the syntax of new statements in the chosen language H2.3.2.2 Commands H2.3.2.2.1 Multi-dimentional arrays H2.3.2.2.2 Arrays of records H2.3.2.2.3 Files (sequential and relative/random) H2.3.2.2.4 Random number generators H2.3.3 The role of the CPU in the operation of software H2.3.3.1 Machine code and CPU operation H2.3.3.1.1 Instrucation format H2.3.3.1.2 Use of registers and acumulators H2.3.3.1.3 Use of program counter and fetch-execute cycles H2.3.3.1.4 Addresses of called routines H2.3.3.1.5 Linking, including the use of DLL´s H2.3.4 Translation methods in software solutions H2.3.4.1 Different methods... H2.3.4.1.1 Compilation H2.3.4.1.2 Incremental compilation H2.3.4.1.3 Interpretation H2.3.4.2 The translation process H2.3.4.3 Advantages H2.3.5 Program development techniques in software solutions H2.3.6 Documentation of a software solution H2.3.7 Hardware environment to enable implementation of the software solution H2.3.8 Emerging technologies H2.4 Testing and evaluation (Chp 6) H2.4.1 Testing the software solution H2.4.1.1 Comparison of the solution with the original design specifications H2.4.1.2 Generating relevent test data for complex solutions H2.4.1.3 Levels of testing H2.4.1.3.1 Unit or module H2.4.1.3.2 Program H2.4.1.3.3 System H2.4.1.4 The use of live test data to test the complete solution H2.4.1.4.1 Larger file sizes H2.4.1.4.2 Mix of transaction types H2.4.1.4.3 Response times H2.4.1.4.4 Volume Data H2.4.1.4.5 Interfaces between modules H2.4.1.4.6 Comparison with program test data H2.4.1.5 Benchmarking H2.4.1.6 Quality Assurance H2.4.2 Reporting on the testing process H2.4.2.1 Documentation of the test data... H2.4.2.1 Documentation of the test data... H2.4.2.1.1 Use of CASE tools H2.5 Maintenance of software (Chp 7) H2.5.1 Modification of code to meet changed requirements H2.5.2 Documentation of changes H3 DEVELOPING A SOLUTION PACKAGE H3.1 Designing & developing (Chp 8) H3.1.1 Defining the problem H3.1.1.1 Identification of the problem H3.1.1.2 Idea Generation H3.1.1.3 Communication with others... H3.1.2 Understanding H3.1.3 Planning and design H3.2 Systems implementation (Chp 8) H3.2.1 Implementation H3.2.2 Maintenance H4 PROGRAMMING LANGUAGES (option) H4.1 Historical reasons (Chp 9) H4.1.1 A need for greater productivity H4.1.2 Recognition of repetitive standard programming tasks H4.1.3 A desire to solve different types of problems H4.1.4 The recognition of a range of different basic building blocks H4.1.5 Emerging technologies H4.2 Basic building blocks (Chp 9) H4.2.1 Variables and control structures H4.2.2 Functions H4.2.3 Facts and rules H4.2.4 Objects, with data and methods or operations H4.3 Progrmers’ productivity (Chp 9) H4.3.1 Speed of code generation H4.3.2 Approach to testing H4.3.3 Effect on maintenance H4.3.4 Efficiency of solution once coded H4.3.5 Learning curve H4.4 Paradigm concepts (Chp 9) H4.4.1 Logic paradigm H4.4.2 Object oriented programming H4.4.3 Functional H5 DEV´S VIEW OF H´WARE (option) H5.1 Representations of data (Chp 10) H5.1.1 Character representation H5.1.2 Integer representation H5.1.3 Representation of fractions H5.1.4 Binary arithmetic H5.2 Electronic circuits (Chp 10) H5.2.1 Logic Gates H5.2.2 Truth Tables H5.2.3 Circuit Design Steps H5.2.4 Special Circuits H5.3 Programming hardware (Chp 10) H5.3.1 Input data H5.3.2 Processing of data H5.3.3 Output data H5.3.4 Control systems H5.3.5 Printer operation H5.3.6 Specialist devices – input and output HSC Standards Package