Sunday, May 30, 2010

Elevator Pitch 2



For the assignment, the role selected was IT Infrastructure Manager; I believe this role is most suited for me to choose as it has relevance in my work field as an IT consultant.

Throughout the second part of the ITC 594 course, we have discussed the following topics. In topic 7, Internet Security, the basic concepts like LDAP standard, firewall, Secure Shell and Cookies are discussed.  In topic 8, Concurrency and Transactions, we discussed how transactions and threads are managed and operate. In topic 9, Designing Distributed Systems, business process modeling and architecture such as UML and VMC are mentioned and discussed. In topic 10, discussion on the use of bots, software agents, spiders and as well as some concepts in mobile computing are carried out. In topic 11 we talk about the XML technologies in E-commerce. Finally in topic 12, System Integration, discussion on Management systems such as ERP, CRM, S&OP are done.

Exercise 16: Group Reflective Study

Choose one of the four ways to manage and develop integrated systems as listed in the study guide. Summarize your understanding and describe its relevance in either your study at university or in your work environment. 

I have chosen Business process analysis as my preferred method in managing and developing integrated systems.
As per my understanding, every business organization is basically utilizes a set of business processes to generate revenue and to govern their business operations. That being said, the role of a business process is crucial enough that affects the business significantly.In my field of work as an IT consultant, I have worked with many companies who has implemented and are using ERP systems, sometimes in conjunction with other systems such as CRM and S&OP in their companies to run their business. From what i have observed, each business has their own unique business processes & logic, and ERP systems are found to be most suitable in managing their data and processes for the time being.
The benefit of ERP is the ability to build a system for a company around the existing processes and current systems and integrate them ("Savvion," 2010). Employing a cloud provider also decreases overheads and staffing costs that may have to come with the integration of any new system into a company that are resistant to change and to the introduction of any new technology. Of course this is not always possible and the new system will need to be introduced ("Savvion," 2010).

Net MBA (2010). Process Analysis Retrieved 28th May 2010, from http://www.netmba.com/operations/process/analysis/
Savvion (2010). Business Process Analysis Retrieved 28th May 2010, from http://www.savvion.com/business_process_analysis

Topic 10 : Bots, agents, spiders and mobile computing


Software agents for e-commerce

Software agents can move from one computer to another by directed or autonomous instructions. Such mobile software agents have 3 main capabilities that can be developed in combination with a push or pull model:

Mobile code                  (binary, bytecode or machine language) that is installed on a remote computer eg Java applet, Google spiderbot;
Mobile computation      handling by RPC, RMI, CORBA, servlets etc
Mobile state                   single or multiple threads, capture state of computer

Such Code mobility adds a lot of flexibility and advantages over the older client/server model flexibility but may cost more in authentication, security and deployment.

Agent-based software agents for simulation

Agent-based modeling and simulation (ABMS) is an approach to modeling systems using a model of autonomous interacting agents. This can effect the way that businesses use computers to analyse a system, see the effect of changes in the model which then supports decision-making and research.

Agent-based models and multi-agent systems are used in games like SimCity but with other complex systems like the finance market, the stock exchange or even the illegal drug industry, the simulations are useful. Consider the latter simulation further.

Various agents exist such as the drug supplier, drug addict, social worker, health worker, police and other law enforcement agents. Each agent and its behaviour is built into the model and then various changes are introduced to the system via hypothesis testing:

What happens to drug supplier profits if we increase the arrest rate of drug addicts?

The result is analysed and passed on to all government decision-makers.


M-commerce:  Services for mobile clients

Higher bandwidth, high speeds, constant connectivity and seamless global coverage.

What are the consequences of keeping people connected at all times and in all places?

Analysis of business needs or demand from users may lead to e-business applications for mobile phones, as the business moves from e-commerce to m‑commerce.  The current push for wireless technologies is leading to changes in the presentation devices and the communications infrastructure requirements leading to multiple types of devices appearing.  Support for multiple devices and applications as well as security via hardware and encryption technologies has grown.

Consider the way that our presentation devices like phones and PDA’s are converging in combination with changes in screen sizes and functions.  Application design issues related to limited battery life, less CPU power and different navigation interfaces are not as apparent as before, as my new phone will run applications that are co-developed for multiple devices, services and different network protocols.

Wireless systems can be configured in various topologies such as a peer-to-peer network for a small user group to larger networks that enable roaming for its users. The typical elements in a secure, scalable and reliable mobile architecture is shown  in Figure 10.2.





While WAP/WML or XHTML basic systems are popular, extra hardware and bandwidth allows 3G video services via a mobile device.  WAP is the Wireless Application Protocol which runs on a circuit switching network, while HTTP and the Internet is largely running over packet switching networks, thus requiring a gateway system.  This adds to the cost of the mobile service transaction.  Success may be limited for an e-business application, as WAP may just be another interface to an online service running on the Web.  For a WAP site to be successful it must be worth the added cost to the user, so WAP sites are designed as a location based service.  WML is the Wireless Markup Language – an XML DTD for building structured WAP sites.  Here is a list of development areas in recent years.  Maybe you can add to the list!

·                Event promotion and account balances by SMS short message service
·                Mobile phones downloading from WAP enabled Websites
·                Laptop computers connected to mobile phones for downloading emails
·                Mobile office solutions
·                Wearable systems – headbands
·                PDA’s (Personal Digital Assistants) and mobile phone combination
·                Mobile phones as PDA’s and with a camera
·                Mobile phone with 3G video services.

Some m-commerce design tips for usability in wireless applications include:

·                Minimise the no of keystrokes;
·                Minimise airtime cost;
·                Personalise content based on the user’s profile;
·                Provide Alerts and Notifications, though don’t overdo it;
·                Allow users to respond efficiently.

Topic 9 : Designing Distributed Systems


An investigation of business processes and workflow is important, as well as any understanding you have of the Rational Unified Process OO model.  Project management of an e-business application is required, along with careful selection of packaged solutions for E-business and the Software Development Process.  Let us have a closer look at what I described in Topic 2.

Business modelling advice for client-server application developers

E-systems developers need to improve and 'scale-down' the development and communication effectiveness of the final design for a small-to-medium sized vendor.  I suggested using four strategic techniques in Topic 2 as part of your business intelligence strategy.  These included:

1.             the Balance Scorecard (BSC) method (recommended by Microsoft);
2.             use of self-service approach for SME solution development;
3.             value-added ethical model dealing with integrity, security and social impact, across all business decision-making activity;
4.             use of a peer review evaluation process, to help tie it all together.

This will be important in any client/server design report where you must give time and effort to defining the Problem Domain of the application, including cost/benefit analysis and defining the nature of the project team members.  Some useful headings to use here are:

1.1     Define the problem
1.2     Business needs of the organisation and the audience/end-users
1.3     Scope (limits) to designing a solution.

The Balanced Scorecard methodology and 4E Business goals of economy, efficiency, effectiveness and empowerment, helps organisations determine why software applications play a vital part in any scorecard implementation process – e.g. using Client/server applications like Web services.  It was interesting to note that the business decision may lead to .NET being used in BSC categories of customer relationship, while J2EE may best be deployed in the category of business processes.

I would also add stakeholder analysis in the client/server design, which includes examining the skill sets of all stakeholders:



The developer
The vendor
The customer
(you)
(your client)
(the vendor's customer)

Business process modelling

According to Fournier (1999) and Sparks (2000), a business process is defined as:


Sparks (2000) has a diagram (Figure 9.1) that illustrates how the various model elements may be grouped together to produce a coherent picture of a named business process.  Included are the inputs, outputs, events, goals and other resources which are of significance.

Towards a value-added ethical design

E-commerce applications in client/server development grow so quickly that it makes it very hard to maintain ethics in online systems with problems in protecting personal integrity, privacy and securing against events such as identity theft.  Lind (1997) suggests that a conceptual understanding of how business process modelling is needed can include ethical values as a way of increasing value created by the business process.  High satisfaction with the delivery promise and payment systems builds the trust needed in the long run.  People value privacy and their personal integrity, but computerised record keeping in online databases can disturb feelings of trust in online information exchange.  Add to that e‑mail spamming where some users have second thoughts about filling in a form requesting an e-mail address.

It is in the client/server application design process where it is necessary to address security problems in such a way as to bring back feelings of trust in all stakeholders.

The mystique of the 'afterlife'

Each software system has a product lifecycle and an 'afterlife' involving evaluation by the vendor and customers.  By getting a group of peers to pose as customers or users, this 'afterlife' can be simulated.  Consider the likely 'shelf-life' and software maintenance plan for your design.  This will build trust in you and your application.

Project management workflows

Software engineering requires project management techniques for configuration and change management, and the early use of quality assurance methods.  Make sure that plenty of time is allocated to requirements gathering, as noted in the textbook.  Remember to analyse the impact of the nature of the project on proceedings and the four roles of a software development process:

·                To provide guidance to the order of the team’s activities
·                To define the artefacts of the process
·                To direct the tasks of the team
·                To offer criteria and methods for monitoring and measuring progress.

Model-View-Control Architecture

Model View Controller (MVC) modeling began with Smalltalk and has been rediscovered by the latest Web application frameworks that are based on the Model View Controller architecture. If the design requires an n-tier, Web application, then the UML tools and techniques should support designing with MVC architecture.

MVC modeling support with UML will organise and provide a detailed design within the MVC layers. Hence the readability of the model is enhanced by use of an overall design approach that is a blend of:

·                Business process modeling
·                Web framework with the MVC design architecture
·                UML support within MVC

Analysis of requirements and use cases

Defining the process begins with describing the underlying client/server architecture.  One of the activities that Conallen (2003) states, is to examine the Use Case Model from a technical viewpoint.

A requirements specification, a project plan and the construction of an object-oriented model for a software system that will function on the Web, are required.  This chapter provides some guidelines for gathering, prioritising and writing the requirements specification document.  Some students with an object modelling background will have a chance to sharpen their skill.

Cockburn, A 1997, Surviving Object-Oriented Projects, Addison-Wesley is a good reference for those wishing to concentrate on the project management of a Web application, with an emphasis on incremental development.

In some ways this subject is an introduction to object modelling with the Use Case model, (if you have not done an object modelling subject before), where Use Case diagrams are a big part of the Unified Modelling Language (UML).  CASE tools for UML exist for C++ and Java developers, such as Rational Rose (http://www.rational.com).  You may like to draw pencil diagrams or use any drawing program to help draw any of the eight (8) main modelling diagrams in UML, where required.  Your draft designs can be in pencil!  Old habits in IT die hard . . . . I still like to think and design with paper!

Use Case, Class, Sequence, Collaboration, State chart, Activity, Component and Deployment diagrams are used in UML.  Describe each of the eight (8) main diagrams used in UML.

Use Case and Activity Diagrams help you to describe system functional requirements - it is important to note that the user may be a human or another software or hardware process.  In either case it is referred to as an actor.

Use Cases help with the problem of definition of requirements and analysis.  Use a table (see below) to start your thinking, where business processes are taken from the SME and an object modelling table is used to help show development of your ideas, using very simple object modelling techniques.  Here is a simple way to model your objects.  Use the level 1 and 3 tables for designing any object in the e-business application:

Level 1 – User and system tasks table

Make a list of things done by the user and the system.

Level 2 – Abstraction

The next step is called finding the level of abstraction, where the business objects build on each other to form classes from the most general and abstract – root class, to the more refined and concrete.  What could be more concrete than an automatic telling machine (ATM)?  Here the actor is human and the use case are withdraw cash; make a deposit; or request a balance.

So, by the end of this step, you should have a good idea about which list classes to use or make, for your design.

Level 3 – Object description table

·                Use the level 3 table below to detail your design with the example used in object-oriented design.

In my days as a structured programmer, it was revealed how Pseudocode describes in general terms what any method is supposed to do.

Object No.
Object name
Class
Description
Verbs
Properties

Relationships can exist between use cases in use case diagrams, while activity diagrams are useful in describing the temporal sequencing of use cases.

Use Case model and the online customer (actors)

Use Case diagrams describe an external view of the system and its interactions with the outside world – similar to the use of a context diagram.  An actor, playing a role by various people or computer process, sees this external view. 

The actor’s goals and not the systems functions are described.  A person may play many roles, and a role may have many people playing it – familiar to the one-to-many relationships in a data model.  Use case diagrams:

·                are connected to scenarios;
·                have a communication association with an actor;
·                are a collection of actors, use cases and communications;
·                help to determine system requirements;
·                help develops to explain the system to clients; and
·                are used to produce test cases.

Figure 9.2 is an example of a Use Case diagram for the customer role at an online bookstore.



Rapid evolutionary prototyping for Web applications

This approach mentioned at the beginning of the Study Guide, has an exploration phase and a development phase.  In the exploration phase, the developer is used to find the use cases, as well as to model the problem domain and define the architecture.  It is in the development stage that the rapid prototyping takes place, with the client and developers seeing a visible, tangible system as construction unfolds.  Evolutionary development is often called incremental or iterative development, where each increment contains a full cycle of analysis, design, coding, testing and integration.  After each increment is completed, a prototype may or may not be delivered to the client.  Each delivery requires 'finishing school' – this where the system may become unstable or hard to maintain, once it is moved to the production site.

Agile software design:  Extreme programming

If you feel the need to learn more about software design principles, UML modelling and agile software design are gaining popularity.  Extreme Programming (XP) appears to be the most popular of agile methods, and is having success with businesses (SME's and students) who struggle with conventional paradigms.  XP is a set of practices that are simple, but interdependent among team members.  It has shorter cycles delivering 'working software' every two weeks, with all production code written by pairs of programmers (with possible reduction in the defect rate).  User stories and acceptance testing methods vary on user stories and using QA people to help.  A book to help here is:

Martin, R. C. (2003). Agile software development:  Principles, patterns and practices. Upper Saddle River, New Jersey: Prentice Hall.

At this point you should have your requirements and use cases determined for your project as it is developing under a project management plan using the rapid evolutionary prototyping approach or an agile software development method.  Inside each increment you may need to do the analysis and produce a model of the Web application, with the design on the horizon as a refinement of the analysis model.  This is where an OO analysis and design methodology can save costs by moving faster into the implementation of the design.

Packages for the Online Shopfront analysis model

'Packaging' helps to manage the size and complexity of the analysis model by breaking it down into chunks called packages.  Each package contains parts of the model such as class, diagrams, components, interfaces etc.  You can see the similarities here with the way the hierarchies work in the Java language, where classes can be declared public or private.  Conallen (2003) describes how a package can also be a hierarchy of packages, by using the example of a User Interface package, which is shown graphically as a 'tabbed folder' in the top-level use case diagrams.

User Interface Package contains:

ActiveX – enabled UI package
Java – enabled UI package

E-commerce system packages

The development of the Online store package containing sub-packages for an E‑catalogue, Shopping Cart, and Customer Profile is a common solution to core business processes.  Start with the top-level use case diagram packages and examine the use cases and functional requirements, so that you can further sub-divide the model – eventually into classes of objects.  The Java language hierarchy works in a similar way.


Object Modelling and UML extension for WEB

The problem-solving process at some stage requires algorithm descriptions for methods and actions - when passing a message to an object, particularly for the event-driven processes that may exist behind fields and buttons in a user interface.  However it becomes apparent that a holistic model of the development environment is required; this process is part of the Object Modeling Technique (OMT), which can be used to describe Java Classes.  Class diagrams, using symbolic notation, are an important part of the object modeling process, and can be extended by the use of Form diagrams.  When a new Java construct is introduced, its syntax is shown in a form or template style, revealing how a feature is constructed using Java statements.

Object modeling (class design) consists of a set of one or more interrelated classes.  Classes describe the properties and actions of the object in real life that the program has to manipulate.  Once a class is described, many objects of that same class can be created, but not every class is related to every other class and relationships can vary.  Depending upon which OMT style you adopt, the notation used to illustrate object-oriented programs will reveal the different relationships with various symbols such as arrows, diamonds and triangles.  An object is a real-life example of a class description.  Many objects can be considered as nouns - book, pen, and student.  When the program generates new objects, they exist as a new instance of a class.

Declarations, methods and constructors

The properties of a class are given by declaration of data items that its objects can use to store information.  The action or capabilities of a class are expressed in one or more methods.  A method is a named sequence of instructions usually requiring an algorithm description.  Java statements can be categorised into five groups:

·                Invocation - invoking or causing a method to be performed
·                Assignment - using a value of the same type to change the state of a variable
·                Repetition
·                Selection
·                Exception - detecting and reacting to unusual circumstances

In Java, an object is created when its declaration automatically calls a constructor method.  So it seems that methods are a way of grouping Java statements, while classes are a way of grouping methods (and including data items).

The design of the class in terms of the methods and data it provides is the main feature of pragmatic object modeling techniques.

Data as object structures

The changing notion of data as object structures rather than the typical data structure/file structure paradigm of purely structured programming is investigated using resources on the WEB about Java and Python.

User interface objects

In object-oriented programming, statements are not thought of as imperative actions to be carried out, one after the other, but as messages or requests to change objects.  Hypermedia applications support a limited version of the OO paradigm.  Here actions are messages sent from one object to another.  When such an event occurs, the WWW browser executes the corresponding request via an existing algorithm inside the object.  For example the STOP button on Netscape may contain a message:

     on mouseUp
        close file
     end mouseUp

Component diagrams

During the design stage, the component view is added to the class, with interaction diagrams done using an analysis model to provide an implementation or physical view of modules and executables.  Each component is mapped to an executable file, Java class file, static libraries, or DLLs.  Further refinements of classes, the interface, and the flow of activity involved with the business processes, is carried out.  This may also include partitioning into tiers such as 2, 3 or n tier client/server architecture, depending of course on the chosen architecture and the separate defining of the user interface as a set of Web pages.


Topic 8 : Concurrency and transactions


Concurrency

A process is a running program – code, data (variables, data structures, etc.) with at least one thread of execution.

A thread is a flow of control through the process, plus a private stack for local data.

The basic principle is that making threads is much cheaper than making new processes.  Threads are also known as “lightweight processes” and are similar to forking a process.  Multiple threads of a process use the same address space, so they share all static and external data, open files, and can make parallel programming easier as they require less memory and use less time for context switching.  Threads are used when real-time priority scheduling is needed.  RPC server stub routines use threads internally to enable RPC-based servers to handle multiple client requests simultaneously.  The threads can also be used by client applications.

Threads are used when you need to synchronise or to protect shared resources (especially in non-reentrant code).  Threads are used in modern operating systems software.  In UNIX thread processes are used to provide jacket routines for a number of non-reentrant UNIX system calls.  In Microsoft Office products like word processor threads are used to check spelling and grammar, format paragraphs, as well as inputting your typing.  So threads have helped me write this Blog!

Threaded programming in Java or Python

What do you know about locking, deadlock and semaphores?
Since the textbook uses Java example, I will use Python to look at the same topic.

Semaphores, Locks and Monitors are pieces of software.  Locks make sure that two processes do not get into each other’s way when accessing a common resource; they sequence the processes when there are dependencies among them.  It is easy to mix up the concepts as a lock is a synchronisation primitive similar to semaphores, by providing mutual exclusion.  A lock can either be free or busy initially; a lock must be acquired and be free.  The lock is “acquired” before access to a shared variable process is released by the process that acquired it (after it is done accessing that variable).  A lock is different from a semaphore where it is not necessary that the process decrementing the semaphore value to say, x, will increment it to x+1 upon finishing with its critical section.

One concept to note when using threads is the boss-worker thread relationship.  Think of a timetable clash for my lecture in this subject and a tutorial in another subject.  As the boss thread, I spawn a worker thread (casual tutor) to synchronise with the same time slot and give the tutorial, while I give the lecture.  The worker thread will halt and it used only during the need for synchronisation of tutorial with lecture.  So the poor casual tutor is unemployed again until another worker thread is required.

Threaded programming creates multiple threads of execution in the one running Python program (process).  Python – since is an interpreter environment, can also use multiple interpreters to make multiple processes, where communication is through message-passing and synchronisation happens using signals.  The steps to follow in threaded programming include:

1.             Start off with a main thread.
2.             Create other threads as Thread objects.
3.             Here is some sample Python code by Horatio Davis:

from threading import *
x = Thread(target = add, args=(3,2))
x.run()

4.             This creates a separate thread of control, which calls add(3,2).
5.             The original thread keeps going after the run().
6.             The target can be any function, with any arguments.
7.             The thread dies when the function returns or throws an exception.

If you want to find out more, then start at section 7.4 to 7.7 of the Python Reference Library at http://docs.python.org/library/thread.html.


Transactions

Client/Server Transaction processing such as large and complex B2B e-commerce systems and distributed applications (according to the textbook), faces the ACID test and occurs when a server executes a sequence of operations to be known as transactions.  The section on serial equivalence will help to explain why concurrency and transactions goes together for this topic.  The whole area of concurrency control for distributed systems also brings with it the chance that a distributed deadlock will occur between several servers.  I like the way that Enterprise JavaBeans and Bean code development are introduced as an example of TP monitor technology.

The study you make into concurrency and transactions will ensure that you appreciate the role and functions of the operating system in client/server computing.