Developing a Solution Package

Designing and Developing a Software Solution to a Complex Problem

 Defining the Problem

 Understanding

 Planning and Design

 Systems Implementation

 Implementation

 Maintenance

Designing and Developing a Software Solution

Defining the Problem

 For software to be useful, it must meet a need.

 The idea should be interesting and manageable.

 Types of data structures used . arrays, array of records and files.

 A user or customer is often involved and must be regularly consulted to ensure the developed system is meeting their needs.

 A user requirements list will be part of documentation.

Understanding

 The interface is the first point of contact between a user and the program. A good user interface will make the program easy to use.

 Diagrams are used to demonstrate the interface of the program as well as clarify the logic of the system.

 The software developer must specify the input and output data so it can be matched to an appropriate data structure.

 Use of intrinsic documentation

 Data flow diagrams could be used to indicate the movement of data in the program.

 Data dictionaries are used to indicate data types and data structures.

 A Gantt Chart graphically shows the proposed ties for project development. Tasks are listed on the left-hand side of the chart and the time frame expected to complete each task is indicated in the diagram.

 Logbooks allow software developers to monitor their progress through a task. The programmer will record any work carried out on a project to ensure each stage of development is clearly documented. A log book entry would contain the date, the task that was attempted, progress that was made and a description of any actions which result from the work completed.

 Developers must also try to ensure the program they develop is reliable and appropriate for the target audience.

Planning and Design

Interface Design

 Screen design principles of consistency, legibility, balance and ergonomic factors.

 Use of a default Menu system to allow familiarity with the program.

Software and Hardware

 The software environment includes the operating system on which the program will run,as well as the programming language to be used to implement the program.

 Specifications of equipment including computer type, input and output devices andstorage requirements. Details of RAM and VRAM.

Data

 The type of data must be determined. This data may be in the form of input, output andstorage, or data structures and data used in processing.

 A data dictionary is used to describe all data items used. This includes simple data types,data structures and data which is passed between functions.

 Validation is making sure that the available data is appropriate and usable for a givensystem. Error trapping. Range check. Limitations of hardware. Preprocessing.

 Test data is input which is used to ensure the correctness of an algorithm or program. Thisis when algorithms are constructed and when inputs, processing and output are examinedin detail.

Definition of Files

 The most common file format is a text file or file of characters. A file of any data type,and files of most data structures can be created.

 May file formats use special control characters of delimiters to separate records in a file.

Algorithm Design

 The algorithms developed should show the main flow of the program and thesubprograms. A clear algorithm enables the programmer to develop and test individualmodules of code.

 It is important to document any libraries of code which have been incorporated into aprogram.

Issues

 Feedback from potential users of the system ensure that the final program will beappropriate.

 Ease of use . the solution should be easy to use and accessible.

 Bias . programs should not exhibit any bias towards particular groups of people.

 Accessibility of Language . error messages and documentation included with theprogram should avoid the use of technical jargon.

 Copyright . all sources for program modules and features not developed by theprogrammer should be documented, and permission sought from the owner whereapplicable.

 Ergonomics . this is especially important in screen design.

 As requirements change due to feedback from users or new ideas, it is important toincorporate these changes in to the documentation. This ensures that new ideas anddecisions to modify original plans are not lost, but are acted upon.

Systems Implementation

Implementation

 Data items should be added to the data dictionary to ensure that all data items arerecorded on project completion.

 Pre-developed modules of code may be incorporated into a program during theimplementation phase.

 During implementation, it is important to generate internal documentation.

 The algorithm developed during the design stage is used to develop the program.s sourcecode. There should be a close correlation between the algorithm developed and the finalprogram.

 Online help provides access to help while the user is using the program. Online help isaccessed through the use of a menu or a control key sequence.

 Each stage of the project will require formal acceptance testing before implementation

 Each task carried out in the development of a software product should be tested to ensurethat each module of code functions as required.

 To develop an effective solution to a problem, the software developer must be

accountable.

 A Gantt Chart and a logbook will enhance the communication between group membersand will provide time frames for system development.

 The Gantt Chart developed during the design stage should be a guide for implementation.

 Using a logbook will simplify the development for technical documentation and providemaintenance programmers with a description of how tasks have been carried out.

 Use of Alpha and Beta testing.

 Formal documentation should be generated during all stages of program development

 User documentation includes

 A user manual in which topics are presented in order of difficulty

 A reference manual which lists available commands in alphabetical order

 An installation guide providing instructions on the hardware specifications andinstallation process.

 A tutorial to guide new users through various features of the program.

 Consideration must be given to the method of software distribution and the type ofsoftware licence accompanying the program.

 Program testing will ensure that all of the working modules of the program have beenintegrated correctly to provide a working program. Systems testing involves testing theprogram on a variety of operating systems and configurations of computers to ensure it isstable.

Maintenance

 Technical documentation includes:

 Design specifications

 Logbook

 Self-documentation of the code

 Documentation is used during maintenance to aid in the process of removing bugs fromthe program and to simplify the process of altering the program to meet changedrequirements.

 Documentation included with the final program should identify areas of possibledevelopment and improvement. The documentation should also describe any limitationsto the current program.