Saturday, April 5, 2008

Progress on assignment one

This week, I have been mainly focusing on the assignment one. Towards to listing a events table, the first thing I did is to identify what problems the customer has, and find out solutions an automated system can do to them. Then, based on these solutions, the scope was determined, which helps identify inputs and outputs. The last job is listing all the events that are defined in scope, detailing the scope further in events, finding out what is trigger, response and use case.

However, there are some questions arise when in the process. When trying to detail the event of item's availability, I realized that some useful events, such as Weekly/Monthly sale report or Storage report for the stock, were not mentioned in interview. So I am wondering whether I should ask a clarification from the customer, or just keep it until next meet to ask the customer whether he likes the additional even I think about, helping improve efficiency of his company with the opportunities. Also, from the interview, it seems that there is no clear roles inside his company, everyone can do every kinds of jobs with different performances. So I am wondering whether it's better to make the roles clear into three, such like "Stock manager", "Seller" and "General manager". I think this would be easier to make a clear events table, classifying the different jobs on the automated system.

Saturday, March 29, 2008

Modeling

After the process of gathering information about how a organization work and identify what the user need, modeling comes as a following. With the method of modeling, it is capable of abstracting a complex problem into small ones, which is easier for analysts to find solutions and solve them one by one, helping analysts concentrate on specific domain. Most importantly, it helps analysts get a clear understanding of a system, allowing them to communicate with customers more easily.

The UML provides several different kinds of diagrams aiming to view system requirement in different ways, which help analysts focus on specific information in different levels. First of all, the process of events collection is essential, which identify all the operations in or out of a company. It forms foundation for drawing UML diagrams. With the completion of events documentation, domain model class diagram follows, identifying the "things" in an organization based on the documentation of events. Class diagram plays a potential important role in drawing the sequence diagram and state machine diagram, as both of them required to access the data and methods that classes possess, while activity diagram is fully dependent on use case diagram only.

In terms of level of views, use case is the highest. It is easy to understand for customers, a good way to communicate and clarify the understanding of system requirement. Following this level of view, activity diagram details the flows of activities. But it only mention what kinds of work will be done and how they interact with each other. Therefore, a more low level of view, sequence diagram, details what information and what actions will be passed between system and user. It has relationships with both activity diagram and state machine diagram, which is fully dependent on domain model class diagram, while activity diagram is dependent on use case. Another view is state machine. It shows in detail how the actions flow and changes states of objects. The most difference with activity diagram and sequence diagram is that it can show how the objects' state change.

Sunday, March 16, 2008

Processes of investigation on system requirement

There are several ways to gather information for a system requirement. I like to classify the methods into several types of usages: gathering overview requirement, detail information, visualizing needs of users. Another way of building a system is making comparison between requirement of customer and existing vendor solutions, which is low cost and low risk, to see whether the solution could match the customers' needs. The final step, which should play an important role in refining system requirement, is requirement review.

Requirement Overview

In my view, interview is a way to document general information for a system requirement. As interview is always done in a short period, and the content of a interview is variable, it's difficult for analysts, I think, to obtain all the detail information. The aim they need to achieve in such activity is to identify what customer mostly need for an organization. Interviewers can try to get an overview of how an organization operate, and ask for clarification of some operational processes, making preparation for the following analysis in detailing requirement.

Questionnaire is another way to collect general information. Its advantage is capable of gathering information widely in terms of geography. It allows customers in different working areas to cooperate with the requirement investigation. The disadvantage is that, as customers usually don't like to answer the open-ended question in questionnaires, needs of customer would be difficult to be collected.

Detail information
Reviewing existing official documents of an organization is vital for analysts to understand what kinds of information require a system to process, and how the operational processes flow. After having an general view on what the needs of customers are, analysts may have lots of questions regarding detail information, such as how the organization really works and what information is required. Answers to the questions could be given in detail by reviewing the official documents.

To detail how an organization works, observation can make some contributions. The better way to do this is to take part in the process, working with other employer, getting themselves involved in the work. This could help analysts obtain useful information detailing what users need.

Visualize needs
To verify the needs of customers, activity diagram is an very helpful tool for both of analysts and users to communicate with each other. As the simplicity of activity diagram, non-technical users can understand the meaning of the diagram easily, which helps both of them to practically communicate in detail in terms of operational processes. This also can be very helpful if the analysts want to ask for clarification from users, instead of expressing only in words, which could even cause more confusions.

Another way to communicate with users visually is prototyping. In order to verify the needs of users, analysts can make a model with a small number of functions, which represents a preliminary model of a system allowing users to give feedbacks. Though it, analysts are enabled to make modification on the feedbacks from users to refine their understanding of the requirement.

Analyze for vendor solutions
Developing a system is not always as in a high risk or resource consuming as I perceived before. The companies that provide vendor solutions usually are specialized in some specific area, so in most cases they have more relevant advanced knowledge and experiences, in comparison with the internal organizational development team. Therefore, in some situations, vendor solutions could be a best choice for an organization. Although purchasing a vendor solution is much easier than developing one by themselves, it doesn't mean the process of system analysis can be ignored or simplified. Making choices to vendor solutions also includes thorough system analysis. After the phrase of system analysis, it has a higher rate to make a wise decision in choosing vendor solutions, as analysts understand what the needs of customers are.

Verifying requirement

Compared to other process of investigation on requirement, requirement verification plays an important role of making corrections on misunderstanding and further understanding the requirements. In other words, It helps analysts get a better understanding of the system they need to develop or purchase from vendor solutions. Meanwhile, to some extend it gives chances for analysts to review the requirement and do some preparations before starting the design phrase in SDLC.

Saturday, March 8, 2008

Week 2

This week, the content of this unit begun to introduce basic concepts of system development. I am impressed by several interesting ideas, such as what system development should be done for organisation, flexible developing approaches, making decision on whether to purchase a system or develop by self, and OO approach for more natural system development for developer.

Aims for organisation needs
Needs of organisation should be the focal factors for system development. The reasons why a system is being developed are usually because organisations want to achieve better performance results by altering their core systems. Ultimately, being more effective, productive and competitive are their goals to keep their organisation operate healthily. So, whether a system development is done properly or not can directly affect the performance of a organisation. Sometimes some fatal mistakes done by system development could cause serious damage to a organisation. A improper system development could consume huge loss of time and resource to make the situation of an operation worse rather than improved.

Flexible developing approaches
There some different developing methodologies to develop a system for developers to work through various development situations. System analysts can adopt the most suitable one by identifying the needs of their customers. A small clear project request from a customer, in which the detail of functions is predictable, could lead system developer to adopt waterfall approach. On the other hand, if a system requested to develop is large, OO approach could be more appropriate. Sometimes customer doesn't really know what they want to build for a system, developer may need to use scrum or XP approaches to quickly create some small functions for their customers to review, and then iterate it until completely meets the requirement. Therefore, developing a system should be flexible in terms of methodologies, as system requirements are various.

Decision for in-house or outsourcing development
Developing a system require a lot of resource from many aspects of an organisation, especially the resource of IT experts. Organisation have to evaluate its ability to build system by itself before start the development process. If they don't have enough resource, purchasing product from software companies, which are specialising in some specific areas could be a good choice. This way to build a system require lower cost and set up a system much faster. But usually it couldn't meet what customer need entirely. So it may not be a good choice for long term use, but may be a good choice for urgent needs or adding a few more functions onto existing system.

Object Oriented approach, a virtual method
OO approach has concepts that are similar to real natural world, so it helps develop system more naturally in comparison with others. In OO approach, developer can virtually create system comprised of many components, which can be virtually represented by UML. So through the medium of UML people can clearly understand how the internal parts of a system interact with each other. It contributes to a better understanding between customers and developers, as customer don't need a lot of technology skills background to understand the use case diagram. Also, it help developer assess the feasibility of functions in a system. Problems can be identified more easily, and developer are allowed make changes without causing lots of changes to other components, as one of features of OO approach is object independence.

Saturday, March 1, 2008

Workload of being a system analyst

I am from China, where I got my bachelor degree, which also has unit called "System analysis and design". According to the introductory lecture this week, this unit I am studying in now is very different from that, which only gave students an overview about system analysis and design, actually it's like software design unit, mainly teaching an general approach of software development. In this first week's lecture for system analysis and design, I have an overall understanding of that, system analysis and design is about developing a system which need to take consideration on almost everything in an corporation. Most of all, it's more about solving problems, developing core systems which should be able to support corporations and enhance effectiveness of their operation processes.

The most impressive thing is the various roles an system analyst plays in a corporation. It's not just simply about developing software for some specific persons or departments, but instead should make considerations on operations from low level to high level in a corporation. So, the system analysts who want to do a good job really need to have a good understanding on not only general technical skills but also some business skills, such as understanding how a whole company works, and communication skills as well. Also, system analysts are required to have strong solving problem skills, which allow them to discuss problems business people have and help find solutions in term of technology, at the same time, they also need to solve technical problems. Therefore, there is a very detailed problem solving approach for helping deal with problems, dividing the whole process into several steps, which are reasonable and increase effectiveness of solving problem.

From the tasks a system analyst need to handle, the workload of working in that area seems to be very demanding. As I am already 24 years old, a feeling of building a family becomes increasingly strong, I am still thinking about what kind of job I would take in the future, which allow me to have enough resource to main a lovely family. So, the question I am thinking about this week related to the job of system analyst is that, is it possible to have enough time to maintain a family for system analysts, while they need to deal with so many relationships in that kind of job, making lots of efforts on developing various skills, at the same time, they also have to keep on learning new technologies to keep their technical knowledge up to date? So even it's possible to do these two kinds of thing during an same period of time, it would be, I think, very difficult. Or may be not, while I am going through this unit and learn more about it.