Warning: include(/home1/george/public_html/wp-content/advanced-cache.php): failed to open stream: No such file or directory in /home1/george/public_html/wp-settings.php on line 84

Warning: include(): Failed opening '/home1/george/public_html/wp-content/advanced-cache.php' for inclusion (include_path='.:/opt/cpanel/ea-php74/root/usr/share/pear') in /home1/george/public_html/wp-settings.php on line 84

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home1/george/public_html/wp-includes/script-loader.php on line 706

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home1/george/public_html/wp-includes/script-loader.php on line 706

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home1/george/public_html/wp-includes/script-loader.php on line 707

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home1/george/public_html/wp-includes/script-loader.php on line 707

Deprecated: Function get_magic_quotes_gpc() is deprecated in /home1/george/public_html/wp-includes/load.php on line 760
Software Engineering – Tales from the bits http://talesfromthebits.com This is a blog about technology, computer science, software engineering and personal notes from these fields Fri, 17 Jun 2016 16:53:16 +0000 en-US hourly 1 https://wordpress.org/?v=5.1.16 3 Deadly mistakes during requirements gathering http://talesfromthebits.com/2014/04/3-deadly-mistakes-during-requirements-gathering.html Mon, 21 Apr 2014 16:11:46 +0000 http://talesfromthebits.com/?p=710 What are the 3 deadly mistakes that you can do during requirements gathering?
First, let me tell you a secret. There are more than 3 deadly mistakes you can do during software requirements gathering. I will focus on the deadliest 3. So let’s start! At the moment you start interviewing the client for the software she needs to build, starts the software requirement gathering process.
1. We have a tendency to assume things. My advice: Assume nothing. Especially if you have experience in the domain, it does not mean that everyone follows the same processes or uses the same vocabulary. Check all the assumptions you make with the client to create a common vocabulary and be explicit with all your communications. Add the vocabulary to all documents that you create. If you are new to requirements gathering then listen and make sure you understand everything that the client wants. Ask questions to get clarifications and take notes.
2. The client usually omits to communicate to you some very fundamental tasks that perform daily. This is not done on purpose. They have become “automatic”, part of the daily routine. Ask to observe, if possible, the working environment, the people that will use the system. Go and talk with them. Make sure that you want to make their life easier. You will find more information and you may probably discover additional pain areas or missed stakeholders. Be careful how you communicate your interest for their jobs. You are there to help everyone, you are not there to criticize or comment in a negative way. You are there to help remove the repeated mundane tasks that they perform. Tip: Map the workflow and you will discover the missing steps.
3. Accepting imprecise language from the part of the client. For example, the client says “I want a beautiful design” or “The system has to be very fast” or “The system has to have a log”. All these statements are vague. The requirements have to be precise. It is the analyst’s job to make this happen. What is the definition of beautiful? What is the definition of fast? What to log? Be as specific as possible, draw screen mockups, discuss about responsiveness of the user interface.
The above 3 mistakes left unaddressed ensure the failure of your project.

Do you have more mistakes to suggest? Please feel free to add to the list.

]]>
Code reviews or testing? http://talesfromthebits.com/2010/04/code-reviews-or-testing.html http://talesfromthebits.com/2010/04/code-reviews-or-testing.html#comments Sun, 04 Apr 2010 08:18:20 +0000 http://talesfromthebits.com/?p=179 What is it better to do, code reviews or testing?

Code review or software inspections are used to spot software errors, omissions and anomalies. The code review as the name implies is to look at the source code for errors and defects. To successful perform a code review a team of at least four people must be formed. The roles are:

  1. Author – programmer: the one who owns the code and is responsible for fixing the errors.
  2. Inspector: Inspects the code and/or the documentation to find errors – omissions.
  3. Reader: Presents the code – documentation
  4. Scriber: Writes the findings of the code review meeting.
  5. Moderator: Manages the process and facilitates the inspection.

It is very important to keep any questions or comment to the code and not to criticize the developer. When done correctly code review is a positive experience for the team and a learning tool for all levels of developers.

In order to initiate a code review you must:

  • Have a complete and precise documentation of the code under inspection.
  • The team must know the coding standards that the organization uses.
  • The code must be updated and must compile, prior to the inspection. It is a waste of time to inspect code that does not compile.

During one hour of inspection about 120 lines of code are reviewed. It is not recommended for the code inspection to last more than one and a half hours.
It is very important during the inspection to read and translate the code in plain English, based on the specifications. This way everyone can examine the logic and validity of the code.

Why should somebody prefer code reviews from testing?

  • During the testing, there is a possibility that an error can mask other errors.
  • Testing does not guarantee the code quality and code efficiency.
  • In applications that use threading errors cannot be caught with testing but only with a thorough code review.

An advice to software project managers:
I would recommend planning time for code reviews in every project. Code reviews is a great way to mitigate code related risks during the early stages of development.

References and useful links

  1. Rober Bogue (2006) Effective Code Reviews Without the pain http://www.developer.com/tech/article.php/3579756/Effective-Code-Reviews-Without-the-Pain
  2. Josh Poley(2007) Best Practices: Code Reviews http://msdn.microsoft.com/en-us/library/bb871031.aspx
  3. Sommerville I (2006) Software Engineering. Addison Wesley; 8th edition
  4. Wikipedia (2010) List of tools for static code analysis http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#.NET_.28C.23.2C_VB.NET_and_all_.NET_compatible_languages.29
]]>
http://talesfromthebits.com/2010/04/code-reviews-or-testing.html/feed 6
Brain waves and Software Engineering http://talesfromthebits.com/2009/04/brain-waves-and-software-engineering.html http://talesfromthebits.com/2009/04/brain-waves-and-software-engineering.html#respond Thu, 02 Apr 2009 20:34:00 +0000 http://talesfromthebits.com/2009/04/brain-waves-and-software-engineering.html Brain is one of the last frontiers standing. Only recently scientists have the technology to begin recording and documenting brain activity accurately. Brain Computer Interface (BCI) is a field that has great to offer in mankind if treated with caution. In my opinion there are many implications involving the ability to “read” and interpret brainwaves. We humans have many thoughts but not all of them will become actions. We must respect and protect our final private place, our brain.

This may sound like science fiction but the tools already exist to monitor and interpret brain activity. As stated by Alois Schlogl and Clemens Brunner in their article at October 2008 issue of Computer magazine, BCI’s purpose is to identify the user’s intention by analyzing only brain activity. In the article is presented the BIOSIG library which is a free and open source library of biomedical processing tools.

Recent research has revealed that Brain wave patterns can predict blunders. Neuroscientist Ole Jensen, Ali Mazaheri and colleagues Institute at the University of California, Davis, in collaboration with the Donders Institute in the Netherlands, has found a distinct electric signature in the brain which predicts that an error is about to be made.
By analyzing the recorded magnetoencephalography (MEG) data, the research team found that about a second an error were committed, brain waves in two regions were stronger than when the subjects correctly refrained from hitting the button. In the back of the head (the occipital region), alpha wave activity was about 25 percent stronger, and in the middle region, the sensorimotor cortex, there was a corresponding increase in the brain’s mu wave activity.

“The alpha and mu rhythms are what happen when the brain runs on idle,” Mazaheri explained. “Say you’re sitting in a room and you close your eyes. That causes a huge alpha rhythm to rev up in the back of your head. But the second you open your eyes, it drops dramatically, because now you’re looking at things and your neurons have visual input to process.”

Wireless EKG can help identify errors before they happen. If the technology is limited on these areas then it is used for something serving the common good. If the technology is used to monitor brain activity and spot “deviant” activity then we are not far from a thought police as described by George Orwell’s novel Nineteen Eighty-Four. In my opinion is in our hands to produce a manifest that will clearly state that Computer professionals and Software engineers should not consent into the use of this technology in general population but only on specific beneficial situations. (Air traffic control)

]]>
http://talesfromthebits.com/2009/04/brain-waves-and-software-engineering.html/feed 0
Software Engineers: Are we Endangered Species? http://talesfromthebits.com/2008/05/software-engineers-are-we-endangered-species.html http://talesfromthebits.com/2008/05/software-engineers-are-we-endangered-species.html#respond Thu, 15 May 2008 08:58:00 +0000 http://talesfromthebits.com/2008/05/software-engineers-are-we-endangered-species.html * Software engineers will be an endangered species.
* High-school and college students will take over the jobs of software engineers.
* These engineers will not mind, because there still will be plenty of work.

These three propositions were presented by Todd Fast, a Sun engineer, as reported by Paul Krill (infoworld, 2008).

The argument states that users, without the assistance of a professional, can create their web sites, their blogs and, by using applications such as Microsoft’s Access can even build their own applications. There are also many application generators that can be used to accomplish these tasks. Users can build all this software without the help of a professional engineer.

I say, this is good. Extremely good! From my experience, when businesses are using such type of software they soon need professional advice. They automate a task, see the benefits, but they have not the knowledge and the expertise to expand and integrate their system with another or even change it to adapt it to new situations.

You have to be really calm when you see a database created by a user. Among other omissions that is not normalized. Who needs normalization?

So stay calm! We are not yet in any immediate danger, till the next AI application comes out.

Reference
Paul Krill (2008). Developers’ role shifting from apps to platforms . Available at: http://www.infoworld.com/article/08/05/12/Developers-role-shifting-from-apps-to-platforms_1.html

]]>
http://talesfromthebits.com/2008/05/software-engineers-are-we-endangered-species.html/feed 0
Do we need an Architectural Body of Knowledge? http://talesfromthebits.com/2008/05/do-we-need-an-architectural-body-of-knowledge.html http://talesfromthebits.com/2008/05/do-we-need-an-architectural-body-of-knowledge.html#respond Tue, 13 May 2008 17:33:00 +0000 http://talesfromthebits.com/2008/05/do-we-need-an-architectural-body-of-knowledge.html I have recently read the article of Miha Kralj on the Architectural Journal about the need of an Architectural Body of Knowledge (ArcBOK). He has a facile model of knowledge areas of the ArcBOK:
Design management—Activities related to requirements gathering, modeling, visualization, and communication of IT designs
Analysis management—Activities related to analysis, deduction, innovation, creativity, and problem solving
Delivery management—Activities related to project, engagement, transformation, development, planning, coordinating, and quality management
People management—Activities related to leadership, organizational politics, stakeholder, and relationship management
Strategy management—Activities related to defining the business intent, enterprise strategy, and road maps
Financial and Legal management—Activities related to billing, sourcing, legislation, and procurement
Life-cycle management—Activities that focus on various stages of the IT life cycle, including envisioning, SLA management, change management, and IT decommissioning
(Kralj,2008)

Although in my opinion, many of the proposed areas are covered from the SWEBOK some areas are left uncovered. The role of an IT Architect is to understand the broader needs of the organization, to visualize the technological structure of the organization.

The IT Architect must know in relative depth the technologies she proposes. The IT Architect must also have training in management and in project management. These two areas are usually out of the job description of a Software Engineer.

The IT Architect will be responsible to communicate her architecture to both technical and non-technical stakeholders. I believe that an ArcBOK can complement the SWEBOK. It is easier that a Software Engineer becomes an Architect than a manager or a project manager becomes an IT Architect; because they have no technological training in depth .

We will see the results in the future.

References
IEEE Computer Society(2008). Guide to the Software Engineering Body of Knowledge . Available at: http://www.swebok.org/

Miha Kralj(2008). The Need for an Architectural Body of Knowledge. Available at: http://msdn.microsoft.com/en-us/arcjournal/cc505967.aspx

]]>
http://talesfromthebits.com/2008/05/do-we-need-an-architectural-body-of-knowledge.html/feed 0
What is Software Engineering? http://talesfromthebits.com/2008/05/what-is-software-engineering.html http://talesfromthebits.com/2008/05/what-is-software-engineering.html#respond Tue, 13 May 2008 07:13:00 +0000 http://talesfromthebits.com/2008/05/what-is-software-engineering.html Many people outside the software industry do not know what software engineering is about. Even recently when I was asked at a party “Hey, George so tell me what you do for living?” I answered, “I am a Software Engineer”. I got a semi blank look. I quickly added, “I am a computer programmer» and from that point on everything was back to normal. The next question was “I have a problem with my computer can you give it a look? ” That gave me a clear picture that there was a direct assumption that if you were saying the words “computer programmer”, for most people that would also mean “computer technician”.

So what is Software Engineering?

The IEEE Computer Society defines software engineering as
“(1) The application of a systematic, disciplined, quantifiableapproach to the development, operation, and maintenance ofsoftware; that is, the application of engineering to software.
(2) The study of approaches as in (1).”

The SWEBOK knowledge areas are:
Software requirements
Software design
Software construction
Software testing
Software maintenance
Software configuration management
Software engineering management
Software engineering process
Software engineering tools and methods
Software quality
(IEEE Computer Society, 2008)

Creating software systems can be a very complex and demanding process involving many people. That requires substantial amount of time.

Other people from other disciplines do not easily comprehend what a Software Engineer does. Different people have different perception of our job depending on their viewpoint.

26 years ago I wrote my first computer program. It even now amazes me that people, with all that exposure in technology, cannot still make a difference between a Software Engineer and a computer technician or a power user. Medical doctors do not seem to have the same problems.

References
IEEE Computer Society(2008). Guide to the Software Engineering Body of Knowledge . Available at: http://www.swebok.org/

]]>
http://talesfromthebits.com/2008/05/what-is-software-engineering.html/feed 0