Sorry, but copying text is forbidden on this website!
The field of information systems design and analysis is characterized by methods and methodologies and this situation has been referred to as ‘the methodology jungle’ (Avision et al.. 1988; cited in Dahanayake, 2001 p.3). The rapid spread of computers and computer-based technologies over the past two decades has generated a need for skilled, highly trained workers to design and develop hardware and software systems and to incorporate these advances into new or existing systems. Although many narrow specializations have developed and no uniform job titles exist, this professional specialty group is widely referred to as computer scientists and systems analysts (Goldberg and Camension, 2002 p.99).
Information systems development methods are introduced to improve the productivity of the information systems development process and to increase the quality of developed information systems but the majority of these methods are seen as fuzzy and artificial concepts, that contain few guidelines and are highly complex, incomplete, and lacking in quality control (Dahanayake, 2001 p.3).
Computer scientists generally design computers and conduct research to improve their design or use, as well as develop and adapt principles for applying computers to new uses. Computer scientists perform many of the same duties as other computer professionals throughout a normal workday, hut their jobs are distinguished by the higher level of theoretical expertise and innovation they apply to complex problems and the creation or application of new technology. Computer scientists include computer engineers, database administrators, computer support analysts, and a variety of other specialized workers (Goldberg and Camension, 2002 p.99).
The Role of Systems Analysts
Systems analysts have to demonstrate a number of qualities to ensure that they succeed in carrying out their role at examining a system or systems. The examination may be required because an organization is experiencing problems that require somebody external to the organization to resolve such conditions. Systems analysts role is to provide solutions and recommendations as to why the system is not profitable or efficient, depending on the nature of the systems and the organization.
The tasks that systems analyst performs comply with a certain framework that includes: (1) investigation, (2) analysis, (3) proposing and (4) designing. Systems analysts need to demonstrate a number of communication skills to enable them to talk to all levels of user within the system. These users might range from management through to technical support and end users, such as data input clerks. Each of these users will express the systems analyst to identify with them and their given needs and requirements (Anderson and Yull, 2002 p.254).
Three groups of people are involved in developing information systems for organizations: managers, users of the systems, and computer programmers who implement systems. Managers of the organizations who are responsible for running the organization are ultimately responsible for their information systems. They are also the primary users of the systems. Operational staff works with the systems daily. They provide the data input to the system and use the routine outputs. As most information systems now-a-days are computer-based, the responsibility of writing programs to implement the systems and of creating and maintaining data bases is that of computer programming professionals.
The systems analyst coordinates the efforts of all these groups to effectively develop and operate computer-based information systems (Rajaraman, 2004 p.28). The theory about time role oh the systems analyst and the paradigm of assumptions constructed in practice (Burnell and Morgan, 1979; cited in Currie and Galliers, 1999 p.132) can perhaps be explained best by giving examples of systems analysis in different situations.
Four different stereotypical views of the system analyst may be given as functionalist, interpretative, objective and subjective. The last three to a greater or lesser degree, suggest that information systems development is more of a social than a technical process. Roles, ideals, and metaphors for each might be as follows (Avison and Wood-Harper, 1990; cited in Currie and Galliers, 1999 p.131).
- In the functionalist perspective, the information system consists of interactions, which function independently of outside manipulation. The analyst assumes that the situation can be readily understood, indeed there is an assumption of rational behavior by the actors, which makes understanding easier. The systems are well controlled, can be well understood, and can be formally defined. The systems analysts might be seen as technical expert, the ideals are objectivity, rigour, and formality (Currie and Galliers, 1999 p.131).
- In the interpretative perspective, it is assumed that the analyst is subjective and interprets the problem situation. The analyst hopes to understand the intentions of the actors in the situation. Participation and involvement will be the best way to obtain detailed information about the problem situation, and later to be able to perfect and control it (Currie and Galliers, 1999 p.131).
A single person does not manage software development project. It is teamwork. A person called, project leader, manages software project. The project leader is generally a system analyst, who analyses and designs the complete software. Software professionals, called Programmers, develop programs (Anderson and Yull, 2002 p.254). System programmers develop systems software while application programmers are involved in the development of application software. Systems analyst and programmers play a vital role in development of an application or systems software (Arora and Bansal, 2005 p.8).
The analyst plays the role of a specialist in computer-based applications. Programmers are responsible for coding, editing, testing and debugging the programs. Systems analyst and programmers work together as a team. A system analyst is a person who is overall responsible for development of software (Anderson and Yull, 2002 p.254). He is the computer professional who takes charge of analyzing, designing and implementing computer-based information systems.
He is the crucial interface among users, programmers and MIS managers. He performs the following roles for an organization (Currie and Galliers, 1999 p.132; Arora and Bansal, 2005 p.8): (a) Investigation of problem: The analyst studies the problems and needs of an organization during development of a system; (b) Solving the problem: The analyst solves the problems of the current system faced by the users by determining how people, method and technology can improve the current system and by presenting the system proposal to the management; (c) Managing the project: The analyst monitors the development and implementation of software in relation to quality, cost and time (Arora and Bansal, 2005 p.8).
The Process of System Analysis on Analyst Perspective
A system analyst’s primary responsibility is to identify information needs of an organization and obtain a logical design of an information system, which will meet these needs. Such an information system will be a combination of manual and computer-based procedures to process a collection of data such that the processed data (namely, reports/information) are useful to the managers of the organization in taking decisions (Rajaraman, 2004 p.28).
The ability to work using a methodological approach is also essential for a systems analyst. The collection and recording of data is crucial to ensure that any recommendations made are true representation of the user and system requirements. A further quality is the ability in draw upon information to apply experience and knowledge to each individual investigation. It is a fair assumption that no two systems will be the same, because organizations differ in terms of their core business, culture and resources; therefore, each system should be investigated uniquely: however, the skill is in reflecting on what has worked well in the past (Anderson and Yull, 2002 p.251).
The most important and difficult task of an analyst is to understand the users’ requirements. It involves interviewing users and finding out what information they use in the current systems and how they use it. They are then asked what information they lack, which if provided, will allow them to do their job better (Rajaraman, 2004 p.28). The analyst has to determine how such information can be generated. It is clear that to be a good systems analyst a balance of interpersonal, aspiration and technical skills are required.
An imbalance could result in insufficient collection of information, which might lead to an incomplete investigation. With a lack of business computing or technical knowledge, poor quality recommendations might be made. Finally, the lack of application skills may result in a very static proposal (Anderson and Yull, 2002 p.251). After which, even if computer capacity is available, it would be necessary to take up some of the tasks first and others later; Thus, there is a need to set priorities among the requirements of various users. This is best achieved by having a common meeting with all the users and arriving at a consensus (Rajaraman, 2004 p.29).
Having determined the information needs and their priority, the systems analyst must develop the system with the active and willing cooperation of all the users. The users must be made aware of what information they will get, how it will be derived, and how they can make use of it. With the users’ help, he must gather the necessary data and, while developing a system, the analyst must continually consult the users and get their views (Currie and Galliers, 1999 p.131; Rajaraman, 2004 p.29).
The system analyst analyzes the working of the current information system in the organization and finds out to what extent they meet users’ needs. He then sifts through the facts and opinions gathered by him and find the best characteristics of a new or modified system, which will meet the users’ stated information needs. An analyst must study the problem in depth and suggest alternate solutions to the management. The relative difficulties in implementing each of the alternatives and benefits of each must be determined so that a manager can pick what he considers the best solution (Goldberg and Camension, 2002 p.99).
A key job of an analyst is to obtain the functional specifications of the system to be designed in a form, which can be understood by users. The specification must be non-technical so that users and managers understand it. The analyst must win the acceptance of all levels of users of the system such as clerks, middle level managers and top managers. The specification must be precise and detailed so that it can be used by system implementers. It must also take into account expansion envisaged in the near future (Rajaraman, 2004 p.29).
Once the specifications are accepted, the analyst designs the system. The design must be understandable to the system implementer. The design must be modular to accommodate changes easily. The analyst must know the latest design tools to assist him in his task. An analyst must critically evaluate a system after it has been in use for a reasonable period of time. The time at which evaluation is to be done, how it is to be done, and how users’ comments are to be gathered and used must be decided by the analyst (Rajaraman, 2004 p.30).
Attributes of Systems Analyst
Knowledge of Organizations: A systems analyst must understand the way in which various organizations function. He must understand the management structure and the relationship between the departments in organizations. He must also find out how day-to-day operations are performed in the organization for which the information system is being developed (Dahanayake, 2001 p.4). As many systems are built for marketing, accounting, and materials management, he must have a working knowledge of these areas (Rajaraman, 2004 p.31).
Knowledge of Computer Systems and Software: The analyst must also know about recent developments in computer systems and software. He need not be an expert programmer or computer manager, but know enough technical details to interact effectively with program designers and computer managers (Dahanayake, 2001 p.3-4). He acts as the intermediary in understanding users’ needs and advising an applications programmer on how the needs can be realized on a computer system.
He must also advise on the information presentation techniques, appropriate use of packaged software, newer computer languages and environments (Goldberg and Camension, 2002 p.99). An analyst’s knowledge of computer systems must be deep enough to determine the feasibility of developing the required systems on a given hardware configuration. Conversely, an analyst must be able to advice on the hardware configuration needed to develop the required applications. Sometimes, the analyst may also advise on augmentation of existing hardware to implement new systems (Rajaraman, 2004 p.30).
Good Inter-personal Relations: An analyst must be able to interpret and sharpen fuzzily stated user needs, must be a good listener, a good diplomat and win users over as friends. He must be able to resolve conflicting requirements and arrive at a consensus (Currie and Galliers, 1999 p.131). He must understand people and be able to influence them to change their minds and attitudes. He must understand their needs and motivate them to work under stressful conditions such as meeting deadlines (Goldberg and Camension, 2002 p.99; Rajaraman, 2004 p.31).
Role of Subsystem Engineers: Software and Hardware Engineers
The requirements specification step of the system designing and development is followed by designing itself, implementing and distributing the software/hardware components of the manufacturing system. The software/hardware components of all the individual devices of the system are acquired by the software engineer in the initial step of system designing; some of these components may be designed and implemented by this software engineer, while others may be retrieved from the software/hardware components library (LI) of the manufacturing system.
When a device is encapsulated in a new software/hardware component, the operations of this device are simulated and tested, online, and the set of acquired software/hardware components is assembled into higher-level components to form a control hierarchy for this system design. The components of this hierarchy are assigned during the process of designing and data interpretation to the appropriate nodes of the underlying distributed network of the system (Joshi and Smith, 1994 p.354).
Starting with the functional requirements of each system design protocols and proceedings, the software engineer identifies the operations that must be performed by this device together with their required parameters and their output data. Moreover, any timing constraints on the execution of these operations are deduced from the performance requirements of the course design. These operations are included in the software interface of a software/hardware component. The software/hardware components library (Li) is queried for the component that can perform this set of operations.
This query may be guided by the software engineer or be fully automated. If no component with the required specifications is found in the library, the software engineer must implement and test the operations of the new software/hardware component (Currie and Galliers, 1999 p.312). In order to implement the operations of a software/hardware component that encapsulates a manufacturing device, an interface to this device is built by the software engineer. When numerically controlled machines are encapsulated in software/hardware components, the software engineer has to interface with complex special-purpose controllers that are often programmed in APT-like languages (Koren. 1983; cited in Joshi and Smith, 1994 p.354).
Roles of Software Engineers
Software engineers in industry work in a time-pressured environment with incentives that usually direct them towards a rather ad hoc, quick and dirty approach to developing software rather than using a more formal approach. The resulting software is typically not perfect, and requires many revisions to make it more robust. However, this approach is seen by management as the best way to improve the bottom line, such as better earnings, revenues, stock price, etc (Wirsing and Nivat, 1996 p.52).
If software engineers are requested to prove the correctness of their programs complete formally, then they will be doubly handicapped. They must not only produce completely formal products (programs) but also work with such products completely formally. Software engineers’ mission is to produce software with reasonable reliability and performance within a given budget (Maibum, 2000 p.169).
The software process does not impose a natural discipline on engineers. Software development differs from hardware engineering, in which engineers release designs to a factory for volume production. Hardware production engineers must review and accept a released design before they commit to manufacture a product on a schedule, for a cost, and at a scheduled production rate. With software, there is no factory and no production engineers; therefore, software engineers require utmost discipline in their fieldwork. Consistently, disciplined work requires high standards and competent support (Humphrey, 1999 p.8).
For software engineers, activities such as designing software and proving its correctness are their daily work, just correspond to stating theorems about mathematical objects and proving them for working mathematicians, or stating metatheorems about properties of formal systems and proving such metatheorems for software formalists. It is quite unfair to request that only software engineers must prove the correctness of their products formally. Though it is true that the main part of a software engineer’s product is a formal object (i.e., a computer program), such a formal artifact is produced in the final step of their daily work. A correctness proof of a program is only a way to guarantee the quality of their product (Maibum, 2000 p.169).
Roles of Hardware Engineers
The face of embedded system design is changing rapidly today, especially in the field of software and hardware associations. Larger and more complicated microprocessors are being used, with an increasing number of designs heading towards a 32-bit architecture. In addition, a larger number of custom ASICs are appearing in these designs. The typical size of software applications running on an embedded system design is also growing rapidly. The overall design complexity of these systems, whether measured in codes, such as ASIC gate count or Lines of software code, is estimated to be doubling every two years.
In short, embedded system designers are being asked to deliver much more, in less time, with limited resources and at a higher level of quality than ever before (Berge, and Rouillard, 1997 p.23). In a simple design, the software definition, may describe the software for a single board. In a more complete design, where different software engineers work on different pans of the code for a single board, there may be software definition for each individual engineer’s code. In a complex multiprocessor system, there may be an overall software document, which is considered to be pan of the system engineering specification (Joshi and Smith, 1994 p.354).
Over the years, a number of approaches have been developed to aid teams in their design and debugging of combined hardware systems as one of the primary roles of hardware engineers. Hardware-based approaches include debugging a hardware prototype with extensive instrumentation, in- circuit emulation, full hardware emulation, and software application monitors on the hardware prototype (Berge, and Rouillard, 1997 p.23). On the other hand, systems engineers’ software-based approaches include hardware simulation (including the use of bus functional models, or BFMs), instruction set simulation, hardware simulation combined with an instruction set simulator, and full software system simulation (Joshi and Smith, 1994 p.354).
All of these approaches suffer from one or more serious problems, such as arriving too late in the design process, high cost, poor simulation performance, or low debug visibility on either the hardware or the software side. However, a number of new approaches have appeared in the past year: some directly connect an executing software application with a simulated hardware design, while others offer a new twist on connecting an instruction set simulator to an HDL simulator (Berge, and Rouillard, 1997 p.23).
In the conclusion of the study, the roles of system analysts, programmer, the subsystem engineers, namely software and hardware engineers, and the processes involved in development and system designing intertwines with each designated role. As with the system analysts, the primary role is the overall leading of system proceedings and designing, while other subjects support the entire process progression. On the other hand, software engineers mainly deal with inducing software applications, which is different from the nature of hardware establishments by hardware engineers.
Anderson, H., & Yull, S. (2002). BTEC Nationals – IT Practitioners: Core Units for Computing and IT. Newnes.
Arora, A., & Bansal, S. (2004). Computer and Languages. Firewall Media.
Berge, J., & Rouillard, J. (1997). Models in System Design. Springer.
Currie, W., & Galliers, R. (1999). Rethinking Management Information Systems. Oxford University Press.
Dahanayake, A. (2001). Computer-Aided Method Engineering: Designing Case Repositories for the 21st Century. Idea Group Inc (IGI).
Goldberg, J., & Camenson, B. (2002). Real People Working in Science. McGraw-Hill Professional.
Humphrey, W. S. (1999). Introduction to the Team Software Process. Addison-Wesley.
Joshi, S. B., & Smith, J. S. (1994). Computer Control of Flexible Manufacturing Systems. Springer.
Maibum, T. S., & Nivat, M. (2000). Fundamental Approaches to Software Engineering. Springer.
Rajaraman, V. (2004). Analysis and Design of Information Systems. Prentice Hall of India.
Wirsing, M., & Nivat, M. (1996). Algebraic Methodology and Software Technology. Springer.