Software Design and Development Study Notes



Software Design and Development Study Notes

Development and Impact of software solutions

Social and Ethical Issues

Rights and Responsibilities

The Developers of Software solutions have many rights, which they own and owe towards the users of their software. These rights and responsibilities are:

➢ Authorship

• A developer has the rights to own the ideas and software that they develop

• The developer has a responsibility to protect their interests in the development of the software and the rights of the people who are involved in the development of the product

• The right of authorship is known as copyright

• Future developers must respect copyright issues if they wish to use new ideas or modules in their software.

• Copyright means that people cannot use any items in the product

➢ Reliability

• Reliability refers to the guarantee of the product to run as advertised and according to the manual for a certain period of time

• Under the reliability issues the software developer has the responsibility to provide service updates for any faults in original product for at least the duration of the warranty

• The software must be able to function with acceptable response time, and fail to crash or une

➢ Quality

• The software must fulfil software standards

• Quality ties in closely with reliability. The quality of the product must be satisfactory so that it is able to be reliable under general circumstances

• The software must be consistent within the program and compared to other programs performing similar function. It must also be consistent with the typical design interface of the operating system on which the program runs

• The program must have quality documentation available to the user. The quality of the documentation is defined by how well it helps the user perform the basic tasks of the program. How the documentation deals with common troubleshooting problems. Finally how easy the user manual is to understand relative to the experience of the users of the program

➢ Response to problems

• The developer has the responsibility to provide adequate response to problems users of the software encounter

• They must attempt to rectify all security issues especially in software accessing the internet or running over a network

• Developers must implement problems identified in the program as quickly as possible

➢ Code of Conduct

• The developer has the responsibility to make sure that all aspects of their software cohere to all legal issues such as intellectual property and copyright

• They must acknowledge all people who contributed to the production of their software

• Adhere to privacy laws and rights

• Use of appropriate prompts and language used in both internal and external documentation such that it is not racist, offensive or in any way degrades any persons of society, especially the users of the software

➢ Viruses

• Developers must make sure that their software does not pose any problems to the functioning of their computer. The software must not carry any viruses

• Developers must ensure that viruses cannot be spread or created by the use of their software

Piracy and copyright

Software piracy is the theft of computer programs from the developers. Such piracy can include the illegal installation of files on one machine or a group of machines that is outside the terms of the license agreement of the software. It is also the illegal sale and distribution of copyrighted software. Either of these actions results in an increase in the price of the product for ethical users of the software as the company is not receiving the profits necessary to develop the software further. Two aspects of piracy are intellectual property and plagiarism

➢ Intellectual property - is the personal ownership of the creative ideas that develop from an individual’s mind or intellect. Types of property include patents, trademarks, designs and confidential business information. However in today’s computer world determining intellectual property is a hard task as many people will create software based on specific ideas. This is why copyright and plagiarism laws have been put in place to protect this intellectual copyright

➢ Plagiarism – is the theft of the ideas and expressions of another person. Often this includes the steeling of code and design in programs. To prevent plagiarism and protect intellectual property license agreements and copyright laws have come of place as outlined below

License Agreements

Licence agreements give the user different rights according to the conditions of the use and purchase of the software. The three main types of agreements are shareware, freeware and public domain software

➢ Freeware – gives the user complete access to the program without having to pay any money. However any of the code cannot be copied or modified. However the program can be freely distributed

➢ Shareware – is distributed software for trial purposes before purchase. It can be freely distributed, but after the trial period is up the person user must pay an amount of money – generally less than the cost of commercial products directly to the developer. The code again cannot be copied or modified

➢ Public domain software – are any programs that are freely available for copying and modification. Such software comes about because the owner has forfeited copyright or has been dead for over 50 years. Such software are good tools for new developers.

Networks be coming increasing common so many programs have evolved to encompass network use. This is done is one of two ways. The program either has centralised software where a single copy is run from a central computer. The software license then needs to cover the each machine that uses the software. The second method is distributed software where each computer has a copy of the program on the machine but runs the program from a central database of information.

EULA – End User License Agreements are used to prevent the illegal re-distribution of software. There are three types of EULA agreements.

➢ Single Use licences – allow the purchaser to install one copy of the software on one computer only

➢ Multi-use licences – provide one copy of the software to be distributed on a specified number of machines

➢ Network licences – provide the use of the software across a network with a specific number of computers

Copyright

Copyright is the legal protection of computer programs against illegal plagiarism or piracy. It provides the developer legal right to control the use of their product. The protection given by copyright does not usually protect the idea behind the program, but the way in which the idea is expressed. Current copyright laws allow the user to:

➢ Make or have backup copies of the original program in case the original software is damaged

➢ Use a copy of the program for research or study purposes. Ie look at the code and layout of the software to see how such programs interact. However the code cannot be modified, copied or changed

Reverse Engineering

Reverse engineering is the process of reading source code and translating it to an algorithm. Reverse engineering is only illegal if it has been carried out by a person who does not own the program and then redistributed the code in another language or different format.

National/International views to piracy and copyright

There are many current day events that effect the issues of piracy and copyright. Some examples are highlighted below:

➢ In Indonesia in 2005 to prevent the use of pirated software which was a major problem. To overcome this issues Microsoft charged people in Indonesia about $1.50AU to legally own the software and reduce the rates of piracy in the country.

Application of software development approaches

There are four different types of approaches to software development. The four different types are Structured, Prototyping, Rapid Application (RAD) and End User (EUD). Below is a summary table of the of each types of approach

|Approach |Advantages |Disadvantages |

|Structured |Thoroughly tested |Costly |

| |Should meet the exact requirements of users |Time consuming |

| |Uses a range of experts |Required a wide range of different people with different skills |

|Prototyping |Relatively fast development |Many be difficult to implement as a full working program |

| |Models a larger project, thus allows easier modification and | |

| |visualisation of the end product | |

|RAD |Fast development (RAD) |Many not meet exact program requirements |

| |Relatively cheap |Many involve copyright and intellectual property of others. |

| |Uses considerable amount of existing reusable code |(Developers must be careful not to break laws) |

|End-user |Should meet exact user requirements |Limited to simple project and limitations of application |

| |Quick and cheap |programs |

Structured Approach

The structured approach follows the software development cycle. It considers the program on a whole and takes logical steps to arrive at the end product. The process is time consuming and costly and necessary and suitable to tackle a large program.

Because the process is long a complex often a team of people is required to tackle the problem. Some of the people include: system analyst, designers including software engineers, programmers, graphic designers and consultants, managers, trainers and users. The software analyst is the person who is generally given control of the management of the project and is the first level of communication between the management and development team.

In development the structured approach follows the development cycle as on the right. Each step is explained in more detail below:

Phase 1: Defining the problem

This step is used to help the team thoroughly understand and define the problem itself. If the problem is not properly understood the program may end up solving a different problem than the one that needs to be solved. If this step is not properly sorted out, it will take considerable time and cost to fix the problem later on. Management is also completely involved in this process

Phase 2: Planning the solution

This step involves a further understanding of the needs and requirements of the end users. This step also looks at the choice and methods of how the problem will be solved. To get the needs of the end user four main tools are used: written documents, questionaries/surveys, interviews and observations.

Planning is a complex phase during which each of the following steps will be undertaken:

➢ Planning the data and program structures to be used

➢ Designing algorithms

➢ Planning the user interface

➢ Scheduling the project

➢ Choosing a programming language

The above will be looked at in more detail later on

Phase 3: Building the solution

This step requires the full involvement of the development team (analyst, designers, programmers, users and management). Each member must have a clear understanding of the goals and the overall plan for the project.

The solution to the large program is usually broken down into smaller modules. This process is called step-wise refinement. This makes the program much simpler to tackle. The reasons for refining the problem are:

➢ Greater efficiency as each module can be separately designed and tested

➢ All members of the team can be involved at the same time

➢ Modules can be separately testes and modified without affecting the entire project

➢ It is easier to debug if one module is tested at a single time

➢ Modules can be reused or modified and reused at some other similar point in the project or in other projects.

Phase 4: Checking the solution

Checking the solution is a continuos part of the cycle. This testing involves the program using real data and can include acceptance and beta testing. Acceptance testing involves users to test custom software. Beta testing is used in application software development with the potential users of the product. The point of all testing is to make sure the program meets the requirements of the originally defined program. After all testing has been done and errors fixed, the program will be passed to management who will approve and implement the program.

Phase 5: Modifying the solution

Often it is necessary to modify the program after it has been implemented so it works more efficiently, copes with improvements in hardware and software changes or expansions to cover more tasks. Changes at this stage can be very costly and are only undertaken is they are small or crucial to the operation of the program. Otherwise the analyst will suggest the cycle be started again and a new version of the program released.

Prototyping Approach

The prototyping approach involves building a working model of the program that is evaluated by the users. Usually the model is then modified and evaluated further, and may finally become the entire solution. The approach usually involves a small team of programmers and one or more users. Beta testing is often used by such an approach.

Prototyping is used for many reasons including quick development of the program, a clear view of product requirements, to allow trial-and-error testing for new concepts, for demonstration purposes or to use as a substitute for a more expensive program. This approach is also often used a the beginning or planning stages of the structured approach.

Two types of prototypes are used:

➢ Concept prototypes – are prototypes developed to gather information to be used in another program. The program is not intended for a full working program itself. 5GL languages are often used for this approach because they are more dynamic and allow better feedback.

➢ Evolutionary prototypes – are prototypes, which will later become full working programs. A model is produced and then later refined This approach is used is the planning stages do not provide enough information on the requirements of the program.

Some aspects to note in this approach are that the emphasis of the program is on the menus, windows, input and output processes. Little security or error recovery is considered. There is also reduced documentation compared to the structured approach, which leads to harder maintenance of the system.

RAD approach

The RAD approach is any method of software design that uses tools to quickly generate a program for a user. The approach uses existing solutions or code, CASE tools and templates. RAD also lacks formal programming stages.

This approach involves a very small team, low budget and minimal time on small-scale projects. It is taken across a range of coding languages.

End user development approach

EUD is where the user adapts existing software tools to suit their needs or to obtain a solution to a problem, which they have. This is an informal program production usually written in 4GL languages. Programs usually written include adding menus to applications for additional functions or repetitive actions, or adding macros to larger programs. One disadvantage is that end users often duplicate the same tasks.

Methods of Implementation

There are many ways in which a new software solution can be implemented. These methods are:

Direct – the new software takes over from the old software solution from a particular date onwards

|OLD |NEW |

Phased – the new software solution is gradually introduced into the environment one step or item at a time while the old system is gradually phased out

|OLD |OLD |OLD |NEW |

|OLD |OLD |NEW |NEW |

|OLD |NEW |NEW |NEW |

Parallel – both new and old systems run at the same time. This is helpful in many ways. If the new system has an error or flaw this can be picked up while the old system is still running, therefore data is not lost. It can also see if the new software solution is appropriate for the environment in which it is running. If the new system is then to be used, the old system is directly removed and the new system takes over, vice versa if the new system does not function properly or does not meet the needs of the user

|OLD |NEW |

|NEW | |

Pilot – a complete section of the environment or organisation is directly converted to the new system to see if the new system works in the organisation. If the new system is appropriate then the entire organisation is converted to the new system

|OLD |OLD |NEW |NEW |

|OLD |NEW |NEW |NEW |

Current Trends in software development

Outsourcing

Outsourcing is the process whereby a company needing software services hires an outside organization to handle all or part of these services. The range of activities performed includes regular maintenance of systems, modifying or installing programs etc. Contracts can range from 1 to 10 years.

The reasons for outsourcing include:

➢ New technology is readily available

➢ Development time is faster

➢ Gaining experts in the field

➢ Cheaper

➢ Higher quality results

➢ Resources not available internally

➢ Better response to change

The advantages of outsourcing include saving of money on as a result of lower staff numbers and effective use of scarce technological assets. Disadvantages include the difficulty in breaking unsatisfactory contracts; the outsourced company may not understand the ethos of the organization, and the organization can loss control of the system and be unable to fix any minor problems.

Popular approaches

➢ Increased ability for EUD

➢ Editors and compilers for ‘non-programmers’ to generate simple programs and websites

➢ Greater distribution of code libraries

➢ Use of hypermedia – the use of multimedia in which a user can browse a program at their whim

Popular languages

➢ 3GL-5GL languages

➢ BASIC/QB/VB

➢ C/C++

➢ Prolog

➢ SQL

➢ Java

➢ Cobol

Employment trends

Employment in the software development field has been increasing over the last few years since the .com crash. This comes about due to the increase of the use in computer technology in many other areas, rather than just the creation of computers. Science and medical fields are increasingly requiring processor technology, increasing the number of jobs available.

The jobs available also have changed where many programmers work on short contracts with companies, or as consultants. More skilled jobs, and management positions are looking for higher education graduates, simply for the training and skills they have.

Networking

Networks in work places are becoming increasingly abundant, so software developers have developed ways to cope which such systems. These include the development of operating systems specifically run networks or have the inbuilt capability to provide small networks with adequate security. Also application software has been developed to cope with networks and the use of many peripheral devices.

Customised off-the-shelf packages

These types of products are becoming more readily available, and are often offered as suites of packages with integration with each other to perform a wide range of tasks. These types of software are often more reliable (being tested in a wide area of applications), reduce costs for the end user, can be available earlier and more easily updated that custom software produced for the company.

The use of CASE tools in software development

CASE Tool stands for (Computer-Assisted Software Engineering). These tools are designed to aid the software developers in the design of their applications and Hardware

The purposes of CASE Tools are:

• Problem-tracking tools

• Data modelling

• Document generation for the creation of user manuals, installation instructions and troubleshooting issues

• Reverse engineering tools to convert existing code into algorithms

• Tools for structured analysis of design and scripts

• Simulation tools such as those tools that allow prototypes to be built

• Help the maintenance team to improve bugs and issues within existing programs. These include the use of

▪ Simulators

▪ Debuggers

▪ Test drivers

▪ Instrumentation

CASE Tools allow and provide the following

• Show the relationship between global variables and various parts of the program

• Identified problems within the program

• Support for design specifications including the preparation of documents and their diagram tic forms

• Produces uniform design across a program

• Support for software design

Support for design implementation including language-specific editors that provide some support for the coding phase etc…

The Software Development Cycle

Defining and Understanding the problem

The software development cycles first step is to define the problem that the software needs to be solved. This stage of the cycle involves being able to understand the software being developed such that the end product is:

• Dependable: the program should be reliable, secure and safe

• Efficient: the program should not waste resources, such as memory

• Usability: the program should be straight forward for the program to use

• Robustness: the program should not fail under normal circumstances of use or by minor errors made by users

• Maintainability: the program should be able to evolve to suit the users changing needs

The defining and understanding the problem stage involves looking at multiple issues involved with the program including the needs, screen design, objectives, boundaries, determining feasibility and social and ethical issues.

Needs

A need is anything that is a necessity for the program. This can include output being shown as two decimal places, or the requirements of the user to operate the program for extended periods without suffering strain or injury. They are different to Preferences of the user, which are elements of the program that the user would rather work with. Needs are based around the health and safety of the computer user and are essential to the operation of the program

Screen Design

Aspects of screen design include the layout of the screen including fields, button and menu layout. Colour design and aesthetics are also an important issue. Other aspects of screen design are appropriate and concise messages providing useful feedback for the user that does not use technical language beyond the capabilities of the user. The message should also not blame the user for the error. Also appropriate icons and images for shortcut menus or actions should match the outcome of the programming

Objectives

The objectives of the program are the aims and outcomes, which the program must achieve. All objectives should meet the needs of the user. Objectives must

• Meet social and ethical issues

• Use appropriate methods of information display

• Providing adequate input and output methods

• Use of relevant data types for information display

• Providing clear and understandable methods of navigation between screens

Boundaries

The boundaries are the limits or borders in which the program can operate. The borders are determined by what is feasible for the program and what the needs of the users are. The boundaries of the program are also determined by the hardware restrictions the program needs to run on. For example if the program runs over a network. On home computers or on high powered operating systems

Feasibility

Feasibility determines whether the problem is worth solving and whether a software solution can be adequately developed and fit into the above criteria. There are two issues that must be considered. Can the program actually be developed, and is it worth proceeding with the program depending on the requirements of creating it. The specific issues in feasibility are:

• Constraints – these are any restrictions or limitations placed on the production of the software such as money and time

• Budgetary feasibility – this determines wether or not the program can be designed, built and put into practice within the budgetary constraints of the project

• Operational feasibility – this refers to the skills and resources needed to create the program and maintain it. If the program requires a greater range of skills and resources than can be gathered, the program cannot be built. This skills and resources also refer to those of the user. This asks whether the user has the skills, time, money and resources to firstly run the program, and then maintain it.

• Technical feasibility – the availability of hardware and software for the product. Can the program run on the software that the intended users have without having major problems

• Scheduling feasibility – refers to the time constraints of the development of the program. This is determined by when the program must be released, or depending on how much money the project has, the cost of employing the programmers, installations and other aspects may constrain how long these people can be employed for, and therefore how long the program can have for it to be constructed

• Possible alternatives – this looks at the other options available to solve the problem. This could help in the saving of time, money and effort to make the development of the program easier and quicker. However, each of the other available options must be studied and advantages and disadvantages, to determine whether this program is a better choice than the one currently being studied

While all of these are areas of feasibility, there are four main areas of feasibility. These areas are Budgetary, Operational, Technical and Scheduling feasibility

Social and Ethical issues

Social and ethical issues must be taken into consideration. All the issues should be considered, but the following two should be especially considered in the when defining and understanding the program.

• Lifestyle – how the program effects the lifestyle of the end user. If the program drastically alters the lifestyle of the user and their interactions with the world in a way that they do not want, then the program may not be useful. The advantages of the program must outweigh the disadvantages of the program on the impact of the end user’s lifestyle.

• Work – how the computer program impacts the work and working opportunities of the end user. As a results of program, jobs are lost through the automation of tasks, but other jobs are created as people are required to use and maintain the new software solutions. Programs can mean that through e-mail the work of a user can be taken with them everywhere, and the entire world is always connected.

The major concern with all the program software in reference to the above two categories is whether the actions and effects on both the lifestyle and work of the end user is unethical. Programs that are written to destroy the jobs of people or create havoc in the home and office are unethical. In a moral sense the issue of cutting jobs by releasing new software must also be considered.

Design Specifications

Design specifications involve that data types, data structures, the types of algorithms to be used, and other aspects of software design such as the physical representation of the programs over algorithm are needed to be considered when understanding and defining the program. See the Programming Elements notes for more information on this section.

Data types

There is a range of data types that include

|Data Type |Characteristics |Example/s |

|Integer |Positive or negative whole number |-23475 |

|Floating point |Real or decimal number |45.994 |

|Character |Any letter, number, command, punctuation or symbol |$^&* |

|String |Sequence of characters with a single identity |Hello World! |

|Boolean |Variable with one of two possible outputs |True or False |

Data structures

There are four types of data structures

|Data Structure |Characteristics |

|Array |Variables of the same type stored in sequential memory locations |

|Record |Set of related fields storing data of different types |

|Array of Records |Set of related records stored as one entity |

|File |Set of related data items of various types stored as one entity eg sequential files |

Algorithms

There are three types of algorithms that can be used:

➢ Sequence – a logical order of commands

➢ Selection – the carrying out of commands based of a choice

➢ Repetition (iteration) – the continual carrying out of commands until a criteria is met

Data validation

This involves the checking of data to see if it is the correct type and meets any restrictions imposed by the program. There are two types of checks:

➢ Reasonableness check – to check the input against the data type

➢ Range check – to check the input data against the boundaries of the data type. The makes sure no limitations of calculations, output etc. are exceeded

The user’s perspective

The important aspects to the user must be considered in the design specification. These include

➢ The appearance of the program and the ease of use – the user interface must be ‘user friendly’ containing drop down menus, clickable icons and keyboard shortcuts. The interface must be intuitive and have simple navigation

➢ The programs functionality – this refers to the programs ability to carry out the required tasks. This should be designed such that the tasks is carried out in the easiest and simplest way

➢ The programs scope – this refers to the boundaries of the program and the range of tasks carried out. The users would want to know if future needs and any maintenance requirements can be done so in an easy and convenient way.

Modelling

A system is a collection of interacting parts working together to achieve a particular task. Such aspects include, coding, hardware, procedures, raw data and personal. All these actions can be modelled in different ways

IPO (Input-Process-Output) Diagrams

Shows the connection between any input, the process to be carried and the output achieved

Story Boards

Shows the designs of the screen of the program and the link between them. They can be linear or non-linear

Data flow diagrams

These diagrams provide detail to the handling of data in the program. There are four symbols used and these are as follows

| |A Process | |An external entity |

| |Data flow | |Data Storage |

Context diagrams

| |A Process | |An external entity |

| |Data flow | | |

System Flowchart

Is a diagrammatic way of representing the flow of both data and logic through a system. This is the primary tool for documenting systems. There are many different symbols that can be used, but below are the main ones

| |Input/Output | |Manual Operation |

| |Paper Document | |Direct access storage device |

| |Online display | |Decision |

| |Online Input | |Telecommunications link |

| |Process | |Magnetic Tape Output |

Structured diagrams

This models the hierarchy and sequence of processes to be carried out

[pic]

Communication Issues

The need to empower the user

The user needs to be consulted on a regular basis so that the user feels ‘in control’ of the software development. Ideas from the user should be included in the software, or where ideas have been left out, reasoning for this should be explained to the user. Further users should be provided with a choice of functional option within the final product. Satisfaction with the end design is decided by the user.

The need to acknowledge the user’s perspective

The user does not need to know the technical information about the software, however they will be the ones using the software. Therefore specific requirements set by the users that will make the program function better for them should be taken into consideration

Enabling and accepting feedback

Feedback should be encouraged, as it is cheaper and easier to solve problems early on in the development cycle. Prototypes are effective ways of noting user reaction and help clarify development needs.

Planning and design of software solutions

Processing strings

Extraction of data from a string

This process removes a string or set of characters from a string to use in another. This is equivalent to the copy command. The original characters are left in the string

BEGIN ExtractString(start, length, data)

Temp() is an empty array

Index = Start

Characters = 0

WHILE Characters < Length

Temp(Characters) = Data(index)

Increment index

Increment Characters

END WHILE

Data = temp

END ExtractString

Insertion of data into a string

This is the process of placing strings or characters into a string. This is equivalent to the paste command, where the characters are inserted into the correct position in the existing string. This process often involved multiple steps

BEGIN InsertString

Last = number of items in array – 1

Start = index of location where strings are to be inserted

ExtractString2(start, last)

InsertNew

ReplaceString

END

BEGIN ExtractString2(Start, last)

Index = start

Counter = 0

WHILE index ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download