Tuesday, February 28, 2012

Visionary Leader of BPM: Adobe LiveCycle




Product Review:  Adobe LiveCycle


Slogan:  "Automate processes and improve communications"



URL:  http://www.adobe.com/products/livecycle/


Summary: [Summary Card]


Adobe LiveCycle is made up of 3 business process management tools:  Process Management, Business Activity Monitoring, and Content Services.  The business process management tools are only a portion of the entire package, which also includes an RIA portion (rich internet application) and Document Services for communication, forms, and security features.


"Streamline your enterprise business processes" [1]  The Process Management suite is extremely versatile and contains many ideal capabilities such as a visual process and UI design environment, a centralized repository with versioning, and a "design once, deploy anywhere" work flow.  The PM suite also also for complete customization via Flex programming for the more tech savvy developers but still has advanced code-less deployment as well.

"Maximizing Business Performance with BAM" [2]  The Business Activity Monitoring suite is also completely customizable and has event-driven decision making.  BAM is made up of a dashboard, a workbench, an Analytics Server, and rights management that all work together in tandem.  BAM uses SQL-based semantics to combine events and content in the workbench to meet deliverables in the dashboard.

"Share, Manage, and Retain Content" [3]  The last big piece for BPM in LiveCycle is the Content Management system, which allows you to manage content through enterprise libraries and content connectors.  It enables you to streamline your content reviews and archive content based on retention policy.  And since it's an Adobe product it enables the auto-transformation of content into Adobe PDF files.

(Pictures courtesy of http://www.liventerprise.com/tool/Adobe_LiveCycle_ES/)

Tuesday, January 17, 2012

To Design Software, or to Design Software? The Comparison of Two Common Software Engineering Processes

Last week in my Software Systems Analysis class, we looked at two different perspectives on the Software Engineering process:  one proposed by our Satzinger textbook and one outlined in SWEBOK, the Software Engineering Body of Knowledge.  Below I have matched up the functional areas that I think are related with Satzinger being in red and SWEBOK being in blue.


Functional Areas that Line Up:

  1. Satzinger's first step is to "Identify the problem or need and obtain approval."  I believe this loosely maps to SWEBOK's "Software Engineering Process" phase, which covers "the definition, implementation, assessment, measurement, management, change, and improvement of the software engineering process itself."
  2. The next step in Satzinger's process is to "Plan and monitor the project", which I think binds closely to SWEBOK's "Software Engineering Management" that "addresses the management and measurement of the software engineering."
  3. The next step is to "Discover and understand the details of the problem or need."  SWEBOK's "Software Requirement" maps nicely to this section. 
  4. Satzinger has next to "Design the system components that solve the problem or satisfy the need," which can map to "Software Design" in SWEBOK.
  5. The next step is to "Build, test, and integrate system components."  This lines up with SWEBOK's "Software Construction" phase.
  6. The final phase that lines up between the two is to "Complete system tests and then deploy the solution."  This lines up with "Software Testing" in SWEBOK.

While these are very loose comparisons, there are some aspects of SWEBOK that are not covered by Satzinger or perhaps Satzinger combines them into other functional areas.  For example, SWEBOK details a section on "Software Maintenance."  This section covers what happens to the product after it has gone into production.  Another example is "Software Configuration Management."  This section defines each configuration change so that it can be traced throughout the lifetime of the product.  A third example is "Software Engineering Tools and Methods."  Satzinger does not really have a specific section on the tools and methods used but discussing both through out all his sections.  Finally, "Software Quality" is the last section not fully discussed in Satzinger's version, but just life with the tools and methods section, this too is discussed throughout each section of his process.


While this is a quick and dirty comparison, you should really review all methodologies before starting a project to verify that it will work in your environment with your team.



Friday, January 13, 2012

A Silver Bullet to the Demise of Moore's Law?

This week in my Systems Analysis class we discussed software engineering and the processes one might take in developing a software package based on the Agile fundamentals.  We also discussed briefly Moore's Law and how it's slowly coming to an end.  Although, I did find this article today announcing that IBM is still making leaps and bounds in terms of hardware development.  I guess someone did not tell IBM's techs that they should sit back and relax a while.


So, what do I foresee as being a possible "silver bullet" to combat the fatigue in Moore's Law?  The first thing we can do is to start a science and engineering education initiative in our public schools.  I didn't know anything about engineering before I went to college to become one.  I just knew that I was good at math and science and that computer engineering would be a good place to apply those skills.  But we really need to educate the next generation on what's possible and what real-life software engineers can accomplish.  We need to build momentum!


The next thing that could dramatically change the software development process is to gain buy-in from the community at large.  There are so many types of software development plans out there, and not all of them are applicable to certain situations.  So many companies get into ruts with their software development planning, if they have a plan at all, that they don't not see (or know) that there might be a better solution out there.  We need more places like TopCoder to really build momentum and educate the community around the cause.


The final item that could be a game changer is if a fundamentally new hardware product gets released on the market.  With the development of a new synthetic compound or with a change in how hardware and software interact, the bedrock of software development could essentially change or become obsolete.


In the immediate future though, I don't see there being a "silver bullet" to the werewolf of stalled innovation.  We will need to make significant changes to our culture to encourage and open doors to math and science for all ages, races, and genders.  Or another Steve Jobs.  Or a major break-through in hardware platforms.









Wednesday, November 30, 2011

Finale: Services


The final component of an Internest transaction that we are going to look at is the Service.  There are many definitions of what a service is, but for the purpose of this article, a service is a set of standards that software platforms can use to talk to other software platforms to get and transfer information without a human component.  Below is a diagram of a general set of these standards that are used: a Security component, a Reliable Messaging component, the Transaction, the actual Message and it's language (XML in this case), and the Metadata to put it all together.


There are couple commonly used technologies when discussing Services: SOAP, XML, and WSDL.  SOAP and WSDL are both protocols that utilize the XML language.  Soap is "a lightweight protocol for the exchange of information in a decentralized, distributed environment" and acts as a virtual envelope to send data.  WSDL is then used as the diction and syntax to the message that allows completely different applications to communicate with each other, very similar to the Universal Translator in Star Trek.





The idea of a Service has been around a while, they just have not always been publicly available or documented.  Microsoft is infamous for it's products interoperability, and the words "web service" were first documented as being uttered by Bill Gates at a developer's conference.  EDI was the first to try to develop some type of data interaction.  However, it ended up being costly and hard to implement.  Then once the Web starting gaining ground, SOAP was developed, and that opened the door to the Web service we know today.



Additional Resources:
http://en.wikipedia.org/wiki/Web_service
http://www.w3schools.com/webservices/default.asp
http://www.webopedia.com/TERM/W/Web_Services.html
http://www.businessweek.com/technology/content/feb2005/tc2005028_8000_tc203.htm
http://ws.apache.org/
http://www.ibm.com/developerworks/webservices/
http://msdn.microsoft.com/en-us/library/ms950421.aspx
http://www.innoq.com/resources/ws-standards-poster/
http://www.informationweek.com/news/6506480

Episode 5: Data Storage




The last two parts of the Internet transaction have become specialized throughout the years.  The first is data storage on the server level.  Most people understand data storage on your desktop.  Your hard drive space on your desktop limits you to the amount of documents, videos, and pictures you can store.  Well, this premise can be applied to servers as well except now it's even more important to make all the stored information easily accessible and fast.

There are a couple of different ways to go about data storage on the server level.  You can combine it with your application server if you are running a small environment.  Or it can be its own standalone server.  It can be a SQL database server or a regular file structure based system.  Some examples of storage systems include HP's blade storage system or Apple's XSAN.



Over the years, the idea of storage on a server level has grown.  It initially didn't exist; you had to save back to your computer locally.  But just as with the other services that we've looked at, the demand to collaborative and Internet based business demand storage availability on the server level and in came the NAS solution (network attached storage).  There has since been many advancements in the NAS with RAID algorithms, redundancies built-in, and the SAN, the storage area network.

Windows Storage Server Releases:



Additional Resources:
http://en.wikipedia.org/wiki/Computer_data_storage
http://welcome.hp.com/country/us/en/prodserv/storage.html
http://www.open-e.com/service-and-support/products-archive/products/open-e-dss/
http://blogs.technet.com/b/storageserver/archive/2008/06/09/a-brief-history-of-windows-storage-server-releases.aspx
http://en.wikipedia.org/wiki/Storage_area_network

Episode 4: The Application Server

The next part of the transaction I'll be discussing is the Application server component.  An application server is simply as server that provides an environment for various applications to run.  For example, the Microsoft Exchange server is an application server that runs the Microsoft Exchange application on a Windows Server platform.



The options for an application server are many.  There are a couple of main server platforms as we discussed earlier: Microsoft Windows Server, Solaris, and Linux based such as RedHat.  There are many more types and proprietary platforms as well that are developed for specific applications.  Then on top of all of these platforms, you can run your server applications such as  Microsoft SQL Server.



Over the past years, the definition of an application server has been developed, and its place in the schema defined.  The number of applications that can now be provided on a server level as drastically increased as well.  Application server were initially just static web servers, but with the increase in business online and business platforms that needed to be provided online, they have developed into the massive and various platforms they are today.

Additional Resources:
http://en.wikipedia.org/wiki/Application_server
http://www.answers.com/topic/application-server
http://www.theserverside.com/news/1363671/What-is-an-App-Server
http://technet.microsoft.com/en-us/library/cc750283.aspx#XSLTsection130121120120
http://www.javaworld.com/javaworld/javaqa/2002-08/01-qa-0823-appvswebserver.html
http://searchsqlserver.techtarget.com/definition/application-server
http://java.sys-con.com/node/36451

Episode 3: The Web Server


The next stop on our adventure is the Web Server.  The web server is key to storing and retrieving data on the Internet.  Web servers make web pages possible, which without most people would not have a use for the Internet.  A web server is made up of two components: the hardware that it runs on and the web server software itself which turns a regular server into a web server.

A client uses a web server every time they access a website.  For instance, you are reading my blog right now which is hosted on a web server owned and operated by Blogspot.  You more than likely got here either through a Google search (also a website) or via a direct link.  The direct link should clue you in to a few things.  One, you are accessing my server space here: http://rmoorehead-mist7500.blogspot.com/ then if there is anything after the slash you are access an individual file on the server.  If there is nothing after the slash, you are still accessing a file, you just don't know it.  You are accessing the index file.

So in essence, a web server is very much like navigating your desktop with a file structure of folders and individual files.  The magic comes when a web server receives requests and processes them and sends them back out via the Internet.





The hardware requirements for a web server are pretty basic:  a large storage space, a fast processor, and a permanent IP.  If you'd like to read more about the differences between a regular desktop and a web server, please review this article.  The software is where the fun part comes in.  There is huge competition in the web server arena between Microsoft's IIS platform and the Unix-based Apache offering with Sun bringing up the rear with some specialization optimizations.

Web servers just like user's browser clients have developed over the years.  The concept of the web server and a central repository of information was developed by Tim Berners-Lee in 1989.  And due to it's popularity, Berners-Lee initiated the W3C, the World Wide Web Consortium, to regulate the web he helped to build in 1994. Since then, the concept of a web server has grown.  We now can have virtual web servers and web servers based in a cloud environment in essence taking the hardware component out of the picture.



More Resources:
http://en.wikipedia.org/wiki/Web_server
http://www.webdevelopersnotes.com/basics/what_is_web_server.php
http://computer.howstuffworks.com/web-server.htm