Systems Thinking


Systems thinking is a new and evolutionary way of looking at a problem and attempting to gain understanding and knowledge about a system. A system is “set of elements standing in interrelations” as defined by Ludwig von Bertlanffy in his book General Systems Theory. My understanding of this is that a system is a mathematical set of physical parts and a set of physical relationships between the parts. It should be noted that the parts themselves are often but not necessarily systems too. It is important to understand what a system is before trying to how a system operates and why it does.

As Systems thinking is the topic this week for my subject “Systems Engineering for Software Engineers” there are associated readings (and viewings) to push us to think about the topic. The first is a short lecture given by Dr Russel Ackoff. In the video he briefly goes into his view of systems thinking and what it actually is.

He defines systems thinking to be synthetic. By nature we think analytically, pulling apart a system to analyses it as a collection of components and then combining the individual understanding of each component in an attempt to understand the system as a whole. He posits that this gives us no understanding, only knowledge (which is still very useful).

Synthetic thinking is in direct opposition to analytical thinking, it requires that you view the system as a component in a larger containment system, communicating with other components. By determining the behavior and functionality of the containment system as a whole and them dismantling the containing system by identifying the underlying functionality of the system as a component. Dr Ackoff stresses the importance of considering the function of the system as being more important than the internal knowledge of how the system works.

This seems counter intuitive to me. A system is the product of the sum of its parts and the sum of its internal interactions. Considering this, analytical thinking is often flawed by ignoring the interaction. Chemistry education relies on this flaw to help students understand quantized energy of electrons in an atom. By ignoring the interaction of the electrons with each other (by considering on the base case hydrogen) we can grasp the way that energy can influence the properties of an atom and we can do so without much difficulty. In order to overcome the challenge of considering the electron-electron interactions (which often depend on complex computational math) chemistry appears to have developed a similar approach to systems thinking in regard to the wider context of a chemical in a system.

Chemistry is defined as “the science of substances: their structure, their properties, and the reactions that change them into other substances” in Linus Paulings Text book ‘General Chemistry. This definition embodies the systems thinking process. Chemistry takes a molecule and looks internally at it’s structure (analytically) and at its properties as it interacts within a neutral context as well as the reactions that it undergoes within the system that it came from (systematically). A chemist would then attempt to match the properties and reactions in its natural context to the molecules internal components and there interactions (atoms, electrons, protons etc.)

We can see that chemistry is an example of where analytically assessing a system (a chemical or a molecule) gives only half the picture, and that we quite often need a context and a functionality of the system as a whole to even comprehend its internal interactions. As systems become more complex not only does analytic thinking not provide real understanding of a system but without a systematic thought process, we may misunderstand the way that the internal interactions either should or do behave.

This brings us to the relevance at the core of the subject. Why should software engineers think about systems engineering and systems thinking? Without a greater understanding of the larger system, a software component may not function appropriately within the system or by misinterpreting the system provide a flawed or incorrect implementation of what is required. It is only by considering the larger system as a whole that we can effectively develop correct and appropriate software.

Advertisements

Installing the Base System – Ubuntu Server


Now we have the hardware, and the software setup and ready to go, we can begin the install. make sure that you have set up the hardware with all the peripherals attached.

Step 1

First we must enable the computers BIOS to load from the cd. To do that turn the computer on. Depending on the chip set of the computers motherboard there will be different keys for entering the BIOS setup. It is usually either F1, F2, del, esc, or F10. press one of these key before the computer loads the boot loader screen. Once into the BIOS you will want to find the boot load order. Once you have found the boot load setting, change the order so that the CD-DISK option (or similar) is number one.

exit and save from the BIOS screen and insert the install disk from Part 3.

Step 2

The computer will load into the disk. First it will ask for your language, Hit enter for the default (English) or select your preferred language. Next it will bring up a basic option list. Select the “install ubuntu server” option. This will then load an ncurses screen (blue white and red with monospace font). It will then as a for a number of options

  • Select your langauge
  • Select Your Location

You will now be asked whether you want to automatically select your keyboard. I have never had this work successfully, however you could give it a try, particularly if you have a non standard keyboard, otherwise select no.

If you pressed no and you have a standard keyboard it is a US keyboard. There will be 2 or 3 screens where you must select your keyboard. If you have a nonstandard keyboard, select your variation.

If you pressed yes you will have to press some keys and it will work out which keyboard you have. There will be multiple keys.

Step 3

After selecting your keyboard the installer will load a few additional component and then set up DHCP. This means it is looking for an Internet connection. If you do not have an INTERNET connection auto detection will fail and you will have to select “set up DHCP later” other wise it will auto configure and you should be able to move straight on.

If it fails and you have the server plugged in to the Internet there are a few simple things you can check. Make sure that if you have multiple Ethernet ports (multiple NIC’s), try changing the Ethernet cord to another port. Make sure that you actually can connect to the Internet on another computer (you should have another computer else you wouldn’t need to set up a home server).
You can also try manually setting up the DCHP setting, although that shouldn’t be necessary.

You will then need to set the host name. You can set this to what ever you like.

You will then be asked whether you the time zone detection has configured the correct zone, if it has not you will need to change it, otherwise hit enter.

Step 4

Now we have to setup the partitions. Select The Guided – use entire disk and setup LVM. You will then need to select which hard drive you want to use. Select the one that you want to install the primary operating system on. It must be no less than about 10GB, although for the best results from a home server 60 – 80 GB would be optimal (For there to be enough room to backup and store all of your important information.

Next select yes you would like to save the changes. The next screen will ask you for how much you would like to use for the / (root) and swap partitions. I suggest using no less than 20GB or 40 – 50% of the drive. This allows for expansion if necessary.

Save the Logical Volume Management and write the changes to disk.

Step 5

After the completion of Step 4, The system will be installed. At some point, you will be asked to enter a name for the new user. This is the main user that controls the server, they will have root access through the sudo command. You cannot call this user admin or root. I suggest entering your Name.

Next You need to enter the users username, I usually make this my first name or administrator. but it is up to you (you cannot use admin or root). You will then be asked for the users password. If you will be able to access the server from the Internet ie it servers web pages or has public ftp etc, you will need a strong password. Make it more than eight letters, with a mixture of numbers, lower and uppercase letters and if your frantic symbols as well. If you home server will never be accessible from the Internet then you can make the password as simple as you like (still suggest at least 4 letters).

The last two parts of step 5 are 1 – do you want to encrypt you home directory. The answer here should be no. unless you are storing sensitive data it won’t need to be encrypted and 2 – are you behind a proxy. Leave this blank unless you use a proxy server to connect to the Internet

You system will now start to install

Step 6

After a short period of time you will be asked whether you want to automatically update your system. You should manually do this for greater control, so select “No automatic updates”
Another short period of time later you will be asked what extra software you would like to install. I prefer to manually add extras software so I would hit enter, however if you would like the installer to automatically setup the system add which of the servers you would like it to setup by scrolling to the server and pressing space bar and hit enter when you are finished.

The installation is now nearly complete, all you have to do is hit yes when asked if you would like to add the grub boot loader to the master directory and then when prompted remove the cd and restart the computer.

Now you have installed the base ubuntu server.

Next we will add setup users and and user version control so that the files can be better managed.

%d bloggers like this: