Before you write code you need to know what is wanted and the platform
that you will be targeting. When you start out in an organization
you will probably have to use a particular set of tools, methods,
and processes. Only if you are working alone (on an app say) will you
have a choice... and this may be limited to the platforms allowed on the device.
The first step to getting
this information is to understand the way your enterprise works.
A competent computer professional needs to understand three different things
- The technology.
- The organization.
- The part of the organization in which software is developed.
This course will focus on the two most important of these three: the enterprise
and its developers. The rest of computer science focuses on the technology.
So here is the first principle of successful computer work:
(Principle 0): It is not about the computer.
This course is about how hardware, software, data, procedures, and people work together. The
last type of component -- people -- is most important.
Often you will need to think about the non-computer parts of systems.... or even systems that have no computers.
On field trips -- ask questions about all of the above 5 component types...
This part of the course is about the kinds of organizations you are likely to be
working with.
Computerized systems appear in all kinds of organizations. This class is
about the best way to develop software solutions inside any organization. Unfortunately
(Principle 1): One Size Does Not Fit All.
You must learn enough skills and knowledge so you can fit them to the
kind of organization and the kind of work that is needed. You must also learn to
look at the organization your are working for and figure out
what computers and software are best for it. You need to learn how to find out
how the organization works, and how your work can best improve the way it works.
Even if your initial job does not let you make these choices, promotion
will depend on learning to do this
Systems Analysis and Design
well.
This part of the course reviews the many kinds of organization and
provides a kind of map of the possibilities.
You will find that in many real cases there are two distinct organizations involved:
the client or customer system and the development system. You need to understand both
because the kind of organization that is good at producing software is not the
kind of organization that is good at producing and selling lead pencils.
In a large enterprise you will have to learn how the part that develops software
works, how the organization invests in new hardware, and how the rest of the
organization operates. Then you have a chance of making changes that make you
rich and famous -- or at least -- an unsackable employee.
If you are creating a new organization then you will need to know the different types of organizations so as to pick the best way for it to work. For example: a small enterprise is
often very loose and relies on face-to-face communication. But a big enterprise will
rely on paperwork and rules. So you need to find a way to move from your initial
small company to a larger one.
The following provide evidence of the need for computer people to study the
organization they are working with. The provide interesting examples.
You should enjoy looking at them and can draw some useful conclusion from them.
But I don't expect you to memorize them for a future exercise, quiz, or final.
"The researchers studied how new electronic patient-status boards were
functioning in the emergency departments of two busy, university-affiliated
hospitals."
and the computer did not do as well as a white board...
[ 8992 ]
If they had analyzed the existing system better the electronic system might
be more useful than it's manual predecessor.
Halloween Horror Stories --
[ 184415199 ]
At the start of the second world war(circa 1940) in England the army discovered
that whenever an artillery piece (army talk for big gun) was fired,
the manual instructed one
soldier to stand still behind and to the side of the gun. The soldier
didn't have anything to do. He just had to stand there.
Before they could be sure that they could change the procedure and
so reduce the manpower involved they had to find out why the soldier
had to stand there. So they worked their way through earlier manuals.
In the 1914-18 version they found out what the soldier was supposed to
do: he held the officer's horse!
Moral: Analyze the activities to find redundant ones.
A letter "Outsourcing Consequences", Letter IEEE Computer Magazine V39n8(Sep 2006)pp5+7 by Walter Hill
[ MC.2006.317 ]
argues that "legacy" systems contain large amounts of useful information
that needs to be preserved -- complex business rules, tested data
structures, etc. etc.
This meta-data (data about the data) should be analyzed and organized for future use.
We will return to the best ways to analyse and design data later in this course.
. . . . . . . . . ( end of section Stories about analyzing organizations) <<Contents | End>>
Information technology (and so computers) are part of nearly all enterprises
now. Here are some developer diaries
[ 201804258?cid=RSSfeed_DDJ_All ]
courtesy of Dr. Dobb's Journal of Computer Calisthenics and Orthodontia
that should interest you.
I keep a website for the projects done by students at CSUSB: BA, BS, and MS. They
were presented in the CSCI Department Seminar
[ ../seminar/ ]
series. Here some of the abstracts from a few presentations --
The project is a web based system that allows students, faculty, and alumni
to post information for the purpose of buying and selling textbooks. This
will be used primarily for students, but will also be available to anyone
who has a CSUSB email account. The system makes use of MySQL and PHP
applications to make a website for students, to give them the option of
what to do with their unwanted textbooks. The website uses the same
authentication as the CSUSB email system and makes the site available to
only those people who have a Cal-State email address.
This project develops an easy-to-maintain web site for the Gamma Lambda
Chapter of Phi Beta Delta International Honor Society at California State
University, San Bernardino, which will manage complete and up-to-date
information about the mission, members, officers and all the activities of
the honor society.
This site has many features. It has a password authenticated administrator
login feature that enables easy to edit and save member profiles, easy to
download word documents, awards and scholarships component, archives
component, on-line member nomination capability for faculty, details of the
events held by the honor society, executive committee information and
access to bulletin board.
The application is built on a MYSQL database for data storage and uses Java
2 Enterprise Edition (J2EE) technologies. Java Server Pages (JSP) (version
2.0) technology is used to implement the graphical user interface (GUI) and
Servlets (version 2.4) handle the controller layer of the core
functionalities. The Apache Tomcat application server (version 5.0) is used
to host the website. These tools used to implement the Project are Open
Source software tools which are free of cost and easy to download and
install.
Radiosurgery is a non-invasive treatment technique applying focused
radiation beams. It requires high geometric accuracy as misalignment can
cause damage to the surrounding healthy tissues and loss of the therapeutic
effect. One promising technique to ensure sub-millimeter alignment accuracy
of the radiation beam is to optically monitor the position of the beam axis
relative to a frame firmly attached to the patient's skull using an optical
alignment system. The optical alignment method requires an Optical
Localization System (OLS) and a marker system visible to the OLS in order to
derive three-dimensional coordinate transforms needed to align the proton
beam axis to its stereotactic target. Once the target and the proton beam
are defined in the same coordinate system, an alignment control system can
be used to align the beam to the target. In this thesis work, a system for
proton beam alignment was studied and optimized in many of its functional
areas. The resulting system was named Positioning Alignment Control System
(PACS). The PACS system is an integrated and efficient system as a result of
the work done on it in the course of this thesis work.
A look into the development of an application developed to analyze
statistics of employees in a fast paced environment. Customer Service
Representatives at the Wells Fargo Home Mortgage call center must worry
about every aspect of the call they are on with the customer, from protocol
to average handle time. Overlook turns the statistics into data.
The Department of Public Works was established on March 14, 2000, resulting
from the Board approving a restructuring of the county's organization. The
newly created department includes divisions for Transportation, Solid
Waste, and Surveyor in addition to the Flood Control District.
The goal of the internship was to redesign Public Works website. This
presentation discusses some of the steps taken to redesign the website
including the development of a database that displays employment
opportunities and the development of online forms for making requests. The
website and the online forms were created using HTML, VB, CSS,java_script,
Adobe Photoshop CS, and Macromedia Dreamweaver MX 2006. This presentation
also discusses the development of the website using ASP technology to
interface an MS Access database.
Currently the San Bernardino Department of Airports has an antiquated
website. It was created using Front Page and lacks any interaction or
relevant information that a user might need when visiting any of the
airports that the County operates.
The new website will incorporate all needed information for all six
airports. This will include technical and weather information for the
airports, services for each airport, administration contacts, and any
current events that may be occurring at the airports. The website will be
more user friendly and more interactive.
Currently San Bernardino County Superintendent of Schools Information
Technology Department does not have a way to monitor network configurations
and performance testing other than manual tests. The time it takes to run
theses manual test can be time-consuming and the data is not collected so
these test are done in a case-by-case basis.
Building and implementing a Network Diagnostic Tool server can solve this
problem. The NDT is designed to quickly and easily identify a specific set
of conditions that are known to impact network performance. An NDT server
can determine: duplex mismatch conditions on Ethernet/FastEthernet links,
incorrectly set TCP buffers in the user's computer, or problems with the
local network infrastructure. Lastly, the test results may be easily
emailed to the appropriate administrator to assist in the problem
resolution phase. Implementing this server will allow the department to
continuously monitor the computers on the network and diagnose the problems
easily.
I will be presenting the methods, code and software used to develop the
game "Dirt Jockey" for the Nintendo Wii. I will show how the game was
developed on the PC and Wii simultaneously and how the Wii Remote was
implemented in both to increase productivity. I will discuss the
programming environment, and the Torque Scripting language, and demonstrate
some of the design process behind the game.
Computers and other IT (Information Technology) appears inside all types of enterprise.
- Government
- Farming
- Manufacturing
- Service
- Education
- Entertainment
Some enterprises also make a business out of developing software.
Here are some types of software companies:
- Web Consultancy
- GIS (Geographic Information Systems) -- ESRI
- Health -- Hospitals, Insurance companies, HMOs, ...
- Education -- Blackboard, Peoplesoft, Moodle, ...
- Games
- Mass marketed software -- OSs, Office Applications, Graphics, ...
- Research and/or Teaching Computer Science.
- Consultancy: a gun for hire
- Other...
A typical business or other enterprise is divided into levels. A small enterprise can
operate with upto a dozen people doing the work, but with more some one usually
has to take charge. However, it is difficult to keep track of all the interactions
between a group of subordinates as the team grows. With n subordinates, there
are n*(n-1)/2 pairs, and n*(n-1)*(n-2)/6 triples.... Typically a manager can
only manage no more than 7 subordinates. So in a larger organization a
tree structure forms.
At the top are the
executives and at the bottom the people who do the work. There are often two intermediate
levels. So we have:
- Top Managers and CEO -- long term planning, strategic goals, resources, ... -- sets policies
- Middle Managers and Knowledge workers -- implements policies in terms of procedures etc.
- Supervisors and team leaders
- Workers
Typical businesses employ people and machines to
take in raw materials
and produce finished products (and waste) that is output to the environment.
Meanwhile the money flows in the opposite direction -- being paid into the enterprise
to buy products, and then out to pay workers, buy raw materials, and make a profit
for the company. Here is an informal flow diagram of a business like this.
Plotting the flow of materials is an excellent way to get an idea
of what a business is about. Money flows come next.
Information/data flows tend to run parallel to material flow and money flows either
in the same direction or the opposite direction. Information can be electronic,
paper, speech, post it notes, memos, gestures, phone calls, email, ....
Here is a rough diagram
of how the parts are connected in a typical manufacturing
company.
The above model can be fitted to some non-manufacturing enterprises. A shop
for example doesn't have the "Production" operation. Purchased goods go straight
into Inventory. Enterprises in the "Primary Sector" -- farming, mining, fishing, ...
don't have Suppliers or Purchasing. The material flow starts with production.
There are enterprises that survive by getting rid of things... and so they don't
have any Sales or Market.
In a typical (larger) non-service sector enterprise
you will find the business organized not just by level but also by function.
You need to know the 6 classic functions:
- Production
- Sales
- Accounting
- Human Resources
- Marketing
- Information Technology -- -- --(IT)
You are likely to be working in IT. IT supports the needs of the other five functions.
. . . . . . . . . ( end of section Manufacturing sector) <<Contents | End>>
However there is a large and growing sector of the economy that has no tangible
goods flow. This is the service sector. Here there may be some goods flow but
the purpose of the enterprise is to provide services and to get paid for them.
For example you can go to a financial service and buy an "anuity", and this
is a promise to pay you a stated amount of money every year/month until you
die. An insurance company sells insurance which is a promise to
pay all or some of the expenses associated with a unpredicatable disaster.
In return we pay a premium to the insurance company.
So
the service sector is largely about contracts: I pay and you do something for me.
But there is no reason why the service has to be given or done for the person who
pays. You can pay someone to look after your elderly mother. The city government
will pay police to "keep the peace" for the citizens.
Indeed public education can be seen as a complex service where payment is given by
alumni, government, and parents so that others are taught useful skills and knowledge.
Private education the served clients pay directly for their own education.
Typical colleges and universities are a mix of these two models.
Note. The "Contract" in the above diagram is shown as a piece of paper. It can be a verbal understanding, or
it can be an electronic record.
Both the above descriptions disguise the fact that enterprises nearly always
are a mixture of manufacturing and services. For example a restaurent may
manufacture and sell food, but its ambience and service provides an intangible
benefit to its customers.
Again, a food bank
will be purchasing, storing, and distributing food -- but the money and goods
will not be coming from the clients -- and the real purpose is to serve the clients.
Your major task when you work in or with an organization is not to classify them as "Manufacturing" or
"Service". Your first task is to understand how the enterprise actually works. Then you can propose and implement
changes that make it work better.
In medium to large enterprises there will be a special
IT department that is in charge of data and computers.
Here is a list of the parts in a typical IT department:
- Application Development
- Analysis
- Design
- Programming
- Testing
- ...
- Systems support and Security
- Systems Administration
- User Support
- Database Administration
- Network Administration -- including wireless connections.
- Web support
In a small enterprise you find that you have to fulfill all the above roles. In a large enterprise
a team of people are dedicated to each of the above areas.
You will find many specialist jobs within an IT department.
Here is list of typical titles, top-down.
- CIO -- Chief Information Officer
- CSO -- Chief Security Officer
- CISO -- Chief Information Security Officer
- DBM -- Data Base Manager.
- Busines Analyst -- See Business_Analyst below
- Systems Analyst -- determines risks, threats, problems, opportunities, .... Proposes and selects improvements.
- System Architect -- What hardware? how is it networked?
- Software Architect -- Specializes in choosing platforms and structure.
- Programmer/analyst -- Does both analysis, design, and coding.
- Lead Programmer/ Chief Programmer -- leads a team of programmers in a project.
- Software Engineer -- "An engineer can do what any clod can do... but cheaper
and more reliably"
- Programmer -- converts specifications and designs into running code.
The peons of the IT field.
- Network Engineer -- monitor, fix, and develop the communications network.
- ...
- Network Administrator -- monitor and fix communications.
- Systems Administrator -- take CSCI360!
- Technical Support / Help Desk
Business_Analyst.
Positon available at xxx. Analyze business problems and translate business requirements into
workable solutions. Capture client business requirements and design technical
plans and solutions. Participate in the design of the application's functional model and
system architecture. Review quality assurabce deliverables during the acceptance phase
to ensure all requirments have been tested.
This is a slightly more dramatic view of the kind of people you
need to make an important project successful.
[ the-team-it-and-how-assemble-one-701 ]
(Regular)
Read this to get a feel for IT.... It won't be on the final... but it is fun.
The traditional approach is to describe an ideal team with one person for each vital
role. In practice one person may have to play many roles. For example, in the extreme,
you may be the whole team. You then have to "wear all the hats". So in this course
I will describe a set of
disciplines
that have in some measure) to be followed to make a project succeed. This approach comes
form "RUP" (the Rational Unified Process). Also beware the misconcepcion that you can complete
one discipline and then move on to the next. these disciplines are not phases in a process. They
are things that have to be done. As the project progresses the mix of disciplines shifts.
At the start of the project,
Management
and
Infrastructure
play a large part. Management involves motivation, leadership, planning, and negotiating for resources
among other things. Infrastructure includes setting up and maintaining the hardware and software that
the team uses. Shortly however other disciplines start to be needed.
Analysis
and
Business modelling
are concerned with understanding the current system with a view to proposing changes.
Notice: Management does not stop....
User Liason
is also important and is a part of
HCI
(Human Computer Interface)
and
Usability
disciplines.
A useful discipline at this time is
Data Analysis
aand
Data Design
that work with existing and desirable forms of data. These
shade into, or are part of
Data Base Administration.
Requirements
and
Architecture
are two inter-related and important disciplines concerned with expressing the client's
and stakeholder's needs, and the components (people. hardware, software,...) that
will meet the needs.
By now the discipline of
Security
should be making itself felt and having a powerful effect on the architecture.
Software Design
,
Coding
, and
Testing
should start as soon as there is hardware to do the testing, to validate the
assumptions made in the Requirements discipline.
As the projet processeds effort has to put into
Training
and
Support
to make sure that the people in the system can put the system to good use.
Finally, in any but the smallest projects, the discipline of
CM
or
Configuration Management
has to track every change in every artifact and how the various components in the system
fit together, Part of this is keeping backup copies of everything -- or having a system to track changes
and allow them to be undone.
In most organizations there has been a division between the people who
program the systems and the people who run them:
[ vampires-programmers-versus-werewolves-sysadmins.html ]
Recently there is a proposal, DevOps by name, to closely integrate Development
and Operations. See
[ DevOp ]
(Wikipedia) for more details. It looks like an interesting new buzz-phrase
but might indicate an important trend.
A typical systems analyst:
- Leads a Team of developers.
- Discovers the current situation: problems, opportunities, ...
- Clarifies goals for a project.
- Proposes alternate options to meet goals.
- Helps management evaluate options and alternatives
- Helps management select the best option.
- Manages development: strategy, planning, organizing, ...
- Spots and mitigates risks early (and often).
A programmer takes the designs provided by analysts and expresses them
in computer languages. Computer science degrees focus on programming.
Yes. In a small enterprise you will find yourself doing both programming and analysis.
In fact, if you are a people person who
can handle the technical details and debugging then this is the best organization.
You might like to compare some of the things we have been doing in this
class with the content in the following news cutting from
the Association for Computing Machinary.
Computerworld, November 12 2007
While technical skills remain the bedrock of any IT position, an increasing
number of employers are now expecting their new hires to have a broad range
of skills in areas ranging from communication to accounting to leadership.
In their continual attempt to align IT with business, executives and
managers say they are increasingly looking for staffers who have solid
business acumen and so-called soft skills. The article provides an overview
of nine skills employers are looking for, with additional advice on how to
acquire them.
Writing and communication skills remain an important prerequisite for
nearly any mid- to high-level IT position. Also important is the skill of
being able to understand how to map different business processes and create
visual depictions of how business processes flow across functional areas.
Thirdly, IT workers must be comfortable with public speaking. For each of
these skills, there are clubs, educational programs and courses that can
address any shortcomings.
Other important skills include a familiarity with accounting and the
ability to work well with a team. A person who is able to gain consensus
and sell an idea not only gets the job done, but makes the group stronger.
Hiring managers highly value people who can seize the initiative without
the need for constant oversight. They place a premium on an inquisitive
mind, the ability to get a point across, and a willingness to take risks.
The modern IT person needs to be more of an IT entrepreneur, since he or
she is constantly looking to improve upon existing ways of doing things or
identify other business and operational opportunities
I don't have a quick list. You definitely need training in the tools of the trade.
You need to know the kinds of holes that have opened up in the past and have
knowledge to keep up with the upcoming problems.
You also need to know the underlying theory -- in particular network protocols,
cryptography, etc. etc.
I've got this
[ ?p=546 ]
from Brian Carlson. I'd like to stress that Programmers and Analysts
(Computer Scientists) usually have a better life than
described here. The slide show is fun as well.
. . . . . . . . . ( end of section Computer Professionals in Organizations) <<Contents | End>>
Enterprises differ in the following key factors:
- Size: single proprietor, "mom&Pop", small, medium, corporation, mega-corporation,...
- Age: Start-up;...; mature; moribund
- Non-profit vs Profit ( if profit: Private vs publicly traded companies).
- Economic classification: Farming vs Service vs Manufacturing sectors -- normally some mixture.
- Finance.
- Culture: patterns of communication and norms.
Large organizations are really made up of small organizations.
The same patterns appear in all parts -- including any specialized
software development department. People are the critical components in
systems and the naturally seem to organize themselves in four
patterns:
- Spider Web: Small + face-to-face + who do you know + "who do you work for".
Example: look at the top of any large organization.
Good for rapid novel improvisation. Entrepreneurship. Communication is
typically one-to-one with some one-to-many meetings.
Agile software development.
- Cloth/Matrix: Small Teams working on projects: "what are you working on now".
Example: most computer projects.
Good for coming up with the best single solution to a problem.
Meetings are seen as good.
- Cloud: Small collection of independent professionals. Herding cats.
"What are you?"
Example: A department in a university, doctors in a practice, lawyers.
Good when a lot of expertise is needed but little or no coordination.
Considers meetings a waste of time.
- Greek Temple: Large + Hierarchy. "where do you work".
Just about every medium to large organization develops this pattern.
Good for stable environments and regular activities.
Meetings and paperwork are the life blood of this kind of organization.
Tends to depend
on the other patterns inside it to stabilize it.
From "The Gods of Management", Charles Handy, Pan Books (Pbk), 1978.
Charles Handy (Op. Cit.) also distinguishes three kinds of work that
are needed in an enterprise:
- Regular -- Repeated.
- Development -- Planned Changes.
- Fire fighting (My term...)
Each needs a different culture: Spider web, Cloth, cloud, or temple.
Computer people can involved in all of these three types of work.
Table| Flow | Face to Face | Paper | Electronic
|
|---|
| one-to-one | Interviews, Informal | memo, letter | Phone, EMail, IM, SMS,...
|
| one-to-many | Lectures/talks | memo, letter | mailing list, blog, Twitter...
|
| many-to-many | Meetings | - | Wikis,Google Docs, Dropbox, Facebook ...
|
(Close Table)
[ http://m.techcrunch.com/2012/08/05/first-time-startup-entrepreneurs-stop-fucking-around/ ]
(Mobile)
[ http://techcrunch.com/2012/08/05/first-time-startup-entrepreneurs-stop-fucking-around/ ]
(desktop)
There are many types of meetings that you will have to take part in:
Committees, Brainstorming sessions, Walkthoughs, Inspections, ...
When you set up a meeting follow these guidelines (distilled from
half-a-dozen books on management):
- The meeting must have a purpose. Describe what
the final results of the meeting will be.
Finish this phrase: "The meeting is finished when....".
- Invite people who fit the purpose.
- Make sure that the people who are invited know how to prepare
and what they need to bring to the meeting.
- Plan the agenda, handouts, food, drink,...
- Check the room and arrive early.
- Start by stating the purpose of the meeting.
- Finish when purpose is achieved. Thank people!
- Don't forget to schedule the next meeting at the end (if any).
- Finish by making sure people know the "deliverables" -- what they
must bring to the next meeting.
When you attend meetings
- Prepare well in advance.
- Take the deliverables with you.
- Don't forget to look like the role you are playing.
- Listen and take part.
- Take notes (it will keep you awake).
- After the meeting: Debrief and review notes. File materials.
I was brought up on Prof. C. Northcote Parkinson(
[ C._Northcote_Parkinson ]
Wikipedia, books in the library) and also studied
"How to succeed in Business without trying: the dastard's guide" by
Shepherd Mead ( 3rd floor of the library HF5386.M48) ,
and "Up the Organization" by Robert Townsend (
[ 0449205053 ]
). Note -- none of these are essential reading for exams etc. in this class, but
they may entertain and educate you for real life.
. . . . . . . . . ( end of section Organization) <<Contents | End>>
- How is a typical IT department organized?
- What are the four levels in a typical enterprise?
- What are the 6 functions in the manufacturing/non-service sector?
- Draw a pyramidal or conical picture of the 4 levels and 6 functions in a typical manufacturing enterprise.
- Draw a diagram that include material flows, money flows, and data flows for a supermarket.
- Describe how a hairdresser or barber operates -- service or manufacturing?
- How important are people to the correct functioning of a system. Why?
- Name some steps for attending a meeting.
- List some things you must do to set up a meeting.
. . . . . . . . . ( end of section Review Questions) <<Contents | End>>