Software Engineering and Project Management

Home Admissions Course Guide Software Engineering and Project Management

This Course Guide has been taken from the most recent presentation of the course. It would be useful for reference purposes but please note that there may be updates for the following presentation.

COMP S356

Software Engineering and Project Management

Hello and welcome to COMP S356 Software Engineering and Project Management. For the best learning experience and optimal use of your study time, I recommend you study this Course Guide carefully.

This course is a one-year, ten-credit, higher-level course that is compulsory in the programmes leading to a Bachelor of Computing (BCOMP), Bachelor of Computing with Honours in Internet Technology (BCOMPHIT), Bachelor of Science in Computing and Networking (BSCCN), and Bachelor of Science with Honours in Computing and Networking (BSCHCN).

The course is optional in the programmes of Bachelor of Electronic Commerce (BEC), Bachelor of Electronic Commerce with Honours (BECH), Bachelor of Science with Honours in Computer Engineering (BSCHCE), Bachelor of Science in Electronics (BSCE), and Bachelor of Science with Honours in Electronics (BSCHE). You can also take the course as a free choice if you have taken either COMP S210 Computing Fundamentals or COMP S201 Computing Fundamentals with Java, or if you have experience in object oriented programming.

Technologies for software engineering, particularly software modelling tools and project management skills, have advanced at a fast pace. The use of these technologies is vital in today's competitive environment. Professionals in the information technology field need a firm foundation in understanding the software system requirements, software structure, design and development techniques through the use of the Unified Modeling Language and its supporting software development tools, and relevant project management skills. They should be adequately equipped with the knowledge and skills to participate in specification, design, operation and evaluation of software systems and project management.

Before enrolling in this course you should have completed COMP S210 Computing Fundamentals or COMP S201 Computing Fundamentals with Java, or have a basic understanding of object-orientation (OO). Specifically, you need to understand the following terms very well — object, message, class, inheritance and interface. If you do not know their meaning, please study them in an online tutorial at
<http://java.sun.com/docs/books/tutorial/java/concepts/index.html>.

The Course Guide tells you briefly what the course is about and how you can work your way through the material. It suggests the amount of time you will probably need to spend in order to complete each unit and assignment. It explains how your final grade will be determined. Finally, we will discuss study skills effective for this course.

The overall aim of the course is to develop knowledge and skills in the specification, design, testing and maintenance of software systems. Specifically the course aims to:

  1. Develop your knowledge of terminology, notations and methods for effective communication regarding software engineering activities.
  2. Enable you to apply software engineering methods in a variety of software processes.

Upon completion of this course, you should be able to:

  1. Analyse key software engineering concepts and activities.
  2. Draw UML (Unified Modeling Language) diagrams.
  3. Elicit and analyse requirements.
  4. Design systems and objects using patterns.
  5. Implement and test a system based on its models.
  6. Apply project management techniques.
  7. Identify the characteristics of various software life cycle models.
  8. Measure software structure, size and quality, and apply the Goal/Question/Metric (GQM) paradigm.

COMP S356 Software Engineering and Project Management is designed to provide a structured and stimulating environment in which to learn the concepts and techniques of modern software development and project management.

The course is organized into ten study units. The study units guide your learning. Each of the first nine units is designed to require study time of between 21 and 26 hours. This includes the time needed to study the textbook and any other assigned reading, as well as time needed to attempt the self-test exercises in the units. The last study unit is much shorter than the previous nine units to give you ample time to study for the examination.

Each of the four assignments is designed to demand 10 to 12 hours to complete. The estimated time to complete the assignments assumes you have carefully studied the related course material.

The estimated time to study the materials and to work on assignments is for your reference only. It is quite common for a student to spend longer than the estimate.

The first unit is the foundation of the whole course. It introduces you to the Unified Modeling Language (UML) notation that will be used in most other units. It is most important that you to spend enough time to fully grasp the content of Unit 1. Most units are built on top of the materials covered in previous units. You are advised not to skim (or skimp) on any unit.

The units include self-test exercises. Answers are provided at the back of the units, but you are advised to attempt the exercise before looking at the answer. In COMP S356, it is not enough to learn the solutions to a few problems. You also need to learn and practice how to find a solution by yourself. The self-tests and the assignments together assist you in achieving the stated learning objectives for individual units and the course.

There are optional tutorials and surgeries you can attend. You are strongly encouraged to make use of them. However, they do not replace your careful study of the course materials.

Keep up with your reading and be on time with the assignments. If you do, COMP S356 will be an enjoyable and enriching learning experience for you.

The following chart gives an overview of the course structure.

UnitTitleStudy weeksAssignment
1Introduction to Software Engineering and UML41
2Requirements Elicitation and Analysis4
3System Design32
4Reuse and Object Design4
5Implementation and Testing43
6Change Management3
7Project Management3
8Software Life Cycle and Methodologies44
9Measurement3
10A Roadmap2 
 Revision2
 Total36

Each package you receive from HKMU for COMP S356 contains a list describing its contents. There will be instructions on the list telling you what to do if any of the contents are missing. Due to the rapidly changing nature of the field, your course materials may require frequent updates. Therefore some of the course materials, for example the later units, may only be available in a second or even third package halfway through the course presentation.

 

Study units

At the beginning of each study unit, there is a progress chart suggesting how you should spread the study of the unit over three to four weeks. The chart helps you stick to the presentation schedule without introducing delay. Poor time management is the worst enemy of distance learning students. If you follow the suggested schedule closely, you will learn well in an enjoyable way.

Sometimes you will find the course units repeating the materials in the textbook. This repetition is intentional. The same concepts explained in different words can often enhance understanding and retention in the memory. You should remember that the study units are not meant to be a substitute for the textbook.

 

Set textbook

Bruegge, B and Dutoit, A H (2010) Object-Oriented Software Engineering: Using UML, Patterns, and Java, 3rd edn, Prentice Hall. ISBN 0-13-815221-7

Shown above is the only textbook used in this course and you must buy it. HKMU's designated bookstore, A&P Bookshop, usually carries sufficient quantities of the textbooks at the beginning of the course presentation, but you can also buy it at any other bookstore that has it in stock. Try and buy the book in the first month of the course so that you don't fall behind. Students in the past have been unable to buy the book until a few months after the course had started. We have been told that the bookstore will return unsold textbooks to the publishers after the first two months.

The book was chosen for its up-to-date content. It is relatively easy to read. Many other software engineering textbooks overemphasize the breadth of the subject. Our selected textbook covers the subject in enough depth using an effective OO approach. At the end of the course, you will have acquired enough software engineering skills to apply them to real software development projects.

 

Computer Hardware and Software

You will need access to an IBM PC compatible computer with the following minimum configurations.

Hardware

  • IBM-compatible PC with Intel Pentium II CPU (Pentium III recommended)
  • 128 MB RAM (256 MB recommended)
  • Internet access (broadband recommended)

Software

  • English Windows 98 or above
  • Web Browser: IE 5 or compatible

Presentation Schedule

The Presentation Schedule is available on the Online Learning Environment (OLE). It will help you plan your study. The time and venues of tutorials and surgeries are also posted on the OLE. However, you should watch out for announcements of any changes.

Study units

Generally you can expect to do well if you have the prerequisites for this course and follow the progress chart at the beginning of each unit. The study units guide you in your study of the textbook. The study units also guide you in studying the selected technical papers included as supplementary readings.

After you have studied the course materials, you will benefit from studying software engineering materials that can be found in the library and on the Internet, in professional journals, and so on. Don't forget that our HKMU Electronic Library allows you to read books via the Internet. Learning from additional materials on your own is essential in becoming a competent software engineer. Due to the volume of the materials already included in this course, you are not required to study extra materials you found for yourself, but it is encouraged.

Each study unit is organized into a number of sections. Some sections have self-test exercises to help you reinforce what has been covered or further develop from there. You will benefit more by trying the exercises rather than just reading the answers.

 

Unit 1: Introduction to Software Engineering and UML

This unit describes software engineering concepts and development activities. UML (Unified Modeling Language) is introduced as a notation for expressing models. You will install and learn to use a software tool for drawing UML diagrams.

 

Unit 2: Requirements elicitation and analysis

This unit describes requirement elicitation and analysis concepts. You will learn how to perform and manage activities in requirement elicitation and analysis. The activities include the identification of actors, use cases and scenarios. After refinement of use cases, you will identify entity objects, boundary objects and control objects with associations and attributes. You will create sequence diagrams from use cases and model state-dependent behaviour of individual objects.

 

Unit 3: System design

This unit describes system design concepts such as subsystems, coupling, and architectural styles. You will learn to perform system design activities such as identifying design goals, persistent data and boundary conditions. You will learn how to document and communicate system design.

 

Unit 4: Reuse and object design

This unit describes reuse concepts of design patterns and components. You will learn to select appropriate design patterns and components. You also learn to specify object interfaces in terms of signatures, visibilities, pre-conditions, post-conditions and invariants for reusability.

 

Unit 5: Implementation and testing

This unit describes the implementation concepts of model transformation, refactoring, and forward and reverse engineering. You will learn to manage the documentation and assign responsibilities. The unit also describes testing concepts such as test cases, test stubs and test drivers. You will study the testing activities of inspection, usability testing, unit testing, integration testing and system testing. At the conclusion of the unit, you will be able to plan and document testing.

 

Unit 6: Change management

This unit describes how to track software development decisions. You will learn about configuration management concepts of versioning, change requests, releases, and promotions of new releases. At the end of the unit, you will be able to perform configuration management activities of promotions, release, branch and variant management.

 

Unit 7: Project managing

This unit describes the project organization, communication and management concepts. The various project management activities we will cover include planning, organizing, controlling and terminating. We also cover risk management activities such as risk identification, analysis, prioritization, abatement and mitigation.

 

Unit 8: Software life cycle and methodologies

This unit describes the IEEE 1074, the standard for software life cycle processes. We will cover the capability maturity model (CMM), personal software process and team software process. Methodologies differ in the amount of planning, reuse, modelling, control and monitoring. We will cover the different methodologies of Rational Unified Process (RUP), Extreme Programming (XP), Agile Development, SSADM and PRINCE2.

 

Unit 9: Measurement

This unit describes the use and theory of measurement. Various metrics are covered, such as function points, OO metrics, and lines of code (LOC) and cyclomatic numbers. We discuss the establishment of measuring programs using GQM. We conclude the unit with ISO quality standard.

 

Unit 10: A roadmap

This unit describes the code of ethics endorsed by professional software engineering bodies. You will explore ways of enriching your software engineering skills beyond this course.

Assignments

There are four assignments in this course. All of them are counted equally towards the calculation of the final grade. Each assignment is estimated to take 10 to 12 hours to complete, assuming you have already acquired a good understanding of the corresponding course units. Assignment questions and details will normally be posted on the OLE a month before the assignment is due. You can find the tentative due dates for assignments in the Presentation Schedule.

If you cannot finish an assignment on time, you can still do one or more of the following. Get an extension from the tutor for up to seven days. Get an extension from the course coordinator (CC) for 8 to 21 days. Under very special circumstances only, get an extension from the Dean of the School of Science and Technology. There is no guarantee that your request for extension will be approved. You must get approval before the original due date.

If you can only manage part of assignment, don't be hesitate to submit the part you can do. You will still get marks contributing to your final grade. You will also get useful feedback from the tutor when he or she marks your work. The decision to skip an assignment increases your chance of falling further behind and failing the course, and because all assignments are compulsory, a mark of zero will severely reduce your final mark.

Unless stated otherwise, all assignments require individual effort. There are many forms of plagiarism. One form is to share an answer with another student. Another form is to take an answer from a book or article without acknowledging the source. You should get in the habit of quoting your source of reference. When a student is caught being involved in any form of plagiarism, he/she will lose all or part of the assignment scores.

 

How to do your assignment

For each assignment, first read quickly through the description of the assignment questions. Make brief notes on what you believe are the key points raised. Next, carefully read the description two or three times while referring to your notes. Make sure that you have identified all the key points. Now, read the instructions that accompany the problem. These explain what you are required to do. Make sure you understand what is required and that your assignment provides what is required.

Make sure that each assignment reaches your tutor before the due date. Marks may be deducted for work that is late without pre-approved extension. If, for any reason, you cannot complete your work on time, contact your tutor or CC for an extension before the assignment is due.

 

Final grade

The final mark is split between the assignments and the final examination. All four assignment scores are used for the calculation of the final grade.

TypeWeighting
Four assignments4 x 7.5 % = 30%
Final examination70%

 

Final examination and grading

The final examination for COMP S356 Software Engineering and Project Management is of three hours' duration and it has a value of 70% of the total course grade. The Presentation Schedule has set aside time for your revision for the examination.

Do not worry that the examination will contain tricky questions. This would not be consistent with the clear, open approach HKMU takes to helping its learners succeed in their studies. You will be provided with a specimen examination, similar in format to the final examination, although, of course, with different questions. To earn a passing grade for the course you must attain a passing grade on assignments and on your final examination.

There are 12 two-hour tutorials for each group. These tutorials are not compulsory, but you are strongly advised to attend. The tutorials are not lectures. They focus on the part of the course material that causes problems to students. To benefit the most from the tutorials, you should study the course materials before going. Normally, you will only attend the tutorials for your own group, though you can sit in on tutorials of another group provided that all students in that group have a seat and your presence does not affect students in the group.

Your tutor will mark and comment on your assignment submissions. When you have academic problems, the tutor is the first person to ask.

 

Surgeries

Many types of student questions are better answered face-to-face. Surgeries allow you to ask any tutor on duty. Surgeries are often scheduled between tutorials so that you don't have to wait for the next tutorial to ask questions.

 

Online Learning Environment

HKMU uses the Online Learning Environment (OLE) to support distance learning. The OLE provides an interactive learning environment for communication among students, tutors and course coordinators. For this course, it is required that you use this online tool for your studies.

As a seasoned user of the Internet, you will find the OLE easy to use. If this is not the case, the OLE user guide should help.

Make sure you log onto the OLE at least once a week to read announcements and discussions on the forum. Assignment questions are also posted on the OLE.

The OLE Discussion Board is the main forum for communication in the course. You can discuss any study problems with your tutor and fellow students in the discussion board. Your tutor also logs onto the OLE at least once a week.

Read the course units and textbook with a critical mind. While the authors try to convey the most current best practices in software engineering, best practices evolve over time. For example, in the early 1980s, it was widely believed that pseudo code was superior to flow charts as a way to document program (Martin and McClure 1985). In the late 1980s, research showed that flowcharts take considerably less time to understand than the equivalent pseudo code (Scanlan 1989). Software engineering is a rapidly evolving field. Read with a critical mind and share your questions with others. Be prepared to accept the reality that there is not a single best answer for every question. Through discussion with others, you will acquire a better understanding of the issues.

 

Imagine how you can apply what you have learned. Many students have trouble applying what they have learned in software engineering courses. They complain that the situations in the textbook do not match real life situations perfectly. If you talk to successful and experienced software engineering practitioners, they will tell you that no two real life situations are identical. Therefore techniques are only applicable after you have made appropriate adaptations.

 

Highlight the key points and write notes. When it is time to study for the examination, the key points you previously highlighted or underlined can greatly reduce your revision time. Of course, overdoing it by highlighting half of the materials won't be helpful. I suggest you highlight much less than one-quarter of the materials. It is also beneficial to write your own summaries or opinions in the margins of the course units and textbook.

 

Don't fall behind. At the beginning of each unit, there is a detailed study schedule for you to follow. It will remind you when you are falling behind. If you allow yourself to fall behind in your reading, you will not benefit as much from the tutorials. The discussion on the online forum will make little sense to you. This will result in low morale and poor results. If you anticipate the workload of your daytime job is going to increase, you should study ahead of the schedule so that you won't fall behind. For example, if your daytime job is an accountant, you should be ahead of the study schedule before the financial year end when you are most busy.

 

Attempt all self-test exercises. Don't just read the materials and skip the exercises. When you decide to jump to the answers at the back without attempting the problems, you have given up the opportunity to practice problem solving with the newly learned concepts and techniques. You may not be able to adapt them to real life situations.

 

Help other students by answering their questions on the forum. When you formulate an answer, you acquire a better understanding. Your course coordinator or a tutor will check your answers for correctness. This will help cultivate a supportive learning spirit benefiting everyone. You are helping yourself when you try to help others.

Reduce interruptions during study. When you study, try to set aside a time and place where you can concentrate without interruption. Online chatting is a form of interruption. Experiment with different study patterns to see what works best for you. For example, I learn better by studying three hours on each of two days than six hours on one day. You may be different.

 

When you don't understand

Reread the course materials as necessary. Occasionally, you may not perfectly understand the course materials after the first reading. If you read it again after a break or on another day, you are likely to acquire a better understanding.

 

Post questions on the forum. If you have any questions, even after re-reading the course materials, an efficient way of getting an answer is to post it on the forum. However, before you post a question, make sure you have read the discussion already posted. There is a good chance that the same question has been asked and answered. Not posting duplicated questions and answers will make reading the forum more enjoyable. Clearly state your problem and the respective section number, page number, example number or question number.

 

Phone or email tutor for help. If you want to phone your tutor, please do this within the four-hour designated phone tutoring time your tutor has chosen. If those times are not convenient to you, make an appointment by email.

 

Attend tutorials and surgeries. Even though it is not mandatory, you are encouraged to attend the tutorials. Studying by distance-learning can be lonely. Go to the tutorials to meet the tutor and other students. Discussion in tutorials can enhance your learning experience. You can also email your tutor well ahead of time for him or her to prepare the topics that interest you the most.

COMP S356 Software Engineering and Project Management intends to develop your understanding of the essential concepts and issues in the specification, design and development of software systems. This includes software-modelling techniques using the Unified Modeling Language (UML). The course also provides you with important techniques to manage a software development project in a cost-effective manner.

You will not only learn a range of conceptual models and skills, but you will also learn to apply your own knowledge and judgement through practical exercises. To understand the contents of this course you will need to analyse the course materials and apply the concepts and techniques you are learning. Hopefully, you will find Software Engineering and Project Management both interesting and enjoyable, and be able to use the knowledge and skills from this course throughout your career. Good luck and enjoy the course!

Martin, J and McClure, C (1985) Diagramming Techniques For Analysts And Programmers, Englewood Cliffs, NJ: Prentice-Hall.

Scanlan, D A (1989) 'Structured flowcharts outperform pseudocode: an experimental comparison', IEEE Software, September, 28-36.

Mr Oliver Au received a BA from York University (Toronto), and an MSc from the University of Toronto. Both degrees were in computer science. In his 16 years of work experience, he has worked as a computer operator, teaching assistant, systems programmer, systems analyst, development analyst, consultant, project manager, and lecturer. The companies he has worked for include CP Rail, Canadian Imperial Bank of Commerce, Chase Manhattan Bank, CGI, CTI, IBM, Hong Kong Metropolitan University and Toronto Dominion Bank. His work experience was primarily in software development with project sizes ranging anywhere from a few individuals to hundreds of individuals in multiple locations.