Archive for July, 2007

Paired Development

Monday, July 30th, 2007

Paired Programming is always brought up and usually discussed in any discussion of agile development. I worked on a project where we did pair programming. I considered it successful, but my recent attendance at the Better Software Conference sparked the following idea.

Paired Development with a programmer and a tester(QA). Logistics aside for the moment, a programmer writes the code sitting with a tester writing the tests for that code. They would decide on the design of the task (dependent upon the project constraints and procedures), and I would imagine they would review each others work. I believe review is the important concept in paired programming. I would think a trained tester would be more capable of writing unit tests then the programmer, since I find that the processes are complimentary and difficult to switch between.

This concept would need more thought, however if good processes are used and roles are defined properly, I think this might have some promise.


Better Software Conference Review

Monday, July 23rd, 2007

Last Month I attended the Better Software Conference and Expo. As part of my continuing education requirements I attend on conference a year and then prepare a seminar for the local developers on a particular topic of interest. As all the costs of attending are borne by me (my company does not contribute anything) I am very careful to evaluate a conference for my needs. I can recommend this conference as tops on my list. In fact I think I will attend this conference twice every three years. The other year may be divided between the IEEE Software Engineering conference and some other conference depending on location.

Since 2003 I have attended the SEPG, IEEE SE, ICSPI, and BSCE conferences. I enjoyed the IEEE conference because of the academic slant as opposed the industry leanings of the others. Each conference had at least two days of tutorials, and each one had breakfast and lunch provided (paying my own way makes this very important), although I think all conferences do this.

The first tutorial was “Principles and Practices of Lean-Agile Development” by Alan Shalloway, Net Objectives. He also did a keynote as well. Excellent content and presentation from my point of view.

The second tutorial was “Software Security Fundamentals” by Paco Hope, Cigital. I enjoyed this very much and gave me a lot of ideas to keep in mind building software.

Although all the keynotes were worth the attendance, the final keynote – What Snake Oil Is Your Organization Buying Today? by James Coplien, Nordija A/S – was definitely the highlight for me. The basic takeaway is that there are no magical solutions and everything needs to be evaluated properly. I think that is the primary responsibility of the Software Engineer, to evaluate the prospect solutions based on our experience and apply them to the project at hand. Use the principles from lean-thinking – eliminate the waste, apply the correct process, and listen to the people involved.


Welcome to Opinions on Software Engineering

Thursday, July 19th, 2007

Let me introduce myself:

  • Allen Byrne
  • IEEE Certified Software Development Professional 2003
  • University of Illinois BSEE 1981

One (of many) definition of Engineering:

Term applied to the profession in which a knowledge of the mathematical and natural sciences, gained by study, experience, and practice, is applied to the efficient use of the materials and forces of nature. Modern engineering is characterized by the board application of what is known as system engineering principles. The systems approach is a methodology of decision-making in design, operation, or construction that adopts the formal process included in what is known as the scientific method; an interdisciplinary, or team, approach, using specialists from not only the various engineering disciplines, but from legal, social, aesthetic, and behavioral fields as well; and a formal sequence of procedure employing the principles of operations research. [See “Engineering” Microsoft(R) Encarta(R) 97 Encyclopedia.]

The IEEE Computer Society defines software engineering as: “(1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1).”[“IEEE Standard Glossary of Software Engineering Terminology,” IEEE std 610.12-1990, 1990.]

Further information on software engineering can found at the IEEE Guide to the Software Engineering Body of Knowledge

I hope to provide information and discussion on Software Engineering and the CSDP.