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.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related download
- it policies and procedures manual template
- microsoft word revised5th grade standards
- software design and development study notes
- reusable software components
- design day booklet team template
- module 3 open source software jon camfield
- ieee software requirements specification template
- dj x11 clone utility control software downloads