Saturday, January 5, 2013

The Texas Software Product Development Project

The Texas Software Product Development Project focuses attention on those aspects of software development that are necessary for creating useful products.  Software reliability is a topic with enough complexity to warrant its own project, The Texas Software Reliability Project .

Developing a quality software product requires some understanding of quality code.  My blog post entitled Big Ball of Mud discusses code quality.

In addition to software reliability and software quality, other key aspects of software product development include:  (1) product definition, which can depend on creativity, innovation, and market research; (2) design, which has many aspects and many levels of design; (3) planning, which includes schedule, budget, and staffing; (4) execution, which includes many aspects of coding and project management; (5) testing and integration, and (5) deployment, which includes customer delivery and acceptance.

Developing software products that work, that customers want, that please customers is difficult.  The more complex the product, the harder the task becomes.  It is not enough to throw a lot of smart people at a problem.  Every time a software project fails to deliver a successful software product, money is lost and our economy is hurt.

There is a lot of money being made with successful software products.  The purpose of the Texas Software Product Development Project is to increase wealth in Texas by bringing attention to those aspects of software development that can make or break a product.

This post is part of the The Texas Software Initiative.


Friday, January 4, 2013

The Texas Young Programmers Project

Computer programming is not for everyone.  I know engineers who were required to take a computer programming course in college, did not like it, and never programmed at work.  Still, programming is an activity that some young people can do very well.  Because young people in their late teens and early twenties can create significant software products and impact the national economy, we should provide assistance to young programmers.  The Texas Young Programmers Project is an effort to help young people with their efforts to learn programming, and to encourage them in their endeavors.

Indie Game: The Movie is a documentary that shares the experiences of young adults developing independent computer games.  This documentary is available for streaming on Netflix.  It is a fascinating show, but cannot be thought of as representative of how young programmers develop.  Still, computer games are an application that can appeal to young programmers.

If you lack "domain knowledge," you cannot as a programmer solve problems with software.  The Achilles heal of software development is that programmers need problems presented to them that can be solved with computer programming.  Without domain knowledge, programmers either learn more programming minutia, or learn new languages, or write computer games.  Young people need help in for form of challenging problems for their coding skills.

The University of Texas, Pan American, held a computer programming contest for high school students in February 2012.  The students had a choice of coding in C/C++ or Java in this contest.  The University of Texas, Austin, is holding a programming contest in February 2013.  The contest is by invitation only and the coding is required to be in Java.  Trinity University in San Antonio hosted a programming contest in Java for San Antonio high schools in April 2012.  Java appears to be the language of choice for high school programming.  The University Interscholastic League (UIL) also hosts computer programming contests.  Google hosts a contest for students aged 13 to 17 called Google Code-In.  The grand prize is a trip to Google headquarters in Mountain View, California.  Google Code Jam is for older students.

The Association for Computing Machinery (ACM) hosts the ACM International Collegiate Programming Contest for college students.  Here is a link to a PowerPoint presentation from Dr. Ivor Page, UT Dallas, on participation in this contest:

There are programming challenges available for our young people.  They just need to get connected to the programming contests and to get advice on how to learn programming.  I have started a blog, Canright on Software and Programming, to help.  If you choose to help young people learn programming, then you too are participating in the The Texas Young Programmers Project.

This post is part of the The Texas Software Initiative.


Thursday, January 3, 2013

The Texas Software Reliability Project

The Texas Institute for Software Reliability

It is difficult to complete complex software products on schedule and within budget.  Having the software product also perform flawlessly is almost beyond imagination.  The performance goal for new software is usually to achieve adequate performance, so it takes time for users to discover the flaws in the software.  It is common in the software industry to ship a product with a known list of bugs.  This leads to a cavalier attitude towards software reliability, which is beginning to wreak havoc in the financial industry.

On August 1, 2012, a glitch in new software at Knight Capital led to $440 million in trading losses, pushing the company to the brink of bankruptcy, and forcing it to sell itself in order to stay open for business.  On March 23, 2012, the new stock exchange operator BATS Global Markets tried to list its own IPO on its new stock exchange, but a software glitch crashed the exchange.  The BATS IPO stock price sunk from $16 per share to 4 cents per share and the IPO was cancelled.  The IPO did not happen during the remainder of 2012 and terms like "epic failure" and "worst IPO nightmare of all time" were used to describe the failure.  Software reliability can have a major impact on economic development.

Software reliability is a huge, multifaceted topic.  Software reliability is intimately related to software quality, software requirements, software design, software testing, and software correctness.  All facets of software development that contribute to reliable software, including accurate design of concurrent and distributed systems, should be of interest to businesses, schools, and professionals working in software in Texas.

The Kestrel Institute in Palo Alto, California is a research center working on provably correct code.  We should have a center in Texas dedicated to issues related to software reliability. A Texas Institute for Software Reliability could be a virtual institution, comprised of researchers at many universities and companies, linked together by a website and servers.

We are in a competitive world.  A Texas Institute for Software Reliability could help us compete.  The Texas Software Reliability Project encompasses all efforts in Texas to promote reliable software.

This post is part of The Texas Software Initiative.


The Texas Software Initiative

The Texas Software Initiative

Software is big business.  The people of Texas should have a goal to promote software development and software education in Texas as part of economic development in the state of Texas.  To that end I am suggesting a number of projects that can contribute to software development and economic growth.

Here is a list of projects that can be a part of the Texas Software Initiative:
  1. The Bank in a Box Project
  2. The Business in a Box Project
  3. The Texas Young Programmers Project
  4. The Texas Software Product Development Project
  5. The Texas Software Reliability Project
  6. The Texas Open Source Software Project
  7. The Special Methods Software Project
I will add details to these projects as time permits.


Additionally, these posts are part of the Texas Software Initiative
Video Games are Big Business  Saturday, February 23, 2013