Starting a project, requirements analysis and design
Starting a project
Students often start their university projects from scratch. Firstly, this does not teach them reusability of ideas, designs and codes. Secondly, as we argued previously, this situation rarely happens in the real-world. Thirdly, a single project handed out to hundreds of students will fail to ”scratch the itch” of many. Raymond states this problem in his ”Bazaar” model and points out that ”necessity is the mother of invention”, however too often, developers spend their days ”grinding away for pay at programs they neither need nor love”. That is said in the context of the proprietary software development paradigm, but we can see how it is also reflected in CSSE courses.
In our open-source model, the first key idea is that students should be able to choose projects that they find interesting, meaningful, motivating and compelling. It is a more effective way for them to learn correlative knowledge, skills and aptitudes. Rather than having a supervisor dictating that these
materials must be learned, the students would come to realise that to produce a high quality work for the project that they genuinely care for, they would need to learn these things. The second key idea is to get students to pick up an existing project and start from mid-stream. This is the most common situation in a work environment, however, is not generally introduced to students. The project can be an existing one from the university open-source repository, or from other online ones such as sourceforge.net.
Requirements analysis
This phase in the SDLC is usually where market research and feasibility study are conducted. The purposes are to have a better understanding of the target audiences needs, to discover requirements for the software application or to explore the system that the developers intend to build. Alternatively,
it could be about requirements gathering, in which case there is a specific client with specific needs that the developers need to study about. The majority of software in the market belongs to the first case: there is no single, specific client but there are many potential end-users with a similar need of an application that can solve their problems.
However, students are not introduced to this first, more popular case. They are usually given a specific requirement specification made by the lecturer (acting as the client) or gather the requirements themselves from a single imaginary and purely ”academic” client (meaning a client made up for the purpose of teaching only). As a result, they are not presented with concerns for end-users and desirable real-world features of a software system (feasibility, modifiability, expandability, scalability, etc.).
In the open-source model, students will be encouraged to conduct a market research to realise the needs of their target audience for such software in a real-world context. In doing so, students would realise the importance of social and communication skills. They will also need to research the current
offerings in the market, or past/existing projects of other students or researchers at their university to see what they can reuse and how they can make their product stand out. This will help them to develop critical thinking skills and a competitive mind desired at the workplace.
Design
Learn from successful projects
At universities, design knowledge is passed on to students in the form of theory from textbooks and lectures. Using this method, it is hard to justify if a design decision is good or bad without a working example. There are many projects in the OSS community that have been major successes, such as
Linux, Apache, MySQL, PHP, BIND, OpenOffice.org, Mozilla.org, etc. The source code, documentation, log file, and other material associated with these projects can be a rich source of reference as to how a good design decision was made.
Most projects in the OSS community are simple in design. According to Eric Raymond [S.04], design should be robust and simple, instead of cute and complicated. He quoted Antoine de Saint-Exupery, who was an aircraft designer and a poet: ”Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.” One of the reasons why OSS development has been a success is because the design ideas are simple enough for the average developer to comprehend. This simplicity convinces developers of a projects potential and encourages participation. By having simple and free software designs, OSS projects provide good learning resources.
Learn from past failures
Universities base assessments on examinations and standardized testing, in which there is not much room for experiments and failures. Students are expected to complete projects from scratch within one or two semesters. This short time frame does not allow any experiments with design decisions. To avoid failures which can be costly in terms of opportunity cost and course fees, students are more inclined take the tried and tested methods to solve their problems. As such, students are rewarded for following what instructors recommended, and most likely punished for inquisitive experiments gone wrong. While this model may solve assessment and discipline issues, it does not teach students how to solve open-ended problems, nor does it allow much opportunity for developing an inquiring mind and risk-taking.
In the OSS model, failures are a common and anticipated part of development process. It allows students time and space to run into conceptual obstacles, to undertake directions that may not work, and to hit walls in their development. In an open source classroom, students would be presented with half-solved problems, failed solutions, and dead ends. Students are then expected to engineer new solutions from these materials. This encourages learning from past failures. As Eric Raymond notes, the most striking and innovative solutions come from realizing that ones concept of the problem was wrong. Learning from past failures and recovering from such failures is an integral part of project management, given the high failure rate of software development in the industry. Students of the OSS model would be well-prepared in dealing positively with failures, making them a valuable asset in any organization.
- « Previous: The open source educational model - Introduction
- » Next: Implementation and testing