SDD Trial Paper Notes Flashcards
Describe the impact of innapropriate data structures.
Early computers had limited ram and memory. To cut memory usage of dates in half, programmers developed their software to store this information as two-digit integers. This caused many crashes and miscalculations when the year 2000 came creating chaos for government organisations, banks and businesses dependent on such software.
Describe the impact of computer malware.
Malware is software designed to damage or perform unwanted action on computer systems. Security measures include anti-virus, anti-malware and anti-spyware products. The three main types are:
o Viruses – replicate and spread upon execution of seemingly legitimate software.
o Trojan horses – pose as legitimate software and cause damage once executed. Used to spread malware to provide access to another user.
o Spyware gains the user’s information and provides it to another party.
Describe the impact of reliance on software
The software development industry has the responsibility to ensure all produced systems are reliable and perform their functions accurately since so many sectors of society rely on them.
Describe the impact of social networking
Online virtual communities where thoughts and activities can be shared with peers. There are concerns of privacy due to the high level of information sharing as well as bullying.
Describe the impact of cyber safety
Cyber safety is about minimising the risk of cyber dangers. Security software and firewalls attempt to protect users but self protection is still necessary. A government initiative (cybersmart.gov) informs users about cyber safe practices in areas such as cyberbullying, identity theft and online purchasing.
Describe the impact of huge amounts of information available through the internet
The internet is largely unregulated. Massive amounts of information are available often without a stated author. This leads to concerns regarding the credibility of information. Users should ask questions such as who the author is, if the information is up to date and if the information is unbiased before trusting it.
What are the the rights and responsibilities of software developers.
• acknowledging the intellectual property of others
Developers need to acknowledge all contributors to a software and ensure that they’re fairly compensated. This includes the team of developers, the developer of the coding language used, any third parties through which images or libraries of code were sourced.
• producing quality software solutions
Quality assurance is used to ensure a standard of quality is met by software developers. This can be hard to achieve due to time and finance constraints. High quality products meet the customers expectations. Quality involves reliability, efficiency, integrity, flexibility, e.t.c. External factors such as hardware, operating systems, other software and run-time errors can affect quality. Compatibility must therefore be tested and error checking must be included.
• appropriately responding to user-identified problems
Systems should be put in place to deal with user-identified problems such as support departments and severity classifications.
• adhering to code of conduct
A code of conduct is a set of standards by which software developers agree to abide. These standards increase the quality of developed software across the industry.
• neither generating nor transmitting malware
Developers have a responsibility to not create malware and regularly check their software for malware. Users have a right to malware free software.
• addressing ergonomic issues in software design
Developing user interfaces that minimise strain and reduce the risk of injury. User’s work routine and conditions must be taken into account. Features to consider include consistency of elements, colours and fonts. User testing is used to evaluate the ergonomics of a software.
• ensuring software addresses inclusivity issues
Responsibility to ensure that software is accessible to anyone regardless of differences such as cultural differences, gender and disabilities.
• ensuring individuals’ privacy is not compromised
Users have the right to know if their information is being held. Users are protected under the Privacy Act 1988.
What are the concepts associated with software piracy and copyright and describe the different software licenses
intellectual property is personal ownership of the creative ideas that develop from an individuals mind or intellect. This includes patents and trademarks.
Plagiarism is appropriating or imitating someone’s ideas and manner of expressing them and claiming them as your own.
copyright laws give the owner the sole right to reproduce their own work. This is covered under the Copyright Amendment Act 2017. Copyright laws provide economic incentives for creative activity.
licensing issues
licence conditions protect developer’s ownership of software they create. They determine what can be done with a software and are enforced by law.
ownership versus licensing – Purchasing media that contains computer software doesn’t mean you own the software but rather that you own the rights to use the software under certain conditions outlined in your licence.
collaboratively developed software
Reverse engineering is the process of reading source code and translating it into an algorithm. This algorithm can then be modified and recoded in the same or another programming language. It is only legal if the software is owned by the developer carrying out the reverse engineering.
Decompilation is the process of translating machine code into code that can be more easily understood by a programmer.
How are networks used by developers developing software and users using netweork based software
• by the developer when developing software
access to resources – graphical assets, source code, third party libraries
ease of communication
productivity – due to ease of communication and access to resources.
• by the user when using network based software
response times – users will give up if response times are too long. Is affected by the external factor of server load
interface design – By providing a visual response even if no network response has been received yet, users are more likely to continue using the program.
privacy and security issues – Precautions must be taken to ensure sensitive data transferred across networks remains secure.
Describe the software market
• maintaining market position
Must consider product, place, price and promotion.
• the effect of dominant developers of software
Competitors with high brand visibility and market share.
• the impact of new developers of software and new products
New software breakthroughs are usually inventions of new thinking and therefore sell very well. New innovations will only sell well if they provide a huge advantage over existing products.
Descibe two software legal cases
Microsoft vs Apple: Microsoft released windows after Apple released Macintosh leading to a legal battle where Apple tried to prevent Microsoft from using similar GUI elements to theirs in windows. The case was resolved with a settlement allowing both companies to distribute their OS.
RACV vs Unisys: RACV was a motor vehicle insurer that contracted Unisys to design, supply and install a workflow management system to replace their paper-based system. Due to functionality and performance issues that Unisys failed to fix such as longer than expected document retrieval times, RACV took them to court for breach of contract and misleading and deceptive conduct. RACV was awarded approximately $3 million in damages.
How can CASE tools be used in system development
software version control: helps keep track of versions.
test data generation: tests correct operation of modules, evaluates performance, checks error messages and can allow the user to compare outputs.
production of documentation: Avoids delay in the production of documentation and can be used to create DFD’s structure diagrams and flow charts.
production of code
Describe the methods of installation of new or updated systems
direct cut over: involves the old system being completely removed and a new system being installed at the same time. Method is risky since data could be lost if the system fails and the old program would not be available to fall back on.
Parallel: Both systems are run for a period of time allowing for issues with the new system to be recognised before it is fully installed thus minimising the risk of data loss.
Phased: Involves gradually introducing parts of the new program and removing parts of the old program. Often used when the new program is still in development.
Pilot: New system is installed for a small number of users before being installed and used by all once deemed satisfactory. Allows for live testing of the program and allows the initial users of the program to become experts who can teach others.
Describe employment trends in software development
outsourcing: Outsource work to specialists if such skills aren’t available within the business. Can reduce cost and time and create higher quality results.
contract programmers: Employed temporarily to efficiently write specific software products using their expertise.
Describe the changing nature of the developing environment
changing nature of the environment in which developers work while creating software solutions: Using the internet and networks to collaborate effectively over distances.
Describe the changing nature of applications
Widgets are small pieces of software the run with another or as part of a bigger software application. E.g. weather widget. Apps refer to applications commonly found in mobile phones that can be downloaded through app stores. Applets are small programs such as notepad and paint which carry out very basic tasks. Cloud computing involves running processes through a web server or client machine and saving files in web-based accounts.
Describe the process of identifying the problem
Carried out by system analysts in which they identify requirements for the solution and objectives for meeting these requirements.
needs of the client
o functionality requirements: what the system will do and what it needs to achieve. Such requirements are usually features, properties and behaviors of the system.
o compatibility issues: compatibility with different OS, hardware such as graphics controllers, screen sizes and resolutions, browsers, e.t.c.
o performance issues: Performance in testing and real-world applications may be very different. Thorough and broad testing must therefore be used to identify memory management issues, refresh time lag, poor response times, e.t.c.
boundaries of the problem: Define the limits of the problem. Anything exterior to the system is said to be its environment and systems must connect with it’s environment through an interface.
What considerations need to be made before determining if an existing solution can be used
social and ethical considerations: May require users to acquire new skills. Older generation are more unwilling to accept technological innovations. Could result in less costs for businesses. Could also result in a loss of jobs for employees due to being replaced by technology. Copyright and privacy issues must also be considered.
customisation of existing software solutions: It can be a cost-effective strategy for providing added functionality to a software. Open-source software can be customised to add new features to meet specific user requirements.
cost effectiveness: Compare the cost of modifying existing solutions to developing a new product for which the latter will require considerations of hardware, software and personnel costs required for development.
licensing considerations
Describe design specifications and the developers and users perspective.
• specifications of the proposed system
This is the standard framework used by a developing team to outline a software’s behaviour, intended use and non-functional requirements (has to do with the appearance of the program).
• developer’s perspective in consideration of:
data types
data structures: Involves variables which represent locations of data within a computer system. Programmers must determine how variables are to be stored and accessed and must also provide intrinsic variable names to help programmers follow the logic of the program.
Algorithms: Use of pseudocode, flowcharts, a modular approach to coding.
• user’s perspective
interface design: design must be consistent and ergonomic.
social and ethical issues
relevance to the user’s environment and computer configuration: User’s existing computer environment will influence specifications. Software must be compatible with OS and hardware.
Describe design specifications and the developers and users perspective.
• specifications of the proposed system
This is the standard framework used by a developing team to outline a software’s behaviour, intended use and non-functional requirements (has to do with the appearance of the program).
• developer’s perspective in consideration of:
data types
data structures: Involves variables which represent locations of data within a computer system. Programmers must determine how variables are to be stored and accessed and must also provide intrinsic variable names to help programmers follow the logic of the program.
Algorithms: Use of pseudocode, flowcharts, a modular approach to coding.
• user’s perspective
interface design: design must be consistent and ergonomic.
social and ethical issues
relevance to the user’s environment and computer configuration: User’s existing computer environment will influence specifications. Software must be compatible with OS and hardware.
What are system modelling tools? Describe and list the different types of system modelling tools.
System modelling tools show the structure and functionality of a system. Acts as a guide for the developer.
o IPO diagrams: explains how inputs are transformed into outputs by processing.
o context diagrams: present an overview of the whole system by showing it as a single process with inputs and outputs. Shows data entering and information exiting the system without detailing the processes required.
o data flow diagrams (DFDs): Represents a system as several processes that form a single system. Shows the flow of data between processes.
o Storyboards: Shows the various interfaces in a system and the links between them.
o structure charts: Shows the sequence of processing by representing the separate modules in a system and their relationship in a top-down design.
o system flowcharts: represent the logic and movement of data between the system components including hardware, software and manual components.
o data dictionaries: comprehensively describe each data item in a system in terms of their names, size, data type, format, e.t.c.
What is pseudocode and flowcharts
Pseudocode uses English like statements with defined rules of structure and keywords
Flowcharts are a graphical representation of code.
What are the communication issues between client and developer
• the need to consult with the client
Conflicts can be avoided through good communication. Developers are familiar with the technical aspects of development and users are familiar with the operation of the current system and can provide useful feedback. Good communication empowers the user and acknowledges their knowledge and perspective.
• the need to incorporate the client’s perspective
Developer and user are equally important in the success of the project. The developer must accept the user’s expertise and use it to better understand the system. User perspective must be considered in design.
• the need for the developer to enable and consider feedback
Users should have the opportunity to provide feedback through formal channels such as regular meetings as well as informal channels when feedback can’t wait until the following meeting. System development will proceed well if constructive criticism and two-way communication is achieved.
• the need to involve and empower the client during the development process
Users are likely to experience resistance to change through new software that changes their workspace. By making them a part of the design process and giving them a sense of ownership of the product, developers can minimize this resistance. Giving users the ability to make decisions that will affect their work is empowering for them.
What is quality assurance?
• Explicitely defining criteria on which the quality of the product will be judged. Putting in place processes to the ensure quality criteria is met. Ongoing process of ensuring quality is met.
What is sequential and event driven software
Sequential involves screens that follow one after the other with minimum user input required. Data is acquired from outside the program. Event-driven involves data items being accessed from within the program and the user controlling the order of processing.
What is sequential and event driven software
Sequential involves screens that follow one after the other with minimum user input required. Data is acquired from outside the program. Event-driven involves data items being accessed from within the program and the user controlling the order of processing.
What is benchmarking?
Involves creating a set of tasks that can measure the speed with which a computer system will perform a task. Allows for comparison between different combinations of hardware and software.
How does the performance requirements of technology affect whetehr they should be used by developers.
Does the selected technology have the minimum hardware requirements to the run the software in regards to available RAM, minimum operating system, processor type and speed, e.t.c.
Describe EBNF and railroad diagrams
Railroad diagrams: Graphical method for representing the syntax of a programming language. Rectangles enclose non-terminal symbols. Circles enclose terminal symbols. Paths connect them and the diagram is read from left to right.
EBNF: Extended Backus-Naur Form. <> represent non-terminal elements (defined elements). | represents an alternative. {} represents elements optionally repeated. [] represents optional elements.
Compare and contrast compilation and interpretation?
compilation: High-level languages, or source code, can’t be directly understood by a processor. Instructions must first be converted into binary, that is, machine-executable code. Source code is machine independent since it can be used on several different processors. Machine code is very processor specific. One method for converting source code to machine code is compilation. Compilers take source code and produce a complete translated file. Compilation is CPU specific meaning the produced file can only be used on machines with the same CPU. Unwanted code such as comments are removed to improve efficiency. Each time a change is made, the whole program must be recompiled. Compilation is slower at testing for errors and all errors are reported at the end of the process.
Interpretation: Is slower at translating and produces less efficient object code as each line is translated as it is loaded into memory. Line by line translation and execution. Advantage of faster error detection as error feedback is provided as the error is found allowing for early detection of runtime errors. Users are required to have the interpreter on their computer.
What are the steps in the translation process
lexical analysis including token generation: Source code is broken up into lines of code and formatting and comments are removed. Elements from the source code are created into recognisable elements by using the rules set out by language syntax. These elements are then assigned tokens of one of two categories. Either elements defined by the source language such as reserve words or elements created by the programmer such as variables. Elements in the second category are sorted in a data dictionary for easy reference for the translator.
syntactical analysis including parsing: Arranges tokens in a sort of hierarchical structure called a parse tree. This allows the computer to understand the programs logic. Building a parse tree involves representing the relationship between tokens
Semantic analysis/type checking: Detects the data types within tokens and gives this information to the translator. It then detects incompatible operations between different data types.
code generation: converts tokens into machine executable code. It involves the generator traversing a parse tree and creating appropriate machine code when tokens form a machine command.
What are some good programming practices
a clear and uncluttered mainline: Software should be coded with a clear modular approach and the mainline should be clear and uncluttered so that it is easy to follow. This means that subroutines are coded and tested separately which is better for maintenance purposes.
one logical task per subroutine: The function of a subroutine should be specific and describable through its title alone.
use of stubs: Stubs are incomplete functions that have the same name and interface as the final form but are simpler. They usually only contain an output statement to indicate that the subroutine was called. Used in testing.
Writing for subsequent maintenance: Coding should be done in a way that makes future maintenance easier. This can involve clear internal documentation, intrinsic variable names and clear indentation within control structures.
version control: During coding, programmers should regularly save their work to prevent loss and allow for different versions of the program to exist. Version control allows developers to continue developing complete code by releasing updates through new versions. It also allows developers to fall back on previous versions.
regular backup: regular backup should be done on multiple device to prevent absolute loss.
recognition of relevant social and ethical issues: social and ethical issues to be considered include intellectual property, thorough testing and documentation for future developers and maintainers.