RichStyle: The Angel is in The Detail.

RichStyle Software Process

This is a revision of a paper submitted on to the Arab Academy for Banking and Financial Sciences.

Abstract

According to ISO, in order to produce a high quality product, organization needs a high quality producing process, which means a well defined and organized process. Generally speaking, this is true in variant industries, but not in software industry, since production process in software industry is a creative process, not an industrial process, so that one can’t imagine that there are a list of input items from one side, that could produce a software product out of the other one, automatically, without any human factor involvement.

Software Engineering tries to convert software process from a creative process to an industrial process.

As a solution, an ISO-alternative standard emerged for software industry, called CMM, developed by Carnegie Mellon Software Engineering Institute (SEI). Later on it has developed and expanded its scope and cover other industries, it is called now CMMI.

Since 1987, when CMM emerged, CMM/CMMI has been always focusing on documentation. The reason is that organization doesn’t have an automated process, so, all it can do is to organize process using documents.

In fact, as one can see, CMM emerged before web era; the era in which database systems weren’t mature enough and used widely like nowadays, client/server architecture wasn’t common in business world. That’s why CMM/CMMI was always focusing on documents.

The objective of this paper is to build a software process using database, rather than document a software process using documents.

Keywords

Software Engineering, Software Process, ISO, CMMI, UML, XML, HTML, XHTML, CSS, RichStyle, PAD file, ASP, Debian, Debian Package, DEB.

Methodology

Modeling configuration management process area in a database model using UML.

The Association of Software Professionals (ASP) provides a standard XML-based document called PAD file, the Portable Application Description. ASP represents the best practice in software industry regarding software publishing.

I’ll compare this standard to Debian control file, the file stored in the Debian package file (DEB), and stores in turn the package’s meta-data.
Debian package system represents also the best practice in open source community regarding software publishing, and Debian and Debian-based Linux distributions are the most popular distributions in open source community according to DistroWatch.com.

Introduction

The following table illustrates the main CMMI concepts, including Process Areas, Capability Levels and Maturity Levels, and the relationship between each other.

Table 1 - CMMI Concepts. Marked cells represent the actual possible levels. [ ------ Time direction ------» ]
Capability Levels
Are the objectives of the given Process Area:
Process Area 0- Incomplete 1- Performed 2- Managed 3- Defined 4- Quantitatively Managed 5- Optimized
Process Management Organizational Process Definition + IPPD
Organizational Process Focus
Organizational Training
Organizational Process Performance
Organizational Innovation and Deployment
Project Management Project Planning
Project Monitoring and Control
Supplier Agreement Management
Integrated Project Management +IPPD
Risk Management
Quantitative Project Management
Engineering Requirements Management
Technical Solution
Product Integration
Verification
Validation
Requirements Development
Support Configuration Management
Process and Product Quality Assurance
Measurement and Analysis
Decision Analysis and Resolution
Causal Analysis and Resolution
Maturity Levels
Are the objectives of the *whole* Process Areas:
1- Initial 2- Managed 3- Defined 4- Quantitatively Managed 5- Optimized
 

A Comparison between PAD file and Debian control file

Those two standard files represent the best practice in commercial software industry and open source community, regarding software publishing.

PAD File Structure
Figure 1 - PAD File Structure
Debian Control File Structure
Figure 2 - Debian Control File Structure

Although The PAD file is richer than the Debian Control file, the Debian Control file is used for functional purposes, rather than providing meta-data about the software package. It’s used by the dependency-check function to ensure the compatibility of the package with the target platform.

Table 2 - PAD file vs. Debian control file.
PAD File Debian Control File Suggested Modifications
Company Info Company_Name
Address_1
Address_2
City_Town
Country
Company_WebSite_URL
Contact Info Author_First_Name
Author_Last_Name
Author_Email Original-Maintainer
Contact_First_Name
Contact_Last_Name
Contact_Email Maintainer
Support Info Sales_Email
Support_Email
General_Email
Sales_Phone
Support_Phone
General_Phone
Fax_Phone
Program Info Program_Name Package
Program_Version Version
Program_Release_Month
Program_Release_Day
Program_Release_Year
Program_Type Section
Program_Release_Status
Program_Install_Support
Program_OS_Support
Program_Language
Program_Change_Info Mods, Fixes, and FAQs
Program_Specific_Category
Program_Category_Class
Program_System_Requirements Depends Software
Architecture
Installed-Size Free_Space, RAM
File Info File_Size_Bytes
File_Size_K
File_Size_MB
Expire Info Has_Expire_Info
Expire_Count
Expire_Based_On
Expire_Other_Info
Expire_Month
Expire_Day
Expire_Year
Program Description Keywords
Char_Desc_45 Description
Char_Desc_80
Char_Desc_250
Char_Desc_450
Char_Desc_2000
Permissions Distribution_Permissions
EULA
Application_URLs Application_Info_URL Homepage
Application_Order_URL
Application_Screenshot_URL
Application_Icon_URL
Application_XML_File_URL
Download_URLs Primary_Download_URL Section
Secondary_Download_URL
Additional_Download_URL_1
Additional_Download_URL_2
Priority
Recommends
Suggests
Conflicts
Replaces
Provides

Use-Case Diagram

SDLC Diagram

This model illustrates the main activities that is performed by the variant project stakeholders.

The dependency arrows between use-cases show the entire software development life cycle (SDLC).Notice that the sequence direction of the life cycle is the opposite of dependency arrows direction.Actors represent stakeholders.

Use-Case Diagram of SDLC
Figure 3 – Use-Case Diagram of SDLC

Actor Specification

Analyst

Analyst is responsible for refining requests and making designs.

Customer

A subset of stakeholders (individual, project, or organization), responsible for accepting the product or for authorizing payment. The customer is usually external to the project, but not necessarily external to the organization (SEI, 2006).Customer here is supposed to be the end-user himself or herself.

Developer

Developer is responsible for developing code according to the tasks that are generated by the Project Manager.Also he or she has to review a code developed by another developer along with a third developer.

Project Manager

The person responsible for planning, directing, controlling, structuring, and motivating the project. The project manager is responsible for satisfying the customer (SEI, 2006).Project Manager is responsible for refining designs, and generating tasks, and assigning them to developers, and release a new build of the software product.

Support

The staff that is responsible for communication with costumer.

Tester

Tester is responsible for unit and acceptance tests.

Use-Case Specification

Buy a Release

This activity is usually performed by the customer, but particularly, it’s allowed to any stakeholder to perform this activity.

Design

This activity is the mission of the analyst.

Develop

This activity is the mission of the developer.

Download a Release

This activity is usually performed by the customer, but particularly, it’s allowed to any stakeholder to perform this activity.

Filter Customer Requests

This activity is the mission of the support staff. This means that support staff can’t filter requests came from any project member (internal stakeholder).

Activity Diagram of Filter Customer Requests
Figure 4 – Activity Diagram of Filter Customer Requests

Generate Tasks

This activity is one of the project manager’s missions.

Peer Review

This activity is the mission of the developer. Two developers should review a code of a third developer.

Refine Designs

This activity is one of the project manager missions.

Refine Requests

This activity is the mission of the analyst.

Activity Diagram of Refine Requests
Figure 5 – Activity Diagram of Refine Requests

Release

This activity is one of the project manager missions.

Request a Change

This activity is usually performed by the customer, but particularly, it’s allowed to any stakeholder to perform this activity.

Test

This activity is the mission of the tester.
Accepting test should be done before unit test.

Class Diagram

Database Diagram

This diagram represents the data structure required for the whole software development process.

It’s based on an improved version of PAD file, supplied and associated with back-end classes used by the organization.

Class Diagram of Database
Figure 6 – Class Diagram of Database

User Interface Diagram

It illustrates the structure of the web interface that web developer should be committed to, in order to guarantee the compatibility with RichStyle library.

Figure 3 – Class Diagram of User Interface
Figure 7 – Class Diagram of User Interface
Figure 3 – Class Diagram of User Interface (Article)
Figure 8 – Class Diagram of User Interface (Article)
Figure 3 – Class Diagram of User Interface (Form)
Figure 9 – Class Diagram of User Interface (Form)

Component Diagram

User Interface Diagram

This model illustrates the set of software libraries that are used in RichStyle package.

Figure 4 – Component Diagram of User Interface
Figure 10 – Component Diagram of User Interface

Component Specification

RichStyle.js.php

A PHP-powered JavaScript file, stores the events’ functions of the entire RichStyle framework. It also checks the browser compatibility, and returns a list of the compatible browsers if false.

Richstyle PHP Templates

It typically includes: header.php, footer.php, /data/data.php, /data/footer.php, and /data/advert.php.

RichStyle CSSs

It’s a set of CSS files designed for web pages and HTML documents that might include lists, tables, images, codes, preformatted texts, notes, and quotes, in content area.Actually, web page usually differs from document in two main aspects:

CSS specifications allow web developer to build more than one kind of layout template for a web page, depending on the used media, i.e. one for the screen, and another one for printing media (paper).

As an implantation solution, RichStyle package offers:

RichStyle HTML Template

A template file called Web-Document.web added to the Nautilus file manager, which is an empty HTML5 file linked to the CSS files.

RichStyle Font

A set of icons for web pages, stored in a Unicode 6.0 font file.

jQuery.js

A JavaScript library designed to simplify the client-side scripting of HTML.

It simplifies the way developer handles events, Ajax interactions, and perform animations.

rsBobb’s File List System

It’s a PHP library used to generate an HTML list of files and subdirectories located in a specific directory.

rsTinyMCE

It’s a restricted version of TinyMCE, a web-based WYSIWYG HTML editor. It’s customized here to prevent user to insert messy format instructions, and deviate the common look and feel of the web page. i.e. user can’t change fonts or colors in text area.

Technically, It converts HTML text-area field to an editor instance.

rsjQuery Date Picker

It’s a JavaScript library used to generate a client-side calendar. It’s based on jQuery.

Deployment Diagram

SDLC Diagram

It’s a simple client-server architecture. This means that all the project stockholders will deal with the same user interface, but with variant permissions.

Deployment Diagram of Components
Figure 11 – Deployment Diagram of Components

Node Specification

Client PC

RichStyle library requires one of the following web browsers:

Regardless the used platform.

Database Server

Since the components are based on PHP, it’s recommended to use LAMP platform (Linux/Apache/MySQL/PHP), although PHP, MySQL, and Apache can be used under Windows platform.

Web Server

Since the components are based on PHP, it’s recommended to use LAMP platform (Linux/Apache/MySQL/PHP), although PHP, MySQL, and Apache can be used under Windows platform.

Glossary

Appraisal
An examination of one or more processes by a trained team of professionals using an appraisal reference model as the basis for determining, at a minimum, strengths and weaknesses.
Capability Level
Achievement of process improvement within an individual process area. A capability level is defined by the appropriate specific and generic practices for a process area.
CMM
A methodology for the development and improvement of an organization’s software development process. The model describes a five-stage evolutionary path of an increasingly organized process (Cadle & Yeates, 2004).
CMMI
An integrated approach to process capability maturity modeling. It supports discrete and continuous maturity modeling and integrates systems and software engineering process maturity models (Sommarville, 2007).
A process improvement approach that helps organizations improve their performance. CMMI can be used to guide process improvement across a project, a division, or an entire organization (Wikipedia.org, 2010).
According to the Software Engineering Institute (SEI, 2008), CMMI helps integrate traditionally separate organizational functions, set process improvement goals and priorities, provide guidance for quality processes, and provide a point of reference for appraising current processes.
CMMI Framework
The basic structure that organizes CMMI components, including common elements of the current CMMI models as well as rules and methods for generating models, appraisal methods (including associated artifacts), and training materials. The framework enables new disciplines to be added to CMMI so that the new disciplines will integrate with the existing ones.
CMMI Model
One from the entire collection of possible models that can be generated from the CMMI Framework. Since the CMMI Framework can generate different models based on the needs of the organization using it, there are multiple CMMI models.
CMMI Model Component
Any of the main architectural elements that compose a CMMI model. Some of the main elements of a CMMI model include:
CMMI Component Expected Required
Specific Specific Practices Specific Goals
Generic Generic Practices Generic Goals
Capability Levels Maturity Levels
CMMI Product Suite
The complete set of products developed around the CMMI concept. These products include:
Configuration Management
A discipline applying technical and administrative direction and surveillance to:
  1. identify and document the functional and physical characteristics of a configuration item,
  2. control changes to those characteristics,
  3. record and report change processing and implementation status, and
  4. verify compliance with specified requirements.
See also: configuration audit, configuration control, configuration identification, and configuration status accounting.
The process of managing the changes to an evolving software product. It involves (Sommarville, 2007):
  1. configuration planning,
  2. version management,
  3. system building, and
  4. change management.
Configuration Item
An aggregation of work products that is designated for configuration management and treated as a single entity in the configuration management process.
A machine-readable unit, such as a document or a source code file, that is subject to change and where the change has to be controlled by a configuration management system (Sommarville, 2007).
Customer
A subset of stakeholders (individual, project, or organization), responsible for accepting the product or for authorizing payment. The customer is usually external to the project, but not necessarily external to the organization.
Customer Requirement
The result of eliciting, consolidating, and resolving conflicts among the needs, expectations, constraints, and interfaces of the product’s relevant stakeholders in a way that is acceptable to the customer.
CSS
A style sheet language used to describe the presentation semantics (that is, the look and formatting) of a document written in a markup language. Its most common application is to style web pages written in HTML and XHTML, but the language can also be applied to any kind of XML document, including SVG and XUL (Wikipedia.org, 2010).
Data
Recorded information, regardless of the form or method of recording, including technical data, computer software documents, financial information, management information, representation of facts, numbers, or datum of any nature that can be communicated, stored, and processed.
Debian
Voluntary organization that produces distributions of Free Software operating systems, including Linux. Because it is a nonprofit organization run by passionate Free Software advocates, it is considered the most ethically sound of all Linux outfits. Many distributions, including Ubuntu, use Debian as the basis for their software because of its claimed reliability and relative simplicity (Thomas, 2007).
Dependency
A way of referring to system files that a program requires in order to run. If the dependencies are not present during program installation, a program might refuse to install (Thomas, 2007).
Development
Not only development activities but also maintenance activities may be included. Projects that benefit from the best practices of CMMI can focus on development, maintenance, or both.
Document
A collection of data, regardless of the medium on which it is recorded, that generally has permanence and can be read by humans or machines. So, documents include both paper and electronic documents.
Discipline
The bodies of knowledge available to you when selecting a CMMI model (e.g., systems engineering). The CMMI Product Team envisions that other bodies of knowledge will be integrated into the CMMI Framework in the future.
Enterprise
The full composition of companies. Companies may consist of many organizations in many locations with different customers.
Expected CMMI Components
CMMI components that explain what may be done to satisfy a required CMMI component. Model users can implement the expected components explicitly or implement equivalent alternative practices to these components. These are expected model components:
Generic Goal
A required CMMI component that describes the characteristics that must be present to institutionalize the processes that implement a process area.
Generic Practice
An expected model component that is considered important in achieving the associated generic goal. The generic practices associated with a generic goal describe the activities that are expected to result in achievement of the generic goal and contribute to the Institutionalization of the processes associated with a process area.
Goal
A required CMMI component that can be either: When you see the word goal in a CMMI model, it always refers to a model component (e.g., generic goal and specific goal).
See also: objective.
HTML
A publishing language; set by W3 Consortium; used by the World Wide Web (W3C, 2003).
Institutionalization
The ingrained way of doing business that an organization follows routinely as part of its corporate culture.
Maturity Level
Degree of process improvement across a predefined set of process areas in which all goals in the set are attained.
Objective
When used as a noun, the term objective replaces the word goal as used in its common everyday sense since the word goal is reserved for use when referring to the CMMI model components called specific goals and generic goals.
Organization
An administrative structure in which people collectively manage one or more projects as a whole, and whose projects share a senior manager and operate under the same policies. However, the word organization as used throughout CMMI models can also apply to one person who performs a function in a small organization that might be performed by a group of people in a large organization.
See also: enterprise and organizational unit.
Organizational Policy
A guiding principle typically established by senior management that is adopted by an organization to influence and determine decisions.
PAD
PAD is an XML-based description file for Portable Applications, aims to help authors provide product descriptions and specifications to online sources in a standard way, using a standard data format that will allow web masters and program librarians to automate program listings (pad.asp-software.org, 2010).
Peer Review
The review of work products performed by peers during development of the work products to identify defects for removal. The term peer review is used in the CMMI Product Suite instead of the term work product inspection.
PHP
An open-source server-side scripting language.
Process
Activities that can be recognized as implementations of practices in a CMMI model. These activities can be mapped to one or more practices in CMMI process areas to allow a model to be useful for process improvement and process appraisal.
Process Area
A cluster of related practices in an area that, when implemented collectively, satisfy a set of goals considered important for making improvement in that area.
Process Improvement
A program of activities designed to improve the performance and maturity of the organization’s processes and the results of such a program.
The process of making change to a process with the aim of making that process more predictable or to improve the quality of its output.
For example, if your aim is to reduce the number of defects in the delivered software, you might improve the process by adding new validation activities (Sommarville, 2007).
Product
A work product that is intended for delivery to a customer or end user. The form of a product can vary in different contexts.
Product Component
A work product that is a lower level component of the product. Product components are integrated to produce the product. There may be multiple levels of product components.
Project
A managed set of interrelated resources which delivers one or more products to a customer or end user. A project has a definite beginning (i.e., project startup) and typically operates according to a plan. Such a plan is frequently documented and specifies what is to be delivered or implemented, the resources and funds to be used, the work to be done, and a schedule for doing the work. A project can be composed of projects.
Project Manager
The person responsible for planning, directing, controlling, structuring, and motivating the project. The project manager is responsible for satisfying the customer.
The person given day-to-day control of a project under the delegated authority of the sponsor (Cadle & Yeates, 2004).
Release
Release is a type of Version
Release is a type of Version
A version of a software system that is made available to system customers (Sommarville, 2007).
Relevant Stakeholder
A stakeholder that is identified for involvement in specified activities and is included in a plan.
Required CMMI Components
CMMI components that are essential to achieving process improvement in a given process area. These components are used in appraisals to determine process capability. These are required model components:
Service
A service is a product that is intangible and non-storable.
Software Engineering
  1. The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.
  2. The study of approaches as in (1).
Software Life Cycle
Often used as another name for the software process. Originally coined to refer to the waterfall model of the software process (Sommarville, 2007).
Software Process
The related set of activities and processes that are involved in developing and evolving a software system (Sommarville, 2007).
Specific Goal
A required CMMI component that describes the unique characteristics that must be present to satisfy the process area.
Specific Practice
An expected model component that is considered important in achieving the associated specific goal. The specific practices describe the activities expected to result in achievement of the specific goals of a process area.
An integrated team sponsor is a manager (individual or team) who is responsible for establishing and providing resources to an integrated team, monitoring its activities and progress, and taking corrective action when needed. A sponsor may manage one or many teams. Team sponsors can be project managers.
The person who owns a project from a business perspective and who is usually responsible to the organization for the achievement of the project’s business case (Cadle & Yeates, 2004).
Stakeholder
An individual or group that is affected by the activities and/or the outcome of a project or an organization (Cadle & Yeates, 2004). Stakeholders may include:
Standard
When you see the word standard used as a noun in a CMMI model, it refers to the formal mandatory requirements developed and used to prescribe consistent approaches to development (e.g., ISO/IEC standards, IEEE standards, and organizational standards). Instead of using standard in its common everyday sense, we use another term that means the same thing (e.g., typical, traditional, usual, or customary).
Standard Process
An operational definition of the basic process that guides the establishment of a common process in an organization.
Training
Formal and informal learning options, which may include in-class training, informal mentoring, Web-based training, guided self-study, and formalized on-the-job training programs. The learning options selected for each situation are based on an assessment of the need for training and the performance gap to be addressed.
UML
The leader in modeling languages used for specifying and documenting the artifacts of software development process and has become the de facto standard (Deek & McHugh Eljabiri, 2005).
Work Product
Product is a type of Work Product, and consist of Product Components
Product is a type of Work Product, and consist of Product Components
a useful result of a process. This can include:
A key distinction between a work product and a product component is that a work product is not necessarily part of the product.
XHTML
An improved version of HTML; committed to XML standard; set by W3 Consortium.
XML
Standard (and its variants) used to improve compatibility between the disparate systems of business partners by defining the meaning of data in business documents (Truban, 2006).

Acronyms and Abbreviations

ASP
Association of Software Professionals
CSS
Cascading Style Sheets
CMM
Capability Maturity Model
CMMI
Capability Maturity Model Integration
DEB
Debian Package File
HTML
Hypertext Markup Language
ISO
International Standards Organization
LAMP
Linux, Apache, MySQL, and PHP
PAD
Portable Application Description
PHP
Personal Home Page, PHP: Hypertext Preprocessor
SEI
Software Engineering Institute
TinyMCE
Tiny Moxiecode Content Editor
UML
Unified Modeling Language
WYSIWYG
What You See Is What You Get
XHTML
Extensible Hypertext Markup Language
XML
Extensible Markup Language

References