Wednesday, July 15, 2009

RiSE’s Interviews: Episode 6 – Software Reuse with Dr. John D. McGregor

After the 4th Workshop to Introduce Reuse in Enterprises (WIRE), in Recife. An interview was performed with John D. McGregor an associate professor of computer science at Clemson University, a founding partner of Luminary Software, and a Visiting Scientist at Software Engineering Institute (SEI).

This interview is available here.

I would like to thank McGregor for accepted the podcast invitation, and inform that was a very nice experience and a pleasure, interview a person with this importance for the research community.

1) Talk a little bit about your career, how do you initiated, your graduation and their relationship with industry. I would like to know about your experiences and the work at the university and industry, your challenges as a reuse practitioner and after in the industry and how as the road to be there because it is a incredible career.

2) You worked a lot with software architecture and software product lines. For you, what is the importance of the industry in the field?

3) In the software product line area, we can see the community increasing. In the last year, during SPLC, we had more than 200 participants and too many from the industry. In your opinion what are the ingredients for this success in this conference?

4) For you, is there difference between domain engineering and software product lines?

5) You had/have many projects with the industry. What are the main problems to introduce software product lines in companies? What are the risks and how to avoid them? Finally, how to define a road to start it in companies?

6) Some companies believe that software product lines can be a good approach to obtain benefits related to time-to-market cost reduction, etc. However, we do not have many specific models to show the risks, the benefits, economic models etc. So, how to show for companies that a software product lines approach can be good?

7) You had many industrial projects in the software product lines area. For you, what were the strong, weak points and main lessons learned?

8) How to introduce software product lines in a software factory working with different domains?

9) We can see in the reuse field, ideas like: modules, objects, components, software product lines, and others ones such as models, services, DSLs. For you what can be the next one?

10) For you what is the state of the practice in the area and the directions for future research?

* This interview was performed by Paulo Anselmo from RiSE Labs.

Saturday, July 4, 2009

IV Workshop to Introduce Reuse in Enterprises (WIRE) - Workshop Report


4th WIRE, the Workshop to Introduce Reuse in Enterprises, the right place to discuss the state of the practice and exchange experiences with the most important reuse experts from Brazil and the world as well, was held at the Hotel Atlante Plaza in Recife, Brazil, in the last June 29 and 30.


The workshop attendance joined reuse practitioners from industry and academy. This year, people from 10 states in Brazil, and from European countries (Portugal, The Netherlands and Ireland) as well, comprising a set of 17 companies and 5 universities, came to the event.


Great discussions on reuse topic were performed, in which practitioners conducted a very interesting environment to discuss such a topic. This edition, WIRE were mainly concerned about the strategic reuse adoption based on Software Product Line (SPL) aspects, with the presence of important experts in this area, John D. McGregor, from Clemson University (US), presenting the tutorial Building Reusable Testing Assets for a Software Product Line and the keynote entitled Goal-driven Product Derivation; Frank van der Linden, from Philips Research (The Netherlands), with the tutorial Software Product Line engineering, the practical aspects, and a speech on Applying open source development in product line engineering; and Eduardo Almeida, from C.E.S.A.R (Brazil), presenting the topic Software Reuse Measurement: What the Experts Think about It.


Moreover, work-in-group sessions (see a picture of this activity in the left) were performed that enabled the attendance to discuss the following questions: 1) What are the main pitfalls and challenges to the SPL adoption in your company and how they can be handled? and 2) Which changes must be implemented in the organization in order to address such issues? This effort made possible to attendance to exchange experience and ideas to be applied in order to solve still opened questions regarding SPL adoption in companies.


At the end of the event it was announced that next WIRE, the 5th edition, will be held in São Paulo - Brazil. We will be pleased to receive you in a next turn in order to make our discussion even better!

In name of the organization, I would like to say thank you for the participants, lecturers, and sponsors. See you next year at WIRE!

Friday, June 26, 2009

9th RiSE Day


Next wednesday, on July 1st, right after IV WIRE(*), RiSE will promote its 9th internal workshop, the RiSE Day, an environment in which RiSE Members present their master and doctoral works, some concluded and some 'working in progress', in order to discuss and have feedback on the issues they have been devoted effort.

The 9th RiSE Day will be held at C.E.S.A.R, in Recife-PE, Brazil, at 10:00 a.m. Software reuse practitioners are welcome to make discussions more interesting!

(*) IV WIRE - Workshop to Introduce Reuse in Enterprises - is promoted by RiSE in conjunction with C.E.S.A.R and CIn, and it will be held in next June 29 and 30, 2009.



*UPDATE - Jul 1st, 2009*



This edition included the following presentations:
  • Towards an Approach for Service-Oriented Product Line Architectures - Lecturer: Flavio Medeiros
  • RiPLE-DE - The RiSE Process for Product Line Engineering Design - Lecturer: Ednaldo Dilorenzo
  • RiSE Adoption Process Framework for Software Reuse Adoption in Brazilian Companies - Lecturer: Vinicius Garcia
  • Towards an approach to deal with feature interaction in software product lines - Lecturer: Hernan Muñoz
  • SPL Architectures - Variability in Quality Attributes - Lecturer: Ricardo Cavalcanti
  • Towards an effective Software Product Line Testing Approach - Lecturers: Paulo Anselmo and Ivan Machado

The Ph.D. student Pàdraig O'Leary, from Lero, The Irish Software Engineering Research Centre, came to this workshop to experience the research the RiSE group has been conducted and exchange ideas with RiSE members as well. He presented the research he's been worked on, entitled A Process Framework for Product Derivation.

We are glad for the comments and contributions from John D. McGregor and Frank van der Linden, who also joined this international RiSE Day.

Best Dissertation Award


In the last Brazilian Symposium on Software Quality, Fernando Raposo, member from the RiSE Labs was awarded with the best M.Sc. dissertation in the software quality area.

In his work, Fernando defined an approach for component testing and a CASE tool to automate it. Moreover, he defined an experimental study evaluating the approach and tool defined.

Congratulations, Fernando!!

Thursday, May 28, 2009

31st International Conference on Software Engineering (ICSE) - Conference Report

Last week, I had the chance to participate in the 31st International Conference on Software Engineering (ICSE), in Vancouver, Canada. The conference had a great program composed of research papers, demonstrations, a track related to software engineering in practice (SEIP), a track also about new ideas and emerging results (NIER) and several parallel events such as the 6th International Working Conference on Mining Software Repositories (MSR), the 17th IEEE International Conference on Program Comprehension (ICPC), and the International Conference on Software Process (ICSP).

In these co-located events it is very good to see the growing of the MSR, it is incredible how it is getting attention from the community. On Monday, I spent the day hanging out the area in the morning and having some discussions with others participants. On Tuesday, it was performed the Software Requirements and Design: A Tribute to Michael Jackson, a full day workshop about his contributions in the field. The workshop was very well conducted by Pamela Zave and Bashar Nuseibeh. I believe that this kind of event it is very important to celebrate outstanding researchers working with software engineering. I had the chance to participate in previous ICSEs including the tribute to Barry Boehm. A book with his work similar to Barry Boehm, David Parnas and Vic Basili will be released soon.

On Wednesday, the conference started. The first keynote was Steve McConnell and his talk about: “10 Most Powerful Ideas in Software Engineering”. His presentation was interesting, especially, when he pointed out some ideas with a gauge showing the silly state of each one. His final list was:

1. Software Development Work is Performed by Human Beings.
2. Incrementalism.
3. Iteration.
4. Cost to Fix A Defect Increases Over Time.
5. Important Kernel of Truth in the Waterfall Model.
6. Software Estimation Can be Improved Over Time.
7. The Most Powerful Form of Reuse is Full Reuse.
8. Risk Management Provides Critical Insights into Many Core Software Development Issues. 9. Different Kinds of Software Call for Different Kinds of Software Development.
10. SWEBOK.


After Steve’s talk started the research papers and I had to run and switch among different rooms and sessions. In this day, I decided to see the following papers:
  • Tesseract: Interactive Visual Exploration of Socio-Technical Relationships in Software Development; and
  • Succession: Measuring Transfer of Code and Developer Productivity.

Next, I participated in NIER session with interesting new ideas and the SCORE competition by student teams. In this competition, Brazil was there with a team from UFPE, congrats, guys and Prof. Jaelson Castro their coach! In the end of the day, we had a small dinner with the conference members. It was good to talk a little bit more and meet others students and professors from Brazilian universities.

On Thursday, Carlo Ghezzi was the second keynote speaker with the theme: “Reflections on Forty-Plus Years of Software Engineering Researched Observed Through ICSE: An Insider’s View”. His presentation was very good with several data, charts, discussing what we produced, how to measure it, lessons learned and how to improve our current scenario. It was awesome!!

After that, I started to switch again among several presentations and I ended up with the following list:
  • Reasoning About Edits to Feature Models
  • How We Refactor, and How We Know It (Winner of ACM SIGSOFT Distinguished Papers Award)
  • The Secret Life of Bugs: Going Past the Errors and Omissions in Software Repositories
  • Discovering and Representing Systematic Code Changes.
Still in this day, we had discussion about Software Engineering for the Planet and Reflecting on Development Processes in the Video Game Industry. Finally, the paper N Degrees of Separation: Multi-Dimensional Separation of Concerns was presented and won the the most influential paper award.

On Friday, Pamela Zave was the last keynote and presented Software Engineering for the Next Internet. After Pamela’s talk, I participated in a session on Multicore Software Engineering and saw some challenges in the area and other papers such as:

  • Does Distributed Development Affect Software Quality? An Empirical Case Study of Windows Vista (Winner of ACM SIGSOFT Distinguished Papers Award); and
  • How to Avoid Drastic Software Process Change (using Stochastic Stability), and
  • Do Code Clones Matter?.

It was the report about this ICSE.

Next year, see you in South Africa.

P.S: I did not see the keynote presentations on the website. However, all the keynotes sent me it after my request. So, try it too.

Thursday, May 7, 2009

World of Reuse is open for Software Reuse experts


After several discussions with RiSE members, we decided to open the World of Reuse blog for the reuse community. As its name, this blog will be the world of reuse as a free place for any software reuse expert presents its ideas, experiences, and insigiths about it.

Thus, join us, request your login and let's build a strong forum for the reuse community.

Monday, March 23, 2009

Scoping in Agile Software Product Lines



Agiles methods and Software Product Lines (SPL) present similar benefits, both proven increasing customer satisfaction and productivity and decreasing time to market. Comparing the two process we can identify values and principles of agile methods which can be supported by SPL.

In context of SPL scoping the majority difficulty to join SPL and agile methods is related at the agile value “working software over comprehensive documentation”, because in SPL the planning is model-driven and vast documentation is required. However, in general, the other agile values can be used in the SPL scoping phase. The agile value ‘‘individuals and interactions over processes and tools” require experience and knowledge of the technical and business stakeholders and efetive communication between them, according to [Carbon et. al., 2006] this activa communication can bring the following benefits: I. The reuse rate can be increased. FE gets information on newly requested features early in an AE project and can evolve the product line assets proactively. Thus, in upcoming iterations AE can build upon the “right” reusable assets; and II. Redundant implementations of product specifics in several AE projects can be reduced. FE developers participate in planning games of all AE projects and thus can coordinate the work done in parallel in the AE projects. The value “customer collaboration over contract negotiation” is interessant to SPL because can help in the customers needs real identification. The value “responding to change over following a plan” can be achieved by adoption of a planning process with flexible execution.

Beyond of the values, agile methods have some principles which can be integrated at SPL in the phase of scoping. With relation at the principle “welcome changes”, the SPL scope can be opened the changes, in [Muhammad et. al., 2008] SPL planning and core asset development can, and in fact often are, conducted in an iterative manner. The principle “communication face to face” can be achieved with workshops or brainstorms, this meeting can help in the features identification in beginning of the scope definition. The principle ‘‘build project around motivated individuals” is related with the choice of representatives stakeholders to the scoping process with roles well-defined.

However, is difficult to combine SPL practices with agile methods and the researches in the area are recent. Therefore, will be possible define a agile scoping approach well-defined and of the relevancy to the industrial scenario?

Wednesday, March 18, 2009

IEEE Software - Top List

"From its start in 1984 through 2008, IEEE Software published more than 1,200 peer-reviewed articles".

In order to celebrate 25 years of publication, they prepared a very nice list of 35 highly recommended articles based on several issues of software development. I read some of them but sure I will do the full list.

The list is here. Enjoy and spread this very useful knowledge in any project.

Tuesday, February 10, 2009

Revisiting Parnas: On the Design and Development of Program Families

The paper presents a comparison between techniques to develop program families. “Stepwise refinement”, introduced by Dijkstra, tries to develop programs through the use of informal, intermediate representations of programs that are then refined. The refinement introduces the design decisions by implementing the informal program in actual languages.

The technique introduced by Parnas is called “Module Specification”.  In this technique, the intermediate stages are specifications of behavior that is “encapsulated” into modules. He asserts that this approach leads to decrease the final cost of producing the software as the modularization helps to deal with complexity. Also, the use of modules and specifications helps to postpone design decisions, particularly those that will differentiate family members.

Sometimes, Parnas focus seems to be only to broaden the family possibility, in other words, increase the amount of variation points. This occurs specially at the beginning of the process. His strategy aims in making the design to enable the postponement of the decisions. In some sense, he puts the focus of a software family as it was to have as many members as possible.

Although the use of information hiding to postpone design decisions points is an excellent way to create variation points, leading to the Strategy design pattern, I think it should be used with care because it could lead to overgeneralization of the modules. Modules that are unlikely to change or vary may have to carry the complexity needed to implement the improbable variation. Maybe, this occurs only at early stages in the process.

The most interesting point is that the author starts thinking about planning before developing a program family. He also gives importance to the order in which the design decisions are made. This suggests that an approach for software families should choose the degree of importance of each aspect and characteristic so that the resulting program addresses its purposes properly.

Tuesday, January 27, 2009

Revisiting Parnas: The influence of software structure on reliability

Here, Parnas steps aside from software correctness and formal proof of programs and discusses another problem: Is a program that outputs correct useful if we cannot rely on it when we demand?

He introduces the term Reliability “a measure of the extent to which the system can be expected to deliver usable services when those services are demanded”. In other words, a system is considered to be highly reliable, if it is highly probable that, when we demand a service from the system, it will perform to our satisfaction.

Software structure may harm reliability when build upon the wrong assumption that nothing can go wrong. Parnas consider some situations that can influence reliability, among them the influence of external dependencies and the correctness of the software itself.

The author explains that the error detection and handling mechanism is often neglected or poorly done. It is important that the interface between modules enable communication about errors as well. The means to express this possibility of errors between interrelated modules seems to be well solved, e.g., by Exceptions and try-catch blocks in modern languages such as Java. Still, the way to use them correctly is easily overlooked.

Nowadays, software architecture studies contemplate a whole bunch of other attributes of software architectures. Yet, the influence of software structure on reliability is still a hot topic in software architecture. And although some of the early questions can be answered, new ones arrive.