October 26, 2007

Week 2 (starting 22 Oct 2007)

Thanks to the feedback from some of the students. They felt the blog was too wordy. Ok. I will try to use some diagrams to summarise the main points from now on. As you can see from the diagram below, I have added 2 comments for you to believe that you had made good choices of Recruting skillful people and use the right tools as the top 2 best practices for software development. This blends in very well with DBT as highlighted above. So please do well in your course! This week, we have discussed 2 software development process model :
  1. Waterfall (and modified Waterfall)
  • This model forms the fundation of all development models and
  • Typically phases are Planning, Requirement Gathering, Requirement Analysis, Design, Implementation, Testing and Support.
  • Some constraints found for Strictly Waterfall model could be: no concurrent activities is allowed; only deliver at the end of the implementation phase
  • To overcome these constraints, we used Modified Waterfall model - i.e. overlapping of relevant phases

2. Unified Process (Iterative and Incremental approach)

  • From developers' perspective, this approach means repeating the basic Waterfall processes in each iteration and incrementally build the system functionalities.
  • From customers' perspective, this approach provides opportunities for feedback and comments in reviewing the intermediate deliveries of the system. This benefits both developers and customers as they are more involved and build confidence in developing the system.

We illustratred the iterative and incremental development approach by the example of building a Video Rental System where the features to be included are:

  1. Store records of all video discs
  2. Store records of all customer details
  3. Handle daily rental business (i.e. rent and return)
  4. Generate monthly sales report

The customer is very sure of the requirements for each of these functions..however, he needs you to deliver the functions incrementally so that he can slowly prepare the necessary records for operations in 6-months’time.

To plan for the iterative and incremental development approach, we will link these functions in sequence so that the intermediate releases are logical. The various iterations are shown in the diagram below.

So by now, you have an idea of what software development models are like. In future, you will come across more other kinds of development models but the fundations are still the same as illustrated in the above 2 models. For practical, we had looked into Microsoft Office 2000 case study to understand how the develpment enviornment evolved for different stages of building the office product suite. Let me just highlight some of the critical factors that made their Office 2000 project successful.

  1. define clearly the vision of the project to allow every team members know the common goals and work towards it
  2. maintain good working relationships between the project managers, developers and testers
  3. adopt milestone driven approach to track the progress
  4. use daily build to incrementally link up all the source code
  5. conduct code review to identify defects before executing the code
Now that we know the life cycle and process models of software development, we will go into the details of defining the processes next week. Thanks to your co-operation! You had better behaved during this week's lecture. Keep it up!

October 16, 2007

Week 1 (starting 15 Oct 2007)

For week 1, we have an overview of what software engineering is all about. I hope by completing the tutorial and practical this week, you can have an understanding of what to expect in this module. Lets' recap some of the main points discussed.

  1. Software engineering suggests to follow a systematic approach to develop software that is of good quality. Or to put it simply, it enable us how to work as a team using scientific and systematic approach to develop a piece of quality software.
  2. A process defines a series of steps to execute a task. It helps to identify the required inputs to do the task and ensures an expected output to be produced.
  3. As there are many tasks to be executed in a software development project, there will be many processes to govern each of these tasks. These processes can then be presented as a process model to to show different processes (plan the schedule, gather requirements, coding, testing) that to be used in software development.
  4. We used Microsoft Word as an example and deduced that a piece of quality software comes with some good attributes like having easy to use, online help available, basic editing functions (open, save, delete, print, font size, styles, colours), reliable..etc.
  5. We also recognised soem challenges faced in software development may include working as a team, having good time management, meeting tight deadlines, having the right technical skills for the development..etc. The best practices in software engineering will help us to address some of these problems.
  6. We concluded the overivew by saying that having a well defined software development process in the enterprising organizations is critical as it helps to overcome the potential challenges and increase chances of project success.

In the practical, we have read about the 10 Best Practices recommended for Software Development Project. They are listed below. Best practices, derived from the past experiences, are the effective and efficient way of doing things. By following these best practices, we hope to aviod the problems which would have been encountered. I have also asked you to identify 2 B.P. that you think will be most useful in projects. The consolidated outcome is indicated above. The number in brackets are your selections.

  1. Recruit skilled and experienced people (51)
  2. Use 'leading-edge', not 'bleeding-edge' technology (1)
  3. Use the approprite development process (12)
  4. Provide the right tools (41)
  5. Use source-control management (4)
  6. Apply sound estimating techniques (3)
  7. Break efforts into mini-milestone tasks (17)
  8. Track all project hours (18)
  9. Understand the only constant is change (2)
  10. Provide project leadership (35)
We can conclude the top 6 choices of the best practices from the students are:
  1. Recruit skilled and experienced people
  2. Provide the right tools
  3. Provide project leadership
  4. Track all project hours
  5. Break efforts into mini-milestone tasks
  6. Use the approprite development process

The first 3 choices don't come as surprises to me. But it was the other 3 that make me feel glad. Because they are going to be taught in this module! There is a matching of customers' needs to my product (It1573). Great! I have also conducted an activity on Requirement Gathering (about 20min) during practical to let that you experienced 'how difficult' it can be to know what the customers really want for their intended system. Two scenario were created separately for 2 practical sessions.

  1. To generate a monthly summary report for the medical claim of the Medical Claim System in Visible Sound Pte Ltd (Wednesday)
  2. To capture the rental policy of the Rental System for Visible Disc Pte Ltd (Thursday)
Generally, in the first session, the students found it difficult to start off. Probably you are not familiar with the domain. Whereas for session 2, students could ask a lot more relevant questions. I think the main reason is that Rental System is a very typical system like our Library portal. Students are already familiar with the domain. So we can conclude from this exercise that:
  1. Having the relevant domain knowledge helps in understanding the requirements better
  2. Interviewing customers is one of the ways to get more detailed requirements (other alternative can be through survey)
  3. It is important to know the correct requirements right at the beginning
We had fun in these activities. Thanks for your participations! I took the chance also to introduce to you our Centre for IT Innovation (CITI) as you are representing the project leader from the centre to do the interviewing. Be patient, you will get to work there in 3 years' time! We had a good start but lets's have even more fruitful learning experiences in the coming week! One thing I hope for improvement is that -- Please dont talk during lecture..its very disturbing to me ..ok?