Students are introduced to the widespread use of software in society and are asked to consider how the software originated and what issues needed to be considered during its development. One way in which students can achieve this is to reflect on a range of existing software applications.
This topic identifies social and ethical issues that arise in the development and use of software. Students should be made aware of these issues early in the course so that they can act in a socially responsible and ethical way throughout the course. Although these issues are taught specifically as part of this topic, they should also be reconsidered as each new topic is discussed. Thus, for example, interface design issues, duplication of code or ideas and language used in documentation should all be considered again at relevant parts in the course.
Text taken from Software Design and Development, 2009 NESA. The full syllabus can be found on NESA's website for SDD.Sections:
Intellectual property: intangible property that is the result of creativity (patents, copyrights, etc.)
Plagiarism: imitating someone else’s ideas which leads to a violation and infringement of a copyright
Copyright laws: legal right to produce a literary, dramatic, musical or artistic work, now extended to include software
License: formal permission from the owner to use their product. They are generally non-exclusive meaning they can be licensed by multiple users
Agreement : a contract or mutual agreement between parties
Term: the period of time agreement is active
Warranty: an assurance or guarantee regarding the product.
Limited use: limit restrictions on a buyers use of the product limited to one device
Liability: an obligation or debt as a consequence.
Program: computer software including executable files and ate files
Reverse engineering: the process of decompiling a product.
Backup Copy: a copy of software for archival purposes used when the original product fails. When the legal agreement is terminated or the software is resold, then the backup copies must be deleted
Licensing issues: signed agreement between the manufacturer and purchaser of software that gives purchaser the right to use the software
License conditions: include fair use of the software, the limitations of liability, warranties and disclaimers and protections if the software or its use infringes on the intellectual property rights of others
Shareware: software that is free of charge, but manufacturer expects contributions to be made
Public domain: software that is available to everyone because the copyright holder removed all rights to the software.
Open source: specifically remove any traditional copyrights and source code is developed collaboratively that is still able to be modified
Ownership versus licensing: ownership is about the developer who created something, whilst licensing is about the purchaser retaining something that the owner has created
Collaboratively developed software: software applications that have been developed by a team of developers who can be from different places and don’t have to physically together to work on it
Reverse engineering: process of decompiling the project but most agreements do not allow this in order to protect the developer’s intellectual property rights
Decompilation: translating machine executable code into a higher-level code, allowing the program’s design to be more easily understood
Digital Rights Management (DRM): systematic approach to copyright protection for digital media in order to prevent unauthorized redistribution of digital media and restrict the ways consumers can copy content they've purchased
1. How have computer networks made software development easier?
a. Access to resources
■ Before computer networks where a thing, people needed to read manuals to understand the code, and these manuals where textbooks.
■ Now the manuals are online, and can be accessed by others in case you needed help from them, these may include websites such as, stack overflow.
■ Resources can be easily accessed and shared through the internet, which can be accessed by anyone with a device and connection.
b. Ease of communication
Communication is now world wide.
Before it took people many weeks to months to receive messages from other people, because it was sent by mail.
Now with the improvements of technology, people can receive and read messages within seconds, due to messaging systems such as Skype, iMessage, Text messages etc.
There is no need for people to be in the same room to chat face to face, now people can have video chats on applications such as Skype, FaceTime etc.
c. Productivity
The cloud is an example of a computer networking application that allows for better and efficient productivity.
Computer networking has increased productivity rates because now many people can be working on the same task at the same time, such as on a shared document.
2. How has network-based software enhanced user experiences?
a. Response times
Users no longer need to wait 10 minutes just to turn on a computer and search something up, nowadays response times in network based software is faster, you can turn your computer on and search something up in less than 2 minutes.
b. Interface design
Now interface designs are more attractive and interesting, such as websites for instance, websites before had blocky characters, simple colours and a simple design, now websites have multiple different types of fonts, more variety and shades of colours and more sophisticated designs.
c. Privacy and security
Privacy and security have changed now, now people are given more privacy and security options, such as having a security over their private information, so that no one else can have access to the information without the person's permission, people with high authority can also access information if it is very, very necessary, such as for a criminal case.
3. Consider Microsoft or Google’s position in the software market. Both companies command large shares of the software of data markets.
a. How does each maintain market position (ie: how does each company maintain their share of the market)
Microsoft have 4 smaller parts of their business that helps them control the market share, these include the Xbox, Office 365, Internet explorer, and their devices. Microsoft links all these together so that the users are linked to these and will be less likely to use other applications.
Google has applications such as Google Chrome, which is a search engine application, they also have Gmail, which they give to their users to use for free in exchange for their data to sell to third-party companies.
Google's parent company, Alphabet, has many interests across most interent services. Click here for a very brief pictorial overview of Alphabet's companies
b. Relate implications of each company’s dominance of software and data markets (respectively)
Microsoft has control over the utility applications such as, Microsoft Excel, Word, PowerPoint and so on. Microsoft’s ‘Windows’ is also the world's most used OS.
Google is the world's most used search engine. This is, in part, due to them having Google as the default browser in Chrome adn Chrome is the most popular web browser in the world.
c. How do these companies' dominance impact new developers with new products?
These companies' dominance impact new developers because new developers will not be able to get a good share in the market, and the new company will not get many users because many people are already using Microsoft and Google.
Acknowledging the intellectual properties of others
Producing quality software solutions
Responding to user-identified problems
Adhering to Code of Conduct
Generation and transmission of malware
Insuring inclusivity issues are addressed
Ensuring the individuals’ privacy is not compromised
Communication
Crucial for team work & group projects
Interaction between manager / employers
Helps when you’re needed to consider end user
Teamwork
Important for collaboration
Lack of teamwork = Poor-quality product
Gaining Feedback & advice
Creativity
Software design calls for innovative ideas
Thinking outside of the box
Complex projects can be tackled through unique ways
Technological skills
Always good to have a solid understanding in relevant areas
For also gaining understanding of the ways your team-members work
Aids in breaking things down
Problem solving
Software is based on resolving problems
Issues can arise anywhere during the making of a program
One issue is made up of an array of smaller ones
Attention to Detail
Locating mistakes/errors
Making an overall better project
Data entries
Finding glitches