175 lines
10 KiB
HTML
175 lines
10 KiB
HTML
<!--startcut ==============================================-->
|
|
<!-- *** BEGIN HTML header *** -->
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
|
|
<HTML><HEAD>
|
|
<title>Software Engineering LG #95</title>
|
|
</HEAD>
|
|
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#0000AF"
|
|
ALINK="#FF0000">
|
|
<!-- *** END HTML header *** -->
|
|
|
|
<!-- *** BEGIN navbar *** -->
|
|
<A HREF="pramode.html"><< Prev</A> | <A HREF="index.html">TOC</A> | <A HREF="../index.html">Front Page</A> | <A HREF="http://www.linuxgazette.com/cgi-bin/talkback/all.py?site=LG&article=http://www.linuxgazette.com/issue95/rondina.html">Talkback</A> | <A HREF="../faq/index.html">FAQ</A> | <A HREF="vanheusden.html">Next >></A>
|
|
<!-- *** END navbar *** -->
|
|
|
|
<!--endcut ============================================================-->
|
|
|
|
<TABLE BORDER><TR><TD WIDTH="200">
|
|
<A HREF="http://www.linuxgazette.com/">
|
|
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
|
|
WIDTH="200" HEIGHT="41" border="0"></A>
|
|
<BR CLEAR="all">
|
|
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
|
|
</TD><TD WIDTH="380">
|
|
|
|
|
|
<CENTER>
|
|
<BIG><BIG><STRONG><FONT COLOR="maroon">Software Engineering</FONT></STRONG></BIG></BIG>
|
|
<BR>
|
|
<STRONG>By <A HREF="../authors/rondina.html">Gustavo Rondina</A></STRONG>
|
|
</CENTER>
|
|
|
|
</TD></TR>
|
|
</TABLE>
|
|
<P>
|
|
|
|
<!-- END header -->
|
|
|
|
|
|
|
|
<H2>Abstract</H2>
|
|
|
|
The so called software crisis can generate several and serious consequences to computing and IT in the future, mainly on
|
|
issues that refers to the free software. This article intends to quickly introduce the reader to some of the problems which
|
|
can contribute with this crisis and maybe encouraje users and programmers to adopt the necessary measures to avoid it.
|
|
|
|
<H2>1. Introduction</H2>
|
|
|
|
<P>Nowdays the hardware devces are becaming more powerfull and are expanding its capacities and features every day.
|
|
But those devices are useless if there are not software that are able to explore those features as much as possible,
|
|
thus it is appropriate to say that the software development process, called software engineering, is one of the most
|
|
important areas of computing.</P>
|
|
|
|
<P>To catch up with the rapidly technological advance at the hardware industry, the programmers and software engineers,
|
|
whose job is develop the core of the softwares, must keep the idea that it is necessary not just create and develop
|
|
a product that works, but a product that implements good software engineering practices, assuring that no computer or
|
|
programmer's efforts will be wasted.</P>
|
|
|
|
<H2>2. Linux, free software and software engineering</H2>
|
|
|
|
<P>You might be asking yourselves: where does Linux fit on that scenario ? Well, the free software movement can answer
|
|
that question. The Linux OS have been one great and successfull project that helped to spread the free software principles,
|
|
concepts and philosophy.</P>
|
|
|
|
<P>In the last decade we can note a significant increasing if we look at the number of Linux users. Users that have
|
|
adopted the system at home, at work or even at school. Many of these users had joined to Linux due its source code
|
|
availability: any person over the world can get the source, read it, make modifications, copy and redistribute this
|
|
code. Most of those users have had already a previous knowledge of computer programming and OSes based on Unix.</P>
|
|
|
|
<P>However there were users that have adopted Linux just to fill their curiosity, to know and explore a new and different
|
|
system and have an idea of how a Unix-like system works; some of them didn't like or didn't get used to Linux and droped
|
|
it soon, but most of them have adopted Linux as a way of life and a philosophy.</P>
|
|
|
|
<P>This new Linux's enthusiastics wanted to learn as much as possible about the system, so, with the source code open
|
|
to anyone and built under C and assembler programming languages, they have decided that learning how to programm
|
|
would be a good way to start understanting Linux. And this was what happened, a lot of new users have started to programm
|
|
and hack codes volunteerly, giving their time and efforts to projects aimming to contribute with the open source community.
|
|
Today there are a lot of successfull projects which show to the world that the free software development philosofy really
|
|
works.</P>
|
|
|
|
<H2>3. So, where is the problem ?</H2>
|
|
|
|
<P>These new programmers had learned the programming languages that are necessary to software development and had put in
|
|
practice their knowledge developing software that fits their needs, producing the expected results. However, there are
|
|
no warranty that those products are totally realiable and the ideas have been implemented at the best way possible.</P>
|
|
|
|
<P>This happens due the lack of knowledge at the software engineering area. There are many projects that are developed
|
|
by people who don't have much experience at the software development and production, so there are a lack of concepts and
|
|
theory to these programmers. To programm isn't just about launching a text editor and start to hack some code and then
|
|
compile it, even getting the expected results.</P>
|
|
|
|
<P>To know the syntax of a programming language doesn't mean to know how to programm and develop good and quality software.
|
|
The software development is complex process, since the first algorithm design until the debugging and testing phase. A
|
|
programmer who doesn't have the conecpts os language paradigms and their differences (i.e. oriented object programming and
|
|
procedural programming); who doesn't know deeply the several types os data structures, such as stacks, queues, lists and
|
|
binary trees; or the programmer who doesn't know how a hardware achitecture does arithmetic operations and how their
|
|
logical circuits works, can develop a software that, even working, have not been implemented at it must have.</P>
|
|
|
|
<P>A software that isn't implemented at the right way may cause wast of hardware resources such as processing time of the CPU
|
|
or how the memory is managed; waste the programmer's efforts as well, once he can solve trivial problems using a complex and
|
|
expensive methods, since he doesn't know an easier way; waste also the features of the language by using it poorly or even
|
|
incorrectly. All this things increases the final cost of the project.</P>
|
|
|
|
<H2>4. How to solve this problem ?</H2>
|
|
|
|
<P>This kind of problem is know as "the software crisis". Each person who starts to hack and produce new codes without
|
|
the right knowledges of good software engineering contributes to the increasement of this crisis.</P>
|
|
|
|
<P>In the future that can be very dangerous, mainly to the free software community since, in some cases, there is no one in
|
|
charge of monitoring and moderating the development phase of the project, once that several projects are developed by
|
|
volunteers programmers.</P>
|
|
|
|
<P>The solution of this problem may be clear: the users and the programmers must study deeply software engineering and
|
|
modeling, algorithms analisys, software testing and each paradigms and languages' details. The developers should read more
|
|
scientific papers and tecnical books about software engineering. Many programmers just want their software producting the
|
|
expected results, but if a programmer wants to be a successfull developer and have high quality and reliable software, it
|
|
is essential to know all the theorycal bases that is hide under the practice. Theorycal knowledge is the base to everything.
|
|
</P>
|
|
|
|
<P>A lot of programs and projects starts in the paper, it is not a shame to make some rough draft of the algorithm. Some
|
|
times an idea can achieve a high abstraction level which can be more understantable trought a draw. To test the software
|
|
before it get into the consumer hands is also important, and there are many different tecnics and issues related to
|
|
software testing. To know several programming languages and languages paradigms give the programmer more flexibility
|
|
while choosing the best way to solve a problem, since each language has its own limitations. Even the source code
|
|
identation is important to increase the readability of the sources. All this things are related with the good software
|
|
engineering and improves the quality of your product.</P>
|
|
|
|
<H2>5. Conclusion</H2>
|
|
|
|
<P>This article does not intend to criticize neither to discourage hobbyst programmers, but encourage them to know
|
|
further and deeply the issues related with the software development process. Only that way we will have good and realiable
|
|
software at the next generations.</P>
|
|
|
|
<P>I hope you have enjoyed this article. Please forgive my really poor english, this is not my native language. Maybe on
|
|
a future article it will be improved a bit. Comments, questions and suggestions are always welcome. Feel free to email me
|
|
at <a href="mailto:gustavorondina@uol.com.br">gustavorondina at uol dot com dot br</a></P>
|
|
|
|
|
|
|
|
<!-- *** BEGIN author bio *** -->
|
|
<P>
|
|
<P>
|
|
<!-- *** BEGIN bio *** -->
|
|
<P>
|
|
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
|
|
<em>
|
|
I am Gustavo Rondina, and I am from Brazil. I am a graduation
|
|
student taking the 4th semester of Computer Science course,
|
|
but I have been in touch with computers and Linux for about 5
|
|
years.
|
|
</em>
|
|
<br CLEAR="all">
|
|
<!-- *** END bio *** -->
|
|
|
|
<!-- *** END author bio *** -->
|
|
|
|
|
|
<!-- *** BEGIN copyright *** -->
|
|
<hr>
|
|
<CENTER><SMALL><STRONG>
|
|
Copyright © 2003, Gustavo Rondina.
|
|
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
|
|
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
|
|
</STRONG></SMALL></CENTER>
|
|
<!-- *** END copyright *** -->
|
|
<HR>
|
|
|
|
<!--startcut ==========================================================-->
|
|
<CENTER>
|
|
<!-- *** BEGIN navbar *** -->
|
|
<A HREF="pramode.html"><< Prev</A> | <A HREF="index.html">TOC</A> | <A HREF="../index.html">Front Page</A> | <A HREF="http://www.linuxgazette.com/cgi-bin/talkback/all.py?site=LG&article=http://www.linuxgazette.com/issue95/rondina.html">Talkback</A> | <A HREF="../faq/index.html">FAQ</A> | <A HREF="vanheusden.html">Next >></A>
|
|
<!-- *** END navbar *** -->
|
|
</CENTER>
|
|
</BODY></HTML>
|
|
<!--endcut ============================================================-->
|