WORKING- VS. EDUCATIONAL PROCESSES IN SOFTWARE ENGINEERING VS. CDIO
Daniel Einarson
Computer Science, Kristianstad University, Sweden
ABSTRACT
The relatively short history of IT can unfortunately point out a number of failing projects concerning missing deadlines, functionalities, low quality, etc. Theories and techniques have been developed, to meet inherent problems and challenges. But also software process models, that is ways of working, where several typical activities within software processes have been emphasized. Still, the use of software also seems to bring even further requirements on new techniques. A conclusion is therefore that, besides from some core fundaments, inherent parts of IT are, by necessity, evolving in themselves.
When it comes to educational systems, an appropriate set of theories, techniques, and principles should be taught to prepare for working in software industry. Still, this is not enough. A software engineer actually needs to be able to handle all the steps of a software process. That is, educational systems have to find ways to support teachings, not only in theories, techniques, and principles, but also in ways of working that hopefully should correspond well to the practices of software industry. Furthermore, students should be gained by getting educational support to meet and handle the ever changing future.
This contribution presents project based approaches where the process of developing the project result should have several benefits. First, it should provide a basis for training core practices of Computer Science, second it should prepare for software processes, i.e., ways of working in software industry, and third, it should aim for students being responsible for self learning. Especially, the third point is significantly important in a discipline of ever changing techniques. Inspiration is taken from well known Software Process Models. Such are models are shown to lie close to the CDIO initiative. Software Process Models are discussed, comparisons with CDIO are provided, as well as a case study on a project based course.
KEYWORDS
Project based learning, Education concepts, Software Engineering, Cooperative work, Evaluations for groups.
INTRODUCTION
Software Engineering is probably one of the most recent engineering disciplines. As such
there have been major requirements put on that discipline to undergo appropriate
transformations from immaturity to higher levels of maturity. This does not only relate to the
need for that discipline in itself to be reliable, but also to the ongoing almost explosive
change in amount of software that more and more is integrated into society. The latter, on
the other hand, is driven by pure commercial requirements, as well as requirements on security, health, entertainment, and so on.
According to David Parnas, a well-known expert in Computer Science and Software Engineering, software is the most challenging and complex engineering construction in human history. Large scaled software may include millions and millions of lines of code, where high requirements are put on functionality as well as quality, on levels of code as well as on software as a whole. Preparing students for real life software engineering tasks require exhaustive practice in programming skills, theory, and techniques. However, to meet the challenges of developing large scaled software products this is not enough.
The ability of fulfilling a software project corresponds to the ability of controlling and steering the working process that takes you there. That process may start from a position of low or even no knowledge of a specific subject, to a resulting software product, ready for deployment. That is, besides from technical skills, students are also gained by being prepared for the working process itself. Therefore, educational systems should provide ways of experiencing students, in Computer Science and Software Engineering, in such directions.
Several models of Software Engineering processes have been proposed. Typically, those suggest iterative and incremental ways of working, with frequent more or less formalized meetings for discussions and feedback. This, among other things, implies allowance for sets of requirements to mature throughout the process, avoiding mismatches between, on one side, expectations from stakeholders, and on the other side implementations of developers.
From the point of view of educators, the value of creating valuable and well motivated structures for educational purposes should be clear. The relatively new and innovative approach of CDIO proposes educational forms for engineering studies generally. However, in the perspective of the author, it is of course especially interesting to see CDIO in the context of Software Engineering studies. Interestingly enough, we can see that there are several similarities between suggested working process models of Software Engineering, and educational forms suggested through the CDIO initiative.
The contribution of this paper is mainly two folded, discussions of on working processes, and a case study in that context. An investigation on working processes of Software Engineering, and comparisons with the CDIO initiative will be provided. Moreover, project based learning of the educational system of the author’s home department will be outlined. A case study on a project based course will also be outlined. Problems, outcome of the course, and possible improvements will be discussed.
SOFTWARE ENGINEERING PROCESS MODELS
By Computer Science we often mean the core theories, techniques and principles behind programming computers. By Software Engineering we normally mean something more, an engineering discipline covering all aspects of developing a software system, including handling requirements, design, implementation, test, deployment, and maintenance.
Terminologies and concepts may however vary. Being a programmer may mean that you write a complete program. A software engineer rather implements only parts of a bigger system, in a team of developers. A software engineer also has to regard the mentioned aspects on software engineering ( [7] ). Furthermore, by a Software Engineering Process we mean all the activities included to fulfil a software project.
Software Engineering as a field was born in 1968 at a NATO conference covering the, so
called, software crises ( [8] ). Software crises reflect on chronic failures of large software
projects to meet requirements, quality, budget, schedule, etc. From that point several
Software Engineering process models have been proposed to meet the software crises.
Some are listed below.
The Waterfall Model
The Waterfall model ( [11] ) is a general and natural model for software development. The model describes how to go through a number of steps to fulfil a software product. The steps cover activities such as, defining the requirements and analysing those, designing solutions, implement the software system, test the system, and finally put the system at an operating state and maintain it. Figure 1 illustrates this. The model also points out a temporal order where one step should be finished before starting the next. If, at operational state, failures are discovered at one of the previous steps, those are corrected and the following steps are then corrected according to that. This seems natural; however, a typical problem lies in the originally stated requirements, where those have an ability to evolve during the whole process. This is a result from increasing knowledge of those from the points of views of both the stakeholder, and the developer team. Furthermore, requirements may change because of different kinds of changing circumstances. Changing a requirement is normally considered very costly since that implies changing dependencies in the following steps.
Figure 1. The Waterfall model ( [11]) . Iterative and Incremental Models
To meet the problem of changing requirements, Iterative and Incremental process models are proposed. One such model is the Rational Unified Process (RUP, [10] ), which instead suggests working in smaller increments of disciplines, such as, requirements definition, design, implementation, and tests. This is briefly further discussed in the sequel.
A selected number of requirements are analysed, designed, implemented, and verified. At the end of an increment there is a meeting with customers to discuss the system so far, how the requirements are met, and to discuss the proceeding work. In this way, and through an exhaustive documentation, the work should be monitored and validated, and serve as a basis for building the next increment. That way of working is iterated until the project is fulfilled.
Briefly, the process model includes four main phases:
Inception: Set the business case, and define the main requirements
Elaboration: Develop an understanding of the problem domain and design the system.
Construction: program and test.
Transition: Deploy the system in its operating environment
For each of those phases a varying amount of effort is put into the disciplines of requirements, design, etc. This is illustrated in Figure 2, where time scale goes from left to right, and effort on disciplines per phase is outlined. An interesting point of view here is that also project management is included as a discipline of RUP. Project management, here involves planning the process, controlling it, handling risks, etc. For more information, [10] is outlining this process model, for educational purposes.
Figure 2. Phases and Disciplines of RUP ( [10]) .
eXtreme Programming, an Agile Process Model
While e.g., RUP meets changing and unclear requirements, criticisms have been pointed out towards RUP, and other similar process models. Those, among other sides, concern the exhaustive documentation, where that is a part of controlling the process from a management point of view. The main intension is to be even more agile to changing circumstances, and exhaustive documentation is here considered counterproductive. Here is the software rather considered the most important, not documentation. While, e.g., RUP, may be considered as a management choice of process model, agile process models are more considered as the programmers choice. Still, criticisms towards agile process models have also been pointed out, and concern the inappropriateness for large scaled projects. For projects with need for teams larger than about twenty developers, other forms are recommended.
The eXtreme Programming ( [14] ) approach put several aspects to the extreme. For instance, design should be simple, and tests are done totally integrated with implementation.
Furthermore, the customer is one in the team, constantly available for questions on requirements, for feedback on prototypes, and for prioritizing amongst tasks to do next.
Those aspects, and others, are captured and illustrated by Figure 3. For more information
please see, for instance [14] .
Figure 3. Practices of eXtremeProgramming, ( [14]) .
Summary
The immaturity of the field of Software Engineering, the lack of experiences, the software crises (see discussion above), in combination with an almost explosive growth of the amount of, and need for software, have forced that field to come up with solutions. Process models regard ways of working, guidelines to reach the goals of fulfilling software projects in time and within budget, and meanwhile meeting the requirements of the customer, in qualitative ways. Still, even if a process model seems to be appropriate that does not guarantee that the project will be successful. It can only increase the probability for that.
From an educational perspective the software engineering process models provide a two folded interest. On one hand, if software industry maintains process models, it is of interest to train students in those for them to get appropriate experience. On the other hand, the ways of working proposed through process models may bring inspiration to educational processes.
That is, theories, techniques, and principles, may be learnt in a context of an educational process similar to a software engineering process. How this has been approached is further discussed at the section Project Based Education.
SOFTWARE ENGINEERING PROCESS MODELS VS. CDIO
While Software Engineering process models have its origins in software crises, the CDIO initiative ( [13] ) origins from a desire from industry for more mature students. Maturity does here relate to capabilities of putting core engineering knowledge into practice in real world projects. Besides from real world problems, real world projects also concern a process of working phases to move from originally stated problems to fulfilled solution under operation and maintenance. Typically, at an abstracted level there are four main phases. The first phase concerns setting the business case, catching the main requirements, and estimating required resources, in terms of time, money and personal. The second phase typically stands for high level design, the third for more fine granular design, and constructing the product.
Finally the forth phase stands for deploying the product, putting it to an operating state, and eventually maintaining it.
The innovative CDIO initiative provides an educational support to meet the industry desires
for more appropriately prepared students. Here the letters CDIO, stands for Conceive –
Design – Implement – Operate, that in turn in much corresponds to the mentioned four
phases. For more detailed information on this please see [13] .
Now, returning to the previously described Software Engineering Process Models, the same four main phases have also been outlined in that context. No matter what model is used we can see the same core activities, however, more or less parallelized. Main goal of the phases of the RUP model are (for more detailed information, please see [10]):
Inception, Establish the business case for the system.
Elaboration, Develop an understanding of the problem domain and the system architecture.
Construction, System design, programming and testing.
Transition, Deploy the system in its operating environment.
Again we can see the close correspondence between the concepts. So far they may be interchangeable. That is, so far, following a Software Engineering Process Model for software development in education could as well be done by following a plan for using CDIO.
Now, CDIO have been put into rather exhaustive evolvement, and tested out in itself, and may therefore meet the mentioned desires from industry. The conclusion should therefore be that following a Software Engineering Process Model for educational purposes should correspond to similar desires from software industry. That is, in the sequel, when such models for project based learning are discussed, they could as well be seen as CDIO based projects.
Actually, a more detailed analysis is required for comparisons. As an example, assessing the work is done in different contexts for different purposes and because of this, probably looks different; however, this is put outside the scope of this contribution. In the sequel it is assumed that assessing project based educational work is done according to how to measure progress of Software Engineering Process Models.
PROJECT BASED EDUCATION
According [6] , project- and problem based learning forms are attending more and more interest in Swedish educational systems. Pupils of elementary school more and more work in contexts of specific themes, where teams of pupils drive their own process to get and present the appropriate information. This in turn will probably contribute to a sense of familiarity for those later on, when it comes to project based learning in teams of higher education.
Motivations
In [5] , several examples on project- and problem based learning at Swedish universities have been pointed out. Furthermore, [5] presents a number of motivating points for developing software systems in project teams, and especially reflecting that on higher education.
First, if systems are supposed to be interesting enough, those are seldom developed in a scope of one or two persons. Furthermore, real world problems normally inherently have a scale and complexity that is not possible to manage for only a few persons. You may need ten, twenty, or even hundreds of people to fulfil a complex task.
Second, in software industry most often projects are performed in teams of developers. Providing practice in this should therefore also be essential in higher education for preparing students for software industry ways of working.
Third, the Higher Education Ordinance of Swedish National Agency for Higher Education points out several desired competences engineering students should have that probably may be developed though project based educational forms ([5]).
Forth, projects often involve needs for investigating techniques and knowledge that in
advance may be unknown for the developer. Thus, project based learning in itself
supports overcoming the challenge of taking responsibility to actively find new solutions to problems. This is perhaps especially essential in software development where we can see an increasingly variety of proposed techniques for an increasingly amount of different purposes.
The forth point above illuminates on the impossibility in the ambition of providing a complete picture of all parts of computer science to students, perhaps especially because of constant changes in techniques. All we can offer are restricted overviews, and in depth studies of some selected concepts. The ambition we can have is to provide an appropriate fundament for further investigations. In [3] this is pointed out through:
”Universities are supposed to enable their students to engage in effective action in situations they are going to encounter but as the future is increasingly unknown, these situations are impossible to define in advance. What universities have to offer is knowledge and therefore you have to prepare for the unknown by means of the known”.
Finally, the background and the reasons behind CDIO ([13]), with impact and desires from industry on engineering studies, strengthen the motivations for project based learning even more. That and the growing interest in CDIO in itself may serve as great inspiration in developing project based learning forms further.
Project based learning at home department
The main focus on [5] lies on studies of project based learning forms outside of Sweden, especially China, and Arabic countries. The result shows a significant discrepancy between Sweden and those countries, in the use of such learning forms. The reason behind the studies of [5] is the quite great amount of students from those countries that have been, and are studying at our home department. This in turn, and also with respect to the above pointed out reasons for project based learning, has inspired us to introduce project based learning at several courses, starting already at the first semester.
At the section below, a case study with a project based course is provided. Typically students of that course have been involved in projects as listed below, where the author of this contribution has been more or less participating as a supervisor or teacher.
Project at the end of course in fundamental programming, about 5 hp, first semester.
The project is done with an iterative and incremental process style (see section on Software Engineering Process Models, for more on this). There is one project group meeting with a supervising teacher each week, during a five week’s period. For each meeting the students shall upload and discuss documents on requirements, risks, design, and project plan. Progress in documents and software product shall be shown, and that also forms the basis on which student’s course grade is assessed. A project group involves about four participants.
Project at the end of course Object Oriented Programming, about 5 hp, second semester. This corresponds very much to the first semester project, but with impact from more detailed teachings in design principles, and programming techniques.
Software Engineering, about 7.5 hp, second semester, year 2. The project is based on an eXtreme Programming (XP) process style (see section on Software Engineering process models, for more on this). It does not have one meeting per week between teacher and project group. Instead, there have been full days of working XP-like. Principles and techniques are covered through the project.
Software Projects, on 15 hp, first semester, third year. In contrary to previous courses
projects are here performed in large project groups. Project group meetings take
place every twice week, where a number of documents should be uploaded and
discussed. Principles and techniques are covered through the project. More information on this course is provided in the Case Study section below.
Normally a project ends with full days of project presentations where the result of the work of the project groups are shown and discussed. In some cases this is done in front of a common audience and with invitations of newspapers ( [9] ). Grade is generally based on process, presentation, final software product, and project report.
A CASE STUDY
The case study is based on a course that covers 15 hp, and has been running at the first semester (autumn semester) of the corresponding students’ third year, which also is the last year of those. The number of students was about 60. Each group were quite large, about 20 students, which in turn were divided up into sub groups of about 4 students. There were originally 3 groups, one of those was split into two halves, because of too hard cooperation problems. This paper will focus on the two remaining groups of about 20 students. Group 1 is a group with solely Chinese students. Group 2 is mixed of a number of nationalities, such as, from Sweden, Arabic countries, Cameroon, and more. That first division into project teams were done by teachers, where the decision was based on experiences from previous desires from students. The course was chiefly provided by one main teacher, which is the author of this paper (the course teacher). Besides from that, there were three co-teachers mainly assisting at developing and participating at some of the course labs.
System structure
The project itself concerns aspects of a so called interactive house. The technicalities of the project were presented at STCC, Hangzhou China, 2010 ( [4] ).
In short the interactive house project should consider several distinct parts, including an embedded server and database, web based interfaces, remote controllers in terms of mobile phones, a physical simulation of a house (including light, fan, radiators …). Parts of an interactive house should, furthermore, communicate through well defined communication protocols. Figure 4 illuminates on the core system structure.
Figure 4. Illumination of system of the Case Study ( [12] ).
Mobile Phone Controller unit
Server Controller
Web based User interface
Temperature Sensor Device Light On/Off Device
Coffee Machine Device
Media Player
Communication towards the interactive house may be performed from both computers, and mobile phones, at the same time, and there may be any number of those. Mobile phones may be the most modern smart phones, or more traditional mobile phones. A media player could be built as a piece of software with a graphical user interface (GUI) from which pieces of music are selected and played. The simulation of the house is done through a small scaled physical house model where communication with light, door locks, fan, sensors for temperature, etc, is provided through an Arduino micro controller ( [1] ). Figure 5 illuminates on the latter. Other devices such as coffee machines, etc. are completely simulated in software.
Figure 5. House simulation with Arduino micro controller board ( [1] ).
Project team structure
The project team was mainly divided into sub groups with respect to sub tasks of the project as a whole, see Figure 6. That was more or less decided from the start by the course teacher.
That is, one group handled the server with a database, two groups handled the house devices, one for software simulation, and another for the physical house. Furthermore, the control units were developed by two groups, one for a web based user interface at a computer, and the other one for the mobile phone. Sub tasks developed in sub groups aims for parallel developments, however, that also requires well defined communication interfaces between functionalities. Therefore one group was especially dedicated to that task. Finally, one students was selected by the teacher as the Project Manager, with a leading role, and one student was elected Requirements Manger, with specific responsibility in communicating the system requirements between teacher and project team members. Moreover, each sub group had their own sub group leader.
Figure 6. Project group structure.
All in all there were put high demands on the student groups to manage communication and negotiation to fulfil their main project task. Communication with course teachers was mainly
Project Manager – Requirements Manager Server and DB Development group
Devices development groups Units development groups Communication Protocol
Development group