Wednesday, December 14, 2011

Systems Analyst as a Project Manager

A Systems Analyst as a Project Manager

Primarily, we are already aware of the on what is a system analyst, the skills and characteristics that must be acquired in order to become a system analyst, as well as the role of a system analyst in the success or fall down of a system of a company. But then, we are not that familiar of the work of the systems analyst as project manager. To further understand the differences and the similarities (if there is any) of a systems analyst and the project manager, let me first define each.

Systems Analysts
Systems analysts figure out how to use computers to get things done. They tell businesses and other organizations which computers and software to buy, and they decide how to get those tools to work together. Computer systems analysts start their work by asking people what they need their computers to do. Then, they plan a computer system that can do those tasks well. A system can include many computers working together and different types of software and other tools. Computer systems analysts work in offices or computer labs. Some work from home. Working on a computer for a long time can give these workers eye, back, or wrist problems. Sometimes, these workers work long hours to get a project done on time. Analysts usually work as part of a team.
Many computer systems analysts have a college degree in computer science, information science, or management information systems. Some analysts get college degrees in other subjects. Then, they take computer classes and get computer experience.
Analysts need to understand computers, math, and planning. They need to know math so that they can solve problems and figure out how much computer power different systems would use.
Logical thinking skills are also important. Analysts need good speaking and writing skills, too, so that they can explain their systems and give good instructions.

Project Managers
* The Project Manager is the person responsible for managing the project.
* The Project Manager is the person responsible for accomplishing the project objectives within the constraints of the project. He is responsible for the outcome (success or failure) of the project.
* The Project Manager is involved with the planning, controlling and monitoring, and also managing and directing the assigned project resources to best meet project objectives.
* The Project Manager controls and monitors “triple constraints”—project scope, time and cost(quality also)—in managing competing project requirements.
* The Project Manager examines the organizational culture and determines whether project management is recognized as a valid role with accountability and authority for managing the project.
* The Project Manager collects metrics data (such as baseline, actual values for costs, schedule, work in progress, and work completed) & reports on project progress and other project specific information to stakeholders.
* The Project Manager is responsible for identifying, monitoring, and responding to risk.
* The Project Manager is responsible to the project stakeholders for delivering a project’s objectives within scope, schedule, cost, and quality.
* The reporting structure of a Project Manager change depends on organizational structure. He may reports to a Functional Manager or to a Program Manager.

A successful Project Manager must simultaneously manage the four basic elements of a project: resources, time, money, and most importantly, scope. All these elements are interrelated. Each must be managed effectively. All must be managed together if the project, and the project manager, is to be a success.
  • Resources
    it talks about the people involved, equipments and materials that will be used
  • Time
    it defines the task durations, dependencies, and critical paths
  • Money
    it describes the costs, contingencies, and profit
  • Scope
    it identify the project size, goals, requirements
Most literature on project management speaks of the need to manage and balance three elements: people, time, and money. However, the fourth element is the most important and it is the first and last task for a successful project manager. First and foremost you have to manage the project scope.
The project scope is the definition of what the project is supposed to accomplish and the budget (of time and money) that has been created to achieve these objectives. It is absolutely imperative that any change to the scope of the project have a matching change in budget, either time or resources.

Skills of a Project Manager
According to Verzuh (1999, p.30) "The project manager is the catalyst-the initiator who lifts the entire project and puts it into motion." He also stated "energy and attitude gives the project manager power."
According to Vitella (2001), a project manager must have the following skills to succeed:
  • Leadership - inspiring others to create a vision and strive to achieve the goals
  • Good communication - ability to provide valuable information related to the project status in a timely and effective manner
  • Conflict resolution skills - assisting in resolution of any project conflicts so that the project team members all feel part of the process and want to remain involved in the project
  • Negotiation skills - maintaining relationships with people who are involved in the project
  • Team building - assists the team members in understanding their roles and responsibilities on the project and work collaboratively
  • Listening skills - using good listening skills to truly hear and try to understand what others on the project are trying to say
  • Relationship management - capable of working with all levels within the organization by building relationships with them.
Melymuka (2000) assists in identifying other skills project managers need to be effective. These include:
  • Ability to influence without having authority
  • To hope for the best but prepare for the worst
  • To manage, motivate and organize people
  • Possess core competencies in project related fields and business management
  • Persuasion techniques - influencing without direct authority and obtaining win-win situations
  • Generosity - share the glory, share knowledge, and don't blame others
  • Vision - understanding what needs to be done and how to get it done
  • Flexibility - capable of changing to fit the situation for the good of the project
  • Humor - seeing humor in events, laughing and going on
  • No Sweat - appearing like a duck on the surface but paddling like crazy under the water

As we read the above mentioned definitions and skills of project managers, they almost have the same roles. As of Sir Donald Alforque, the systems analyst that we interviewed, a project manager is the one who manage a group of systems analyst. He is the one who organize the group, making sure that each has something to contribute. While a system analyst will have to know what a project manager is doing or the responsibilities of a project manager because in case the project manager is on leave or not around, the system analyst has the right to act as the project manager for the meantime.







Reference:
http://leadershipchamps.wordpress.com/2008/02/29/roles-and-responsibilities-of-a-project-manager
http://www.maxwideman.com/guests/servant/skills.htm




Tuesday, December 13, 2011

Donald Alforque: The System Analyst

When I first saw the uploaded second assignment that was about finding and interviewing a system analyst which include asking the systems analyst about the different skills and characteristics must a systems analyst acquire and develop in order to be more effective in any designing and modeling process, I was in hesitation if I could really find one, and if I do, could I really ask the questions that could satisfy the given requirement in the assignment.

Basically, I am working with my colleagues, Alvin Cabeliño and Nelly Ancajas, in finding a system analyst and making an interview after. Luckily, after few days of searching, we finally found a systems analyst.



On the previous assignment, I discussed about the system, analyst, systems analyst and system analysis. Also, I included the skills and characteristics the systems analyst must acquire in order to be an effective one in terms of designing and modeling a system or software, depending on what the client wants.
We all know that a system analyst plays a very important role in the success of a company. Essentially, a systems analyst is the person responsible for the development of an information system. Systems analysts design and modify systems by turning user requirements into a set of functional specifications, which are the blueprint of the system. They design the database unless done by a data administrator. Analysts develop the manual and machine procedures and the specifications for each data entry, update, and query and report program in the system.
Systems analysts are the architects, as well as the project leaders, of an information system. It is their job to develop solutions to users' problems, determine the technical and operational feasibility of their solutions, as well as estimate the costs to develop and implement them.

They develop prototypes of the system along with the users, so that the final specifications are examples of screens and reports that have been carefully reviewed. Experienced analysts leave no doubt in users' minds as to what is being developed, and they insist that all responsible users review and sign off on every detail.

Background Of The Systems Analyst

The systems analyst we found was named Donald Alforque. He was born on June 11 and came from Cotabato City. But currently, he is in Davao City to work. 

He took up his high school in Notre Dame Village National High School and graduated in the year 2005. He spent his college years and studied Systems Analysis and Design in STI (Systems Technology Institute) College in Cotabato and graduated as a Com Laude in the year 2009.

As of now, he is a Global Ambassador at Alliance in Motion Global, Incorporated. 

Global Ambassador at Alliance in Motion Global, Incorporated: Company Overview

ALLIANCE IN MOTION GLOBAL, INC. is a marketing company established in March 2006. It is located at Units 301, 319 and 320 AIC Burgundy Empire Tower, cor. Garnet & Sapphire Sts., Ortigas Center, Pasig City, Philippines. In almost 4 years of operation, Alliance In Motion Global, Inc. has established its presence strategically in different regions in the country. At present, it has 87 Business Centers and 94 Satellite Offices nationwide.

Alliance In Motion Global Inc. is conceptualized to provide unmatched quality distribution of exceptional products and services through a combination of advanced technology, distinctive marketing strategies, excellent product lines and exemplary leadership that secures the success of the company. A pro-distributor concept that sets trend on distributors' extravagant packages such as transferable scholarships, free or discounted medical services, insurance package and world class quality products.


Alliance in Motion Global Incorporated has a branch here in Davao City which is Located at Pryce Tower Building, Bajada, Davao City.










This was the questionnaire we prepared as a guide as we conduct our interview on the systems analyst. But primarily, we did not just depend on the questions on our prepared questionnaire and we did not allow the systems analyst that we interviewed just to write the answers we needed to satisfy our needed information. We decided to make our interview verbally to build rapport and I believe it would make the systems analyst more comfortable and he will enjoy talking and answering our question s because he would see that we were interested on everything that he said regarding the questions that we asked.




Questionnaire: As a Tool in Gathering Information

A questionnaire is a research instrument consisting of a series of questions and other prompts for the purpose of gathering information from respondents. Although they are often designed for statistical analysis of the responses, this is not always the case. 

Questionnaires have advantages over some other types of surveys in that they are cheap, do not require as much effort from the questioner as verbal or telephone surveys, and often have standardized answers that make it simple to compile data. However, such standardized answers may frustrate users. Questionnaires are also sharply limited by the fact that respondents must be able to read the questions and respond to them. Thus, for some demographic groups conducting a survey by questionnaire may not be practical.

As a type of survey, questionnaires also have many of the same problems relating to question construction and wording that exist in other types of opinion polls.

In general, questions should flow logically from one to the next. To achieve the best response rates, questions should flow from the least sensitive to the most sensitive, from the factual and behavioral to the attitudinal, and from the more general to the more specific.
The first question we asked for Sir Donald Alforque was about his perception or what he believes a systems analyst does. He has many answers but he said to just focus on the most important. For his own opinion, and I believe also that a systems analyst must do, a systems analyst is the one who design and analyze computer systems to match to the business logic of the client. Fundamentally, a systems analyst will always depends on what the client wants and needs. He must know first the scope and limitations of the business and to do that one, he must gather the necessary information and conduct appropriate surveys before he propose a system appropriate to the client's business. In addition, a systems analyst is the one who configure the systems, determine individual job requirements to secure and deploy an effective information system.

The next thing we asked Sir Donald was about the technical and non technical skills he has as a systems analyst. The first thing he said was for the technical side and the most important thing a systems analyst must acquire was that a systems analyst must have a broad knowledge about programming. A systems analyst must know about how to program and debug a program in order to make an effective information system.

Computer Programming: A Very Important Factor in Being an Effective Systems Analyst
Computer programming is about creating a sequence of instructions to enable the computer to do somethingComputer Program installed in our computers allow us to do what we want such as typing in a MS Word, if a Microsoft Word is installed. In writing a computer program, we need to know a computer programming language. A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely. A programming language's surface form is known as its syntax. Most programming languages are purely textual; they use sequences of text including words, numbers, and punctuation, much like written natural languages. The syntax of a language describes the possible combination of symbols that form a syntactically correct program. On the other hand, the term semantics refers to the meaning of languages, as opposed to their form (syntax).
On the other hand, for the non technical side, a systems analyst will make just depend on the blunt truth, but basically on the mere facts basis. A systems analyst will not jump into conclusion unless he has evidences and make some experiments and surveys to prove it for himself


For Sir Donald, a systems analyst must have a connection with the client as well as with other member of a group (if there is any) in order to perform specific and required task for making an effective information system as well as to consolidate different ideas for better output. Also, a systems analyst must always consider the business logic and computer logic of the company. A systems analyst will always make the business logic of the company a basis in making a system. If in case the system made by the systems analyst is not compatible with the business logic of the company, it will lead to miserable functionality of the business. Company's clients or costumers may shift to other company because of dissatisfaction.


Good Qualities of a Systems Analyst (Sir Donald Alforque)



  • A systems analyst must be professional in addressing the problem of the organization
  • A systems analyst must not be contented on the things that he only and already know. He must still willing to learn and discover new things in order to cope up with new ideas. For that, he could think of new ideas that could be applied in making, designing, and modeling an information system.
  • A systems analyst should always make way on listening opinion of others.
  • A systems analyst should be flexible in any changes that the client wants.
The Skills and Characteristics A Systems Analyst must Develop in Order to be More Effective in Designing and Modeling a System
  • A systems Analyst must acquire good leadership skills.
  • A systems Analyst must always upgrade his knowledge.
  • A systems Analyst must always base from "results and facts" in terms of operation.
  • A systems Analyst must have professionalism.
  • A systems Analyst must be a good team builder.


Also, Sir Donald told us that a we can make more profit if we engage on:
  • The Web
A web or website is a collection of related web pages containing images, videos or other digital assets. A website is hosted on at least one web server, accessible via a network such as the Internet or a private local area network through an Internet address known as a Uniform Resource Locator. All publicly accessible websites collectively constitute the World Wide Web.
A web page is a document, typically written in plain text interspersed with formatting instructions of Hypertext Markup Language (HTML, XHTML). A web page may incorporate elements from other websites with suitable markup anchors.

Basically, as we are connected in a network, we can access the web. The web offers different opportunities that can be done without even seeing the client. That is somehow called as out sourcing. You will be paid by the time you finish what your client told you to do.


  • Applets
An applet is a program designed to be executed from within another application. Unlike an application, applets cannot be executed directly from the operating system. With the growing popularity of OLE (object linking and embedding), applets are becoming more prevalent. A well-designed applet can be invoked from many different applications.
Web browsers, which are often equipped with Java virtual machines, can interpret applets from Web servers. Because applets are small in files size, cross-platform compatible, and highly secure (can't be used to access users' hard drives), they are ideal for small Internet applications accessible from a browser.

  • Database

A collection of information organized in such a way that a computer program can quickly select desired pieces of data. You can think of a database as an electronic filing system.
Traditional databases are organized by fields, records, and files. A field is a single piece of information; a record is one complete set of fields; and a file is a collection of records. For example, a telephone book is analogous to a file. It contains a list of records, each of which consists of three fields: name, address, and telephone number. 

An alternative concept in database design is known as Hypertext. In a Hypertext database, any object, whether it be a piece of text, a picture, or a film, can be linked to any other object. Hypertext databases are particularly useful for organizing large amounts of disparate information, but they are not designed for numerical analysis.
To access information from a database, you need a database management system (DBMS). This is a collection of programs that enables you to enter, organize, and select data in a database.

As a summary, every thing that I posted on the first assignment about a systems analyst is necessary to be an effective one, based on the interview we conducted. There are many things to consider but still, every thing will be done as long as you have the passion on becoming an effective and in demand systems analyst. As what Sir Donald said, in making a software or a system, we must consider and convert "something we want to something we need..."











Reference:
http://www.pcmag.com/encyclopedia_term/0,2542,t=systems+analyst&i=52445,00.asp
http://en.wikipedia.org/wiki/Questionnaire












The Following pictures was taken as we interviewed Sir Donald Alforque. In the picture: Alvin Cabeliño, Nelly Ancajas, and yours truly.








Thursday, December 8, 2011

The World of the Information Systems Analyst


As part of our first assignment, we were told to determine and discuss certain characteristics we have to be a good system analyst. It sounds like "hard" since I could not even tell as of now that I could be a good system analyst. But, we could never tell. There's no wrong to visualize myself working as an effective and having my own company.

"The World of the Information Systems Analyst" was the topic discussed in the class by the reporters. Basically, the title itself makes me excited as well as curious on what is behind that topic: excited because, at last, it will give a clearly explanation about the "system analyst" and curious because I wonder why system analyst is said to "make or break" a company. Systems are created to solve problems. One can think of the systems approach as an organized way of dealing with a problem. In this dynamic world, the subject System Analysis and Design (SAD) mainly deals with the software development activities.

The report about this topic enlightened my perception on what is a System Analyst, what does a System Analyst do, how to become an effective System Analyst (what are the skills and the attitude an SA must acquire) and how important a System Analyst is in having a successful and competitive business. Moreover, it's not easy to become a System Analyst. It is not enough that you only have the confidence, perseverance and bright ideas. Skills, broad knowledge in the system analysis and good ethics towards work are important to become a competent System Analyst.

Primarily, a systems analyst plays a very important role in a team who handles the information system of a certain company. Let me first define the two important components of a system analyst: the system and the analyst. As a systems analyst, one will have most of his or her time dealing with the system: process and procedures, maintenance and development.

For most of us, as we heard the word “system”, we directly think of machines, computers, and gadgets. But for the most part, a system comprises of meticulous technique, processes, as well as practices which are created or formulated to execute a certain activity, perform a task or to do the difficult one (for my opinion), to solve a problem. In addition, a system is a prearranged structure that consists of interrelated and interdependent elements (components, entities, factors, members, parts etc.). Essentially, these components are continually, directly and indirectly, influencing one another in order to maintain their activity as well as the existence of the system to be able to accomplish the goal of the system.

On the other hand, the person who is expert and does the scrutinizing of data or information is what we call the analyst. He is the one who do the analysis, which is the examination or evaluation of related facts and information to come up with best idea or action. Since I have been talking about systems analyst, I will be dealing also with systems analysis. A systems analysis is defined as a systematic and logical study of data processing which is necessary for a business or organization, in conjunction with reference for hardware and software installation. As a computer science student, I am already aware that systems analysis is primarily a course of action of comprehending every important details of what a system must do and accomplish. Also, it is concern on understanding the goals as well as the different strategies of the organization and the importance of identifying the information requirements that will support those goals and strategies of the organization. But the most important thing about the systems analysis, as what our facilitator wants to impose to us, is that it does not really about hard coding or programming: given such problem then just code it down using a certain computer programming language such as Java. Systems analysis is about appraising the code and creates recommendations afterwards. Fundamentally, the main objective of having systems analysis is to look for answers for each business process: What is being done, How is it being done, Who is doing it, When is he doing it, Why is it being done and How can it be improved? When someone does a systems analysis, he must have a great logical skills since it is more on thinking process and it is also encompasses the artistic skills of a systems analyst. Primarily, systems analysis is done to give way for the enhancement of the existing system or creation of a new one, which is more effective and more efficient that will satisfy the current needs of the client as well as the users and will have the capability to make the company grow despite of the limitations.
Base on the definition stated earlier, we can now define a system analyst as an individual who is responsible for analyzing, modifying and designing numerous systems to make certain congruity and user efficiency. As systems analyst, flexibility is necessary since he or she may work autonomously, but usually, he or she is part of a group or unit of people with interrelated work. Most organization, especially big ones which are competing globally, have their own systems analyst which is given a task of identifying the possible weak points, probable imperfection as well as to provide solution to those problems. Systems analysts are known to be problem analyzers and problem solvers. Their primary task is to define the problem and perform certain actions to formulate possible solutions while recognizing risks, threats, issues and feedback. They are not the one who is responsible for hard coding or programming, although it is helpful that they have backgrounds in programming, because they are focus on scrutinizing the current system and propose probable solution.

I have several questions in my mind when it comes to system analyst and fortunately, it was reported and explained well by the reporters with the help of our facilitator. One of those question is what does a system analyst do. Basically, Systems analysts first analyze how an organization can use computers to develop of process things. Since we are now living in a world where most of our activities are involved with computers, an SA must think of a possible system that would make up a company competitive with their competitors but still trying to meet what the client wants. Second, they analyze the current situation and observe. Obviously, before a systems analyst makes a system or software, he must consider its role on the current situation and if it can benefit for most number of people. After this, they would be able to identify the needs of the company. Once the needs are known, a systems analyst proposes to whoever is in charge what computer systems are needed, can be improved or what software is needed.

The Key Role of a System Analyst

A Systems Analyst is very essential in an organization since he is considered as a business professional who makes use of analysis and design schemes in solving or fixing business problem with the help of information technology. As we all know, information technology is the study of how computer information systems and applications are being developed, installed and implemented. A systems analyst usually deals with the following problems:
• Availability of the service and product that the customers want to order anytime of the day
• Lesser inventory holding cost for the suppliers
• Organization wants to know the satisfactory rate and feedback of the customers
• More efficient and effective financial analyzation in the management part

They would gather data first by asking people around what they would want their computers to be able to do the step by step process of solving the problem. Based on the gathered data, they would plan a computer system that would be able to do those tasks effectively. Data gathering is one the most important procedure a system analyst must undergo since it will lead on the kind of software or system he will do that is appealing to the consumers. A computer system is any group of computers, computer tools or software. The main job of systems analysts is actually to get computers in a company’s system to work together. They would connect all computers together through a network and would analyze how they would be able to transfer data from one computer to another. This process would require a lot of research, a lot of data of which systems analysts are able to get from the Internet. Another important duty of systems analysts is to make sure that the computer systems are safe. In a lot of companies, a lot of sensitive information would be stored in computer systems. These could be lost if the system would have unwanted foreign matter such as viruses or spy ware. Systems analysts, with their knowledge, would figure out how to prevent these from getting in a company’s computer system.

A good system analyst must be skilled analytically, technically, in management and in communication. Analytical Skill is the ability to see things as systems, identify, analyze, and solve problems in an optimal way for a specific organization. It means that a system analyst must be logical minded and a problem solver. Technical Skill, on the other hand, is the ability to understand how computers, data networks, databases, operating systems, etc. work together, as well as their potentials and limitations. A system analyst must not only familiar with the software installed on a computer, nut also with the hardware which composed the computer itself. The system analyst must know how the software or system he is making affect and work inside a computer, computer networks, operating system, etc. Management Skills include organization’s recourse management, project management (people and money), risk management, and change management. It means that a system analyst must collaborate to his team to be able to produce an effective output. Also, the system analyst must always have connection to the client every time there is a progress in the system he is making. Lastly, Communication Skills which includes effective interpersonal communication (written, verbal, visual, electronic, face-to-face conversations, presentations in front of groups), listening, group facilitation skills.

As I searched more about the system analyst, I found a document in PDF format where it discussed further the four skills a system analyst must have, as mentioned earlier (See the references below).

In terms of Technical skills, a system analyst should be familiar with:

1. Computers (PCs, mini, mainframes, etc.)
2. Computer networks (LAN, WAN, VPNs, administration, security, etc.)
3. Operating systems (UNIX, Mac/OS, Windows)
4. Data Exchange Protocols (ftp, http, etc.)
5. Programming languages (C++, Java, XML, etc.)
6. Software applications (Office, project managements, etc.)
7. Information systems (databases, MISs, decision support systems)
8. System development tools and environments (report generators, office automation tools, etc.)

In terms of managerial skills, a system must have the following abilities:


1. Resource Management - effectively managing the project’s resources, including time, equipment,
hardware, software, people, money, etc.,
2. Project Management - determining the tasks and resources needed for a project and how they are related to each other,
3. Risk Management - identifying and minimizing risks.
4. Change Management - managing the system’s (organization's) transition from one state to another

In terms of communication skills, the system analyst must be:

1. Clear and effective interpersonal communication: written, visual, verbal
2. Listening – getting ideas and feedback as well as accepting opinions from other project team members
3. Group facilitation or formal technical reviews (FTR) skills:
• Planning an agenda
• Leading discussions
• Allowing all members to express their opinions and ideas
• Summarizing concepts and ideas
• Maintaining the discussions on the given agenda

Also, if a system analyst is working together with a team, there are a certain characteristics the system analyst must have and the designing team. These include the following:

Characteristics of high-performance team:
• One vision and goal
• Sense of belongingness
• Result-driven structure
• Proficient team members
• Commitment to the group
• Trust
• Interconnection with other team members
• Good communication
• Sense of self-sufficiency
• High level of enjoyment

Information System Analyst versus Business Analyst

Many of us have a problem of distinguishing between the systems analyst and business analyst. Information System Analyst and Business Analyst are both important in having a good business. Both are helping each other to be able to make the company more profitable. Basically, the systems analyst is the one who is responsible on the how the process of a system flows. He is the one who do the analyzing if certain problem exists in the system. On the other hand, the business analyst is more multifaceted. He is responsible of examining all features of the general public and to find out the reasons of system outages. The business analyst is someone who is capable of encouraging the teams to stay in focus for the best result of their project.

Carol Francois said in her article, those people, who enjoy working with technology, are focused on details, and can work as a team member report the greatest satisfaction as information systems analysts. Basically, I find it interesting how technology grows fast and how it affects people's daily lives. As a Computer Science (CS) student, becoming an effective and in demand system analyst in the near future is one of my goals. To be competitive and skilled enough to work for big companies and soon put up my own companies. But I know for my own that I must acquire first the different skills stated earlier to become a good system analyst. Although, for now, I do not have any master’s degree yet in the field of information technology, I believe that soon, after I graduate and have enough knowledge and skills, I could become what I want. As a student, I have learned several stuffs about hardware, software, and people ware. I have learned basic things of how technology can be applied to solve real-world problems for people. Still, I am on my way of cultivating more of the knowledge in IT applications.

It makes me feel awkward as I imagine myself to be a system analyst in the future. But then, I do believe that I have some (not all since I am still in the midst of learning and discovering) of the attitude, characteristics and skills a good system analyst must have such as patience, perseverance, curiosity, flexibility, and critical thinking. I also have good communicating skill verbally and in writing as well as I like to deal with people. I also have knowledge in hardware and software as well as programming skills. I am also eager to learn more than what I have know. As much as possible, I want the work to be done on or before the deadlines because, on my own, I hate delays and waiting. Moreover, I am fair in listening suggestions from others and I accept my mistakes and make those mistakes as part of my inspiration to create more effective output. I believe I also have the sense of professionalism and leadership. But then, I know that these are just the basic characteristics of a good system analyst. I do hope that becoming one (effective system analyst) will not only a dream for me. I want to make and employ a system or software that everyone is using, considering the needs and wants of the clients and consumers, rather than making up a system or a software no one is using because of own interest.





References:

http://career-information.bafree.net/what-does-the-work-of-a-systems-analyst-involve.php
http://www.interlabs.bradley.edu/nsf_ccli/demo/class6/module6/skills_pretest_posttest_answers.pdf

Friday, February 11, 2011

...Types of Sorting and Sorting Algorithms....


Sorting
Sorting is any process of arranging items in some sequence and/or in different sets, and accordingly, it has two common, yet distinct meanings:
  1. Ordering: arranging items of the same kind, class, nature, etc. in some ordered sequence,
  2. Categorizing: grouping and labeling items with similar properties together (by sorts).

Here, I will present four kinds of sorting: Selection Sort, Bubble Sort, Insertion Sort, and Shell Sort.

©      SELECTION SORT
Definition:
            Selection sort is a simple sorting algorithm that develops on the performance of bubble sort. It works by first looking the least element using a linear scan and exchanging it into the first spot in the list, then finding the second smallest element by checking the remaining elements, and so on. Selection sort is exceptional compared to approximately any other algorithm in that its running time is not influenced by the preceding ordering of the list: it executes the same quantity of operations because of its simple structure. Selection sort requires (n -1) swaps and hence O(n) memory writes. Thus selection sort can be incredibly attractive if writes are the most expensive operation, but otherwise it will frequently be outperformed by insertion sort or the more complicated algorithms.
Selection sort is an attempt to localize the exchanges of array elements by finding a misplaced element first and putting it in its final place.

�� the list is divided into two sub lists, sorted and unsorted, which are divided by an imaginary wall.

�� We select the smallest element from the unsorted sub list and swap it with the element at the beginning of the unsorted data.

�� Then the smallest value among the remaining elements is selected and put in the second position and so on.

�� After each selection and swapping, the imaginary wall between the two sub lists move one element ahead, increasing the number of sorted elements and decreasing the number of unsorted ones.

�� Each time we move one element from the unsorted sub list to the sorted sub list, we say that we have completed a sort pass.

�� A list of n elements requires n-1 passes to completely rearrange the data.

  • ·         Time Complexity of Selection Sort
§  The number of comparisons and moves is independent of the data (the initial order of elements doesn’t matter).
§  Therefore, the best, average and worst case time complexities of the Selection Sort are all O(n2).
  • ·         Space Complexity of Selection Sort
§  Besides the collection itself, the only extra storage for this sort is the single temp reference used in the swap method.
§  Therefore, the space complexity of Selection Sort is O(n).


Selection Sort Algorithm  
/* Sorts by selecting smallest element in unsorted
portion of array and exchanging it with element
at the beginning of the unsorted list.
*/
void selectionSort(int list[], int n)
{
int cur, j, smallest, tempData;
for (cur = 0; cur <= n; cur ++){
smallest = cur;
for ( j = cur +1; j <= n ; j++)
if(list[ j ] < list[smallest])
smallest = j ;
// Smallest selected; swap with current element
tempData = list[cur];
list[cur] = list[smallest];
list[smallest] = tempData;
}
}
The outer loop is executed n times, and the inner loop iterates
j = (n –1 – cur) times.
So it is a n times summation of j. Thus the order turns out to be O(n 2).
The number of comparisons remains the same in all cases.
There may be some saving in terms of data movements (swappings).


©      BUBBLE SORT
Imagine all elements are objects of various sizes and are placed in a vertical column. If the objects are allowed to float, then the smallest element will bubble its way to the top. This is how the algorithm gets its name.

            �� the list scanned from the bottom up, and two adjacent elements are interchanged if they are found to be out of order with respect to each other.
Then next pair of adjacent elements are considered and so on.

�� thus the smallest element is bubbled from the unsorted list to the top of the array.

           �� after that, the wall moves one element ahead, increasing the number of sorted elements and decreasing the number of unsorted ones.

�� Each time an element moves from the unsorted part to the sorted part one sort pass is completed.
�� given a list of n elements, bubble sort requires up to n-1 passes to sort the data.

            �� Bubble sort was originally written to “bubble up” the highest element in the list. From an efficiency point of view it makes no difference whether the high element is bubbled or the low element is bubbled.

In some researches, bubble sort is referred to as “sorting by repeated comparison and exchanging, respectively.” It is easy to remember and to program, and little time is necessary to complete a single step. However, this sorting algorithm is normally used where the value of n is not too big and programming effort is to be kept to a least amount.



Bubble Sort Algorithm
/* Sorts list using bubble sort. Adjacent elements
are compared and exchanged until list is
completely ordered.
*/
void bubbleSort(int list[], int n)
{
int cur, j, temp;
for (cur = 0; cur <= n; cur++){
for ( j = n; j > cur; j--)
if(list[j ] < list[ j - 1]){
temp = list[ j ];
list[ j ] = list[ j – 1];
list[ j -1] = temp;
}
}
return;
}

What is the time complexity of the Bubble sort algorithm?

The number of comparisons for the worst case (when the array is in the reverse order sorted ) equals the number of iterations for the inner loop ,i.e. O(n 2). How many comparisons are to be made for the best case? Well, it turns out that the number of comparisons remains the same.

What about the number of swaps?
In the worst case, the number of movements is 3 n(n – 1 )/2. In the best case, when all elements are ordered, no swaps are necessary.
If it is a randomly ordered array, then number of movements are around half of the worst case figure.

Compare it with insertion sort. Here each element has to be bubbled one step at a time. It does not go directly to its proper place as in insertion sort. It could be said that insertion sort is twice as fast as the bubble sort , for the average case., because bubble sort makes approximately twice as many comparisons .

In summary, we can say that bubble sort, insertion sort and selection sort are not very efficient methods, as the complexity is O(n 2).

©      INSERTION SORT
The key idea is to pick up a data element and insert it into its proper place in the partial data considered so far. An outline of the algorithm is as follows:
Let the n data elements be stored in an array list[ ]. Then,
for ( cur = 1; cur < n ; cur++ )
move all elements list [ j ] greater than data [ cur ] by one position;
place data [ cur ] in its proper position. 

Note that the sorting is restricted only to fraction of the array in each iteration.
The list is divided into two parts: sorted and unsorted.
�� In each pass, the first element of the unsorted part is picked up, transferred to the sorted sub list, and inserted at the appropriate place. A list of n elements will take at most n-1 passes to sort the data.


Insertion Sort Algorithm
/* With each pass, first element in unsorted
sub list is inserted into sorted sub list.
*/
void insertionSort(int list[], int n)
{
int cur, located, temp, j;
for (cur = 1; cur <= n ; cur++){
located = 0;
temp = list[cur];
for ( j = cur - 1; j >= 0 && !located;)
if(temp < list[ j ]){
list[j + 1]= list[ j ];
j--;
}
else
located = 1;
list[j + 1] = temp;
}
return;
}

An advantage of this method is that it sorts the array only when it is really necessary.
If the array is already in order, no moves are performed.
However, it overlooks the fact that the elements may already be in their proper positions.
When an item is to be inserted, all elements greater than this item have to be moved.
There may be large number of redundant moves, as an element (properly located) may be moved,
but later, brought back to its position.

The best case is when the data are already in order. Only one comparison is made for each
position, so the comparison complexity is O(n),
and the data movement is 2n – 1 , i.e. it is O(n).

The worst case is when the data are in reverse order.
Each data element is to be moved to new position and for that each of the other elements
have to be shifted. This works out to be complexity of O(n2).

©      SHELL SORT
 
Shell sort is the oldest quick sorting algorithms. Also called Diminishing Increments sort It is said to be a better insertion sort. It is named after its inventor, Donald Shell. Insertion sort does a preset amount of work to take away each inversion. Shell sort can remove numerous inversions with one replace. It is typically works very well on real data, better then on random sequences. It is fast, easy to understand and easy to implement. However, its difficulty analysis is a little more complicated. The idea of Shell sort is the following: organize the data sequence in a two-dimensional array sort the columns of the array. The result is that the data sequence is partly sorted.
Its running time is proved to be O(N3/2)in the worst case, and seems on average to be O(N5/4) (Weiss p230). It might even be as good as O(N7/6.

            We can consider shell sort to be an elegant extension of insertion sort that gains speed by allowing exchanges of elements that are far apart. It sorts slices with a particular step h. Such a file is said to be h-sorted. If we first h-sort a file using a large value of h, elements move long distances and the efficiency of h-sorting for smaller values of  h improves.  When you get to the h=1 you implement a regular insertion sort and thus get a sorted file.
But the details of this elegant idea are non-trivial. First of all the result of h-sorting a file that is already k-sorted is a file became both h-and k-sorted. While any sequence of values of h will work as long as ends with h1 = 1, some sequences are clearly better than others.


Shell Sort Algorithm
void shellsort (int[] a, int n)
{
    int i, j, k, h, v;
    int[] cols = {1391376, 463792, 198768, 86961, 33936, 13776, 4592,
                    1968, 861, 336, 112, 48, 21, 7, 3, 1}
    for (k=0; k<16; k++)
    {
        h=cols[k];
        for (i=h; i
        {
            v=a[i];
            j=i;
            while (j>=h && a[j-h]>v)
            {
                a[j]=a[j-h];
                j=j-h;
            }
            a[j]=v;
        }
    }
}

References:
  • Cmput 115 - Lecture 9
Department of Computing Science
University of Alberta
©Duane Szafron 2000
  •   Keone Hon

  • Owen Astrachan  
        Computer Science Department
        Duke University