Software engineering

From Wikiversity

(Redirected from Software Engineering)
Jump to: navigation, search

Contents


Software Engineering is the art of designing programs (or software) and its associated documentation (IEEE). The design of the software should there help solve some of the many problems that are around us. For instance, when one goes to a game and uses an electronic VISA card to pass through the gates...most of the time that happens, we don't imagine all the complex processes that run through the transactional system before our ticket is processed. Let us take a look at what could take place, hypothetically speaking.

  • you swipe your card
  • a card reader reads all necessary information in place like the serials, and other embedded securities and attributes of the cards
  • this goes to a database...
  • a checking account that should be reliable to give the exact balance of account
  • this may eventually go through a computer network...commonly referred to as the Public domain, or simply put, The Internet.
  • this all trips into your bank
  • through all security
  • and finally your account which is situated in a database!

All the above processes are just part of a huge jig-saw puzzle that software engineers construct...

The prospects of engineering are great and highly applicable in almost everything that goes on in our lives.

To be a great software engineer, Mathematics is one subject you shall never neglect...more precisely discrete mathematics and probability are used a lot.

Programming is definitely the blood of almost every software that is produced on this planet (may someday, we'll have nano-beings doing all that!) And just like calculus is to engineering, programming is to software engineering.

[edit] Software engineering: a definition

When building software, one approach is that starts at its usefulness...the services the completed program will render to humanity. This approach is commonly known as SOA, Service Oriented Architecture. We've got to see the end from the beginning!

With time, we'll see a wide spread of Internet usage (I mean in places like Africa, remote ASIA and other similarly undeveloped nations), and programs will have to be aligned to the data communications network through which they will traverse. We will look at network programming, however, we shall still have stand-alone software, software that may not rely on a computer network.

I mentioned something about programming earlier on. Software Engineering involves the design of programs. To design programs (software) we need a language (or languages). A language has certain semantics it follows to instruct a computer. We have two main forms of programming:

  • Object Oriented Programming
  • Functional programming (also know as logical programming)

There are other kinds of programming but for now we'll stick to the common styles.

A program interfaces with Machine code; machine code interfaces with a processor and an array of complex digital electronics.


[edit] Mathematics and its relevance to Software Engineering.

In the first place, Mathematics is a language. A language in which we can use to interpret the situations around us. Let's have a quick review of Logic. We could use prepositional logic to gather our thoughts against a list of options. For example;

  • if I go to New York, I will have milk shake
  • if you pass the paper, I will eat my shirt!

The above gives us a glimpse of what could happen when we are faced with choices as we always are!

In this course we'll be able to merge concepts that you may have encountered in mathematic concepts.

[edit] Programming: choice of a language

Programming is software "blood"... without a language we won't have a platform on which to present solutions to our worldly problems (or making sure that they won't happen) in a clear-cut tool like many programs used today!

Software Engineering is a serious discipline where all those involved observe some form of seriousness. A small error in a product design could lead to a huge disaster.

Look at Traffic lights for instance. A huge city might need to develop its own traffic management software. Let's break this up a bit... In many cases, well at most, we may not know what could control all those lights (Red, Green and Orange)...

  • Firstly...a few questions must be asked...especially when fairness is being talked about: how many motor vehicles should pass before the light signal changes? When should there a be a transition state between a Red and an Orange?

Well...all this involves yet a another concept, Algorithms. Algorithms are instructions that are usually logical phrases with some mathematical representation.

  • An algorithm written for traffic lights could involve a variable of weight...or in some advanced designs we could use video capture forms of vehicles to know that a particular number of cars has passed; here we are using the number for fairness!

It would not be fair if you designed software without knowing its sole purpose and hence one should be fully aware of the surrounding environment or environment of the software's operation, be it in a business setting, a banking environment or the usually chit chat programs. What I've just expounded on a little bit is part of a bigger picture; systems engineering.

Systems Engineering Systems engineering is concerned with organization. A system is made of different components decisively put together to function as one. Over the next few sections, we'll just do a lot of SE

Vicmiclovich 13:26, 14 July 2008 (UTC)Victor Miclovich Kisitu

[edit] see also