<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Thomaset2000's Room &#187; Informatics</title>
	<atom:link href="http://thomaset2000.com/category/education/informatics/feed/" rel="self" type="application/rss+xml" />
	<link>http://thomaset2000.com</link>
	<description>A room to share what I know and what you know</description>
	<lastBuildDate>Sun, 11 Apr 2010 15:01:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>C2006 Project: System Development, Part 1</title>
		<link>http://thomaset2000.com/2010/02/c2006-project-system-development-part-1/</link>
		<comments>http://thomaset2000.com/2010/02/c2006-project-system-development-part-1/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 13:21:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[IADIC]]></category>
		<category><![CDATA[Informatics]]></category>
		<category><![CDATA[C2006]]></category>
		<category><![CDATA[C2006 Project]]></category>
		<category><![CDATA[C2006 Project: System Development]]></category>

		<guid isPermaLink="false">http://thomaset2000.com/?p=476</guid>
		<description><![CDATA[This is the post for C2006 Project: System Development. Maybe some of you has been waiting for it. :)

First of all, I would like start by describing this Module (C2006), what are you expected to do and what are the challenges and pitfalls that you should avoid in order to succeed in this module.]]></description>
			<content:encoded><![CDATA[<p>Hi All!</p>
<p>This is the post for C2006 Project: System Development. Maybe some of you has been waiting for it. <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>First of all, I would like start by describing this Module (C2006), what are you expected to do and what are the challenges and pitfalls that you should avoid in order to succeed in this module.</p>
<p><strong>The Module</strong></p>
<p>in C2006, each student is required to form a group of three (mostly) students. <span id="more-476"></span>This group is tasked to develop a computer system that solve a problem. The problem can be a virtual problem as long as it is reasonable. So you can think of something or a system that your group wants to create (i.e. Video Rental System, School Registration System, etc.) You are free to choose what system that your group want to create and also what programming language that you want to use. But I suggest that you consult all your decision with the module leader in order to get his/her approval.</p>
<p>Unlike other module that require you to submit just one or two documents, in this module you will need to submit several documents such as:</p>
<ol>
<li>Project Proposal</li>
<li>Analysis Documentation</li>
<li>Design Documentation</li>
<li>Final Documentation</li>
</ol>
<p>These are the major documents that you need to submit for this module. Each document has its own portion to your final mark, so make sure you do your best for each of it.</p>
<p><strong>Things to Keep in Mind</strong></p>
<p>Here are several things that you would like to keep in mind in doing this module:</p>
<ol>
<li>This is a group project, your teammate is very important, you cannot finish this module well if your team got broken. So, solve each problem between your group&#8217;s members as soon as possible. In the end teamwork and leadership is one of the thing that you will learn from this module.</li>
<li>Avoid delay in doing the documentations, this project span over two terms but you get a deadline to submit each of the documentations. So try your best to follow this deadline.</li>
<li>Start to learn the programming language early. The programming language that you choose for your project may be a totally new for you. so, ask one or two member to learn this programming language from the first term of the module, so you will be ready to write the system codes in the second term, otherwise you wont have enough time if you just start to learn the programming language in the second term.</li>
</ol>
<p>In the next posts, I will upload my old documentations for this module (Proposal, Analysis, Design, and Final Documentation) for your reference. Please note that I do this Module in 2008, so maybe the module has been modified now, use it for your reference only.</p>
<p>Feel free to ask me about this module using the comment section below. <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://thomaset2000.com/2010/02/c2006-project-system-development-part-2-proposal/">Coming next, I will post my old proposal for this module. <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </a></p>
<p>Stay tuned! you can subscribe to my blog&#8217;s feed <a href="http://feeds.feedburner.com/thomaset2000/pYaZ">by clicking here</a> so you won&#8217;t miss when the new post is published <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://thomaset2000.com/2010/02/c2006-project-system-development-part-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>C2028 Database Management System Term 3 2008 Assignment, part 1</title>
		<link>http://thomaset2000.com/2009/03/c2028-database-management-system-term-3-2008-assignment-part-1/</link>
		<comments>http://thomaset2000.com/2009/03/c2028-database-management-system-term-3-2008-assignment-part-1/#comments</comments>
		<pubDate>Fri, 06 Mar 2009 03:23:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[IADIC]]></category>
		<category><![CDATA[Informatics]]></category>
		<category><![CDATA[C2028]]></category>
		<category><![CDATA[Database Management System]]></category>
		<category><![CDATA[Database Normalization]]></category>
		<category><![CDATA[Normalization]]></category>

		<guid isPermaLink="false">http://thomaset2000.com/?p=453</guid>
		<description><![CDATA[Hi All!
This is the assignment of C2028 Database Management System that I do in Term 3 2008 in my IADIC (International Advanced Diploma in Computing) course from Informatics Computer School Singapore.
This module talks about many factors of a Database system. And this assignment focuses on the Normalization process.
So, basically this assignment ask us to design [...]]]></description>
			<content:encoded><![CDATA[<p>Hi All!</p>
<p>This is the assignment of C2028 Database Management System that I do in Term 3 2008 in my IADIC (International Advanced Diploma in Computing) course from Informatics Computer School Singapore.</p>
<p>This module talks about many factors of a Database system. And this assignment focuses on the Normalization process.</p>
<p>So, basically this assignment ask us to design a database for a library using ERD (Entity Relationship Diagram), then do the normalization process to the designed database, we go from first normal form until the third normal form.</p>
<p>Here is the assignment question:</p>
<p><span id="more-453"></span></p>
<p>You are to develop a Library database system.</p>
<p>(i)    Candidates must provide a description of current business activities and operations, a list of Business Rules.<br />
(ii)    Design and derive the following from the above system:<br />
•    Identify of objects – Entities, Relationship and Attributes<br />
•    Identify and include Primary Keys.<br />
•    Normalization the relationship (At least in 3NF).<br />
•    Draw Final ER Diagram.</p>
<p><strong>My Answer:</strong><a name="_Toc212090674"></a></p>
<p><a name="_Toc209790011"></a><a name="_Toc212090675"></a></p>
<p><a name="_Toc212090676"></a><strong> </strong></p>
<p><a name="_Toc212090677"></a><strong> </strong></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p>In this assignment, I will develop a database system for a library. The database developed here will be built in a way that makes it suitable to support the operation of a library. So we need to identify the environment for the database (Library&#8217;s business) and identify all the entities and relationships that is needed to support the library, by doing it that way we can make sure that the database that we develop for the library will be suitable and able to support the library&#8217;s operation and management. There are two main parts in this assignment. The first part that describe more on the library&#8217;s business, and the second part that explain more on the library database itself.</p>
<p>In the first part, we will discuss about the business activities, operations, and business rules of the library itself. The database that we build for the library must be suitable for the library&#8217;s business so it can support the library effectively, that is why we need to identify the particular library&#8217;s business activities, operations, and business rules.</p>
<p>The second part of this assignment will explain technical side of the library&#8217;s database. I will try to identify what are the entities are there in the library&#8217;s system, how the relationships between those entities, and what are attributes that belong to each entity.  After identifying these things, then I will move on to identify the primary key field for each table that is present in the library database. Before commencing to draw the final Entity Relationship diagram, we will try to observe if there is any relationship that can be normalized, if so then we will do all the necessary relationship normalization. Finally, I will draw the final Entity Relationship diagram for this library database system.</p>
<p><strong> </strong></p>
<p><a name="_Toc212090678"></a></p>
<p>The main business activity of the library is manages its collection of books, accept new membership registration, lending books to members, handling book reservation, and return of borrowed book.</p>
<p>The library needs to keep tracks of so many records. It has its list of books that need to be sorted in a way that will make it easy for someone to search for a book&#8217;s information. It also needs to do many data management for its member, books, and staffs. The library has many members, a vast collection of books, and many staffs with different positions such as librarian, security guard, cleaning staff, administration staffs, etc. For these reason, the library need a library database system that will support its daily operation.</p>
<p><a name="_Toc212090679"></a></p>
<p>In this section, I will list some of the business rules from the library that is important for the development of the library&#8217;s database system.</p>
<p><strong><span style="text-decoration: underline;">II.c.1. Member Rules</span></strong></p>
<p>ü  A person acquires library membership after he/she fills a form that tells his particular information such as name, address, e-mail, etc.</p>
<p>ü  A member can borrow more than one book at a time by bringing the book to a librarian that is in duty who will process the borrowing process.</p>
<p>ü  Each member can borrow book for maximum of 40 (forty) days.</p>
<p>ü  Library member may do a book reservation by filling a form and then put the form in the reservation box.</p>
<p><strong><span style="text-decoration: underline;">II.c.2. Book Management Rules</span></strong></p>
<p>ü  Each library book is given a unique book identification number.</p>
<p>ü  A member may not borrow book that status is a reference book.</p>
<p>ü  The entire book in the library must be recorded for its title, author, publisher, number of pages, ISBN, etc.</p>
<p>ü  Each book in the library is given a genre that will make it easier for people to have a brief image about what is the book&#8217;s theme.</p>
<p><strong><span style="text-decoration: underline;">II.c.3. Staff Rules</span></strong></p>
<p>ü  Each staff&#8217;s personal particular must be recorded.</p>
<p>ü  Only staff with librarian position may facilitate a library member to borrow a book.</p>
<p>ü  The salary of the staff is not defined by the position.</p>
<p>ü  Some staff can be assigned as a supervisor for another library staff.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><a name="_Toc212090680"></a><strong> </strong></p>
<p><a name="_Toc212090681"></a><strong> </strong></p>
<p><strong> </strong>We will try to identify what are the objects that are needed in this library&#8217;s database system. These objects comprise of Entities, Relationship, and Attributes for each entity.</p>
<p>Entity is the main object where it can represent a person, a place, an event, or a specific thing that is needed by the library. For example, we may have library member or book as an entity in a library database. Entity is the main object that most likely will become a table in a relational database system. So, if we have an entity called member, most likely we will have a table called member also in our database.</p>
<p>One entity can have many attributes. Attributes is the characteristic or we can also say that attribute is the property of an entity. For example, if we have an entity called book we may have some attributes for this entity such as book name, description, ISBN (International Standard Book Number), etc.</p>
<p>Relationship shows how one entity relates to another entity in the database system. There are many kinds of relationship.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><a name="_Toc212090682"></a><strong> </strong></p>
<p>Beside the explanation that I give about Entity in the previous section, there are also few other views of what an entity is. CR Vanslyke (knol, 2008) suggests that entity is a thing where the database will store the data. Therefore, in our developed database, we should be able to store data into entity that we found here.</p>
<p>Some things we can make as entity are:</p>
<p>a.       Things or items that is countable.</p>
<p>b.      Events or transactions, for example book borrowing.</p>
<p>c.       People that are involved in the system</p>
<p>Now, we will look at what are the entities that we going to have in this library database system. We will only have what is important in the library database system to be the entity. <span style="text-decoration: underline;">Entities that we have here are:</span></p>
<ol type="1">
<li><strong>Member</strong></li>
<li><strong>Staff</strong></li>
<li><strong>Book</strong></li>
</ol>
<p>Member, Staff, and Book are three entities that are needed by this library database system.</p>
<p>The library will need to record its member that is why we have member as one of the entity. Additionally, the library can have many staffs including librarian, security officer, and so on, therefore, it is also important to have a record of the library staffs inside the staff entity. Finally, book is the main asset to a library, so definitely we will need to store data about all the library&#8217;s books.</p>
<p><a name="_Toc212090683"></a><strong> </strong></p>
<p>Here I will try to identify what are the attributes for the three entities (Member, Staff, and Book) that we have identified in the previous section.</p>
<p>Attributes is the characteristic of our three entities. Mike Chapple (About.com, 2008) suggest that in database environment attributes, also known as field or column, is a single data item that is associated to each database entity.</p>
<p>Now, lets look at what are the attributes for each of our three entities:</p>
<p>1.      Member</p>
<p>2.      Staff</p>
<p>3.      Book</p>
<p>The attributes that we will assign to each entity will be based on what data that we need to know from an entity. Additionally, all the attributes that I assigned to each entity here is considered as condition before any normalization process is done.</p>
<p><span style="text-decoration: underline;">Attributes for each entity:</span></p>
<p><span style="text-decoration: underline;">1. Member</span></p>
<p>a.       member_id</p>
<p>b.      name</p>
<p>c.       gender</p>
<p>d.      date_of_birth</p>
<p>e.       address</p>
<p>f.       phone_no</p>
<p>g.      e-mail</p>
<p>h.      borrow_id &#8211; <strong>(multivalued attribute)</strong></p>
<p>i.        book_borrowed &#8211; <strong>(multivalued attribute)</strong></p>
<p>j.        borrow_date &#8211; <strong>(multivalued attribute)</strong></p>
<p>k.      librarian_serve &#8211; <strong>(multivalued attribute)</strong></p>
<p>l.        book_duedate &#8211; <strong>(multivalued attribute)</strong></p>
<p>m.    return date &#8211; <strong>(multivalued attribute)</strong></p>
<p>n.      reservation_id &#8211; <strong>(multivalued attribute)</strong></p>
<p>o.      book_reserved &#8211; <strong>(multivalued attribute)</strong></p>
<p>p.      reserve_date &#8211; <strong>(multivalued attribute)</strong></p>
<p><span style="text-decoration: underline;">2. Staff</span></p>
<p>a.       staff_id</p>
<p>b.      name</p>
<p>c.       gender</p>
<p>d.      date_of_birth</p>
<p>e.       address</p>
<p>f.       phone_no</p>
<p>g.      e-mail</p>
<p>h.      position</p>
<p>i.        salary</p>
<p>j.        Supervisor</p>
<p><span style="text-decoration: underline;">3. Book</span></p>
<p>a.       book_id</p>
<p>b.      ISBN</p>
<p>c.       Title</p>
<p>d.      Author</p>
<p>e.       Publisher</p>
<p>f.       Publication_year</p>
<p>g.      Edition</p>
<p>h.      Pages</p>
<p>i.        Genre</p>
<p>j.        Genre_description</p>
<p>k.      Reference_book</p>
<p>That is all the attributes for each of our entity (Member, Staff, and Book). Of course this attributes refer to the condition before these entity attributes comes to the normalization process. We will do the normalization process in section III.c.</p>
<p><a name="_Toc212090684"></a><strong> </strong></p>
<p>Relationship is a natural relation that is exist between entities in Entity Relationship Diagram, for example Member <span style="text-decoration: underline;">borrow</span> Book (webfuse.cqu.edu.au, 2006).</p>
<p>There are some kinds of relationship degree: unary, binary, ternary, and n-ary relationship. Unary relationship is a relationship that involves only a single entity, or we can say that it is a relationship between an entity to itself. Binary relationship is a relationship that involves two different entities. Ternary relationship exists when the relationship involves three different entities. Finally, when we have a relationship with more than three entities involved, we call this kind of relationship as n-ary relationship (CR Vanslyke, 2008).</p>
<p>Now lets look at what relation that we have for our three entities that are Member, Staff, and Book. The relation that we will see here is the relation between entities before any normalization process is carried out.</p>
<p><span style="text-decoration: underline;">Relations that we have between our entities here are:</span></p>
<p>1.      Borrow</p>
<p>2.      Reserve</p>
<p>3.      Supervises</p>
<p>That are the three relations that we have for our entities in this library database system. In the next section we will discuss more about each of these three relations.</p>
<p><span style="text-decoration: underline;"> </span></p>
<p>1.      <span style="text-decoration: underline;">Borrow</span></p>
<p>Borrow is a ternary relationship involving the three entities Member, Book, and Staff. I will give a simple ERD (Entity Relationship Diagram) to show the <span style="text-decoration: underline;">borrow</span> relationship.</p>
<p><a href="http://thomaset2000.com/wp-content/uploads/borrow.jpg"><img class="alignnone size-medium wp-image-462" title="borrow relationship" src="http://thomaset2000.com/wp-content/uploads/borrow-300x264.jpg" alt="borrow relationship" width="300" height="264" /></a></p>
<p><em><span style="text-decoration: underline;">Note: &#8211; M means multivalued attribute</span></em></p>
<p>The above ERD shows how the relations &#8220;borrow&#8221; relate all the three entities Member, Staff, and Book together. In a glance, this relation means that the library&#8217;s member can borrow books from the library facilitated by the library&#8217;s staff (librarian).</p>
<p>Now lets take a look at the signs at the relationship line there in the ERD. We can see that there are some signs like single line, circle, and crowfoot (/|\), these symbols represents the cardinality of the relation. The symbol closer to the entity is called as the <strong>maximum cardinality</strong> while the symbol next to it is called as the <strong>minimum cardinality</strong>. Maximum cardinality is the maximum number of entity instances that can be related to an entity. Minimum cardinality means the minimum number of instances that can be related to an entity. The circle symbol means zero or null, the line symbol means one, and the crowfoot symbol means many.</p>
<p>Using the cardinality symbol&#8217;s meaning we can get more information for &#8220;borrow&#8221; relation that is in the above ERD.</p>
<p>First, let us look at the Book entity. There is a circle symbol as the minimum cardinality and a crowfoot symbol as the maximum cardinality. It means that each of the library member can borrow minimum no books (not borrow anything) and also allowed to borrow more than one books.</p>
<p>Second, let us look at the Staff entity. There is a line symbol for both the minimum and maximum cardinality. This means that for each book borrowing events there must be minimum and maximum one staff (librarian) that facilitate the member to borrow the book.</p>
<p>Finally, let us look at the Member entity. We can see that there is a circle symbol as the minimum cardinality and a line symbol as the maximum cardinality. This means that each book in the library can be borrowed by no one or can be borrowed by maximum one member at a time.</p>
<p>2.      <span style="text-decoration: underline;">Reserve</span></p>
<p>Reserve is a binary relationship between Member entity and Book entity.</p>
<p>Below is the Entity Relationship Diagram for the &#8220;reserve&#8221; relation.</p>
<p><a href="http://thomaset2000.com/wp-content/uploads/reserve.jpg"><img class="alignnone size-medium wp-image-463" title="reserve" src="http://thomaset2000.com/wp-content/uploads/reserve-300x152.jpg" alt="reserve" width="300" height="152" /></a></p>
<p><em><span style="text-decoration: underline;">Note: &#8211; M means multivalued attribute</span></em></p>
<p>The above ERD shows how Member entity and Book entity is related with the &#8220;reserve&#8221; relationship. This relation is needed to record the books reserved by the customer. Let us look at the cardinality of this relationship.</p>
<p>First, the cardinality symbols for the Book entity. There is a circle symbol as the minimum cardinality and a crowfoot symbol as the maximum cardinality. It tells that a library member can reserve no book or a member can return one or more than one book.</p>
<p>Second, the cardinality symbols for the Member entity. There is a circle symbol as the minimum cardinality and a crowfoot symbol as the maximum cardinality. It tells us that there can be no library member reserve a book (in case that no one reserve any book from the library) and also one library book can be reserved by many library members at a time.</p>
<p><span style="text-decoration: underline;"> </span></p>
<p>3.      <span style="text-decoration: underline;">Supervises</span></p>
<p>Supervise is a unary relationship that relates Staff entity with itself. This relation happen as a consequence that there is many job positions for the library staff&#8217;s and there are some library staffs that supervises the job of another library staff.</p>
<p>Below is the Entity Relationship Diagram for the &#8220;supervises&#8221; relation.</p>
<p><a href="http://thomaset2000.com/wp-content/uploads/supervises.jpg"><img class="alignnone size-medium wp-image-465" title="supervises" src="http://thomaset2000.com/wp-content/uploads/supervises-300x180.jpg" alt="supervises" width="300" height="180" /></a></p>
<p>The above ERD shows how the unary relationship &#8220;supervises&#8221; relates the staff entity to itself. This relation will show who supervises who in the library&#8217;s staff. Now let us look at this relation with its cardinality.</p>
<p>First, let us look at the two cardinality symbols below the staff entity in the above ERD. We can see that there is a circle symbol for the minimum cardinality and a crowfoot symbol for the maximum cardinality. From these symbol we can get information that a library staff may supervises a minimum of no other library staff, or he/she can supervises many other library staffs.</p>
<p>Second, let us look at the cardinality symbols at the right side of the Staff entity. We can see that there is a circle symbol for the minimum cardinality and a line symbol for the maximum cardinality. The information that we can derive from these two symbols is that a library staff can have no supervisor (in case that he/she have the highest staff position in the library) or a maximum of one supervisor for each library staff.</p>
<p>In conclusion, we have three kinds of relationship for our three entities (Member, Staff, Book). These relationships are &#8220;borrow&#8221; which is a ternary relationship involving all the three entities, &#8220;reserve&#8221; which is a binary relationship relating the member and the book entity, and also &#8220;supervises&#8221; which is a binary relationship relating the staff entity to itself. These relation is for the library database system before any normalization process is done. We will do the normalization process in section III.c.</p>
<p><strong> </strong></p>
<p><a name="_Toc212090685"></a></p>
<p>After we identify the Entities, Attributes, and Relationships among the entities in the previous section, I will try to identify the primary keys for each of the entity that we have here in our library database system.</p>
<p>Primary key is an attribute or combination of it that will uniquely define each of the entity&#8217;s instances. There should be no two instances with a same primary key attribute. Using a primary key, we can guarantee that there will be no duplicate instance for each of our entity. Therefore, each of the entity that we define in the previous section must have a primary key.</p>
<p>When selecting an attribute to be a primary key, we need to select an attribute that have no chance of having duplicate value. Below are some tables that show the entities that we have in this library database system together with its attribute and primary key attribute (bold and underscored attribute). These primary keys are before any relationship normalization is done.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td colspan="2" width="186" valign="top"><strong>Member</strong></td>
</tr>
<tr>
<td width="78" valign="top">Primary Key</td>
<td width="108" valign="bottom"><strong><span style="text-decoration: underline;">member_id</span></strong></td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">name</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">gender</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">date_of_birth</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">address</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">phone_no</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">e-mail</td>
</tr>
<tr>
<td width="78" valign="top">multivalued</td>
<td width="108" valign="bottom">borrow_id</td>
</tr>
<tr>
<td width="78" valign="top">multivalued</td>
<td width="108" valign="bottom">book_borrowed</td>
</tr>
<tr>
<td width="78" valign="top">multivalued</td>
<td width="108" valign="bottom">borrow_date</td>
</tr>
<tr>
<td width="78" valign="top">multivalued</td>
<td width="108" valign="bottom">librarian_serve</td>
</tr>
<tr>
<td width="78" valign="top">multivalued</td>
<td width="108" valign="bottom">book_duedate</td>
</tr>
<tr>
<td width="78" valign="top">multivalued</td>
<td width="108" valign="bottom">return date</td>
</tr>
<tr>
<td width="78" valign="top">multivalued</td>
<td width="108" valign="bottom">reserve_id</td>
</tr>
<tr>
<td width="78" valign="top">multivalued</td>
<td width="108" valign="bottom">book_reserved</td>
</tr>
<tr>
<td width="78" valign="top">multivalued</td>
<td width="108" valign="bottom">reserve_date</td>
</tr>
</tbody>
</table>
<p>Above is the table showing Member entity and its attributes. We can see that the member_id attribute is defined as the primary key. The reason why I choose member_id as the primary key for this entity is because we can assign a unique member id for each of the library&#8217;s  member, so it will guarantee that we would not have any duplicate value in this attribute. Why other attribute does not qualify to be the primary key for this entity? It is because other attributes have a high chance to have more than one value same value.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td colspan="2" width="175" valign="top"><strong>Staff</strong></td>
</tr>
<tr>
<td width="67" valign="top">Primary Key</td>
<td width="108" valign="bottom"><strong><span style="text-decoration: underline;">staff_id</span></strong></td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">name</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">gender</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">date_of_birth</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">address</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">phone_no</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">e-mail</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">position</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">salary</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">Supervisor</td>
</tr>
</tbody>
</table>
<p>Above is the table showing Staff entity and its attributes. We can see that the staff_id attribute is defined as the primary key. The reason why I choose staff_id as the primary key for this entity is because we can assign a unique staff id for each of the library&#8217;s  staff, so it will guarantee that we would not have any duplicate value in this attribute.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td colspan="2" width="181" valign="top"><strong>Book</strong></td>
</tr>
<tr>
<td width="67" valign="top">Primary Key</td>
<td width="114" valign="bottom"><strong><span style="text-decoration: underline;">book_id</span></strong></td>
</tr>
<tr>
<td width="67" valign="top">Primary Key</td>
<td width="114" valign="bottom"><strong><span style="text-decoration: underline;">ISBN</span></strong></td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Title</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Author</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Publisher</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Publication_year</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Edition</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Pages</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Genre</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Genre_description</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Reference_book</td>
</tr>
</tbody>
</table>
<p>Above is the table showing Book entity and its attributes. We can see that the book_id and ISBN attribute is defined as the primary key. The reason why I choose book_id and ISBN as the primary key for this entity is because we can assign a unique book id for each of the library&#8217;s  book and also different book have a different ISBN, so it will guarantee that we would not have any duplicate value in these two attributes.</p>
<p>In conclusion, in this section we have identified a primary key attribute for each of the entity that we have. We have member_id attribute as the primary key for the Member entity, we have staff_id attribute as the primary key for Staff entity, and book_id as the primary key for the Book entity. These primary key is before any relationship normalization, after some relationship normalization there is a chance that we will have more primary keys. We will do the normalization process in section III.c.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><a name="_Toc212090686"></a><strong> </strong></p>
<p>In this section, we will perform some normalization process for our three entities which are Member, Staff, and Book. In normalization, we will break down the complex entity and its relationship into smaller parts that is easier to understand and closer to the entities in the real world.</p>
<p>Tony Marston (tonymarston.co.uk, 2004) suggest that normalization  is concerned with things like:</p>
<p>ü  Identify the relationships between entity&#8217;s attribute</p>
<p>ü  Combine some attributes to make a new relation</p>
<p>ü  Combine relations to form a database</p>
<p>While the benefits of normalization are:</p>
<p>ü  Eliminate redundancy</p>
<p>ü  Make the model closer to the entity, process, and relationship in real world</p>
<p>ü  Make a flexible data structure</p>
<p>There are three normalized form that we want to achieve, those are 1<sup>st</sup> Normal Form (1NF), 2<sup>nd</sup> Normal Form (2NF), and 3<sup>rd</sup> Normal Form (3NF). The following sections will discuss each transformation for our library database system to its 1NF, 2NF, and 3NF.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><a name="_Toc212090687"></a><strong><span style="text-decoration: underline;">Normal</span></strong><strong><span style="text-decoration: underline;"> Form (1NF)</span></strong></p>
<p>Before we do any normalization, we consider our library database system is in un-normalized form (UNF). To make our library database system to be in the first normal form (1NF), what we will need to do is to remove any repeating groups (multivalued attributes) and define all the necessary key attributes after removal of the repeating groups.</p>
<p>Before we do any normalization process to make our library database system to be in the first normal form (1NF), I would like to give an Entity Relationship Diagram (ERD) for the current un-normalized form:</p>
<p><a href="http://thomaset2000.com/wp-content/uploads/0nf.jpg"><img class="alignnone size-medium wp-image-466" title="UNF" src="http://thomaset2000.com/wp-content/uploads/0nf-300x284.jpg" alt="UNF" width="300" height="284" /></a></p>
<p><em><span style="text-decoration: underline;">Note: <strong>- M</strong> means multivalued attribute and <strong>- PK</strong> means Primary Key</span></em></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;">III.c.1.i. Member Entity</span></strong></p>
<p>As we can see in the ERD of the un-normalized library database system, there are many attributes in Member entity that is a multivalued attribute. They are <strong>borrow_id</strong>, <strong>book_borrowed</strong>, <strong>borrow_date</strong>, <strong>librarian_serve</strong>, <strong>book_duedate</strong>, <strong>return date</strong>, <strong>reserve_id</strong>, <strong>book_reserved</strong>, and <strong>reserve_date</strong>.</p>
<p>These multivalued attributes is intended to store data about library member&#8217;s book borrowing and book reserving activity. What is the book borrowing id (<strong>borrow_id</strong>), what book is borrowed by a member (<strong>book_borrowed</strong>), when he/she borrow it (<strong>borrow_date</strong>), who is the librarian who process the borrowing process (<strong>librarian_serve</strong>), when is the due date of the book (<strong>book_duedate</strong>), and when he/she actually return the book (<strong>return_date</strong>). For the book reservation activity, we have <strong>reserve_id</strong> that show the reservation id, <strong>book_reserved</strong> that store data about the reserved book, and <strong>reserve_date </strong>that shows when is the reservation is made. In order to eliminate these repeating groups, I will introduce the relation &#8220;borrow&#8221; and the relation &#8220;reserve&#8221; as a new table/entity.</p>
<p>In the new &#8220;borrow&#8221; entity, we will rename <strong>book_borrowed</strong> attribute to <strong>book_id</strong> and then we also rename <strong>librarian_serve</strong> attribute to <strong>staff_id</strong>. This is because the book that is borrowed by a library member can be identified by the <strong>book_id</strong> attribute as in the Book entity, and the librarian who serve the borrowing process can be identified by the <strong>staff_id</strong> taken from the Staff entity. The other attribute that we will put in the new &#8220;borrow&#8221; entity are <strong>member_id</strong>, <strong>borrow_date</strong>, <strong>book_duedate</strong>, and <strong>return_date</strong>. The primary key of this entity will be the <strong>borrow_id </strong>attribute.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td colspan="2" width="186" valign="top"><strong>Member</strong></td>
</tr>
<tr>
<td width="78" valign="top">Primary Key</td>
<td width="108" valign="bottom"><strong><span style="text-decoration: underline;">member_id</span></strong></td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">name</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">gender</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">date_of_birth</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">address</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">phone_no</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">e-mail</td>
</tr>
<tr>
<td width="78" valign="top">multivalued</td>
<td width="108" valign="bottom">reservation_id</td>
</tr>
<tr>
<td width="78" valign="top">multivalued</td>
<td width="108" valign="bottom">book_reserved</td>
</tr>
<tr>
<td width="78" valign="top">multivalued</td>
<td width="108" valign="bottom">reserve_date</td>
</tr>
</tbody>
</table>
<table border="1" cellspacing="0" cellpadding="0" align="left">
<tbody>
<tr>
<td colspan="2" width="186" valign="top"><strong>Borrow</strong></td>
</tr>
<tr>
<td width="78" valign="top">Primary Key</td>
<td width="108" valign="bottom"><strong><span style="text-decoration: underline;">borrow_id</span></strong></td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">member_id</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">staff_id</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">book_id</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">borrow_date</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">book_duedate</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">return_date</td>
</tr>
</tbody>
</table>
<p>For the new &#8220;reserve&#8221; entity, we will rename the <strong>book­­_reserved</strong> attribute to <strong>book_id</strong> taken from Book entity. The primary key will be the <strong>reservation_id</strong> and we also include the <strong>reserve_date</strong> attribute as one of the attribute in this entity.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td colspan="2" width="186" valign="top"><strong>Member</strong></td>
</tr>
<tr>
<td width="78" valign="top">Primary Key</td>
<td width="108" valign="bottom"><strong><span style="text-decoration: underline;">member_id</span></strong></td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">name</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">gender</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">date_of_birth</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">address</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">phone_no</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">e-mail</td>
</tr>
</tbody>
</table>
<table border="1" cellspacing="0" cellpadding="0" align="left">
<tbody>
<tr>
<td colspan="2" width="186" valign="top"><strong>Reserve</strong></td>
</tr>
<tr>
<td width="78" valign="top">Primary Key</td>
<td width="108" valign="bottom"><strong><span style="text-decoration: underline;">reservation_id</span></strong></td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">book_id</td>
</tr>
<tr>
<td width="78" valign="top"></td>
<td width="108" valign="bottom">reserve_date</td>
</tr>
</tbody>
</table>
<p>Therefore, now we have removed all the repeating groups in the Member entity.</p>
<p><strong><span style="text-decoration: underline;">III.c.1.ii. Book Entity</span></strong></p>
<p>In the Book entity, there is no attribute with multiple value, that means that there is no repeating group in this entity, therefore no modification need to be made in this entity to make it in the 1NF.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td colspan="2" width="181" valign="top"><strong>Book</strong></td>
</tr>
<tr>
<td width="67" valign="top">Primary Key</td>
<td width="114" valign="bottom"><strong><span style="text-decoration: underline;">book_id</span></strong></td>
</tr>
<tr>
<td width="67" valign="top">Primary Key</td>
<td width="114" valign="bottom"><strong><span style="text-decoration: underline;">ISBN</span></strong></td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Title</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Author</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Publisher</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Publication_year</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Edition</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Pages</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Genre</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Genre_description</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="114" valign="bottom">Reference_book</td>
</tr>
</tbody>
</table>
<p><strong><span style="text-decoration: underline;">III.c.1.iii. Staff Entity</span></strong></p>
<p>In the Staff entity, there is no attribute with multiple value, that means that there is no repeating group in this entity, therefore no modification need to be made in this entity to make it in the 1NF.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td colspan="2" width="175" valign="top"><strong>Staff</strong></td>
</tr>
<tr>
<td width="67" valign="top">Primary Key</td>
<td width="108" valign="bottom"><strong><span style="text-decoration: underline;">staff_id</span></strong></td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">name</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">gender</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">date_of_birth</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">address</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">phone_no</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">e-mail</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">position</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">salary</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="108" valign="bottom">Supervisor</td>
</tr>
</tbody>
</table>
<p>The Entity Relationship Diagram (ERD) for the first normal form (1NF) is as follow:</p>
<p><a href="http://thomaset2000.com/wp-content/uploads/1nf.jpg"><img class="alignnone size-medium wp-image-468" title="1nf" src="http://thomaset2000.com/wp-content/uploads/1nf-300x283.jpg" alt="1nf" width="300" height="283" /></a></p>
<p><em><span style="text-decoration: underline;">1<sup>st</sup> Normal Form ERD. Note: <strong>- PK</strong> means primary key.</span></em></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><a name="_Toc212090688"></a><strong><span style="text-decoration: underline;">Normal</span></strong><strong><span style="text-decoration: underline;"> Form (2NF)</span></strong></p>
<p>The second step of our normalization process is to make our library database system to its second Normal Form (2NF).</p>
<p>We identify that a relation is in the second Normal Form (2NF) if the relation satisfy two conditions. First, the relation must be in the 1NF (First Normal Form). Second, there are no partial dependencies, or we can say that the entire attribute in the entity is functionally dependent on the primary key only.</p>
<p>Since we have made our library database system&#8217;s relation to its first normal form (1NF) in the previous section, now we just need to identify the functional dependency from each of the entity that we have, and try to find if there is any partial dependency.</p>
<p><strong><span style="text-decoration: underline;">III.c.2.i. Member Entity</span></strong></p>
<p>The primary key in Member entity is <strong>member_id</strong></p>
<p>The functional dependency in this entity is:</p>
<p><strong><span style="text-decoration: underline;">member_id</span></strong> &#8211; - &gt;     <strong>name</strong>, <strong>gender</strong>, <strong>date_of_birth</strong>, <strong>address</strong>, <strong>phone_no</strong>, <strong>e-mail</strong></p>
<p>Therefore, there is no partial dependency in this entity&#8217;s attributes.</p>
<p><strong><span style="text-decoration: underline;">III.c.2.ii. Staff Entity</span></strong></p>
<p>The primary key in Staff entity is <strong>staff_id</strong></p>
<p>The functional dependency in this entity is:</p>
<p><strong><span style="text-decoration: underline;">staff_id</span></strong> &#8211; - &gt;     <strong>name</strong>, <strong>gender</strong>, <strong>date_of_birth</strong>, <strong>address</strong>, <strong>phone_no</strong>, <strong>e-mail</strong>,</p>
<p><strong>position</strong>, <strong>salary</strong>, <strong>supervisor</strong></p>
<p>Therefore, there is no partial dependency in this entity&#8217;s attributes.</p>
<p><strong><span style="text-decoration: underline;">III.c.2.iii. Borrow Entity</span></strong></p>
<p>The primary key in Borrow entity is <strong>borrow_id</strong></p>
<p>The functional dependency in this entity is:</p>
<p><strong><span style="text-decoration: underline;">borrow_id</span></strong> &#8211; - &gt;     <strong>member_id</strong>, <strong>staff_id</strong>, <strong>book_id</strong>, <strong>borrow_date</strong>, <strong>book_duedate</strong>,</p>
<p><strong>return_date</strong></p>
<p>Therefore, there is no partial dependency in this entity&#8217;s attributes.</p>
<p><strong><span style="text-decoration: underline;">III.c.2.iv. Reserve Entity</span></strong></p>
<p>The primary key in Reserve entity is <strong>reservation_id</strong></p>
<p>The functional dependency in this entity is:</p>
<p><strong><span style="text-decoration: underline;">reservation_id</span></strong> &#8211; - &gt;     <strong>book_id</strong>, <strong>reserve_date</strong></p>
<p>Therefore, there is no partial dependency in this entity&#8217;s attributes.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;">III.c.2.v. Book Entity</span></strong></p>
<p>The primary key in Book entity is <strong>book_id </strong>and <strong>ISBN</strong></p>
<p>The functional dependency in this entity is:</p>
<p>(<strong><span style="text-decoration: underline;">book_id</span></strong>, <strong><span style="text-decoration: underline;">ISBN</span></strong>)        &#8211; - &gt;     <strong>title</strong>, <strong>author</strong>,<strong> publisher</strong>,<strong> publication_year</strong>,<strong> edition</strong>,<strong> pages</strong>,<strong> </strong></p>
<p><strong>Genre</strong>,<strong> Genre_description</strong>,<strong> Reference_book</strong></p>
<p><strong><span style="text-decoration: underline;">ISBN</span></strong> &#8211; - &gt;     <strong>title</strong>, <strong>author</strong>,<strong> publisher</strong>,<strong> publication_year</strong>,<strong> edition</strong>,<strong> pages</strong>,<strong> </strong></p>
<p><strong>Genre</strong>,<strong> Genre_description</strong>,<strong> Reference_book</strong></p>
<p>We can see here that there is a partial dependency in this entity. The attributes entity is only partially dependent on the key <strong>book_id</strong> and <strong>ISBN</strong>. Actually the attributes is only fully functionally dependent to <strong>ISBN</strong>. This case happen because the library can have more than one book with the same title, ISBN, etc. but the library have to differentiate this kind of books. That is why we have the <strong>book_id</strong> as an attribute here since there are more than one book with the same ISBN (In case that these book is the same book with same title, author, edition, etc.) but we can assign each book with a book_id that is unique for the library.</p>
<p>In order to solve this partial dependency, I will introduce a new entity called &#8220;Book_info&#8221; that contain all the attributes of the Book entity except the <strong>book_id </strong>attribute. The primary key of this entity is the <strong>ISBN</strong> attribute. The attributes of Book_info entity and the new attribute of the Book entity is shown in the table below:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td colspan="2" width="190" valign="top"><strong>Book_info</strong></td>
</tr>
<tr>
<td width="67" valign="top">Primary Key</td>
<td width="123" valign="bottom"><strong><span style="text-decoration: underline;">ISBN</span></strong></td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Title</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Author</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Publisher</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Publication_year</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Edition</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Pages</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Genre</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Genre_description</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Reference_book</td>
</tr>
</tbody>
</table>
<table border="1" cellspacing="0" cellpadding="0" align="left">
<tbody>
<tr>
<td colspan="2" width="190" valign="top"><strong>Book</strong></td>
</tr>
<tr>
<td width="67" valign="top">Primary Key</td>
<td width="123" valign="bottom"><strong><span style="text-decoration: underline;">book_id</span></strong></td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">ISBN</td>
</tr>
</tbody>
</table>
<p>As we can see in the above tables, now the new Book_info entity have all the attributes of the Book entity except the <strong>book_id </strong>entity. The Book entity now has only two attributes with only one primary key (<strong>book_id</strong>). The functional dependency of the Book_info entity is as follows:</p>
<p><strong><span style="text-decoration: underline;">ISBN</span></strong> &#8211; - &gt;     <strong>title</strong>, <strong>author</strong>,<strong> publisher</strong>,<strong> publication_year</strong>,<strong> edition</strong>,<strong> pages</strong>,<strong> </strong></p>
<p><strong>Genre</strong>,<strong> Genre_description</strong>,<strong> Reference_book</strong></p>
<p>On the other hand, the functional dependency of the Book entity is:</p>
<p><strong><span style="text-decoration: underline;">book_id</span></strong> &#8211; - &gt;     <strong>ISBN</strong></p>
<p>The Entity Relationship Diagram for our library database system in its 2NF is</p>
<p><a href="http://thomaset2000.com/wp-content/uploads/2nf.jpg"><img class="alignnone size-medium wp-image-469" title="2nf" src="http://thomaset2000.com/wp-content/uploads/2nf-300x266.jpg" alt="2nf" width="300" height="266" /></a></p>
<p><em><span style="text-decoration: underline;">2<sup>nd</sup> Normal Form ERD. Note: <strong>- PK</strong> means primary key</span></em></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><a name="_Toc212090689"></a><strong><span style="text-decoration: underline;">Normal</span></strong><strong><span style="text-decoration: underline;"> Form (3NF)</span></strong><strong> </strong></p>
<p>After we normalized our relationship to its second Normal Form (2NF), now we will do our final normalization process to make it to its third Normal Form (3NF).</p>
<p>We can tell that a relation is in its third Normal Form (3NF) when the relation satisfies three conditions. First, the relation is in second Normal Form (2NF). Second, there is no transitive dependency exist between the entity&#8217;s attributes, it means that there should be no attribute that dependent to a non-key attribute. Third, all the attributes in the entity fully dependent on the primary key attribute (Tony Marston, 2004)</p>
<p>Since we have made our library database system&#8217;s relation to its second Normal Form (2NF) in the previous section, now we just need to try to find if there is any transitive dependency between the attribute in an entity.</p>
<p>Let&#8217;s look at our &#8220;Book_info&#8221; entity. The functional dependency of this entity is:</p>
<p><strong><span style="text-decoration: underline;">ISBN</span></strong> &#8211; - &gt;     <strong>title</strong>, <strong>author</strong>,<strong> publisher</strong>,<strong> publication_year</strong>,<strong> edition</strong>,<strong> pages</strong>,<strong> </strong></p>
<p><strong>Genre</strong>,<strong> Genre_description</strong>,<strong> Reference_book</strong></p>
<p>If we observe these attributes of &#8220;Book_info&#8221; entity, there is a transitive dependency where a non-key attribute that can be used to determine another attribute. These two attributes are <strong>Genre </strong>and <strong>Genre_description</strong>.</p>
<p><strong>Genre </strong>- &#8211; &gt;     <strong>Genre_description</strong></p>
<p>In order to remove the transitive dependency in the Book_info entity, I will make a new entity called &#8220;Genre&#8221; that will have two attributes <strong>Genre</strong> and <strong>Genre_description</strong> with <strong>Genre</strong> as its key attribute. We will still have the <strong>Genre </strong>attribute in the Book_info entity but we will remove <strong>Genre_description </strong>attribute from the Book_info entity. The following tables show the Genre entity and Book_info entity with its attributes.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td colspan="2" width="190" valign="top"><strong>Book_info</strong></td>
</tr>
<tr>
<td width="67" valign="top">Primary Key</td>
<td width="123" valign="bottom"><strong><span style="text-decoration: underline;">ISBN</span></strong></td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Title</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Author</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Publisher</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Publication_year</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Edition</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Pages</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Genre</td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Reference_book</td>
</tr>
</tbody>
</table>
<table border="1" cellspacing="0" cellpadding="0" align="left">
<tbody>
<tr>
<td colspan="2" width="190" valign="top"><strong>Genre</strong></td>
</tr>
<tr>
<td width="67" valign="top">Primary Key</td>
<td width="123" valign="bottom"><strong><span style="text-decoration: underline;">Genre</span></strong></td>
</tr>
<tr>
<td width="67" valign="top"></td>
<td width="123" valign="bottom">Genre_description</td>
</tr>
</tbody>
</table>
<p>After we do this process, now there is no more transitive dependency that exist in our library database system. It also implies that all the attributes in each of entity that we have in this system is fully dependent on the primary key attribute only. This condition means that our library database system is already in its third Normal Form (3NF) and we do not need to do any normalization process anymore.</p>
<p>The Entity Relationship Diagram for our library database system in its 3NF is</p>
<p><a href="http://thomaset2000.com/wp-content/uploads/3nf.jpg"><img class="alignnone size-medium wp-image-470" title="3nf" src="http://thomaset2000.com/wp-content/uploads/3nf-299x271.jpg" alt="3nf" width="299" height="271" /></a></p>
<p><em><span style="text-decoration: underline;">3<sup>rd</sup> Normal Form ERD. Note: <strong>- PK</strong> means primary key</span></em></p>
<p><strong> </strong></p>
<p><a name="_Toc212090690"></a><strong> </strong></p>
<p>We have done all the necessary normalization process in the previous section, now we already have the final Entity Relationship Diagram for our library database system. The final ERD is as follows</p>
<p><a href="http://thomaset2000.com/wp-content/uploads/3nf1.jpg"><img class="alignnone size-medium wp-image-471" title="3nf1" src="http://thomaset2000.com/wp-content/uploads/3nf1-299x271.jpg" alt="3nf1" width="299" height="271" /></a></p>
<p><em><span style="text-decoration: underline;">Final Entity Relationship Diagram for the library database system. Note: <strong>- PK</strong> means primary key</span></em></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><a name="_Toc212090691"></a></p>
<p>Finally, I want to write a conclusion for this assignment. In this assignment, I have design a library database system. I start from describing the business operations and activities of the library and listing the business rules of the library. These business rules of the library are important because I have to design the library database system to be able to support the rules.</p>
<p>In the chapter, I start my design with identifying the entities that I need for this library database system. In this process, I discovered three attributes that are Member, Staff, and Book. Then I continue with identifying the attributes for each entity and give relation between the entities. After this process is done, I continue with identifying the primary key attribute for each of the entity.</p>
<p>The next thing that I do is performing the normalization process for the library database system. There are three normalization steps which are transforming to First Normal Form (1NF), Second Normal Form (2NF), and finally to its Third Normal Form (3NF). The Third Normal Form is also resembles the Final Entity Relationship Diagram of the library database system. In this form, all the entity&#8217;s attributes is fully dependent on the key attribute. There is no partial dependency, transitive dependency, and repeating groups in this final ERD.  Therefore, I can conclude that the design of the library database system has been finished.</p>
<p><a name="_Toc212090692"></a><strong> </strong></p>
<p>CR,Vanslyke, 2008, knol.google.com, &#8220;<em>Conceptual Database Design</em>&#8220;, Retrieved October 16, 2008, from<strong><em> <a href="http://knol.google.com/k/cr-vanslyke/conceptual-database-design/1fwdlprfh17di/2">http://knol.google.com/k/cr-vanslyke/conceptual-database-design/1fwdlprfh17di/2#</a></em></strong></p>
<p><strong><em> </em></strong></p>
<p>Mike, Chapple, 2008, about.com, &#8220;<em>Attribute</em>&#8220;, Retrieved October 16, 2008, from <strong><em><a href="http://databases.about.com/cs/specificproducts/g/attribute.htm">http://databases.about.com/cs/specificproducts/g/attribute.htm</a></em></strong></p>
<p>Mike, Chapple, 2008, about.com, &#8220;<em>Primary Key Definition</em>&#8220;, Retrieved October 17, 2008, from <a href="http://databases.about.com/cs/administration/g/primarykey.htm">http://databases.about.com/cs/administration/g/primarykey.htm</a></p>
<p>&#8220;<em>Developing Entity Relationship Diagrams (ERDs)</em>&#8220;, 2006, Retrieved October 17, 2008, from <a href="http://webfuse.cqu.edu.au/Courses/2006/T2/COIS20025/Assessment/Item_2/Part_A_Resources/erd.pdf">http://webfuse.cqu.edu.au/Courses/2006/T2/COIS20025/Assessment/Item_2/Part_A_Resources/erd.pdf</a></p>
<p>Toni, Marston, 2004, &#8220;<em>The Relational Data Model, Normalisation and Effective Database Design</em>&#8220;, Retrieved October 18, 2008, from <a href="http://www.tonymarston.co.uk/php-mysql/database-design.html">http://www.tonymarston.co.uk/php-mysql/database-design.html</a></p>
<p>Do you have any comment on this? maybe you have something to ask me or want to discuss with me about this?Or maybe you are IDIC student and taking this module also?<br />
Feel free to use the comment box below (<a href="http://thomaset2000.com/?p=453">click here if you cannot see the comment box</a>).</p>
<p>Coming next, I will post another IADIC assignment, C2006 Project: System Development <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Stay tuned! you can subscribe to my blog&#8217;s feed <a href="http://feeds.feedburner.com/thomaset2000/pYaZ">by clicking here</a> so you won&#8217;t miss when the new post is published <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://thomaset2000.com/2009/03/c2028-database-management-system-term-3-2008-assignment-part-1/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
		<item>
		<title>C2020 Computer Architecture Term 3 2008 Assignment</title>
		<link>http://thomaset2000.com/2009/02/c2020-computer-architecture-term-3-2008-assignment/</link>
		<comments>http://thomaset2000.com/2009/02/c2020-computer-architecture-term-3-2008-assignment/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 12:39:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[IADIC]]></category>
		<category><![CDATA[Informatics]]></category>
		<category><![CDATA[C2020]]></category>
		<category><![CDATA[Computer Architecture]]></category>

		<guid isPermaLink="false">http://thomaset2000.com/?p=435</guid>
		<description><![CDATA[Hi All!
To begin the second series of IADIC assignments posting series, I will post the assignment of C2020 Computer Architecture module that I take in Term 3 2008.
This module teach about how the computer&#8217;s processor works technically and also things like pipelining, virtual memory, assembly language, memory organization, LAN, TCP IP, etc.
The assignment is quite [...]]]></description>
			<content:encoded><![CDATA[<p>Hi All!</p>
<p>To begin the <a href="http://thomaset2000.com/?p=429">second series of IADIC assignments posting series</a>, I will post the assignment of C2020 Computer Architecture module that I take in Term 3 2008.</p>
<p>This module teach about how the computer&#8217;s processor works technically and also things like pipelining, virtual memory, assembly language, memory organization, LAN, TCP IP, etc.</p>
<p>The assignment is quite short and maybe the shortest assingment for IADIC (International Advanced Diploma in Computing) module. It consist of three questions</p>
<p>here is the assignment questions:</p>
<p><span id="more-435"></span></p>
<p>The total mark of the assignment is 40 divided by these three questions:</p>
<p><strong>Question 1.</strong></p>
<p>A three address-format machine has 128 data bus channels and is able to accept 1000 different commands and access 120 different general purpose registers. Show clearly, in workings, the allocation of bits to the different fields of the Instruction registers. Give the total length of IR and the number of direct addressable locations.                        [7 marks]</p>
<p><strong>Question 2.</strong></p>
<p>Instruction Add [101] [102][103] adds number stored in address 101 to number in address 102 and then stores the results into address 103. Show clearly the fetch and execution steps.<br />
Note: You may make assumption on the address that stores the instruction.                                                           [13 marks]</p>
<p><strong>Question 3.</strong></p>
<p>Given expression Y = M-N*A+B/R*C, provide the assembly codes for Zero, One, Two and Three address-format machines.                                [20 marks]</p>
<p>and here is my answer for these questions</p>
<p><strong>Answer</strong></p>
<p><strong><span style="text-decoration: underline;">II. Answer for Question 1</span></strong></p>
<p><span style="text-decoration: underline;"> </span></p>
<ol type="1">
<li>Three      address format machine</li>
<li>Data      bus width = 128 bits</li>
<li>Total      accessible General Purpose Registers (GPR) = 120</li>
<li>Total      acceptable commands    = 1000</li>
</ol>
<p><span style="text-decoration: underline;"> </span></p>
<p>No. of bits in GPR field         = 7       →        2<sup>7</sup> = 128 &gt; accessible General Purpose Registers</p>
<p>No. of bits in Opcode field     = 10     →        2<sup>10</sup> = 1024 &gt; acceptable commands</p>
<p>No. of bits in Operand field   = (DatabusWidth &#8211; opcode &#8211; GPR)/no.of Operand Field = (128 &#8211; 10 &#8211; 7)/3 = 37</p>
<p><span style="text-decoration: underline;">Instruction Register Fields:</span></p>
<p><span style="text-decoration: underline;"> </span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="123">Opcode</td>
<td width="123">Operand</td>
<td width="123">Operand</td>
<td width="123">Operand</td>
<td width="123">GPR</td>
</tr>
<tr>
<td width="123">10</td>
<td width="123">37</td>
<td width="123">37</td>
<td width="123">37</td>
<td width="123">7</td>
</tr>
</tbody>
</table>
<p>The total length of IR = 10 + 37 + 37 + 37 + 7 = 128</p>
<p>Number of direct addressable locations = 2<sup>operand</sup> = 2<sup>37</sup> = 137438953472</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;">III. Answer for Question 2</span></strong></p>
<p><span style="text-decoration: underline;">Fetch cycle:</span></p>
<table border="0" cellspacing="0" cellpadding="0" width="499">
<tbody>
<tr>
<td width="30" valign="top">1.</td>
<td width="49" valign="top">0110</td>
<td width="38" valign="top">→</td>
<td colspan="2" width="60" valign="top">PC</td>
<td width="38" valign="top">→</td>
<td colspan="4" width="58" valign="top">MAR</td>
<td width="35" valign="top">→</td>
<td colspan="3" width="101" valign="top">Address bus</td>
<td colspan="3" width="89"></td>
</tr>
<tr>
<td width="30" valign="top">2.</td>
<td colspan="6" width="188" valign="top">Read control line asserted</td>
<td colspan="10" width="280"></td>
</tr>
<tr>
<td width="30" valign="top">3.</td>
<td colspan="7" width="190" valign="top">[Add[101] [102] [103]]<sub>0110</sub></td>
<td width="35" valign="top">→</td>
<td colspan="3" width="74" valign="top">Data bus</td>
<td width="38" valign="top">→</td>
<td colspan="2" width="58" valign="top">MBR</td>
<td width="35" valign="top">→</td>
<td width="38" valign="top">IR</td>
</tr>
<tr>
<td width="30" valign="top">4.</td>
<td colspan="3" width="104" valign="top">PC = PC + 1</td>
<td colspan="13" width="365"></td>
</tr>
<tr height="0">
<td width="30"></td>
<td width="49"></td>
<td width="38"></td>
<td width="16"></td>
<td width="44"></td>
<td width="38"></td>
<td width="3"></td>
<td width="1"></td>
<td width="35"></td>
<td width="19"></td>
<td width="35"></td>
<td width="20"></td>
<td width="38"></td>
<td width="43"></td>
<td width="15"></td>
<td width="35"></td>
<td width="38"></td>
</tr>
</tbody>
</table>
<p><span style="text-decoration: underline;">Execution cycle:</span></p>
<table border="0" cellspacing="0" cellpadding="0" width="406">
<tbody>
<tr>
<td width="34" valign="top">1.</td>
<td colspan="2" width="51" valign="top">IR</td>
<td colspan="3" width="40" valign="top">→</td>
<td colspan="4" width="85" valign="top">Decoding</td>
<td colspan="11" width="195"></td>
</tr>
<tr>
<td width="34" valign="top">2.</td>
<td colspan="3" width="68" valign="top">[101]</td>
<td colspan="3" width="35" valign="top">→</td>
<td colspan="4" width="78" valign="top">MAR</td>
<td colspan="3" width="37" valign="top">→</td>
<td colspan="5" width="101" valign="top">Address bus</td>
<td colspan="2" width="52"></td>
</tr>
<tr>
<td width="34" valign="top">3.</td>
<td colspan="11" width="188" valign="top">Read control line asserted</td>
<td colspan="9" width="183"></td>
</tr>
<tr>
<td width="34" valign="top">4.</td>
<td colspan="3" width="68" valign="top">[data]<sub>101</sub></td>
<td colspan="3" width="35" valign="top">→</td>
<td colspan="4" width="78" valign="top">Data bus</td>
<td colspan="3" width="37" valign="top">→</td>
<td colspan="2" width="66" valign="top">MBR</td>
<td colspan="2" width="34" valign="top">→</td>
<td colspan="2" width="42" valign="top">Ax</td>
<td width="11"></td>
</tr>
<tr>
<td width="34" valign="top">5.</td>
<td colspan="3" width="68" valign="top">[102]</td>
<td colspan="3" width="35" valign="top">→</td>
<td colspan="4" width="78" valign="top">MAR</td>
<td colspan="3" width="37" valign="top">→</td>
<td colspan="5" width="101" valign="top">Address bus</td>
<td colspan="2" width="52"></td>
</tr>
<tr>
<td width="34" valign="top">6.</td>
<td colspan="11" width="188" valign="top">Read control line asserted</td>
<td colspan="9" width="183"></td>
</tr>
<tr>
<td width="34" valign="top">7.</td>
<td colspan="3" width="68" valign="top">[data]<sub>102</sub></td>
<td colspan="3" width="35" valign="top">→</td>
<td colspan="4" width="78" valign="top">Data bus</td>
<td colspan="3" width="37" valign="top">→</td>
<td colspan="2" width="66" valign="top">MBR</td>
<td colspan="2" width="34" valign="top">→</td>
<td colspan="2" width="42" valign="top">Ax</td>
<td width="11"></td>
</tr>
<tr>
<td width="34" valign="top">8.</td>
<td colspan="3" width="68" valign="top">[103]</td>
<td colspan="3" width="35" valign="top">→</td>
<td colspan="4" width="78" valign="top">MAR</td>
<td colspan="3" width="37" valign="top">→</td>
<td colspan="5" width="101" valign="top">Address bus</td>
<td colspan="2" width="52"></td>
</tr>
<tr>
<td width="34" valign="top">9.</td>
<td colspan="12" width="192" valign="top">Write control line asserted</td>
<td colspan="8" width="180"></td>
</tr>
<tr>
<td width="34" valign="top">10.</td>
<td width="42" valign="top">Ax</td>
<td colspan="3" width="35" valign="top">→</td>
<td colspan="3" width="58" valign="top">MBR</td>
<td width="37" valign="top">→</td>
<td colspan="6" width="79" valign="top">Data bus</td>
<td colspan="2" width="36" valign="top">→</td>
<td colspan="4" width="85" valign="top">[result]<sub>103</sub></td>
</tr>
<tr height="0">
<td width="34"></td>
<td width="42"></td>
<td width="9"></td>
<td width="17"></td>
<td width="9"></td>
<td width="14"></td>
<td width="11"></td>
<td width="32"></td>
<td width="37"></td>
<td width="4"></td>
<td width="5"></td>
<td width="7"></td>
<td width="4"></td>
<td width="26"></td>
<td width="33"></td>
<td width="34"></td>
<td width="2"></td>
<td width="31"></td>
<td width="1"></td>
<td width="41"></td>
<td width="11"></td>
</tr>
</tbody>
</table>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;">IV. Answer for Question 3</span></strong></p>
<p>Expression → Y = M-N*A+B/R*C</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="154">Zero Address</td>
<td width="154">One Address</td>
<td width="154">Two Address</td>
<td width="154">Three Address</td>
</tr>
<tr>
<td width="154">PUSH M</td>
<td width="154">LOAD N</td>
<td width="154">MUL N, A</td>
<td width="154">MUL N, A, T1</td>
</tr>
<tr>
<td width="154">PUSH N</td>
<td width="154">MUL A</td>
<td width="154">DIV B, R</td>
<td width="154">DIV B, R, T2</td>
</tr>
<tr>
<td width="154">PUSH A</td>
<td width="154">STO T1</td>
<td width="154">MUL R, C</td>
<td width="154">MUL T2, C, T3</td>
</tr>
<tr>
<td width="154">MUL</td>
<td width="154">LOAD B</td>
<td width="154">SUB M, A</td>
<td width="154">SUB M, T1, T4</td>
</tr>
<tr>
<td width="154">SUB</td>
<td width="154">DIV R</td>
<td width="154">ADD A, C</td>
<td width="154">ADD T4, T3, Y</td>
</tr>
<tr>
<td width="154">PUSH B</td>
<td width="154">MUL C</td>
<td width="154">MOV C, Y</td>
<td width="154"></td>
</tr>
<tr>
<td width="154">PUSH R</td>
<td width="154">STO T2</td>
<td width="154"></td>
<td width="154"></td>
</tr>
<tr>
<td width="154">DIV</td>
<td width="154">LOAD M</td>
<td width="154"></td>
<td width="154"></td>
</tr>
<tr>
<td width="154">PUSH C</td>
<td width="154">SUB T1</td>
<td width="154"></td>
<td width="154"></td>
</tr>
<tr>
<td width="154">MUL</td>
<td width="154">ADD T2</td>
<td width="154"></td>
<td width="154"></td>
</tr>
<tr>
<td width="154">ADD</td>
<td width="154">STO Y</td>
<td width="154"></td>
<td width="154"></td>
</tr>
<tr>
<td width="154">POP Y</td>
<td width="154"></td>
<td width="154"></td>
<td width="154"></td>
</tr>
</tbody>
</table>
<p>Do you have any comment on this? maybe you have something to ask me or want to discuss with me about this?Or maybe you are IDIC student and taking this module also?<br />
Feel free to use the comment box below (<a href="http://thomaset2000.com/?p=435">click here if you cannot see the comment box</a>).</p>
<p>Coming next, I will post another IADIC assignment, C2027 Information Management <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Stay tuned! you can subscribe to my blog&#8217;s feed <a href="http://feeds.feedburner.com/thomaset2000/pYaZ">by clicking here</a> so you won&#8217;t miss when the new post is published <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://thomaset2000.com/2009/02/c2020-computer-architecture-term-3-2008-assignment/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Start Posting the second series of IADIC Assignments :D</title>
		<link>http://thomaset2000.com/2009/02/start-posting-the-second-series-of-iadic-assignments-d/</link>
		<comments>http://thomaset2000.com/2009/02/start-posting-the-second-series-of-iadic-assignments-d/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 12:10:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[IADIC]]></category>
		<category><![CDATA[Informatics]]></category>
		<category><![CDATA[C2006]]></category>
		<category><![CDATA[C2020]]></category>
		<category><![CDATA[C2027]]></category>
		<category><![CDATA[C2028]]></category>
		<category><![CDATA[Computer Architecture]]></category>
		<category><![CDATA[Database Management System]]></category>
		<category><![CDATA[Information Management]]></category>
		<category><![CDATA[System Development]]></category>

		<guid isPermaLink="false">http://thomaset2000.com/?p=429</guid>
		<description><![CDATA[Hi Everyone!
Wah it was quite some time since my last post about IADIC (International Advanced Diploma in Computing) assignments. Have been quite busy these last few days (or should I say weeks? :p). But now I will start to post the second series of IADIC assignment posts. yay!!
So, basically now I will start posting the [...]]]></description>
			<content:encoded><![CDATA[<p>Hi Everyone!</p>
<p>Wah it was quite some time since my last post about IADIC (International Advanced Diploma in Computing) assignments. Have been quite busy these last few days (or should I say weeks? :p). But now I will start to post the second series of IADIC assignment posts. yay!!</p>
<p>So, basically now I will start posting the assingments of the IADIC modules that I take during the second term of the IADIC course in Informatics Computer School Singapore, it was in term 3 2008.</p>
<p>So, here are the modules assignments that I will post:</p>
<ol>
<li><a href="http://thomaset2000.com/?p=435">C2020 &#8211; Computer Architecture</a></li>
<li><a href="http://thomaset2000.com/?p=444">C2027 &#8211; Information Management</a></li>
<li><a href="http://thomaset2000.com/2010/02/c2006-project-system-development-part-1/">C2006 &#8211; Project: System Development</a></li>
<li><a href="http://thomaset2000.com/?p=453">C2028 &#8211; Database Management System</a></li>
</ol>
<p>Yap, those are the modules that will be included in the second IADIC posting series. I will start to post the C2020 Computer Architecture assignment <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Stay tuned! you can subscribe to my blog&#8217;s feed <a href="http://feeds.feedburner.com/thomaset2000/pYaZ">by clicking here</a> so you won&#8217;t miss when the new post is published <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://thomaset2000.com/2009/02/start-posting-the-second-series-of-iadic-assignments-d/feed/</wfw:commentRss>
		<slash:comments>52</slash:comments>
		</item>
		<item>
		<title>C2005 Object Oriented Programming in Java Term 2 2008 Assignment</title>
		<link>http://thomaset2000.com/2009/02/c2005-object-oriented-programming-in-java-term-2-2008-assignment/</link>
		<comments>http://thomaset2000.com/2009/02/c2005-object-oriented-programming-in-java-term-2-2008-assignment/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 02:55:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[IADIC]]></category>
		<category><![CDATA[Informatics]]></category>
		<category><![CDATA[C2005]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Object oriented programming in java]]></category>

		<guid isPermaLink="false">http://thomaset2000.com/?p=411</guid>
		<description><![CDATA[Hi everyone!
This is the third and the last post for the first part of IADIC assignment series. This time I will post about the assignment from C2005 OOP in Java that I take in Term 2 2008. This module basically teach about how to make and use objects in Java in a very simple way, [...]]]></description>
			<content:encoded><![CDATA[<p>Hi everyone!</p>
<p>This is the third and the last post for the <a href="http://thomaset2000.com/?p=258">first part of IADIC assignment series</a>. This time I will post about the assignment from C2005 OOP in Java that I take in Term 2 2008. This module basically teach about how to make and use objects in Java in a very simple way, so don&#8217;t expect to get an advanced Java technique here as it is a very basic Java skill that is taught by this module.</p>
<p>The assignment that I get in Term 2 2008 asked me to make a simple program for an electronic shop.</p>
<p>here is the questions:<br />
<span id="more-411"></span><strong>Part A ( Total 15 marks )</strong></p>
<p>An electronic shop supposed to store information on electronic product to be sold. Each component  will contain id, brand name, price and other two members. This part requires you to write the class, declare the members, write the constructors, and methods of it.</p>
<p><strong>Part B ( Total 25 marks )</strong><br />
This part requires you to make use of array to store the above information.<br />
Add more features to the program in Part A with the following specifications:</p>
<p>i.    The program can display all the electronic information. ( 5 marks )<br />
ii.    The program can store new electronic product inside the array.(  5 marks )<br />
iii.    The program can search for electronic product information based on a given brand. ( 5 marks )<br />
iv.    The program can update the available electronic information. ( 5 marks)<br />
v.    One feature other than those stated in part B.  ( 5 marks )</p>
<p>What do you need to submit?</p>
<p>a)    softcopy of your program<br />
b)    printed copy of your program<br />
c)    printed documentation on testing of  your program</p>
<p><strong>The answer</strong></p>
<p><strong>II. Program Listing</strong><br />
The program for part A is the “ElectronicShop.java”<br />
(Click the following link to download and see the file)<br />
<a href="http://thomaset2000.com/wp-content/uploads/electronicshop.java">electronicshop.java</a></p>
<p>The program for part B is the “ShopProgram.java”. This file is saved in the same folder with the previous file, ElectronicShop.java<br />
(Click the following link to download and see the file)<br />
<a href="http://thomaset2000.com/wp-content/uploads/shopprogram.java">shopprogram.java</a></p>
<p><strong><span style="text-decoration: underline;">III. Program Objectives</span></strong></p>
<p><span style="text-decoration: underline;">The objectives of this Electronic Shop program are:</span></p>
<p>a)      To help an electronic shop to organize and manage its electronic products</p>
<p>b)      To provide easier access for the shop assistant to display all available product</p>
<p>c)      To help the electronic shop search for a product detail in their store</p>
<p>d)     To make updating a product&#8217;s detail become easier</p>
<p>e)      To assist the Electronic Shop to sell its product</p>
<p>f)       To help the electronic shop manage how many items left in the stock</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;">IV. Program Test Documentation</span></strong></p>
<p><strong>IV. a) Test Plan</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="583">
<tbody>
<tr>
<td width="79" valign="top"><strong>Test No.</strong></td>
<td width="324" valign="top"><strong>Test Description</strong></td>
<td width="179" valign="top"><strong>Action</strong></td>
</tr>
<tr>
<td width="79"><strong>1</strong></td>
<td width="324">To test that &#8220;ElectronicShop.java&#8221; can   run after we compile it</td>
<td width="179">Compile and run ElectronicShop.java</td>
</tr>
<tr>
<td width="79"><strong>2</strong></td>
<td width="324">To test that &#8220;ShopProgram.java&#8221; can run   after it is compiled</td>
<td width="179">Compile and run ShopProgram.java</td>
</tr>
<tr>
<td width="79"><strong>3</strong></td>
<td width="324">To test that main menu appear after we   run and press &#8220;ok&#8221;</td>
<td width="179">Press ok</td>
</tr>
<tr>
<td width="79"><strong>4</strong></td>
<td width="324">To test that we cannot enter other choice   number outside the main menu option</td>
<td width="179">Enter 7 in main menu</td>
</tr>
<tr>
<td width="79"><strong>5</strong></td>
<td width="324">To test that we can use the &#8220;ShopProgram.java&#8221;   to add new item using the add module</td>
<td width="179">Choose 1 in main menu then enter the product   detail</td>
</tr>
<tr>
<td width="79"><strong>6</strong></td>
<td width="324">To test that display module can display   all the products that we have entered</td>
<td width="179">Choose 2 from main menu</td>
</tr>
<tr>
<td width="79"><strong>7</strong></td>
<td width="324">To test that we can search for a product   based on the product&#8217;s brand</td>
<td width="179">Choose 3 from main menu</td>
</tr>
<tr>
<td width="79"><strong>8</strong></td>
<td width="324">To test that we able to open update   product module</td>
<td width="179">Choose 4 from the main menu</td>
</tr>
<tr>
<td width="79"><strong>9</strong></td>
<td width="324">To test to update a product&#8217;s brand</td>
<td width="179">Choose 1 from update module menu</td>
</tr>
<tr>
<td width="79"><strong>10</strong></td>
<td width="324">To test to update a product&#8217;s stock   quantity</td>
<td width="179">Choose 2 from update module menu</td>
</tr>
<tr>
<td width="79"><strong>11</strong></td>
<td width="324">To test to update a product&#8217;s price</td>
<td width="179">Choose 3 from update module menu</td>
</tr>
<tr>
<td width="79"><strong>12</strong></td>
<td width="324">To test to update a product&#8217;s discount</td>
<td width="179">Choose 4 from update module menu</td>
</tr>
<tr>
<td width="79"><strong>13</strong></td>
<td width="324">To test exit the update module</td>
<td width="179">Choose 5 from update module menu</td>
</tr>
<tr>
<td width="79"><strong>14</strong></td>
<td width="324">To test running the buy module</td>
<td width="179">Choose 5 from main menu</td>
</tr>
<tr>
<td width="79"><strong>15</strong></td>
<td width="324">To test buying a product using the buy   module</td>
<td width="179">Enter purchase detail</td>
</tr>
<tr>
<td width="79"><strong>16</strong></td>
<td width="324">To test to exit the program</td>
<td width="179">Choose 6 from main menu</td>
</tr>
</tbody>
</table>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong>IV. b) Test Case &amp; Test Result</strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="122" valign="top"><strong>Test case</strong></td>
<td width="421" valign="top"><strong>1</strong></td>
</tr>
<tr>
<td width="122">Objectives</td>
<td width="421">To test that &#8220;ElectronicShop.java&#8221; can   run after we compile it</td>
</tr>
<tr>
<td width="122">Test action</td>
<td width="421">Compile and run ElectronicShop.java</td>
</tr>
<tr>
<td width="122">Expected result</td>
<td width="421">ElectronicShop.java runs   correctly without error</td>
</tr>
<tr>
<td width="122">Actual result</td>
<td width="421">As shown Below</td>
</tr>
<tr>
<td width="122">Conclusion</td>
<td width="421">Successful</td>
</tr>
</tbody>
</table>
<p><strong><span style="text-decoration: underline;">Before</span></strong></p>
<p>The screenshot before the test is carried out here</p>
<p><strong><span style="text-decoration: underline;">After</span></strong></p>
<p>Screenshot after the test action is executed here</p>
<p><strong>IV. c) Test Log</strong></p>
<table border="0" cellspacing="0" cellpadding="0" width="456">
<tbody>
<tr>
<td width="201" valign="bottom"><strong>Test Case</strong></td>
<td width="255" valign="bottom"><strong>Test Result</strong></td>
</tr>
<tr>
<td width="201" valign="bottom">1</td>
<td width="255" valign="bottom">Successful</td>
</tr>
<tr>
<td width="201" valign="bottom">2</td>
<td width="255" valign="bottom">Successful</td>
</tr>
<tr>
<td width="201" valign="bottom">3</td>
<td width="255" valign="bottom">Successful</td>
</tr>
<tr>
<td width="201" valign="bottom">4</td>
<td width="255" valign="bottom">Successful</td>
</tr>
<tr>
<td width="201" valign="bottom">5</td>
<td width="255" valign="bottom">Successful</td>
</tr>
<tr>
<td width="201" valign="bottom">6</td>
<td width="255" valign="bottom">Successful</td>
</tr>
<tr>
<td width="201" valign="bottom">7</td>
<td width="255" valign="bottom">Successful</td>
</tr>
<tr>
<td width="201" valign="bottom">8</td>
<td width="255" valign="bottom">Successful</td>
</tr>
<tr>
<td width="201" valign="bottom">9</td>
<td width="255" valign="bottom">Successful</td>
</tr>
<tr>
<td width="201" valign="bottom">10</td>
<td width="255" valign="bottom">Successful</td>
</tr>
<tr>
<td width="201" valign="bottom">11</td>
<td width="255" valign="bottom">Successful</td>
</tr>
<tr>
<td width="201" valign="bottom">12</td>
<td width="255" valign="bottom">Successful</td>
</tr>
<tr>
<td width="201" valign="bottom">13</td>
<td width="255" valign="bottom">Successful</td>
</tr>
<tr>
<td width="201" valign="bottom">14</td>
<td width="255" valign="bottom">Successful</td>
</tr>
<tr>
<td width="201" valign="bottom">15</td>
<td width="255" valign="bottom">Successful</td>
</tr>
<tr>
<td width="201" valign="bottom">16</td>
<td width="255" valign="bottom">Successful</td>
</tr>
</tbody>
</table>
<p><strong> </strong></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong>REFERENCES</strong></p>
<p>Shang Shin, javapassion.com, Retrieved on June 29, from http://www.javapassion.com/</p>
<p><strong>Extra notes from me:</strong></p>
<p>You may notice that the program is not perfect in validating input, it will crash and stop working when a wrong data type is entered. OF course actually you can fix this problem and make the program validate the input appropriately. But what I want to show here is that this module assignment really doesn&#8217;t care about this kind of factors, they just want the program to do the requested functions. But if you want to do more, the choice is always yours <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  good luck!</p>
<p>Do you have any comment on this? maybe you have something to ask me or want to discuss with me about this?Or maybe you are IDIC student and taking this module also?<br />
Feel free to use the comment box below (<a href="http://thomaset2000.com/?p=411">click here if you cannot see the comment box</a>).</p>
<p>Coming next, I will post another IADIC assignments, I will start posting my second term modules in IADIC. <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Stay tuned! you can subscribe to my blog&#8217;s feed <a href="http://feeds.feedburner.com/thomaset2000/pYaZ">by clicking here</a> so you won&#8217;t miss when the new post is published <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://thomaset2000.com/2009/02/c2005-object-oriented-programming-in-java-term-2-2008-assignment/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>C2002 Software Engineering Term 2 2008 assignment, part 2</title>
		<link>http://thomaset2000.com/2009/02/c2002-software-engineering-term-2-2008-assignment-part-2/</link>
		<comments>http://thomaset2000.com/2009/02/c2002-software-engineering-term-2-2008-assignment-part-2/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 03:05:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[IADIC]]></category>
		<category><![CDATA[Informatics]]></category>
		<category><![CDATA[C2002]]></category>
		<category><![CDATA[project risk]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[software life cycle]]></category>
		<category><![CDATA[SQA]]></category>

		<guid isPermaLink="false">http://thomaset2000.com/?p=391</guid>
		<description><![CDATA[Hi! Meet again in the second part of C2002 Software Engineering module term 2 2008 assignment post.
In this post I will write the answer of the assignment&#8217;s question that I posted in the previous post. Basically, the scenario question of this assignment is about development of a CFMS (Cash Flow Management System). The specification of [...]]]></description>
			<content:encoded><![CDATA[<p>Hi! Meet again in the second part of C2002 Software Engineering module term 2 2008 assignment post.</p>
<p>In this post I will write the answer of the assignment&#8217;s question that I posted in the <a href="http://thomaset2000.com/?p=387">previous post</a>. Basically, the scenario question of this assignment is about development of a CFMS (Cash Flow Management System). The specification of the system is given in the scenario.  We take role as a freelance software consultant that help to make decisions on the development of this system.</p>
<p>The first question (a) ask about what software life cycle that we will use, the second question ask about how to ensure the dependability of the system, and the last question (c) ask about the risks that may happen during the development of this system. You can read the full scenario and the questions in <a href="http://thomaset2000.com/?p=387">the previous post</a>, or you can <a href="http://thomaset2000.com/?p=387">click here</a>.</p>
<p>Now, the answer is as follows:</p>
<p><span id="more-391"></span></p>
<p><strong>Answer for question A</strong></p>
<p>After looking and examining the scenario of the CFMS software. I would choose the combination of classic SDLC (System Development Life Cycle), Prototyping, and 4GL (4th Generation Language) to be applied in the development of the CFMS software. So, this method is like using the classic SDLC method but we combine it with prototyping that is generated using 4GL after the requirement gathering or the initial study phase.</p>
<p>Below is a diagram that shows the overall stages of this method:</p>
<p><img class="alignnone size-full wp-image-404" title="software-life-cycle-diagram" src="http://thomaset2000.com/wp-content/uploads/software-life-cycle-diagram.jpg" alt="software-life-cycle-diagram" width="399" height="279" /></p>
<p>As we can see from the diagram, the overall process is very similar with normal classic SDLC. The only difference is that after the requirement gathering stage of the classic SDLC, there is a Prototyping stage that uses 4GL to generate the prototype.</p>
<p>In general, each software life cycle model has its own strengths and weaknesses. I will try to identify the strengths and weaknesses for each classic SDLC and Prototyping here as these two methods will be used in developing the CFMS (Cash Flow Management System) Software.</p>
<p><strong><span style="text-decoration: underline;">Classic SDLC (System Development Life Cycle):</span></strong><strong> </strong></p>
<p><strong><span style="text-decoration: underline;">a. Strengths</span></strong></p>
<p>1.      A project that is carried out with classic SDLC will have clear objectives and prevents that the project moves away from the main objective.</p>
<p>2.      Classic SDLC project is stable and easy to review as we can have checkpoints during the project progress at the each stage of classic SDLC. Thus leads to a better system quality.</p>
<p>3.      We can easily measure the progress of a project that is carried out using Classic SDLC system.</p>
<p>4.      A system developed using classic SDLC will have many documentations since classic SDLC produce a documentation in each stage. These documentations are useful for future development or modification to the system.</p>
<p><strong><span style="text-decoration: underline;">b. Weaknesses</span></strong></p>
<p>1.      Classic SDLC takes a quite long time to deliver a finished and fully working system.</p>
<p>2.      If there is a lack of requirement or specification that is unrevealed during the early stages, the project will have a difficulty to accept the changes as it has to go back and repeat many stages.</p>
<p><strong><span style="text-decoration: underline;">Prototyping</span></strong></p>
<p><strong><span style="text-decoration: underline;">a. Strengths</span></strong></p>
<p>1.      Prototyping ensures a good communication between the user and the development team.</p>
<p>2.      The use of prototyping method in a system development project will minimize the risk of missing system specification as the team have a good communication with the user.</p>
<p><strong><span style="text-decoration: underline;">b. Weaknesses</span></strong></p>
<p>1.      It is difficult to monitor the project&#8217;s progress and implement a strict working standard. This will lead to a poor quality product.</p>
<p>2.      There is inadequate documentation when we use a pure prototyping method to develop a system. This will make evaluation and further development of the system become harder.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;">III.a. Reason to use combined Classic SDLC &amp; Prototyping for CFMS Software:</span></strong></p>
<p><strong> </strong></p>
<p>After examining the strengths and weaknesses of Classic SDLC and prototyping, I see that the best option to develop the CFMS (Cash Flow Management System) Software is to combine these two software life cycle model (Classic SDLC and Prototyping), because we can take the strengths from both classic SDLC and Prototyping to be an advantages in developing this CFMS Software.</p>
<p><span style="text-decoration: underline;">The factors that support my decision to apply combined SDLC and Prototyping in this CFMS Software development case are:</span></p>
<ol type="1">
<li>We can use the strengths from both classic SDLC and Prototyping.</li>
</ol>
<ol type="1">
<li>CFMS Software is business software that will play an important      role in the   trading company, it should require      minimum maintenance and reliable enough to run flawlessly, so we need the      best quality software possible. In this factor, Classic SDLC is favourable      as it can deliver good quality software.</li>
</ol>
<ol type="1">
<li>As stated in the scenario, the CFMS software is expected to run on      some different network operating system such as NetWare, Windows NT, etc.      This means that it will need a thorough study about some network operating      system where the CFMS software is expected to run. So, this factor supports      the use of classic SDLC that do more requirement gathering and analysis to      make sure that the CFMS software have reliable performance when it is used      on some different network operating systems.</li>
</ol>
<ol type="1">
<li>It is stated in the scenario that the CFMS Software is a software      package that must be able to handle the company&#8217;s accounts, payment, and      income. For the payment itself, there are so many different fixed and      variable amounts of payment. The same thing also applies for the company      income and accounts. Because each company is not exactly using the same types      of accounts, payments, and income, so I suggest that we need to make the      CFMS software more personalized to each company&#8217;s characteristics. In this      factor, the use of prototyping will be very helpful as the development      team can works closely with the user from the company to gather      specifications specific to the company and make the CFMS software more      personalized for the company to manage the cash flow.</li>
</ol>
<ol type="1">
<li>The last paragraph of the scenario states that the CFMS Software      must be able to generate report data to be used as analysis material by      the accountants. The prototyping method will be suitable to cover this      factor as the developer team can works closely with the accountant to      gather their requirements about the report (e.g. What data should be      displayed in a report, how the report should be arranged, etc.).</li>
</ol>
<p>In conclusion, we can see at the five factors above and see that there are some factors from the scenario that supports the use of classic SDLC, and also there are some factors that will be well covered by using prototyping method. So, I concluded that the use of combined classic SDLC and prototyping is the most suitable software life cycle model that can be applied for this CFMS Software development scenario.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;">III.b. Explanation for each phase in the selected software life cycle model</span></strong></p>
<p>In this section, I will explain about each phase in the selected software life cycle model for this CFMS Software, that is combined classic SDLC and prototyping.</p>
<p><span style="text-decoration: underline;">There are 9 stages in this software life cycle model, they are:</span></p>
<p>1.)    Requirement Gathering Stage</p>
<p>2.)    Prototyping Stage</p>
<p>3.)    System Analysis Stage</p>
<p>4.)    Program Design Stage</p>
<p>5.)    Development Stage</p>
<p>6.)    Testing Stage</p>
<p>7.)    Implementation Stage</p>
<p>8.)    Live Running and Maintenance Stage</p>
<p>9.)    Review Stage</p>
<p>Each stage in the CFMS software life cycle model is based on the information collected from the previous stage, and each stage will have a product or result that will be used by the next stage. So, we can say that every stage in this CFMS software life cycle model is related or connected with another stage.</p>
<p><strong>1.) </strong><strong>Requirement Gathering Stage</strong></p>
<p>Requirement gathering stage is the first stage of this CFMS software development life cycle. This is the stage where we collect all the necessary information to study the CFMS software&#8217;s requirement from the user. This information about the CFMS software&#8217;s requirement is essential in order to proceed to the next stages in the life cycle. So, there will be a lot of information gathering activities involved in this stage.</p>
<p><span style="text-decoration: underline;">Activities taken to complete this stage are:</span></p>
<p>1. a.)        Study and determine what is the problem that should solved by the CFMS software for the company.</p>
<p>1. b.)        Find out about what are the features needed in the CFMS software to provide solution for the company&#8217;s problem (Software Requirement)</p>
<p>1. c.)        Conduct a feasibility study</p>
<p>1. d.)       Produce the feasibility report to carry on with the next stage</p>
<p><strong>1. a.) </strong><strong><span style="text-decoration: underline;">Study and determine what is the problem that should solved by the CFMS software for the trading company.</span></strong></p>
<p>When a company wants to use Cash Flow Management System (CFMS) software to aid the trading company in managing the company&#8217;s cash flow, there must be a background problem that pushes the company to demand the use of CFMS software.</p>
<p>In order to develop dependable and effective CFMS software, we have to understand what is really needed by the trading company from the software, or in another words we can say that the CFMS software developer must find out what are the features and benefits expected by the trading company from using the CFMS software. When we already have a good understanding on this issue, there will be a clear direction in developing the CFMS software, thus leads to a CFMS software that really match what a trading company need.</p>
<p>We can study the trading company&#8217;s current problem by examining the current system that is used by the trading company to manage their cash flow. From this point, we can find out about what are the problems and limitation of the trading company&#8217;s current cash flow management system.</p>
<p>Another way to study about this problem is to have an interview with some key person in the trading company that have a well understanding about the current trading company&#8217;s problem in managing their cash flow. An interview with the senior management team from the trading company and some other staffs that have an adequate knowledge about this matter can be a good choice because we can get clearer picture about the trading company&#8217;s current problem with their cash flow management.</p>
<p><strong>1. b.) </strong><strong><span style="text-decoration: underline;">Find out about what are the features needed in the CFMS software to provide solution for the company&#8217;s problem (Software Requirement)</span></strong></p>
<p>After we understand the problem faced by the trading company in managing their cash flow using their current system, now we need to find out about how the CFMS software will be able to solve these problems and give the trading company a new convenient way to manage their cash flow.</p>
<p>It is mentioned in the scenario that the CFMS software is required to manage three things such as the company&#8217;s bank accounts, the company&#8217;s payments, and also the company&#8217;s income. So now we need to find out how the trading company wants the CFMS software to manage these three things, how the company&#8217;s staff wants the CFMS software to works is also information that we will find out here.</p>
<p><strong>1. c.) </strong><strong><span style="text-decoration: underline;">Conduct a feasibility study</span></strong></p>
<p>At this step, we already know what is the problem faced by the trading company in managing their cash flow using their current system. So we know what is expected from the CFMS software that is to solve this problem. And also we have studied about how the trading company wants the CFMS software to deals with things like managing bank accounts, payments, and income.</p>
<p>Now is the time for us to study about the feasibility of this project. We have to ask questions like &#8220;Is it feasible for us to develop a CFMS software that meet&#8217;s the requirement and demand from the trading company?&#8221; should be asked. So, we will get a clear image about whether this project is feasible or not.</p>
<p>The feasibility study that we do in this step also covers about cost and benefit analysis. We need to study about how much is the cost to develop this CFMS software, and what is the benefits both tangible benefits and intangible benefits that the trading company will get after using this CFMS software to manage the company&#8217;s cash flow.</p>
<p><strong>1. d.) </strong><strong><span style="text-decoration: underline;">Produce the feasibility report to carry on with the next stage</span></strong></p>
<p>In this step, we use the result of our feasibility study about the CFMS software to produce a feasibility report. The feasibility report will contain information like is it feasible to continue this project, the project cost, benefits, and also the time needed to finish the project. This report will be presented to the company&#8217;s management in order to get an approval. Only if the project is approved, then we can continue the development of the CFMS software to the next step of its life cycle.</p>
<p><strong>2.) </strong><strong>Prototyping Stage</strong></p>
<p>After the feasibility report has been approved from the previous stage, now we can continue with the prototyping stage. The main purpose of the prototyping stage here is to get a clearer and more detailed requirement for the CFMS software from the user (the trading company). This is necessary to reveal any software requirement or specification that is unrevealed during the requirement gathering stage. The CFMS software prototype itself will be generated using 4GL (4<sup>th</sup> Generation Language) in order to cut the prototype development time, because we can generate a program quickly using the 4GL technique, and also since we building a prototype just to find out more requirement from the user so we don&#8217;t need the best quality program to be the prototype, that&#8217;s why applying 4GL technique to develop this CFMS software prototype is the best and the fastest way.</p>
<p><span style="text-decoration: underline;">Activities taken to complete this stage are:</span></p>
<p>2. a.)        Build the first version of the prototype using 4GL technique</p>
<p>2. b.)        Present the prototype to the user to refine the software requirement</p>
<p>2. c.)        Make Changes to the prototype and re-present it to the user</p>
<p>2. d.)       Produce a report about the refined requirements</p>
<p><strong>2. a.) </strong><strong><span style="text-decoration: underline;">Build the first version of the prototype using 4GL technique</span></strong></p>
<p>The very first step in this prototype stage is to build the initial prototype of the CFMS software based on the user&#8217;s requirement that have been found from the previous stage, the requirement gathering stage.</p>
<p>The prototype of the CFMS software will represent what will be there in the actual CFMS software that will be developed later on. This prototype has some visible functions like bank accounts management, payments recording, and also income recording but actually these functions is not complete, these functions are just build to show the user what the actual CFMS software will looks like. So, the development of this prototype won&#8217;t take a long time to finish. Instead, it will be done quickly with the aid of 4GL technique.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong>2. b.) </strong><strong><span style="text-decoration: underline;">Present the prototype to the user to refine the software requirement</span></strong></p>
<p>After we finish building the first version of the CFMS software&#8217;s prototype, now we need to present the prototype to the user. Practically, the user who will try this prototype is a staff or some staffs from the trading company who will use this CFMS software in the future.</p>
<p>This step requires a lot of communication between us as the CFMS software developer and the user from the trading company. We will need to gather the user&#8217;s feedback about the prototype when the user tries the CFMS software prototype. One of the advantage from using prototype in refining user&#8217;s requirement on CFMS software is that user will have a clearer picture about the software, thus leads to better understanding of the user about how the CFMS software will looks like. User feedback may vary from how the interface of the CFMS software needs to be improved in order to be more user-friendly, or the user may find out that there are more requirements that need to be added to the CFMS software. The user may also describe more about what he/she actually expect the CFMS software to be.</p>
<p><strong>2. c.) </strong><strong><span style="text-decoration: underline;">Make Changes to the prototype and re-present it to the user</span></strong></p>
<p>Based on the user&#8217;s feedback from the previous step, now we need to make changes to the first version of the CFMS software prototype. We have to refine the software&#8217;s requirement until it matches with the user&#8217;s exact expectation about the software.</p>
<p>The modified prototype is re-presented to the user to evaluate the prototype again and to find out if there is still any requirement unrevealed. If there is any new finding, we can modify the prototype again and then present it to the user for evaluation again. We may repeat this process in a finite number of iteration until we know that we have gathered enough requirements for the CFMS software.</p>
<p><strong>2. d.) </strong><strong><span style="text-decoration: underline;">Produce a report about the refined requirements</span></strong></p>
<p>The result of this prototyping stage is a well refined CFMS software requirement. Now we will produce a report of the refined requirement to be used in the next stage of the CFMS software life cycle, the system analysis stage. The prototype itself will be discarded and won&#8217;t be used for further development of the actual CFMS software. This is done to ensure that the CFMS software will have the best quality.</p>
<p><strong>3.) </strong><strong>System Analysis Stage</strong></p>
<p>Now we continue the CFMS software development with the system analysis stage. In this stage, we will describe the proposed CFMS software more clearly by doing further investigation on the software&#8217;s requirement; design the logical structure of the CFMS software, and also prepare enough information as the foundation that will be used by the next stage, the program design stage.</p>
<p><span style="text-decoration: underline;">Activities taken to complete this stage are:</span></p>
<p>3. a.)        Requirements Modelling</p>
<p>3. b.)        Data and Process Modelling</p>
<p>3. c.)        Transition from analysis stage to design stage</p>
<p><strong>3. a.) </strong><strong><span style="text-decoration: underline;">Requirements Modelling</span></strong></p>
<p>In requirements modelling step, we have to describe all the requirements of the CFMS software. The CFMS software requirements cover 5 categories that are the software&#8217;s input, process, output, performance, and control. These five categories of the CFMS software requirement must be well described and identified in order for the finished CFMS software to be acceptable by the trading company.</p>
<p><span style="text-decoration: underline;">Example of the CFMS software requirement in these 5 categories is:</span></p>
<p>Ø  <strong>Input</strong></p>
<p>The input of the CFMS software covers variable payment and variable income, or report request. For the payment, the CFMS software will accept data about payments for credit card, utilities bill, CPF contributions, etc. For company&#8217;s income, the user must  input the information for each income, for example if the income is in form of a cheque the user need to input the cheque number, customer name, the amount, etc.</p>
<p>Ø  <strong>Process</strong></p>
<p>The process requirement of the CFMS software may covers things about how to synchronize every payment and income of the trading company with the company&#8217;s bank account calculation. How to calculate overdrawn or overdraft account and how to process and manage the balance of each account is included in the process requirement of the CFMS software.</p>
<p>Ø  <strong>Output</strong></p>
<p>The output requirement of the CFMS software may include about how the software arrange the information when it produces report about the company&#8217;s account balance, how is the interface should be designed so the user can retrieve the needed information conveniently, etc.</p>
<p>Ø  <strong>Performance</strong></p>
<p>Performance requirement of the CFMS software covers things like how long the software needs to be active, is it 24 hours or just in office hours, and also the expected processing speed of the software. These things are required as the standard to develop the CFMS software so that it can meets with the performance requirement.</p>
<p>Ø  <strong>Control</strong></p>
<p>This requirement deals with the security level of the CFMS software. We have to decide how the information in the CFMS software&#8217;s database can be secured from unauthorized access, as the CFMS software keep information about the company&#8217;s cash flow that is confidential for each company.</p>
<p>In order to collect enough information about these five categories of requirement, we need to do some investigation that involves various fact finding activities. The fact finding activity can be done using one or more than one fact finding technique. Some possible option of fact finding here are interview with some key staff that understand about the company&#8217;s cash flow management system, do a questionnaire to find out more information from the company&#8217;s staffs, observe the current system to find out how the trading company manages their cash flow using the current system, etc.</p>
<p><strong>3. b.) </strong><strong><span style="text-decoration: underline;">Data and Process Modelling</span></strong></p>
<p>After we have done with the requirement modelling step, now we have to do the data and process modelling for the CFMS software. In this step, we have to create the logical structure of the software. We will use a graphical representation to show how the logical structure of the system. Or in another word we can say that we use graphical representation to show how the CFMS software works logically.</p>
<p>The tools used in this step are DFD (Data Flow Diagram) and Context Diagram to show the logical structure of the CFMS software, and also a Data Dictionary to keep detailed information about each data that will be kept by the CFMS software.</p>
<p><strong>3. c.) </strong><strong><span style="text-decoration: underline;">Transition from analysis stage to design stage</span></strong></p>
<p>This is the final step to complete the analysis stage of the CFMS software. The result of the analysis stage is a document called system requirements. We will need to have a presentation to the company&#8217;s management regarding this system requirement to seek their approval to continue with the development of the CFMS software. The correctness of the system requirements is important because it have the logical design of the CFMS software that will be the foundation of the program design stage. So if we or the management team thinks that the current system requirements document is not complete enough, we can repeat the analysis stage one more time in order to produce a complete and correct system requirements of the CFMS software.</p>
<p><strong>4.) </strong><strong>Program Design Stage</strong></p>
<p>In the program design stage, we will design the physical structure of the CFMS software based on the logical structure design from the system analysis stage. The objective of this design stage is to design the CFMS software to be software that is effective, reliable, and maintainable.</p>
<p>We can say that CFMS software is effective if this software can fulfils all the requirements and expectation from the trading company. For example, the CFMS software must be able to do all the requirements stated in the scenario such as managing bank account, payment, income, balance report, and also produce a spreadsheet report for the accountants.</p>
<p>To make the CFMS software to be reliable software, we must design the software to be able to prevent error from input, process, and output. Since the CFMS software will deal with the company&#8217;s cash flow, so it has to be designed as accurate as possible.</p>
<p>The final objective is to make the CFMS software maintainable. As we can see in the scenario, it is stated that there are some fixed amount such as rental fee, income tax, property tax, etc. These amounts are fixed but there is always a possibility that these fixed amount will change maybe due to change in government or the company&#8217;s policy. So, when these things happen, the CFMS software must be maintainable to adapt with the changes.</p>
<p><span style="text-decoration: underline;"> </span></p>
<p><span style="text-decoration: underline;">Activities taken to complete this design stage are:</span></p>
<p>4. a.)        Review the CFMS software system requirement</p>
<p>4. b.)        Design the CFMS software</p>
<p>4. c.)        Present the CFMS software design</p>
<p><strong>4. a.) </strong><strong><span style="text-decoration: underline;">Review the CFMS software system requirement</span></strong></p>
<p>The CFMS software requirement contains the logical design of the CFMS software, so we need to review this requirement in order to get a very clear understanding about the logical structure of the CFMS software. With a good understanding about the software&#8217;s logical structure, we can start to design the physical structure of the software without getting out of the scope and requirement. This physical structure of the CFMS software will be implemented when we start the development stage of the CFMS software.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong>4. b.) </strong><strong><span style="text-decoration: underline;">Design the CFMS software</span></strong></p>
<p>There are some things that we need to design for the CFMS software, they are:</p>
<p><a name="OLE_LINK1"></a></p>
<ul class="unIndentedList">
<li> Input Process Design</li>
<li> Input and Output Format Design</li>
<li> Data Design</li>
<li> System Architecture Design</li>
</ul>
<p>ü  <strong>User Interface Design</strong></p>
<p>User interface is the part of the software where the user can interact with the CFMS software. Here we have to design a user interface that is user friendly with using graphical user interface (GUI) enhanced with an attractive screen layout and design. We make all the user interface design for the CFMS software in this step; it ranges from the software&#8217;s main menu, navigation functions, log-in screen, etc.</p>
<p>ü  <strong>Input Process Design</strong></p>
<p>Input process design means that we design how the CFMS software will process the input data and how the data will be inputted to the CFMS software. As we know that in data processing there is a term called Garbage in Garbage out (GIGO), that means if the input data is already have fault, then the output will be a faulty data also. As CFMS software will have to process an important data about a trading company&#8217;s cash flow, so we need the software to be able to do input data validation check to minimize data entry error. For example, if the user enters data about cheque payment, the software must be able to verify whether the information about the cheque is correct such as the format of the cheque number.</p>
<p>ü  <strong>Input and Output Format Design</strong></p>
<p>We also need to design the input and output format for the CFMS software. Input format includes the data input form. The data input form must be user friendly and effective to reduce the data input time. For example, we put the fixed options like direct debits, giro deduction, and bank transfers in option box, and then we put input for variable amount such as amount to credit card payment, utilities bill, CPF contributions, etc., in a text box.</p>
<p>For the output format design, we need to design the format of the company balance report, the warning for the user regarding account that is overdrawn or overdraft, and the format of the report generated by the CFMS software in spreadsheet format.</p>
<p>ü  <strong>Data Design</strong></p>
<p>CFMS software will keep so many kinds of data such as bank account data, transaction data, payment data, and income data. The aim of data design step is to design how the data on the CFMS software is <a name="OLE_LINK3"></a><a name="OLE_LINK2"></a></p>
<p>ü  <strong>System Architecture Design</strong></p>
<p>System architecture design about how the CFMS software will fit with the environment that is the operating system. As it is stated in the scenario, the CFMS software will need to run in a Windows based PC and some other network operating system, so we need to design the CFMS software&#8217;s architecture in order to comply with this requirement.</p>
<p><strong>4. a.) </strong><strong><span style="text-decoration: underline;">Present the CFMS software design</span></strong></p>
<p>After we complete the design of the CFMS software, now we need to make the documentation about the design and make a presentation about the software design to the management team. Once the design is approved, then we can say that the program design stage in the life cycle is completed and now we can bring the CFMS software design to the next stage, the development stage.</p>
<p><strong>5.) </strong><strong>Development Stage</strong></p>
<p>Now we can start to write the CFMS software with a chosen programming language. We use the software design from the previous stage as the base in writing the programming codes. The programmers need to keep the programming standards such as modular programming concept to make the CFMS software works effectively.</p>
<p>The development stage will covers two main activities that are file creation and application creation. The final result of this development stage is fully working CFMS software that satisfies its requirement. Beside the actual CFMS software, the development stage also produce documentations like input and output specification, data dictionary, and also the operating guide of the CFMS (Cash Flow Management System) software.</p>
<p><strong>6.) </strong><strong>Testing Stage</strong></p>
<p>This is the stage where we will test and debug the CFMS software in order to reveals any bug, defect, or error in the software. The main purpose of software testing is to find the errors in the CFMS software; it is not to prove that the developed CFMS software is working without problem.</p>
<p>The testing strategy that can be applied here is the bottom-up testing strategy which start from unit testing that test every single unit or module of the CFMS software, continued by an integration testing that test about how one module interfaces with another module, and finally a system testing is conducted to test the entire CFMS software.</p>
<p>The software development team is always involved in every stage of the software testing, whenever the test reveals an error then the software development team will have to fix the code to eliminate the error and then the software is re-tested until the error is completely fixed. It is important to note that it is almost impossible to make the CFMS software 100% free of error as it is almost impossible to develop perfect software. So, we will place the target of 95% &#8211; 98% error free software.</p>
<p><strong>7.) </strong><strong>Implementation Stage</strong></p>
<p>The CFMS software has passed the testing stage, so now this software is ready to be implemented to the trading company.</p>
<p>There are some activities that need to be done in this implementation stage:</p>
<p>7. a.)        Conduct user training session</p>
<p>7. b.)        Perform data conversion</p>
<p>7. c.)        Select and apply a changeover method</p>
<p><strong>7. a.) </strong><strong><span style="text-decoration: underline;">Conduct user training session</span></strong></p>
<p>In order to prepare the trading company&#8217;s staff to use the new CFMS software, a user training session is essential to familiarize the staff that will use the CFMS software in the future. Before a training session, we can release the software&#8217;s documentation so the staffs that follow the training session can have a picture about the CFMS software prior to the user training session.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong>7. b.) </strong><strong><span style="text-decoration: underline;">Perform data conversion</span></strong></p>
<p>The data conversion activity is where we convert the data from the old system or from the current system&#8217;s format to the CFMS software&#8217;s format. This is necessary to make the CFMS software able to continue the cash flow management system of the company from the data of the previous system.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong>7. c.) </strong><strong><span style="text-decoration: underline;">Select and apply a changeover method</span></strong></p>
<p>There is some changeover methods that we can chose in changing the company&#8217;s current system with the CFMS software. But I would like to recommend using the pilot conversion changeover method. This method is safe and will reduce risk if the changeover is fail. The pilot changeover method is done by selecting a company&#8217;s branch then apply the whole CFMS software at the selected branch, if the CFMS software runs smoothly, then we can start to change  the cash flow management system of the whole company with the new CFMS software.<strong> </strong></p>
<p><strong>8.) </strong><strong>Live Running and Maintenance Stage</strong></p>
<p>After the implementation of the CFMS software is complete, and then now we enter the live running and maintenance stage. In this stage, the CFMS software has used for the trading company&#8217;s cash flow management system every day. During the daily operation, there can be error or bug that happen because these errors is unrevealed during the testing stage. If such case takes place, then the user (the trading company) may request for support and maintenance to fix the error. And then we as the developer of the CFMS software will provide maintenance service to keep the CFMS software working properly.</p>
<p><strong>9.) </strong><strong>Review Stage</strong></p>
<p>Review stage is the last stage of the CFMS software life cycle model. This stage will only take place after some time; maybe some years after the CFMS software have been used for daily operation by the trading company to manage the company&#8217;s cash flow.</p>
<p>In the review stage, we will do a review on the CFMS software. We will see whether the CFMS software is still match with the company&#8217;s current needs, what improvements need to be made, is the performance of the CFMS software is satisfactory, etc. After asking questions like this and finds the answer, there are three possibilities of the CFMS software reviewer&#8217;s result. First, the CFMS software is working well from the first time it is used until now, so no changes needs to be made. Second, there is a part of the CFMS software that needs to improved, so we need to update or modify the CFMS software. Third, the CFMS software is no longer satisfactory for managing the trading company&#8217;s cash flow; in this case we can consider re-starting the life cycle to develop new CFMS software.</p>
<p><span style="text-decoration: underline;"> </span></p>
<p><strong><span style="text-decoration: underline;">IV. Answer for Question B</span></strong></p>
<p>In this part, I will explain about how I ensure the dependability of the CFMS software. Dependable software is software that can be trusted by the user. So, in order to make the CFMS software to be dependable software, we have to make the user, in this case the trading company, to put their trust in the CFMS software. Of course the user won&#8217;t put their trust in software with a bad quality, so the CFMS software must have the quality and characteristic of the dependable software.</p>
<p><span style="text-decoration: underline;">Dependable software&#8217;s characteristic includes:</span></p>
<p>ü  Software Reliability</p>
<p>ü  Software Availability</p>
<p>ü  Software Maintainability</p>
<p>ü  Software Safety</p>
<p>ü  Software Correctness/Accuracy</p>
<p>ü  <strong>Software Reliability</strong></p>
<p>We can say that the CFMS software is reliable if the CFMS software can fulfil its up-time requirement that means the CFMS software can provide a continuous service to manage the company&#8217;s cash flow without error or without any fault. So, when the CFMS software can do this, it means that the developed CFMS software is reliable.</p>
<p>ü  <strong>Software Availability</strong></p>
<p>Software availability refers to the factor of the readiness of the CFMS software when the user wants to use it. For example, if there is a problem with the CFMS software that remains unresolved for several working days that caused the company cannot use the CFMS software that means the CFMS software is lack of availability. But if the CFMS software is able to quickly recover from any fault that occurred and become ready to use in just a short time, that means the CFMS software have the availability factor of dependable software.</p>
<p><strong> </strong></p>
<p>ü  <strong>Software Maintainability</strong></p>
<p>Software maintainability means that the CFMS software must be open for any repair or upgrade. For example, it may happen after several years have passed there is a significant change in the company&#8217;s policy or in the government policy that makes the CFMS software now become irrelevant in some cash flow management things. In this case, it may be too costly to develop a whole new system, so the option is to repair or upgrade the CFMS software to be able to adapt with the new business policy. When the CFMS software is easy to accept any upgrade, that means the CFMS software is maintainable.</p>
<p><strong> </strong></p>
<p>ü  <strong>Software Safety</strong></p>
<p>Safe software means that the software will not cause any serious failure that causes a fatal damage to the company&#8217;s business. When applied for the CFMS software, it means that the CFMS software won&#8217;t cause any serious failure such as letting the trading company&#8217;s confidential data to fall to any unauthorized or wrong person, or the software failure makes the company losses all its cash flow management data due to unavailability of backup feature. If this can be prevented, it means that the CFMS software is safe.</p>
<p>ü  <strong>Software Correctness/Accuracy</strong></p>
<p>Software correctness or accuracy means that the software must be able to process data and produce accurate output. This factor is important for CFMS software because this software will deals with money that is a trading company&#8217;s cash flow. So, the CFMS software must be accurate in every process and output so the user (the trading company) can put their trust in the software, thus make the CFMS software dependable.</p>
<p>After looking at the above four characteristic of dependable software, now I will explain about what is the step, method, or action that will be used in the CFMS software development to ensure that the CFMS software will turn out as a dependable software.</p>
<p>Dependable software won&#8217;t be bad quality software, so improving the quality of the CFMS software will also improve the dependability level of the CFMS software. There is a method to ensure that software that is being developed will come out with a good quality. The name of the method is Software Quality Assurance (SQA). SQA is a control for the whole CFMS software development process. The SQA have some activities that is implemented during the CFMS software development process in order to ensure that the quality of the CFMS software is satisfactory, and therefore it will ensure the dependability of the CFMS software. So, here I will implement the SQA activities in the CFMS software development process to ensure that the software will be dependable software.</p>
<p><span style="text-decoration: underline;">The SQA activities implemented to ensure the dependability of CFMS software are:</span></p>
<ol type="1">
<li>Apply Technical Method in CFMS software development</li>
<li>Use the FTR (Formal Technical Review)</li>
<li>Test the CFMS software thoroughly</li>
<li>Enforce the working standards of the development team</li>
<li>Control every change made to the CFMS software</li>
</ol>
<ol type="1">
<li><strong><span style="text-decoration: underline;">Apply      Technical Method in CFMS software development</span></strong></li>
</ol>
<p>Applying technical method in the CFMS software development will help the system analyst to gather a good quality software specification. For example, we encourage the use of correct method in gathering the software requirement such as using the standard steps in preparing an interview with a management team or a company staff, or making a good questionnaire question that is clear and unambiguous when conducting a fact finding using questionnaire method. All of these applications of technical method will help the system analyst to gather a good quality software specification. The same thing applies for the CFMS software&#8217;s designer. With encouraging the CFMS software designer to use the right tools in designing the software, we can get a high quality design of the CFMS software.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<ol type="1">
<li><strong><span style="text-decoration: underline;">Use the FTR      (Formal Technical Review)</span></strong></li>
</ol>
<p>Formal Technical Review (FTR) is a meeting that is participated by the technical staff and the software expert of the CFMS software development team. This meeting will review the developed CFMS software to uncover any errors or defect in the software and try to fix these problems in order to improve the quality of the CFMS software and also improve the dependability level of the CFMS software.</p>
<p><span style="text-decoration: underline;">The objectives of FTR in CFMS software development process are:</span></p>
<p>ü  To reveal any defects or error in the CFMS software.</p>
<p>ü  To confirm that the CFMS software is developed according to its requirement.</p>
<p>ü  To make sure that the CFMS software is developed using the right technical standard to ensure its quality.</p>
<p>The benefit in applying FTR in CFMS software development is that it will help on early discovery of any problem such as reliability problem, availability problem, and safety problem. This will make the CFMS software needs less maintenance in the future that leads to make the CFMS software become dependable software.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<ol type="1">
<li><strong><span style="text-decoration: underline;">Test the      CFMS software thoroughly</span></strong></li>
</ol>
<p>The testing stage of the CFMS software life cycle is the most important stage to find and reveal any reliability problem, availability problem, and safety problem that exist in the developed CFMS software.</p>
<p>We need to implement the right testing strategy in order to reveal as many defects as possible in the CFMS software. We need to do both the white-box testing that test every single piece of code to verify that there are no error in the CFMS software&#8217;s coding. White box testing also allows us to check whether the CFMS software&#8217;s coding structure is easy to accept repair, modification, or upgrade in the future. The black box testing will test whether each module in the CFMS software do the right function. For example, we test the income module in the CFMS software by inputting a data as the company&#8217;s income, and then we check whether the CFMS software will produce the correct output by asking the CFMS software to produce a report about the company&#8217;s balance. The black box testing can ensure the CFMS software&#8217;s accuracy in getting input, process data, and produce output.</p>
<p>To ensure the reliability and availability of the CFMS software, we can do the operational condition test where we test the software to run under a condition that is similar with its operational condition. Then from here we can get information about the CFMS software&#8217;s reliability and availability. Additionally, we also need to test the security of the CFMS software by testing its login function.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<ol type="1">
<li><strong><span style="text-decoration: underline;">Enforce the      working standards of the development team</span></strong></li>
</ol>
<p>Enforcing the working standards here means that we need to make sure that every one in the CFMS software development team works according to the technical standard. For example, the programmers use standard method in coding the CFMS software, or it can be the development team needs to use standard technique in checking the CFMS software&#8217;s design such as using method like dry run, structured walkthrough, catalytic checking, etc.</p>
<p>The main purpose of enforcing the use of standard technique in the CFMS software development is to ensure that there is no flaw in design and development of the CFMS software, thus ensure that the CFMS software will have a high quality.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<ol type="1">
<li><strong><span style="text-decoration: underline;">Control      every change made to the CFMS software</span></strong></li>
</ol>
<p>During the testing stage of the CFMS software development life cycle, if there is any error revealed, the programmer must make change in the code in order to fix the error. This means that there is a change in the CFMS software&#8217;s code and therefore now the documentation from the development stage is not accurate anymore, so we need to make sure that every changes made to the CFMS software must be controlled, recorded, and documented. The purpose of doing all of this thing is to make it easier if the CFMS software needs to be repaired or upgraded in the future because we already have a complete documentation that shows the history of changes made to the CFMS software.</p>
<p>Finally, I would like to conclude that to ensure the dependability of the CFMS (Cash Flow Management System) software; I will implement the SQA (Software Quality Assurance) in the development process. The SQA activities implemented in the development process will ensure that the CFMS software come out with the best quality. The impact of improved software quality will also affect the CFMS software&#8217;s dependability, that is makes the CFMS software to be software that is reliable, available, maintainable, safe, and accurate. So, in the end the dependability of the CFMS software is ensured.<strong> </strong></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;">V. Answer for Question C</span></strong></p>
<p>In this part, I will explain about the risk that may rise in the development process of the CFMS software, and also how we can minimize these software development risks.</p>
<p>Basically, risk is a hazard or a source of problem/danger that may happen and causes damage or loss. The similar thing applies for software development project risk. Risk in this CFMS (Cash Flow Management System) software development project is some factors that have possibility to affect the project in a negative way or even disastrous to the overall project.</p>
<p>There are two different types of risk in the CFMS software development project. There is an expected risk that we will know the risk will happen so we can prevent it or minimize its negative effect. But there is also unexpected risk that we won&#8217;t know if it can happen in the CFMS software development project, for this kind of risk, we cannot plan for the counter-measure because we really didn&#8217;t expect it to happen, for example the developer team&#8217;s server computer crashed.</p>
<p><span style="text-decoration: underline;">Here is a list of some possible risk that may happen in the CFMS software development project:</span></p>
<ol type="1">
<li>Project out of schedule</li>
<li>Project Cancelled</li>
<li>CFMS software out bad</li>
<li>Creation of unnecessary feature</li>
<li>Creation of false feature</li>
<li>Preparing for future enhancement</li>
<li>Frustrated developer team</li>
<li>Additional request from user</li>
<li>Lack of experience and skill in developer team</li>
<li>Changes in the company&#8217;s policy or government policy</li>
</ol>
<p>Now, I will explain each of the risk that I mentioned in the above list, together with the action that will be performed to minimize the impact of every risk.</p>
<ol type="1">
<li><strong><span style="text-decoration: underline;">Project out      of schedule</span></strong></li>
</ol>
<p>This is the risk that the development of the CFMS software takes longer than the schedule. The customer (the trading company) that have been waiting for the project to be finished can be disappointed when we as the developer team of the CFMS software must hardly say that the CFMS software is not yet ready.</p>
<p>To overcome this risk, what we can do is to break the CFMS software into some small modules that has its own feature. For example, a module that is used to manage bank account, a module for keeping payment data, a module to generate report in spreadsheet format, etc. Then we can release these modules one by one. Maybe we can also consult with the user about what module should be released first and what module that can be released later. Preferably, we will release the important modules first and followed by module with optional features. By doing this way, even if the CFMS software development project takes longer than the scheduled time, the customer won&#8217;t really feel the effect because they can start using the software&#8217;s feature even it is released one by one.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<ol type="1">
<li><strong><span style="text-decoration: underline;">Project      Cancelled</span></strong></li>
</ol>
<p>There is always a risk that the CFMS software development project is cancelled when it already developed halfway. The customer may cancel the software for some possible reason, for example the trading company that wants to buy the CFMS software unexpectedly decides that they don&#8217;t want the software and decide to cancel the CFMS software project.</p>
<p>To protect the continuity of the CFMS software development project from being cancelled, we need to make the customer more involved in the software development process itself. In this case, we can have one staff from the trading company to get involved in the project&#8217;s process. So, by doing this way the user will have a better understanding about the progress of the CFMS software project and also the user will know that the CFMS software is designed toward the company&#8217;s benefit. In the end, we hope that the staff that is involved in the development process of the CFMS software can inform the trading company&#8217;s management team that will result in smaller chance of cancellation of the project.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<ol type="1">
<li><strong><span style="text-decoration: underline;">CFMS      software turn out bad</span></strong></li>
</ol>
<p>This risk happen when the CFMS software development project has been finished but the quality of the CFMS software is very low that the software have so many defects, this causes the customer (the trading company) to reject the software and that means all the works and efforts to build the CFMS software is wasted.</p>
<p>There is only one thing that we can do to prevent this risk to happen. That is to make sure that the CFMS software will have a good and satisfactory quality. In this CFMS software development project, we have put an effort to ensure the quality of the software that is implementing the SQA activities in the CFMS software development process. So we can prevent this kind of risk to happen.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<ol type="1">
<li><strong><span style="text-decoration: underline;">Creation of      unnecessary feature</span></strong></li>
</ol>
<p>This risk happens from the CFMS software&#8217;s programmer. The programmer may be tempted to create a feature that is too good or more than the requirement. For example, the CFMS software requirement state that the opening of the software is just a simple welcome screen with text and a coloured background, but the programmer thinks that it will be very good if the welcome screen is added with a flash movie. This is unnecessary feature that will make the CFMS software project takes a lot longer time to finish.</p>
<p>To prevent this risk to happen, there are two things that we can do, first we have to enforce the working standard among the CFMS software development team. By enforcing working standard among the development team, we can prevent the development team such as the programmer to do something more than what is required. Second thing that we can do is to have the user or the customer that is a staff from the trading company to get more involved in the CFMS software development progress so he/she can help to tell whether such feature is enough or too much.</p>
<ol type="1">
<li><strong><span style="text-decoration: underline;">Creation of      false feature</span></strong></li>
</ol>
<p>Creation of false feature risk happen when the CFMS software has one or more features that doesn&#8217;t match with the software&#8217;s requirement. For example, it is stated in the scenario that the CFMS software must be able to calculate the balance of each of the trading company&#8217;s account and also able to warn the user about the specific date when one or more accounts will become overdrawn or overdraft. The creation of false feature may happen if the CFMS software is created just to be able to calculate the company&#8217;s account balance but the function to warn the user about the accounts that is going to become overdrawn or overdraft is omitted.</p>
<p>The main cause of this risk to happen is the incomplete requirement that is gathered during the requirement gathering stage. So, in order to prevent this risk to happen, we have to make sure that we do a proper requirement gathering technique and fact-finding to deliver a high quality software requirement. Luckily, in the CFMS software development life cycle we also use the prototyping method. The prototyping method will really help us to refine the CFMS software requirement so we can get a detailed software requirement, because we have an intense and close communication with the customer during the prototyping stage.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<ol type="1">
<li><strong><span style="text-decoration: underline;">Preparing      for future enhancement</span></strong></li>
</ol>
<p>This risk is a case where the developer team adds some more features to the CFMS software that is actually not needed now, but the developer adds these features to make the CFMS software ready for future needs of the company so that the CFMS software won&#8217;t need any upgrade in few years later. For example, now the CFMS software is required to just store the details about each of the company&#8217;s bank account, but the developer decide that maybe the trading company will need to do an online banking through the CFMS software, so the developer team just adds this feature that will consume more development time and also the technology may be still too expensive for today&#8217;s time. And also the risk is that maybe the trading company don&#8217;t need such feature even in few years later, that means the feature that consume more cost to the project will be wasted.</p>
<p>To prevent this, we will just keep the CFMS software development simple. We will just do what is required from the software according to the CFMS software&#8217;s specification that is stated in the scenario. We can prevent for future upgrade by designing the CFMS software in such a way that it can be upgraded in the future if the company needs us to implement more sophisticated feature in the future. By doing this, we can save development effort and keep the project cost as low as possible.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<ol type="1">
<li><strong><span style="text-decoration: underline;">Frustrated      developer team</span></strong></li>
</ol>
<p>It is a real risk that is possible to happen; the member of the CFMS software development team that is most likely to get frustrated is the programmer. Usually this problem is caused by the project leader giving a very limited time for the programmer to finish coding the CFMS software. The project leader doesn&#8217;t consult with the programmer about how much time that they actually need to finish the CFMS software&#8217;s code. In the end, the programmers may find that it is impossible to finish the project on time and give them a high stress level. Stressed or depressed programmer can result in poor quality of the CFMS software&#8217;s code.</p>
<p>In order to prevent the CFMS software development team especially the programmer to get frustrated, what we can do is to ask for the programmer&#8217;s opinion about how long it takes to finish the coding of the CFMS software. Their opinion can be our consideration in deciding the time target/the schedule about when the coding of the CFMS software should be completed. As long as the coding time from the programmers is still logical, we must respect their opinion and use it in deciding the schedule because the programmers are people who really do the actual coding of the CFMS software.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<ol type="1">
<li><strong><span style="text-decoration: underline;">Additional      request from user</span></strong></li>
</ol>
<p>It may happen that when the CFMS software development process has gone halfway, then suddenly the customer which in this case a representative from the trading company, come to us as the developer and say that yesterday they just see the CFMS software from another company that according to them it is nicer in term of its user interface and features. Then it causes the company to request that the CFMS software that is being developed now is changed and added with some more additional feature. This can be very troublesome since we have start the CFMS software project and it has progressed very far. But, when a case like this happen, we have to go back few stages in the development life cycle to re-design the CFMS software and also find a way on how to synchronize the new features that the user wants to be added to the software with the initial design of the CFMS software.</p>
<p>If a case like this happens, we can minimize this risk by defining a clear project scope for the CFMS software. So, if suddenly the user asks to add some more features that will make the development of the CFMS software delayed for a very long time, then we can explain to the customer that those features is out of the current project scope. But, instead of just rejecting the user request and makes them disappointed, we can plan to add those additional features asked by the user as an update in the future after the first version of the CFMS software has been released. By doing this way, we won&#8217;t ruin the schedule of the overall CFMS software development project and also we still can make the customer satisfied by updating the system after it has been released and used by the trading company.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<ol type="1">
<li><strong><span style="text-decoration: underline;">Lack of      experience and skill in developer team</span></strong></li>
</ol>
<p>This risk can happen when we as the project leader just realised that the developer team of the CFMS software doesn&#8217;t have enough experience in developing financial software such as the Cash Flow Management System (CFMS) software. This will cause the CFMS software development project takes much longer time to finish because the developer team needs to do their study about how to develop a software that is used to manage a company&#8217;s cash flow. For example, the software designer doesn&#8217;t understand how it is to manage bank account information and how to calculate if an account will become overdraft or overdrawn. So, he need to study about these issues first then the designing stage of the CFMS software can be started.</p>
<p>The solution to minimize this risk is to have a mentor or outside advisor that can use their knowledge to assist the development team in developing the CFMS software. These people may help the developer team by giving them information about how financial software like CFMS software should do. Or if the problem is the developer team doesn&#8217;t familiar with the technology that is used to develop the CFMS software, we can hire an outside mentor to help the developer team to get familiar with the development technology and tools.</p>
<ol type="1">
<li><strong><span style="text-decoration: underline;">Changes in      the company&#8217;s policy or government policy</span></strong></li>
</ol>
<p>There is always a risk that when the development of the CFMS software is still in progress, there is a change in government policy or the company&#8217;s policy. For example, one of these changes can be changes in the tax rate that has been set as a fixed amount in the CFMS software. When this situation happens, the software will need to be re-coded to adapt with the changes.</p>
<p>There is no way to avoid this risk, because these changes can happen anytime. We can only minimize the effect of this risk that is by making the CFMS software to be maintainable so we can fix, repair, or modify it to adapt with any changes that happen unexpectedly.</p>
<p>In the end, we can conclude that there are so many risks that may happen and disturb the progress of the CFMS (Cash Flow Management System) software. There are two types of risk that are risks that we can expect to happen, and also unexpected risk that is really out of our expectation. In this part, I have explained about some risk that is possible to happen in this CFMS software development project and also how to minimize the bad effect of each risk. So, in spite of any risk that may happen, we can always try to minimize it and keeps the project going as good as possible.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong> </strong></p>
<p><strong>REFERENCES</strong></p>
<p>ASPAlliance, 2008, <em>Software Development Life Cycle</em>, Retrieved on June 17, 2008, from <a href="http://aspalliance.com/articleViewer.aspx?aId=1017&amp;pId=-1">http://aspalliance.com/articleViewer.aspx?aId=1017&amp;pId=-1</a></p>
<p>BCS, 2007, <em>What Makes Software Dependable?</em>, Retrieved on June 8, 2008, from <a href="http://www.bcs.org/server.php?show=ConWebDoc.9933">http://www.bcs.org/server.php?show=ConWebDoc.9933</a></p>
<p>Bobyjos, 2004, <em>SDLC Models Advantages &amp; Disadvantages</em>, Retrieved on June 17, 2008, from <a href="http://bobyjos.blogspot.com/2004/11/sdlc-models-advantages-disadvantages.html">http://bobyjos.blogspot.com/2004/11/sdlc-models-advantages-disadvantages.html</a></p>
<p>Cis.gsu.edu, 2008, <em>System Development Life Cycle &amp; Prototyping</em>, Retrieved on June 7, 2008, from <a href="http://www.cis.gsu.edu/%7Edstraub/JMBA/MBA8473/2001/sdlc4ups.pdf">http://www.cis.gsu.edu/~dstraub/JMBA/MBA8473/2001/sdlc4ups.pdf</a></p>
<p>Csus.edu, 2008, <em>Systems Development: Planning, Lifecycle</em>, Retrieved on June 17, 2008, from <a href="http://www.csus.edu/indiv/e/eatonr/MIS%20175%20Notes/sysdev.ppt">www.csus.edu/indiv/e/eatonr/MIS%20175%20Notes/sysdev.ppt</a></p>
<p>Elucidata.com, 2002, <em>The Software Development Life Cycle(SDLC): For small to medium database applications</em>, Retrieved on June 17, 2008, from <a href="http://www.elucidata.com/refs/sdlc.pdf">http://www.elucidata.com/refs/sdlc.pdf</a></p>
<p>GeekInterview.com, 2008, <em>SDLC &#8211; Prototype model</em>, Retrieved on June 8, 2008, from <a href="http://www.learn.geekinterview.com/it/sdlc/prototype-model.html">http://www.learn.geekinterview.com/it/sdlc/prototype-model.html</a></p>
<p>Hall, Prentice, 2002, <em>Application Development by Information Systems Professionals</em>, Retrieved on June 8, 2008, from <a href="http://www.prenhall.com/divisions/bp/app/martin4/ppt/ch09.ppt">www.prenhall.com/divisions/bp/app/martin4/ppt/ch09.ppt</a></p>
<p>Intecs HRT, ESA, 2003, <em>Software Dependability Techniques</em>, esamultimedia.esa.int, Retrieved on June 22, 2008, from <a href="http://esamultimedia.esa.int/docs/industry/SME/2003/software_engineering/A-Software_Dependability_Techniques.pdf">http://esamultimedia.esa.int/docs/industry/SME/2003/software_engineering/A-Software_Dependability_Techniques.pdf</a></p>
<p>Jai Son, UBC Commerce, 2008, <em>Appendix: IS Development Methodologies</em>, Retrieved on June 8, 2008, from <a href="http://mis.sauder.ubc.ca/courses/BAIT501Protected/IT_acquisition_app.pdf">http://mis.sauder.ubc.ca/courses/BAIT501Protected/IT_acquisition_app.pdf</a></p>
<p>Littlewood Bev &amp; Strigini Lorenzo, <em>Software Reliability and Dependability: A Roadmap</em>, Retrieved on June 8, 2008, from <a href="http://www.cs.ucl.ac.uk/staff/A.Finkelstein/fose/finallittlewood.pdf">http://www.cs.ucl.ac.uk/staff/A.Finkelstein/fose/finallittlewood.pdf</a></p>
<p>Murthi, Sanjay, 2002, <em>Managing Risk in Software Project</em>, Developer.com, Retrieved on June 22, 2008, from <a href="http://www.developer.com/java/other/article.php/1572471">http://www.developer.com/java/other/article.php/1572471</a></p>
<p>Newman College, 2008, <em>Prototyping</em>, Retrieved on June 8, 2008, from <a href="http://portal.newman.wa.edu.au/technology/12infsys/html/KWH2003/Prototyp.htm">http://portal.newman.wa.edu.au/technology/12infsys/html/KWH2003/Prototyp.htm</a></p>
<p>Ou.edu, 2008, <em>Project Management, </em>Retrieved on June 17, 2008, from <a href="http://www.ou.edu/class/mis5003/mbapm.ppt">www.ou.edu/class/mis5003/mbapm.ppt</a></p>
<p>Pragmatic Software Newsletter, 2003, <em>Tips for Managing Risk in Software Projects</em>, Retrieved on June 22, 2008, from <a href="http://www.pragmaticsw.com/Newsletters/newsletter_2003_08_SP.htm">http://www.pragmaticsw.com/Newsletters/newsletter_2003_08_SP.htm</a></p>
<p>Sis.pitt.edu, 2002, <em>InfSci 2510: Information System Analysis and Design</em>, Retrieved on June 8, 2008, from <a href="http://www.sis.pitt.edu/%7Epwu/ISAD/lect/lect9a.pdf">http://www.sis.pitt.edu/~pwu/ISAD/lect/lect9a.pdf</a></p>
<p>Stylusinc.com, 2008, <em>System Development Life Cycle (SDLC)</em>, Retrieved on June 17, 2008, from <a href="http://www.stylusinc.com/Common/Concerns/SoftwareDevtPhilosophy.php">http://www.stylusinc.com/Common/Concerns/SoftwareDevtPhilosophy.php</a></p>
<p>Stylusinc.com, 2008, <em>Software Development Risk</em>, Retrieved on June 22, 2008, from <a href="http://www.stylusinc.com/Common/Concerns/software_development.php">http://www.stylusinc.com/Common/Concerns/software_development.php</a></p>
<p>Wikipedia, 2008, <em>Software Quality Assurance</em>, Retrieved on June 8, 2008, from <a href="http://en.wikipedia.org/wiki/Software_quality_assurance">http://en.wikipedia.org/wiki/Software_quality_assurance</a></p>
<p>Do you have any comment on this? maybe you have something to ask me or want to discuss with me about this?Or maybe you are IDIC student and taking this module also?<br />
Feel free to use the comment box below (<a href="http://thomaset2000.com/?p=391">click here if you cannot see the comment box</a>).</p>
<p>Coming next, I will post another IADIC assignment, C2005 Object Oriented Programming in Java <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Stay tuned! you can subscribe to my blog&#8217;s feed <a href="http://feeds.feedburner.com/thomaset2000/pYaZ">by clicking here</a> so you won&#8217;t miss when the new post is published <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://thomaset2000.com/2009/02/c2002-software-engineering-term-2-2008-assignment-part-2/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>C2002 Software Engineering Term 2 2008 assignment, part 1</title>
		<link>http://thomaset2000.com/2009/02/c2002-software-engineering-term-2-2008-assignment-part-1/</link>
		<comments>http://thomaset2000.com/2009/02/c2002-software-engineering-term-2-2008-assignment-part-1/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 02:44:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[IADIC]]></category>
		<category><![CDATA[Informatics]]></category>
		<category><![CDATA[C2002]]></category>
		<category><![CDATA[software engineering]]></category>

		<guid isPermaLink="false">http://thomaset2000.com/?p=387</guid>
		<description><![CDATA[Hey all!  
Now I will post the second module assignment in this IADIC assignment posting series, this module is C2002 Software Engineering. This module has quite a lot of technical theory about software engineering. The topics that will be covered in this assignment are software life cycle model, software quality, and software project risk.
The [...]]]></description>
			<content:encoded><![CDATA[<p>Hey all! <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Now I will post the second module assignment in this <a href="http://thomaset2000.com/?p=258">IADIC assignment posting series</a>, this module is C2002 Software Engineering. This module has quite a lot of technical theory about software engineering. The topics that will be covered in this assignment are software life cycle model, software quality, and software project risk.</p>
<p>The assignment is based on a scenario about development of a CFMS (Cash Flow Management System). We take a role as a freelance software consultant that will help to make decision about the development of this CFMS system.</p>
<p>I will post the scenario and the questions in this post and continue with my answer on the next post.</p>
<p style="text-align: left;">Here are the scenario and the questions:<br />
<span id="more-387"></span><strong>I. SCENARIO</strong></p>
<p>Imagine that you are a freelance software consultant, and you have been asked to develop and market a financial software package that can help small trading companies to manage their cash flow.</p>
<p>The initial statement of requirements for the software package is as follows:<br />
<strong></strong></p>
<p style="text-align: center;"><strong>Cash Flow Management System (CFMS) </strong></p>
<p style="text-align: left;">The Cash Flow Management System will be a small and easy to use software that will run on standard Windows based PCs. As most trading companies run a small LAN of PCs, the CFMS software is expected to run on a number of the common network operating systems (e.g, NetWare, Windows NT, etc.).</p>
<p>The system will store details of all the bank accounts held by the company, including name of bank, account name and number, sort code, etc. For each account, all regular payments are held on a file. These include direct debits, giro deductions, bank transfers, and other regular payments. Some of these payments are for fixed amounts, e.g, payment of rent, income tax, property tax, etc. Others like payments to credit card companies, utilities, CPF contributions, etc., will be variable. The periods of payments will also vary (e.g, monthly, quarterly, half-yearly, yearly).</p>
<p>Apart from payments, income received must also be recorded. The user must record the amounts of variable transactions as and when they come in, including dates and amounts of any cheques written.</p>
<p>CFMS will be required to calculate (at any time), the balance left in each account for each day in the coming month. The system should be able to warn the user by showing the date on which the account will become overdrawn, and the amount of the overdraft up to end of the month.</p>
<p>The CFMS system should also have the capability to extract and generate various data into the PCs spreadsheet software to allow the accountants to perform further analysis.</p>
<p>End of Statement of Requirements for CFMS</p>
<p>END OF SCENARIO</p>
<p><strong>II. Questions</strong></p>
<p>(a)    State which software life-cycle model (or models) you will apply for the development of the CFMS software.  Justify the reasons for your choice and explain each phase in detail.                                                              [20 marks]</p>
<p>(b)    Discuss how you would go about ensuring the dependability of the CFMS software that is being developed.                                                        [10 marks]</p>
<p>(c)    Evaluate some of the possible risks to the CFMS software development project and how you would minimize them.                                       [10 marks]</p>
<p>To be continued <a href="http://thomaset2000.com/?p=391">in the next post….</a></p>
<p>Do you have any comment on this? maybe you have something to ask me or want to discuss with me about this?Or maybe you are IDIC student and taking this module also?<br />
Feel free to use the comment box below (<a href="http://thomaset2000.com/?p=387">click here if you cannot see the comment box</a>).</p>
<p>Stay tuned! you can subscribe to my blog&#8217;s feed <a href="http://feeds.feedburner.com/thomaset2000/pYaZ">by clicking here</a> so you won&#8217;t miss when the new post is published <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://thomaset2000.com/2009/02/c2002-software-engineering-term-2-2008-assignment-part-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C2001 System Analysis &amp; Design Term 2 2008 assignment, part 2</title>
		<link>http://thomaset2000.com/2009/02/c2001-system-analysis-design-term-2-2008-assignment-part-2/</link>
		<comments>http://thomaset2000.com/2009/02/c2001-system-analysis-design-term-2-2008-assignment-part-2/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 12:07:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[IADIC]]></category>
		<category><![CDATA[Informatics]]></category>
		<category><![CDATA[C2001]]></category>
		<category><![CDATA[System Analysis & Design]]></category>

		<guid isPermaLink="false">http://thomaset2000.com/?p=378</guid>
		<description><![CDATA[Hi! Meet again in the second part of C2001 module term 2 2008 assignment post.
In this post I will write the answer of the assignment&#8217;s question that I posted in the previous post. Basically, the scenario question of this assignment is about a clinic, New Century Health, that wants to have its own information system [...]]]></description>
			<content:encoded><![CDATA[<p>Hi! Meet again in the second part of C2001 module term 2 2008 assignment post.</p>
<p>In this post I will write the answer of the assignment&#8217;s question that I posted in the <a href="http://thomaset2000.com/?p=370">previous post</a>. Basically, the scenario question of this assignment is about a clinic, New Century Health, that wants to have its own information system to increase their productivity. We take role as an IT consultant that will help this clinic to get the best Information System. You can read the full scenario and the questions in <a href="http://thomaset2000.com/?p=370">the previous post</a>, or you can <a href="http://thomaset2000.com/?p=370">click here</a>.</p>
<p>Now, the answer is as follows:<br />
<span id="more-378"></span><strong>Answer for question (i)</strong></p>
<p>Based on the New Century Health Clinic Scenario above, the first thing that we need to do is to find out whether the project to develop a computerized system for the clinic is feasible or not feasible. The New Century Health Clinic’s project feasibility is determined by three factors. Those three factors are:</p>
<p>ü  Operational Feasibility</p>
<p>ü  Technical Feasibility</p>
<p>ü  Economic Feasibility</p>
<p>After we find out about these three feasibility factors mentioned above, then we can decide whether this project is feasible or not.</p>
<p>So, the kinds of question that I will ask in order to review the feasibility of the project will be:</p>
<p>ü  Questions about the <strong><span style="text-decoration: underline;">operational feasibility</span></strong> of the project.</p>
<p>ü  Questions about the <strong><span style="text-decoration: underline;">technical feasibility</span></strong> of the project.</p>
<p>ü  Questions about the <strong><span style="text-decoration: underline;">economic feasibility</span></strong> of the project.</p>
<p>And now, let&#8217;s discuss about each feasibility factor in order to decide the feasibility of the New Century Health Clinic&#8217;s project.</p>
<p><strong>a.) </strong><strong><span style="text-decoration: underline;">Operational Feasibility</span></strong></p>
<p>Operational feasibility factor deals with matters like how effective the clinic&#8217;s system will be used to help to do the clinic&#8217;s tasks after the system has been implemented in the future. Is the new clinic system will be easy to be used by the clinic&#8217;s staff is also a consideration, because even if the new clinic system is very sophisticated, it will be no good if the clinic staff have a lot of difficulties when operates it. So, that is what we consider in the operational feasibility.</p>
<p>The questions that we may ask to assess the operational feasibility are questions such as:</p>
<p>ü  Is developing a new system is a practical decision in helping the clinic achieve its business goals?</p>
<p>ü  Does the New Century Health clinic manager support the idea of this project?</p>
<p>ü  Does the clinic&#8217;s current system have become too troublesome so there is a need for a better new system?</p>
<p>ü  Do the users, in this case the clinic&#8217;s office staffs support the idea of the project?</p>
<p>ü  Do the clinic&#8217;s staffs also see the need to replace the current system with a new system?</p>
<p>ü  Does the new system will cause the clinic to reduce its office staff?</p>
<p>Those are the examples of questions that we can ask to find out whether the project for the New Century Health Clinic is operationally feasible.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;">b.) Technical Feasibility</span></strong></p>
<p>Technical feasibility factor deals with issue about the New Century Health Clinic&#8217;s resources. We need to examine whether the clinic will have enough resources to purchase, implement, and use/operates the system. This is important because later the system will plays an important role in the clinic&#8217;s operation. So, the new system will be wasted if there is nobody in the clinic that able to operate or maintain the system. Technical feasibility also considers the technology that will be used in the new system. Is the technology used by the new system is common and easy to find in the today&#8217;s market also have to be considered. Because if the new clinic system use a technology that is easy to be found in the market, then if there is any failure or damage in the system&#8217;s software or hardware, it will be easy to find person to repairs it or to find a hardware replacement.</p>
<p>The questions that we may ask to assess the operational feasibility are questions such as:</p>
<p>ü  Are the resources needed to develop the new system such as skilled people or hardware technologies are available or easy to find in today&#8217;s market?</p>
<p>ü  Does the New Century Health Clinic already have the required software, hardware, or network infrastructure needed by the new system?</p>
<p>ü  If the clinic currently don&#8217;t have any of the required software, hardware, or network infrastructure needed by the new system, can it get or purchase those things without a big difficulties or problem?</p>
<p>ü  Does the clinic&#8217;s staff have enough skill needed to operate the new system?</p>
<p>Those are the examples of questions that we can ask to find out whether the project for the New Century Health Clinic is technically feasible.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong>c.) </strong><strong><span style="text-decoration: underline;">Economic Feasibility</span></strong><strong> </strong></p>
<p>Economic feasibility is checking whether the new system will be economically feasible for the clinic&#8217;s operation. We can say that the clinic&#8217;s new system has an economic feasibility when the new system&#8217;s benefit is more than the cost to develop and to maintain the new system. So, we can say in other words that the new system is economically feasible if the system can give the clinic more profits and benefits compared to the cost to develop the new system. Economic feasibility is a very important factor to consider, because it will do no good for the New Century Health Clinic even if the new system can do very good tasks in helping the clinic&#8217;s daily operational but it doesn&#8217;t have any good benefits that out-weight its development and maintenance cost.</p>
<p>The questions that we may ask to assess the economic feasibility are questions such as:</p>
<p>ü  What will the clinic save by using the new system?</p>
<p>ü  How much is the tangible benefit of the new system?</p>
<p>ü  What are the intangible benefits of the clinic&#8217;s new system?</p>
<p>ü  How much is the development and daily maintenance cost of the clinic&#8217;s new system? Is it lower than the benefits?</p>
<p>ü  How the clinic&#8217;s new system will help the clinic&#8217;s business?</p>
<p>Those are the examples of questions that we can ask to find out whether the project for the New Century Health Clinic is economically feasible.</p>
<p>Finally, after we see what operational, technical, and economic feasibility is, now we can decide whether the New Century Health Clinic project is feasible. Firstly, based on the given scenario, the clinic has office staffs that is started to be overwhelmed by the growing clinic&#8217;s business, so we see that the implementation of the new system will put a good help in the clinic&#8217;s daily operational. Secondly, the office staffs in the clinic has their experience in doing the job, so with a little training they will be able to adapt and operates the new system without much difficulty. Lastly, in the last part of the scenario it is said that actually the clinic wants to hire new office staff but Dr. Jones recommend to develop this new system as an alternative, so beside helping the clinic&#8217;s operational the new system is also expected to give economic benefits for the New Century Health Clinic. In conclusion, I think that it seems the New Century Health Clinic&#8217;s project is feasible.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;">IV. Answer for Question (ii)</span></strong></p>
<p>If the New Century Health Clinic decides to contract me in performing the preliminary investigation for the clinic&#8217;s new system, then I will perform the preliminary investigation with performing these steps:</p>
<p>1.      Understand the problems and opportunity</p>
<p>2.      Define the clinic system project&#8217;s scope and constraints</p>
<p>3.      Perform fact finding</p>
<p>4.      Determine the clinic system feasibility</p>
<p>5.      Estimate the time and cost needed to finish the clinic system project</p>
<p>6.      Present the preliminary investigation result to the clinic&#8217;s management</p>
<p>These are the six steps that I going to do in performing the preliminary investigation on the New Century Health Clinic&#8217;s system project. And then, I will explain each of these steps here.</p>
<p><strong>1. </strong><strong><span style="text-decoration: underline;">Understand the problems and opportunity</span></strong></p>
<p>In this step, we will try to understand the real problem that faced by the New Century Health Clinic that motivates them in requesting for development of a new clinic system. We have to investigate what problems that they want to solve by developing a new system and whether developing a new system is really the best way to solve the problem that is currently faced by the clinic. It may happen that actually the clinic doesn&#8217;t need a new computerized system. So, that&#8217;s why we need to find out the underlying problem behind the clinic&#8217;s request for a new system. Additionally, we also have to analyze what the effect that will happen to the clinic if they start using the computerized system in the future.</p>
<p><strong>2. </strong><strong><span style="text-decoration: underline;">Define the clinic system project&#8217;s scope and constraints</span></strong></p>
<p>We need to define this project&#8217;s scope and constraint in order to avoid unnecessary development cost and reduce the development time of the new system, so the clinic system can be done as fast as possible. In this case, we will consult and find information from Anita Davenport as the office manager of the New Century Health clinic. So, we will find out more information to define the project&#8217;s scope and constraints from her.</p>
<p>Clinic system project&#8217;s scope is the boundary of the project. We have to define the boundary or the scope of the clinic project to be as specific as possible. We can use graphical representation such as diagrams or any other graphic model to show the overview of relation between the clinic&#8217;s systems, staff, business process, and any other elements that will get affected by the implementation of the new clinic system. After we manage to get a clear scope for the project, then we can also define the scope of this preliminary investigation. Furthermore, knowing the project scope will help us to avoid any unnecessary expenses and save project development process time.</p>
<p>Additionally, after we already have a well defined project scope, then we also need to define the clinic system project&#8217;s constraints. The clinic system&#8217;s constraints or can be said as the requirement is a condition that is expected to be fulfilled or satisfied by the new clinic system. This may covers many things from cost, time, software, or hardware. It is important to clearly define the clinic system&#8217;s constraints as it also affects the project scope. Finally, we have to know that there are some characteristic of system constraint:</p>
<p>ü  <strong>Present and Future Constraints</strong></p>
<p>Present constraints are constraints that must be fulfilled by the clinic system soon. For example, the clinic system must be able to help the office staffs in managing the growing administration works as soon as possible.</p>
<p>Future constraints are constraints that need to be fulfilled in the future, so it is not as urgent as present constraint.</p>
<p>ü  <strong>Internal and External Constraints</strong></p>
<p>Internal constraints are requirements that come from the New Century Health Clinic itself.</p>
<p>External constraints are requirements from outside the New Century Health clinic, but have a strong effect on the clinic&#8217;s business/operation. For example, government law and regulation may force the clinic system to be able to satisfy a certain condition.</p>
<p>ü  <strong>Mandatory and Desirable Constraints</strong></p>
<p>Mandatory constraints are constraints or requirements that absolutely must be fulfilled when the clinic system becomes operational.</p>
<p>Desirable constraints are constraints that are actually optional and not very important to be satisfied by the clinic system.</p>
<p>After we look at the characteristic of constraints above, now we can see that actually we need to make priority in defining the project&#8217;s constraints. For example, we have to fulfill present constraint before future constraint, and then we have to consider fulfilling external constraint such as government law more than internal constraint that can come after that, furthermore we have to decide carefully which constraint is mandatory and which constraint is desirable constraint. So, by doing this we can define a high quality project constraint.</p>
<p>Finally, a well defined project scope and constraint is really useful to avoid any misunderstanding. So, the New Century Health Clinic manager will understand what exactly the scope of the new system project is and what will be done by the new system.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong>3. </strong><strong><span style="text-decoration: underline;">Perform fact finding</span></strong></p>
<p>Now, it is time for us to perform fact finding for the clinic&#8217;s new system project. There are some actions that we will do in performing the fact finding. The aim of doing the fact finding is to find more detailed information about the current clinic&#8217;s system and also to find out what the new system is expected to do in order to be better than the current system.</p>
<p>The fact finding activities that we will do are:</p>
<p>ü  <strong>Analyzing the clinic&#8217;s organization chart</strong></p>
<p>Before we start to perform the fact finding activity, firstly we need to understand the New Century Health Clinic&#8217;s organization structure. To get this information, we can study the clinic&#8217;s organization chart to find out who are doing what job at what position. Only after we understand the organization structure of the New Century Health clinic, then we can start the fact finding activities.</p>
<p>ü  <strong>Perform Interviews</strong></p>
<p>Interview is one of fact finding method that we are going to use. One of the advantage of using interview as one of our fact finding method is that we can get an in depth information from an interview session. But, because an interview is consuming a lot of time so we will just interview some key person in the New Century Health Clinic that have a good understanding and knowledge about the clinic&#8217;s current system as a whole. So, we will interview the manager who is Anita Davenport, and also Dr. Jones. The aim of this interview is to get information about the clinic&#8217;s current system, its problems and limitation, and what the new system is supposed to do later on.</p>
<p>ü  <strong>Review the documentation from the clinic&#8217;s current system</strong></p>
<p>This is another fact finding technique that we use in performing fact finding for this project. Because we may leave out some information uncovered during our interview sessions, so we can confirms all the facts that we have learned by reviewing the documentation from the clinic&#8217;s current system. These documentations can be a payroll and tax report, patient records, supplies report, insurance report, etc. By doing this, we can confirm every fact that we got with the real documentation from the clinic&#8217;s current system, so we reduce the risk of getting inaccurate fact.</p>
<p>ü  <strong>Observe the clinic&#8217;s operation</strong></p>
<p>The last fact finding method that we are going to use in this project is observing the clinic&#8217;s current system in operation under real environment. This method will give us the best information about how exactly the clinic&#8217;s current system do its function from getting input, doing process, and producing output. For example, in this New Century Health Clinic, we can get information about payroll, tax report, and profit distribution by observing the work done by Fred Brown. And also we can get information about how the clinic&#8217;s current system handles everyday appointment and communication with the patient by observing the works that done by Lisa Sung. These examples also apply for other functions that are done by the other staffs.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong>4. </strong><strong><span style="text-decoration: underline;">Determine the clinic system feasibility</span></strong></p>
<p>Now we already have some information from the previous three steps of preliminary investigation that is explained above, so now we can use our knowledge about the clinic&#8217;s problem and opportunity, the project&#8217;s scope and constraints, and also the facts that we collected from the fact finding activities. We can use this information to determine the feasibility of the New Century Health Clinic project. The feasibility will cover factors like operational, technical, and economic feasibility.</p>
<p><strong>5. </strong><strong><span style="text-decoration: underline;">Estimate the time and cost needed to finish the clinic system project</span></strong></p>
<p>In this step, we will create an estimation of the clinic project&#8217;s cost and timetable. We need to make these two things because the manager of the New Century Health Clinic will be looking for this estimated cost and time in making the decision whether to carry on with the project or reject and cancel the project. Because these two things are important, we need to consider some factors in deciding the estimated cost and time needed to finish the clinic&#8217;s new system project.</p>
<p>The factors that we need to consider are:</p>
<p>ü  What are we needed to develop the system. For example, what kind of information that we need to find out for the project, how are we going to collect those information, and is there any difficulties that will slow down our process in searching for those information.</p>
<p>ü  How many fact finding technique that we are going to use?</p>
<p>ü  How much is the cost needed to follow up all the information that we get from our fact finding activities?</p>
<p>These factors should be well considered so we can make a good estimation of the project&#8217;s cost and time.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong>6. </strong><strong><span style="text-decoration: underline;">Present the preliminary investigation result to the clinic&#8217;s management</span></strong></p>
<p>This is the final stage of our preliminary investigation for the clinic&#8217;s project. After we have done our fact finding, determining problem and opportunities, defining the project scope and constraints, determining the feasibility of the project, and estimating the cost and time needed to finish the clinic&#8217;s project, so now is the time for us to make a report of our preliminary investigation of the project. The preliminary investigation report will be presented to the clinic&#8217;s management, in this case the New Century Health Clinic&#8217;s office manager, Anita Davenport.</p>
<p>The structure of the preliminary investigation report will be:</p>
<p>ü  <strong>Introduction</strong></p>
<p>This is the first part of the report and it contain an overview of the proposed new clinic system for the New Century Health Clinic, description of the clinic system, and also names of the person who involved in this project.</p>
<p>ü  <strong>System Request Summary</strong></p>
<p>This part contains the summary of the new clinic system project. So, the reader will have a better understanding about the project.</p>
<p>ü  <strong>Findings</strong></p>
<p>This is the part where we explain our findings in the preliminary investigation. Here we explain what we have learned about the problem and opportunity, scope and constraints of the clinic system, project feasibility, and also the estimated time and cost needed to finish the development of the new clinic system.</p>
<p>ü  <strong>Recommendations</strong></p>
<p>Here we will write our recommendation about the project to the management staff of the New Century Health Clinic, Anita Davenport. In the end, she will be the one who make decision about the project but we will give our best recommendation as her consideration in deciding something about the project.</p>
<p>ü  <strong>Estimated time and cost</strong></p>
<p>In this part, we explain in detail about the estimated cost to develop the clinic system, to implements/installs it, and to do the maintenance. Beside the cost we also give the timetable of the clinic&#8217;s new system project.</p>
<p>ü  <strong>Expected benefit</strong></p>
<p>We will explain the benefits of the new clinic system in this part. The benefits will cover the tangible benefit which we can measure in dollars, and also the intangible benefit that we can&#8217;t measure in dollars.</p>
<p>ü  <strong>Appendix</strong></p>
<p>Appendix of the preliminary investigation report will have the entire supporting document such as result of interview and observation during fact finding techniques, etc.</p>
<p>So, this report will be presented to Anita Davenport as the office manager of the New Century Health Clinic. Based on this report, she will make decision whether to approve this system or not. After the preliminary investigation is approved, then we can continue to the system analysis phase.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;">V. Answer for Question (iii)</span></strong></p>
<p>In performing the preliminary investigation for the New Century Health Clinic project, I will need information about the company, in this case the clinic. Because the clinic will be the only source where I can get enough information and perform fact finding activities about the new clinic system project. So I will need to have a good understanding about the New Century Health clinic, its organization structure, and also the roles of each staff in the clinic. By possessing this information, I can do my preliminary investigation better because I will know who to ask for every kind of information that I need to collect during the preliminary investigation.</p>
<p>Firstly, let&#8217;s take a look at the New Century Health Clinic&#8217;s organization structure. Based on the given scenario about the New Century Health Clinic, I will draw the organization chart with focusing more on the office staffs.</p>
<div id="attachment_385" class="wp-caption alignnone" style="width: 637px"><img class="size-full wp-image-385" title="organization-chart" src="http://thomaset2000.com/wp-content/uploads/organization-chart.jpg" alt="New Century Health Organization Chart" width="627" height="387" /><p class="wp-caption-text">New Century Health Organization Chart</p></div>
<p>From the organization chart above, now we have information about the roles of each person mentioned in the scenario.</p>
<p><span style="text-decoration: underline;"> </span></p>
<p><strong><span style="text-decoration: underline;">The roles of staffs in the clinic:</span></strong><strong> </strong></p>
<p>ü  <span style="text-decoration: underline;">Clinic&#8217;s owner</span> : Dr. Jones and Dr. Garcia</p>
<p>ü  <span style="text-decoration: underline;">Office Manager</span> : Anita Davenport</p>
<p>ü  <span style="text-decoration: underline;">Payroll, Tax Report, and distribution of profit</span> : Fred Brown</p>
<p>ü  <span style="text-decoration: underline;">Maintain patient records</span> : Susan Grifford</p>
<p>ü  <span style="text-decoration: underline;">Reporting of Insurance and clinic&#8217;s accounting</span> : Tom Capaletti</p>
<p>ü  <span style="text-decoration: underline;">Appointment book and prepare daily appointment</span> : Lisa Sung</p>
<p>ü  <span style="text-decoration: underline;">Order and Organize office &amp; clinic supply</span> : Carla Herrera</p>
<p><span style="text-decoration: underline;"> </span></p>
<p>Now, we can start gathering information in our preliminary investigation using this information as our guide.</p>
<p>The information that we are going to collect is information about how the performance of the current clinic system is and what are the problems and limitations faced by each staff on every day operation. The fact finding technique that I will use in this preliminary investigation are interview, documentation review, and observation. I won&#8217;t use survey or questionnaire since the clinic is small with just a few staffs.</p>
<p>First, I will use interview as one of my fact finding technique. I choose this technique because we can get an in depth information from a person by having an interview session with him/her. Since an interview session will take a quite long time, so I will just interview some key person in the New Century Health Clinic. The persons that I&#8217;m going to interview are:</p>
<p>1.      Dr. Jones and Dr. Garcia</p>
<p>2.      Anita Davenport</p>
<p>3.      Susan Grifford</p>
<p>4.      Lisa Sung</p>
<p><strong>1. </strong><strong>Dr. Jones and Dr. Garcia</strong></p>
<p>The objective of interviewing Dr. Jones and Dr. Garcia is to get their perspective about what are the problems and limitations faced by the clinic by using its current system and also what is their expectation for the new clinic system.</p>
<p>Examples of question that we may ask to Dr. Jones and Dr. Garcia are:</p>
<p>ü  What is your opinion about the clinic&#8217;s current system?</p>
<p>ü  Do you ever experience that a clinic staff takes a very long time just to do a single clinic task? If yes, what task is that?</p>
<p>ü  What do you think about the amount of workload of each clinic staff? Are they still capable to handle that amount of workload?</p>
<p>ü  What do you expect from the new clinic system?</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong>2. </strong><strong>Anita Davenport</strong></p>
<p>With her position as the office manager, Anita Davenport has a good knowledge about the performance of the clinic&#8217;s current system. This is the information that we will try to get from her.</p>
<p>Examples of question that we may ask to Anita Davenport are:</p>
<p>ü  What is your opinion about the clinic&#8217;s current system?</p>
<p>ü  What are the processes are there in the current system?</p>
<p>ü  Who carry out each of these processes?</p>
<p>ü  How is the performance of the current system? Is the processing time satisfying?</p>
<p>ü  What is your expectation for the new clinic system?</p>
<p><strong>3. </strong><strong>Susan Grifford</strong></p>
<p>Susan Grifford is a staff that handles patient records. As stated in the scenario, the New Century Health Clinic is keep growing, so the number of patient records that she has to handle also keeps on growing. So, we have to get information from her about how she manage the patient records using the current system, what are her problems, and also what she expect the new system to help her in handling the patient records.</p>
<p>Examples of question that we may ask to Susan Grifford are:</p>
<p>ü  What is your opinion about the current clinic system in respect of your work?</p>
<p>ü  According to your experience, what are the problems of the current clinic system?</p>
<p>ü  How is your working procedure to manage patient record?</p>
<p>ü  Do you think that your work can be more effective if we use a better system?</p>
<p>ü  What do you expect the new clinic system to help you with handling the patient records?</p>
<p><strong> </strong></p>
<p><strong>4. </strong><strong>Lisa Sung</strong></p>
<p>Lisa Sung is a staff in the New Century Health Clinic that handles the appointment book of the clinic and prepares the daily appointment list for the clinic. In her work, she needs to call the clinic&#8217;s patient in order to give them a reminder. We can imagine that when the clinic keeps growing, she would be overwhelmed with the growing workload. So, that is why I want to interview her and ask about what are her problems while using the clinic&#8217;s current system and also what does she expect from the new system.</p>
<p>Examples of question that we may ask to Lisa Sung are:</p>
<p>ü  What is your opinion about the current clinic system in respect of your work?</p>
<p>ü  According to your experience, what are the problems of the current clinic system?</p>
<p>ü  How is your working procedure to manage the clinic&#8217;s appointments?</p>
<p>ü  Do you think that your work can be more effective if we use a better system?</p>
<p>ü  What do you expect the new clinic system to help you with handling the clinic&#8217;s appointment and giving reminder to patients?</p>
<p>So, those are the staffs from the clinic that I going to interview and also the objective of interviewing each of them.</p>
<p>The second fact finding technique that I will use for this project is reviewing the documentation from the clinic&#8217;s current system. These documentations are old payroll, tax report, insurance report, patient records, appointment books, office and clinic supply data, etc. By reviewing this documentation from the current clinic system, I can get a better idea about how the current system works and produce this documentation. For example, by reviewing the appointment book of the clinic, I can observe what is the information needed in the appointment book, etc. Additionally, I can confirm the result of the earlier interview by reviewing the documentations produced by the current clinic system.</p>
<p>The last fact finding technique that I will use for this project is observation. In this technique, I act as an observer and observe how the clinic&#8217;s staffs do their works under real situation and real working environment.  By doing this, I can get information about how actually the process and tasks are carried out using the current clinic system. I can get information by observing various clinic staff. For example, I can get information about how the payroll, tax report, and profit distribution are carried out by observing how Fred Brown works. I can get information about how patient records are handled by observing how Susan Grifford works. The information about how to make insurance report and accounting document can be observed from Tom Capaletti. Information about how to manage the clinic&#8217;s appointment can be observed from how Lisa Sung manage the clinic&#8217;s appointment. And finally, the information about how Carla Harrera manages the office and clinic supplies can be collected by observing how she does her tasks. Beside collecting information about how each staff works in real condition, additionally we can figure out what is the problems of the current system and also what are the inefficiency that are caused by the current system.</p>
<p>Finally, I will conclude that my preliminary investigation will begin by understanding the clinic&#8217;s organization structure and the role of each clinic staff. Then I will perform three kinds of fact finding technique that are interview some clinic staffs, review current clinic system documentation, and also observe how the clinic tasks are carried out by the staff under a real working environment. These fact finding activities&#8217; aim is to find out more about the clinic&#8217;s current system, the problems and limitations, and also to find out what is expected from the new clinic system.</p>
<p><strong>REFERENCES</strong></p>
<p>Bill Hauserman, 2005, <em>Managing People and Projects: What you need to know to get started</em>, Retrieved on June 28, 2008, from <a href="http://www.tappi.org/s_tappi/bin.asp?CID=33&amp;DID=505279&amp;DOC=FILE.PDF">http://www.tappi.org/s_tappi/bin.asp?CID=33&amp;DID=505279&amp;DOC=FILE.PDF</a></p>
<p>Bwoodsy.tripod.com, 2008, <em>CIS244 New Century Health Clinic Case Study</em>, Retrieved on June 28, 2008, from <a href="http://bwoodsy.tripod.com/CaseStudyMain.html">http://bwoodsy.tripod.com/CaseStudyMain.html</a></p>
<p>Martin Pinzger and Harald Gall, 2006, <em>Reverse Engineering</em>, Retrieved on June 28, 2008, from <a href="http://seal.ifi.uzh.ch/fileadmin/User_Filemount/Vorlesungs_Folien/Reengineering/WS06_07/ReverseEngineering_1s.pdf">http://seal.ifi.uzh.ch/fileadmin/User_Filemount/Vorlesungs_Folien/Reengineering/WS06_07/ReverseEngineering_1s.pdf</a></p>
<p>Varsys Solutions, 2008, <em>Requirement Analysis or Feasibility Study?</em>, Retrieved on June 28, 2008, from <a href="http://www.varsys.com/knowledgecenter_FeasibilityStudy.html">http://www.varsys.com/knowledgecenter_FeasibilityStudy.html</a></p>
<p>Do you have any comment on this? maybe you have something to ask me or want to discuss with me about this?Or maybe you are IDIC student and taking this module also?<br />
Feel free to use the comment box below (<a href="http://thomaset2000.com/?p=378">click here if you cannot see the comment box</a>).</p>
<p>Coming next, I will post another IADIC assignment, C2002 Software Engineering <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Stay tuned! you can subscribe to my blog&#8217;s feed <a href="http://feeds.feedburner.com/thomaset2000/pYaZ">by clicking here</a> so you won&#8217;t miss when the new post is published <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://thomaset2000.com/2009/02/c2001-system-analysis-design-term-2-2008-assignment-part-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>C2001 System Analysis &amp; Design Term 2 2008 assignment, part 1</title>
		<link>http://thomaset2000.com/2009/02/c2001-system-analysis-design-term-2-2008-assignment-part-1/</link>
		<comments>http://thomaset2000.com/2009/02/c2001-system-analysis-design-term-2-2008-assignment-part-1/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 11:45:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[IADIC]]></category>
		<category><![CDATA[Informatics]]></category>
		<category><![CDATA[C2001]]></category>
		<category><![CDATA[System Analysis & Design]]></category>

		<guid isPermaLink="false">http://thomaset2000.com/?p=370</guid>
		<description><![CDATA[Hi! This is the first module assignment that I posted in my blog as part of IADIC (International Advanced Diploma in Computing) course&#8217;s assignments posting series.
In this C2001 System Analysis &#38; Design module, we study about the first 3 phases in System Development Life Cycle (SDLC) that includes:

Initial Study phase
System Analysis and Design phase
Program Design [...]]]></description>
			<content:encoded><![CDATA[<p>Hi! This is the first module assignment that I posted in my blog as part of IADIC (International Advanced Diploma in Computing) course&#8217;s assignments posting series.</p>
<p>In this C2001 System Analysis &amp; Design module, we study about the first 3 phases in System Development Life Cycle (SDLC) that includes:</p>
<ol>
<li>Initial Study phase</li>
<li>System Analysis and Design phase</li>
<li>Program Design phase</li>
</ol>
<p>Now, I will post the assignment that I get when I take this module during Term 2 2008. I will post the assignment&#8217;s question in this post and then I will post the answer in the next post (part 2).<br />
Here are the questions:<br />
<span id="more-370"></span>Systems Analysis and Design<br />
Term 2 2008</p>
<p>Five years ago, cardiologists Timothy Jones and Dolores Garcia decided to combine their individual practices in Fullerton, California, to form the New Century Health Clinic. They wanted to concentrate on preventive medicine by helping patients maintain health and fitness and by providing traditional medical care.</p>
<p>Dr. Jones recently asked you to work with him as an IT consultant. He wants you to help New Century develop an information system that will support the clinic&#8217;s operations and future growth. During an initial meeting, he provided you with some background information and asked for your suggestions about how to get started.<br />
At your desk, you begin to review New Century’s situation. The clinic is located near a new shopping mall in a busy section of the city. New Century&#8217;s staff includes four doctors, three registered nurses, four physical therapists, and six office staff workers.</p>
<p>The clinic currently has a patient base of 3,500 patients from 275 different employers, many of which provide insurance coverage for employee wellness and health maintenance. Currently, New Century accepts 34 different insurance policies.<br />
Anita Davenport, who has been with New Century since its inception, is the office manager. She supervises the staff, including Fred Brown, Susan Gifford, Tom Capaletti, Lisa Sung, and Carla Herrera.</p>
<p>Fred Brown handles office payroll, tax reporting, and profit distribution among the associates. Susan Gifford is responsible for the maintenance of patient records. Tom Capaletti handles most of the paperwork concerning insurance reporting and accounting. Lisa Sung has the primary responsibility for the appointment book, and her duties include making reminder calls to patients and preparing daily appointment lists. Carla Herrera primarily is concerned with ordering and organizing office and clinic supplies.</p>
<p>Each of the six office staff people has one or more primary responsibilities; however, all members of the staff help out whenever necessary with patient records, insurance processing, and appointment processing. In addition to their regular responsibilities, all six office workers are involved in the preparation of patient statements at the end of each month.</p>
<p>New Century Health Clinic&#8217;s office manager, Anita Davenport, recently asked permission to hire an additional office clerk because she feels the current staff can no longer handle the growing workload. The associates discussed Anita&#8217;s request during a recent meeting. They were not surprised that the office staff was feeling overwhelmed by the constantly growing workload.</p>
<p>Because the clinic was busier and more profitable than ever, they all agreed that New Century could afford to hire another office worker. Dr. Jones then came up with another idea. He suggested that they investigate the possibility of computerizing New Century’s office systems. Dr. Jones said that a computerized system could keep track of patients, appointments, charges, and insurance claim processing and reduce paperwork. All the associates were enthusiastic about the possibilities and voted to follow up on the suggestion. Dr. Jones agreed to direct the project.</p>
<p>Because no member of the staff had computer experience, Dr. Jones decided to hire a consultant to study the current office systems and recommend a course of action. Several friends recommended you as a person who has considerable experience with computerized business</p>
<p>(i)    Based on the given scenario above, what kinds of questions would you ask to assess the initial feasibility of this project information, does the project seem feasible?</p>
<p>(ii)    Describe what will be the plan of action if New Century Health Clinic management decided to contract your services to perform a preliminary investigation?</p>
<p>(iii)    What types of information is needed when you begin the preliminary investigation? From whom will you obtain it? What techniques will you use in your fact-finding?</p>
<p>That&#8217;s all the assignment&#8217;s question.</p>
<p>To be continued in <a href="http://thomaset2000.com/2009/02/c2001-system-analysis-design-term-2-2008-assignment-part-2/">the next post….</a></p>
<p>Do you have any comment on this? maybe you have something to ask me or want to discuss with me about this?Or maybe you are IDIC student and taking this module also?<br />
Feel free to use the comment box below (<a href="http://thomaset2000.com/?p=370">click here if you cannot see the comment box</a>).</p>
<p>Stay tuned! you can subscribe to my blog&#8217;s feed <a href="http://feeds.feedburner.com/thomaset2000/pYaZ">by clicking here</a> so you won&#8217;t miss when the new post is published <img src='http://thomaset2000.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://thomaset2000.com/2009/02/c2001-system-analysis-design-term-2-2008-assignment-part-1/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Easy Decimal to Binary conversion tips</title>
		<link>http://thomaset2000.com/2009/02/easy-decimal-to-binary-conversion-tips/</link>
		<comments>http://thomaset2000.com/2009/02/easy-decimal-to-binary-conversion-tips/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 12:37:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[IDIC]]></category>
		<category><![CDATA[Informatics]]></category>
		<category><![CDATA[Binary]]></category>
		<category><![CDATA[binary conversion]]></category>
		<category><![CDATA[binary to decimal conversion]]></category>
		<category><![CDATA[C1003]]></category>
		<category><![CDATA[decimal to binary conversion]]></category>
		<category><![CDATA[Mathematics for Computing]]></category>

		<guid isPermaLink="false">http://thomaset2000.com/?p=262</guid>
		<description><![CDATA[Hi! I want to share a method to easily convert a decimal number into binary number and vice versa. I learned this method of converting decimal to binary while I was studying for my C1003 Mathematics for Computing.
The Basic Concept
The basic concept of this method is looking at the fact that we just need to [...]]]></description>
			<content:encoded><![CDATA[<p>Hi! I want to share a method to easily convert a decimal number into binary number and vice versa. I learned this method of converting decimal to binary while I was studying for my <a href="http://thomaset2000.com/?p=86">C1003 Mathematics for Computing</a>.</p>
<p><strong>The Basic Concept</strong></p>
<p>The basic concept of this method is looking at the fact that we just need to add one zero each time we multiply the decimal equivalent of a binary number by 2 (two).</p>
<p>Let me give an example:</p>
<p><span id="more-262"></span></p>
<p>The binary equivalent for decimal number 2 is 10 (one zero), then if we multiply the 2 with 2 we will get 4 (2*2 = 4), the binary equivalent of 4 is 100 (one zero zero).</p>
<p>Let&#8217;s take a look at the table below</p>
<table style="height: 104px;" border="1" cellspacing="0" cellpadding="0" width="150">
<tbody>
<tr>
<td>
<h2><strong>Decimal</strong></h2>
</td>
<td></td>
<td>
<h2><strong>Binary</strong></h2>
</td>
</tr>
<tr>
<td>1</td>
<td>=</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>=</td>
<td>10</td>
</tr>
<tr>
<td>4</td>
<td>=</td>
<td>100</td>
</tr>
<tr>
<td>8</td>
<td>=</td>
<td>1000</td>
</tr>
<tr>
<td>16</td>
<td>=</td>
<td>10000</td>
</tr>
<tr>
<td>32</td>
<td>=</td>
<td>100000</td>
</tr>
</tbody>
</table>
<p>The table above shows the equivalence of six decimal number with the binary number. You can see that if we multiply the decimal number by two then we will get the same binary number with one extra zero e.g. two is equal to one zero and four is equal to one zero zero. From this simple concept, we can convert decimal to binary and binary to decimal easily.</p>
<p><strong>Decimal to Binary Conversion</strong></p>
<p>First, let us try to apply the basic concept above to convert decimal number into binary number. Let see at the following example:</p>
<p><strong>Convert decimal number 20 (twenty) into binary</strong></p>
<p>To convert twenty into binary let us look at the table that we make earlier</p>
<table style="height: 104px;" border="1" cellspacing="0" cellpadding="0" width="150">
<tbody>
<tr>
<td>
<h2><strong>Decimal</strong></h2>
</td>
<td></td>
<td>
<h2><strong>Binary</strong></h2>
</td>
</tr>
<tr>
<td>1</td>
<td>=</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>=</td>
<td>10</td>
</tr>
<tr>
<td>4</td>
<td>=</td>
<td>100</td>
</tr>
<tr>
<td>8</td>
<td>=</td>
<td>1000</td>
</tr>
<tr>
<td>16</td>
<td>=</td>
<td>10000</td>
</tr>
<tr>
<td>32</td>
<td>=</td>
<td>100000</td>
</tr>
</tbody>
</table>
<p>Then we try to make 20 (twenty) from the decimal numbers that we found in our table above. Since we have 1, 2, 4, 8, 16, and 32 the best way to make 20 is to add 4 and 16 since 4 + 16 = 20.<br />
So we take 4 and 16 from the table, 4 is equal to 100 (one zero zero) and 16 is equal to 10000 (one zero zero zero zero). The final step is to add these two binary number and make it looks like this :<br />
20 = 4 + 16 = 100 + 10000 = 10100 (one zero one zero zero)<br />
So, in the end we get that decimal number 20 = 10100 (one zero one zero zero) in binary number.</p>
<p><strong>Binary to Decimal Conversion</strong></p>
<p>Now, we are going to look on how we apply our simple concept to convert a binary number into decimal number. Let us consider the following example :</p>
<p><strong>Convert binary number 10101 (one zero one zero one) into decimal number</strong></p>
<p>To convert this binary number, we still use our table</p>
<table style="height: 104px;" border="1" cellspacing="0" cellpadding="0" width="150">
<tbody>
<tr>
<td>
<h2><strong>Decimal</strong></h2>
</td>
<td></td>
<td>
<h2><strong>Binary</strong></h2>
</td>
</tr>
<tr>
<td>1</td>
<td>=</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>=</td>
<td>10</td>
</tr>
<tr>
<td>4</td>
<td>=</td>
<td>100</td>
</tr>
<tr>
<td>8</td>
<td>=</td>
<td>1000</td>
</tr>
<tr>
<td>16</td>
<td>=</td>
<td>10000</td>
</tr>
<tr>
<td>32</td>
<td>=</td>
<td>100000</td>
</tr>
</tbody>
</table>
<p>From this table, we will break the binary 10101 like this:<br />
10101 = 10000 + 100 + 1</p>
<p>So we get that 10101 consist of 10000, 100, and 1. Then lets look at the table, we will get this:</p>
<p>10101 = 10000 + 100 + 1 = 16 + 4 + 1 = 21 (twenty one, a decimal number)</p>
<p>Yes thats all! simple isn&#8217;t it??</p>
<p>Do you have any comment on this? maybe you have something to ask me or want to discuss with me about this?<br />
Feel free to use the comment box below (<a href="http://thomaset2000.com/?p=262">click here if you cannot see the comment box</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://thomaset2000.com/2009/02/easy-decimal-to-binary-conversion-tips/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
