Try telling your instructor on the next computer programming assignment that building a computer program is a collaborative effort. You may get a few extra-credit points for being observant, but it is unlikely that you ll be allowed to collaborate with your friends to complete the assignment. Although collaboration is frowned upon in the classroom, it is a cornerstone of software development. Collaboration occurs when programmers of different skills join forces to build an application. Collaboration also occurs in software design when components collaborate to form an industrial-strength application. In this chapter, you ll learn how to design components so they collaborate in making a real-world application.
Collaboration occurs when two or more things work together or cooperate with each other in order to achieve a common goal. Collaboration is used in a military operation where branches of different military services join forces to achieve a strategic objective. Accounting, manufacturing, marketing, distribution, sales, and other areas of a typical corporation collaborate to satisfy customer needs and make a profit for the business. Even different kinds of businesses, such as bankers, manufacturers, distributors , and retailers, work with each other to build, sell, and deliver products that customers demand.
Processes are at the center of nearly all collaboration. A process is a collection of tasks that is identified by a name and performed whenever the process executes. Think of a process as a function or a method in a program. For example, taking a final examination is a process and consists of a relatively standard set of tasks.
Typically a process collaborates with other related but different processes to achieve an objective. Each process in a collaboration is unable to achieve the objective by itself and therefore forms an interdependency among collaborative processes in order to achieve the objective.
For example, an objective of your instructor is to determine whether you pass the course. To do this, the instructor uses a collaborative collection of processes to assess how much of the material presented in class you learned. These processes consist of homework assignments, class participation, quizzes, a midterm examination, a final examination, and possibly a course project. Individually, each process gives a glimpse of what you know but is not sufficient to determine whether you have enough knowledge to pass the course. However, collectively, these processes give your instructor and you a measure of your knowledge.
Each process performs a unique set of tasks. Some programmers say that a process does one thing very well. By combining processes, a programmer is able to create an application that does many things very well.
Similar to a function and method, a process performs one or more tasks depending on the tasks defined in the process. A process may require input necessary for processing, although not all processes require input. Likewise, a process may have output, but all processing doesn t require output.
Processes collaborate in two ways. Each process can interact with another, or each process can execute independently of other processes. Interaction between processes occurs when the output of a process becomes the input for another process. This exchange of information is the way in which both processes collaborate with each other. The exchange is similar to passing one or more parameters to a function or method.
An example of this is when a student registers for a course. Registration is a process. The output of the registration process becomes input to the tuition process. The tuition process receives the student s ID, number of credits attempted, and the course number, among other information. The tuition process then performs the tasks necessary to generate the tuition bill, which is the output of the tuition process.
Not all processes collaborate directly with each other. Some collaboration occurs by simply executing processes in a sequence. This happens when your instructor determines whether you pass your course. Homework, quizzes, midterm exam, final exam, and course project are all processes that collaboratively tell the instructor whether you learned the material presented in the course. Each process executes independent of other processes but must execute in the proper sequence in order to determine whether you pass.