System Fundamentals
System Fundamentals are essential when learning the basics of computer science.
Learning system fundamentals teach you how software and hardware interact within a computer system, how the systems are created, and how computer systems are planned within an organization.
This knowledge is fundamental to understanding how computers work and essential for understanding broader concepts in computer science.
Before designing a system, you must understand the purpose and the needs of the system and check for various factors.
Just like how you would check out the room before buying furniture, but here you need to check the computer’s needs and not the room’s needs.
Always try asking these questions if you are stuck:
Where
When
How
What
Who
Why
Implementing a new system requires a lot of analysis and managing that system requires adaption. Here are a few changes you need to keep in mind while managing a system:
Communicating the reasons for the change.
Addressing user concerns and providing support.
Training users on the new system.
Evaluating the success of the implementation.
There are two types of software: Local and Remote.
Local is when it's on a particular set of computers or a single computer that u can access physically.
Remote is when it's somewhere on the internet, and you can use it via a browser or local application.
SaaS is a software distribution model that makes the software easy to access for customers over the Internet.
Examples include:
Office 385
Google Apps
AWS
Dropbox
When integrating new systems with existing systems, you can encounter multiple problems such as:
Software Differences:
Imagine trying to fit a puzzle piece from a different set – it simply won't work. Similarly, software from different companies or versions may not work together seamlessly.
Data Format Issues:
Think of translating languages: Data stored in one format might not be understandable to a system using a different format.
Varied Standards:
Different regions may have different conventions for dates, currencies, or character sets, potentially leading to confusion.
There are many ways to install a system, here are the 4 main ones:
Direct Changeover - The old system is stopped and a new system is created
Pros: Less time and effort
Cons: In case of a failure, there is no fallback
Parallel Running - Both old and new systems are kept running
Pros: the old system acts as a backup
Cons: Costly
Pilot Running - the new system is created and tested with a small subset before transferring the rest of the data
Pros: all features are fully tested
cons: no backup
Phased Conversion - the new system is gradually introduced as parts of the old system are replaced
Pros: allows people to get used to the new features
Cons: no fallback
Data migration is when a file or files are transferred from one computing environment to another.
Examples include:
putting a file on a USB and opening it on another computer
using databases to transfer information globally
While transferring data, many problems can arise such as:
Incompatible file formats - A piece of software can be outdated and won’t be compatible with a new version of software.
International conventions on dates, currency, and characters - Different countries use different languages, date formats, and currency so the data may be irrelevant based on the location
Incomplete transfers - due to connection issues or external interruptions data can sometimes stop transfer mid-way
Testing is very important in developing a computer system because it makes sure that the computer works without issues.
A system that has bugs can be problematic for the user.
The main things that need to be tested when making a computer system are:
Test Management: Planning, tracking, control.
Functionality Testing: Requirement verification.
Security Testing: Vulnerability identification.
User Experience Testing: Usability assessment.
Compatibility Testing: Cross-environment validation.
Performance and Load testing: speed, stability, and traffic handling capacity.
There are also many different types of testing:
Static Testing: testing without running any code
Dynamic Testing: testing with running code
Alpha Testing: internal testing by employees of a company
Beta Testing: external testing by users that are not working for the company
Automated Testing: use of special tools to automatically test the software while comparing it to other test results.
User documentation is any document or text that explains to the users how to use the specific functions of the problem or system.
User documentation is important because it gives you simple and clear instructions to use all the features that people may not be aware of.
There are many different types of user documentation:
Help files - files located on the system that give the user information about the system. Usually accessed by a button in the system
pros: accessible at any time with the click of a button
can only be used after the system has been installed, otherwise not useful
Online Support - Online web services by the system developer that assist users
pros: more extensive than help files
cons: useless if no internet
Printed manuals - printed manuals that provide the user with system
pros: can be read through by users before starting to work on creating a system or using software.
cons: can be easily lost and the info can be limited in info
User training is important to users because it helps the user familiarize themselves with the system or software.
There are three different methods of delivering user training:
Self Instruction -
users will learn how to use a system on their own using the materials they can find or already have accessible.
User training is important to users because it helps the user familiarize themselves with the system or software.
There are three different methods of delivering user training:
Self Instruction -
users will learn how to use a system on their own using the materials they can find or already have accessible.
Formal classes -
users are taught by a teacher/instructor who shows and explains to the students how to use the system
Remote training -
users connect with an instructor over a video call and learn how to use the system
Data loss is when the user loses the data and cannot retrieve it. There are many causes of data loss, but the most popular ones are:
Hardware/System malfunctions:
this happens when the system malfunctions and deletes the data. You can avoid this by always having backups
Human error:
this is a simple human mistake that causes users to lose data. You can avoid this by enabling autosave on software.
Software corruption:
this is when the software while performing a task, messes up and loses the data it was working with. Make sure to always have a backup
Malicious software (Viruses):
Viruses can hack into your devices and steal your data. Make sure to have strong passwords and always have backups and antiviruses.
Natural disasters:
Natural disasters can destroy data on local storage. Save it on the cloud so you can access it from anywhere.
There are many processes involved when releasing a new product.
In software development, a product release is done with extensive testing and then released in beta testing so that the developers can assist users with debugging and find other issues that need to be fixed.
An update is a file that contains fixes for problems that users are having.
You can get updates manually(download and install them yourself) or automatically (the company/developer auto downloads it onto your PC if you allow them to).
Patches are software update code that is directly inserted into the code by running a program.
A patch is typically a temporary fix, and they can fix a bug, install drivers, address security and stability issues, and upgrade software.
Release management
It is the process of planning, scheduling, and controlling the movement of releases to test and live environments, ensuring smooth deployment of software updates.
There are three types of release management:
Continuous delivery -
A software engineering approach where teams produce software in short cycles so that the user can reliably receive the software without bugs.
Agile Software development -
A software engineering approach that involves multiple engineers to develop solutions to problems.
DevOps -
A software engineering culture that unifies software development and software operation. DevOps aims at shorter dev cycles by using automation at all stages of the software construction.
Plan:
This initial stage involves gathering requirements, creating a timeline, and defining the scope of the project. I
Code:
Once the planning is complete, developers start writing code based on the requirements outlined.
Build:
In the build phase, the code is compiled and integrated to create the software application.
Test:
Testing is a critical phase where the software is evaluated for bugs, errors, and functionality issues.
Release:
After successful testing, the software is ready to be released to the users.
Deploy:
Deployment involves installing the software on the production servers or making it available for users to access.
Operate:
Once the software is deployed, it enters the operation phase where it is actively used by the end-users.
Monitor:
Monitoring is an ongoing process that involves tracking the performance of the software in real-time.
System Fundamentals are essential when learning the basics of computer science.
Learning system fundamentals teach you how software and hardware interact within a computer system, how the systems are created, and how computer systems are planned within an organization.
This knowledge is fundamental to understanding how computers work and essential for understanding broader concepts in computer science.
Before designing a system, you must understand the purpose and the needs of the system and check for various factors.
Just like how you would check out the room before buying furniture, but here you need to check the computer’s needs and not the room’s needs.
Always try asking these questions if you are stuck:
Where
When
How
What
Who
Why
Implementing a new system requires a lot of analysis and managing that system requires adaption. Here are a few changes you need to keep in mind while managing a system:
Communicating the reasons for the change.
Addressing user concerns and providing support.
Training users on the new system.
Evaluating the success of the implementation.
There are two types of software: Local and Remote.
Local is when it's on a particular set of computers or a single computer that u can access physically.
Remote is when it's somewhere on the internet, and you can use it via a browser or local application.
SaaS is a software distribution model that makes the software easy to access for customers over the Internet.
Examples include:
Office 385
Google Apps
AWS
Dropbox
When integrating new systems with existing systems, you can encounter multiple problems such as:
Software Differences:
Imagine trying to fit a puzzle piece from a different set – it simply won't work. Similarly, software from different companies or versions may not work together seamlessly.
Data Format Issues:
Think of translating languages: Data stored in one format might not be understandable to a system using a different format.
Varied Standards:
Different regions may have different conventions for dates, currencies, or character sets, potentially leading to confusion.
There are many ways to install a system, here are the 4 main ones:
Direct Changeover - The old system is stopped and a new system is created
Pros: Less time and effort
Cons: In case of a failure, there is no fallback
Parallel Running - Both old and new systems are kept running
Pros: the old system acts as a backup
Cons: Costly
Pilot Running - the new system is created and tested with a small subset before transferring the rest of the data
Pros: all features are fully tested
cons: no backup
Phased Conversion - the new system is gradually introduced as parts of the old system are replaced
Pros: allows people to get used to the new features
Cons: no fallback
Data migration is when a file or files are transferred from one computing environment to another.
Examples include:
putting a file on a USB and opening it on another computer
using databases to transfer information globally
While transferring data, many problems can arise such as:
Incompatible file formats - A piece of software can be outdated and won’t be compatible with a new version of software.
International conventions on dates, currency, and characters - Different countries use different languages, date formats, and currency so the data may be irrelevant based on the location
Incomplete transfers - due to connection issues or external interruptions data can sometimes stop transfer mid-way
Testing is very important in developing a computer system because it makes sure that the computer works without issues.
A system that has bugs can be problematic for the user.
The main things that need to be tested when making a computer system are:
Test Management: Planning, tracking, control.
Functionality Testing: Requirement verification.
Security Testing: Vulnerability identification.
User Experience Testing: Usability assessment.
Compatibility Testing: Cross-environment validation.
Performance and Load testing: speed, stability, and traffic handling capacity.
There are also many different types of testing:
Static Testing: testing without running any code
Dynamic Testing: testing with running code
Alpha Testing: internal testing by employees of a company
Beta Testing: external testing by users that are not working for the company
Automated Testing: use of special tools to automatically test the software while comparing it to other test results.
User documentation is any document or text that explains to the users how to use the specific functions of the problem or system.
User documentation is important because it gives you simple and clear instructions to use all the features that people may not be aware of.
There are many different types of user documentation:
Help files - files located on the system that give the user information about the system. Usually accessed by a button in the system
pros: accessible at any time with the click of a button
can only be used after the system has been installed, otherwise not useful
Online Support - Online web services by the system developer that assist users
pros: more extensive than help files
cons: useless if no internet
Printed manuals - printed manuals that provide the user with system
pros: can be read through by users before starting to work on creating a system or using software.
cons: can be easily lost and the info can be limited in info
User training is important to users because it helps the user familiarize themselves with the system or software.
There are three different methods of delivering user training:
Self Instruction -
users will learn how to use a system on their own using the materials they can find or already have accessible.
User training is important to users because it helps the user familiarize themselves with the system or software.
There are three different methods of delivering user training:
Self Instruction -
users will learn how to use a system on their own using the materials they can find or already have accessible.
Formal classes -
users are taught by a teacher/instructor who shows and explains to the students how to use the system
Remote training -
users connect with an instructor over a video call and learn how to use the system
Data loss is when the user loses the data and cannot retrieve it. There are many causes of data loss, but the most popular ones are:
Hardware/System malfunctions:
this happens when the system malfunctions and deletes the data. You can avoid this by always having backups
Human error:
this is a simple human mistake that causes users to lose data. You can avoid this by enabling autosave on software.
Software corruption:
this is when the software while performing a task, messes up and loses the data it was working with. Make sure to always have a backup
Malicious software (Viruses):
Viruses can hack into your devices and steal your data. Make sure to have strong passwords and always have backups and antiviruses.
Natural disasters:
Natural disasters can destroy data on local storage. Save it on the cloud so you can access it from anywhere.
There are many processes involved when releasing a new product.
In software development, a product release is done with extensive testing and then released in beta testing so that the developers can assist users with debugging and find other issues that need to be fixed.
An update is a file that contains fixes for problems that users are having.
You can get updates manually(download and install them yourself) or automatically (the company/developer auto downloads it onto your PC if you allow them to).
Patches are software update code that is directly inserted into the code by running a program.
A patch is typically a temporary fix, and they can fix a bug, install drivers, address security and stability issues, and upgrade software.
Release management
It is the process of planning, scheduling, and controlling the movement of releases to test and live environments, ensuring smooth deployment of software updates.
There are three types of release management:
Continuous delivery -
A software engineering approach where teams produce software in short cycles so that the user can reliably receive the software without bugs.
Agile Software development -
A software engineering approach that involves multiple engineers to develop solutions to problems.
DevOps -
A software engineering culture that unifies software development and software operation. DevOps aims at shorter dev cycles by using automation at all stages of the software construction.
Plan:
This initial stage involves gathering requirements, creating a timeline, and defining the scope of the project. I
Code:
Once the planning is complete, developers start writing code based on the requirements outlined.
Build:
In the build phase, the code is compiled and integrated to create the software application.
Test:
Testing is a critical phase where the software is evaluated for bugs, errors, and functionality issues.
Release:
After successful testing, the software is ready to be released to the users.
Deploy:
Deployment involves installing the software on the production servers or making it available for users to access.
Operate:
Once the software is deployed, it enters the operation phase where it is actively used by the end-users.
Monitor:
Monitoring is an ongoing process that involves tracking the performance of the software in real-time.