Monday, 22 April 2013

The use of Software Enterprise and Development in the Organization


By Raul Bernardino (Dino)

Abstract:
In average, many organizations are fallen into the trap of the software application features, its advertisement, based on incomplete information, and software provider persuasion (marketing staff’s skills). They (Institution, Organizations, Company, and Government entities) do not think twice to have and implement the applications immediately in their business environment. Moreover, Information Technology (IT) planners also contributed to the failure of IT implementation projects in organization. Most of IT planners without have enough soft skills such business analysis, leadership, risk management, change control, etc. that can helps to mitigate future system integration and its ward investment.

The larger or well-known organizations tend purchased and customized software enterprise for their business purposes from outsource. The small software enterprise company is most likely to purchase from big software industries. While others, may use several sources of the software enterprise to fulfill their needs.

It is important that the investment in the software enterprise application should be fitted into organization requirements and needs. The quality output of any software enterprise development is relatively varied. This is because, each of the individuals have a different interpretation on the result of software development. The involvement persons in developing or in buying will be giving a high mark on the software enterprise quality, while others who are not involved, will be marking with a low quality.

Since software enterprise and technology industries developed, many methodologies and approaches have been introduced. They are waterfall, spiral, prototypes methodologies, etc. Each methodology has its own advantages and disadvantages.

Introduction:
Software enterprise development is an increasingly persistent part of our daily lives. In the USA alone, the software products and services exceeded $140 billion in 1998 with more than 2 million software programmers employed. This includes not “only Microsoft or Oracle but within all IT departments in the USA” (MacCormack, 2001).

In the Timor-Leste alone has been introduced various software enterprise. Timor-Leste government has been invested in this sector with significant amount money. Let’s name several of them; Free Balance as finance core business application, Portals, e-procurement, etc. Many of them have different platforms whereas no scalability, no cross platform, no workflow, and open standard capabilities.   

In obtaining any software application for the organizations, the management or CEOs have to decide either to develop in house, to develop from outsources, or to purchase from the software industries.

The decision is based on the organizations’ needs and requirements which have been documented or gathered by business and system analyst.

Buy a Software Enterprise: 
In the largest organizations most likely software enterprise application tends to be both “custom developed and procured from outside sources. Small business software applications are most likely purchased. Others businesses may use various sources of the software applications to fulfill their own needs” (Hall and Fernandez-Ramil, 2007). According to Martin et al (2005) that the investment in the “enterprise system packages with integrated modules became a major trend by the late 1990s”.

There are several advantages of purchasing software enterprise application as follows:
  1. Cost savings
  2. Faster  implementation
  3. A possibility of better support for generic business functions


The disadvantage of the purchasing software enterprise applications is the lack of an exact fit in with organizational needs as “building custom software can result in fewer trade-offs and a better fit to the company’s needs” (Martin et al, 2005). New purchasing software enterprise application may not have a scale-ability, cross platform and open standard capabilities; therefore, organizations will spend an additional cost for the training and users spend additional time to re-entry the same amount of data that have been in the system. 

Develop Software Enterprise:
The changing of the software application in organizations is based on the business operations’ needs - often to be a more competitive institution. For instance, repair the bugs and errors, adapt the application, and add new requirements.
The Software Changing Research Result Graph
Software Changing Research:
Sommerville (2004) described in his research on software changes, “error and repairs application is 17 percent, adapting software application 18 percent, and adding functionality or modifying the functionality of the software applications is 65 percent. The research found that the majority of software application changes are on system application modification and adjusting to the business requirement and needs.

“The size of the software and the complexity can grow very quickly, only limited by the productivity of the people developing the software and the capacity of the computer [on] which [it] will be executed” (Hall and Fernandez-Ramil, 2007:304).

 Software Development Quality:
 “The high quality means fitting to the project purposes and satisfying the expectation of the stakeholders and it is not cause damage to them. The external quality process is needed in order to improve the overall quality enhancement and it also creates secondary complimentary views on the system that embodied in the implementation” (Hall and Fernandez-Ramil, 2007:363).

 
The Software Quality Diagram
The internal factors of software quality are built in the modular, able to maintain, testable, re-useable, adjustable, interoperable, readable, and understandable. The process factors of software quality are able to improve, able to track, able to maintain, predictable, and repeatable.  The external factors are efficient compare to other system applications, the functionality of the system, and reliability of the system, adaptability, robustness, and accuracy.   
  
As organizations adopt new computer aided design technologies, “the development processes for many software products increasingly resemble those found in the software industry” (MacCormack, 2001). Therefore, IT managers and CEOs need to be aware of the methodologies for developing and deploying software products and services.

There are many methodologies and approaches below for the organizations to use. However, more important than any one methodology is how to use people and resources to create and maintain the software applications. The software development methodology details are explained below:

Traditional Models (Code and Fix Model):

Code and Fix diagram
This model is simple and has been commonly used. The advantages are you can start developing a software application with general or specific ideas. By using this method you do not need to hire an expert in planning, testing, or documentation. Anyone who has knowledge of coding can start writing codes. Unfortunately, since it has no documentation, we cannot assess the progress until it is completed. Additionally, this method does not fit a complex project.

 The waterfall Model:
Waterfall model
This model has highly structured features and sequential processes. We cannot develop tasks randomly; it has to follow the steps of the process. We have to complete all tasks in a stage (for example, stage 1) before moving on to the following stage (in this case stage 2). For instance, in this model, we have to complete all requirement specification and verification before moving on to the software design stage.

This model is adopted from Japan and is named for a Japanese style of presenting sliced, raw fish. This model has overcome some of the weaknesses of the waterfall model. For example, you may start software design before considering the requirements, which brings some flexibility to the development of the software application. However, this model may cause confusion in the other phases, is not particularly efficient, and can leave developers guessing at the overall progress, or even the progress of the individual stages.

The Waterfall with Sub-projects Model:
Sub-project Model
This waterfall with sub-project model is even better in architecting the logical dependence in the subsystem development. This model allows parallel planning in the waterfall model. However the weakness of this model is the possibility of unforeseen inter-dependency among sub-projects.  




 The Spiral Model:

Spiral Model

This is an incremental model of developing a software application. The first process starts from center position and moves clockwise across the area. The first circle, or transversal, is for requirement planning. Each circle has planning, evaluation, risk analysis, and engineering or prototypes. “The first round is the stage of feasibility study. The second round is [for the] concept of the operations. The third round is the top level requirements specification”, (Boehm, 1998:65-69).  Each loop represents a phase of the process. For instance, the inner loop may be feasibility, the next loop requirement, the following loop design, etc. Bear in mind that development in each cycle has to exercise the risk analysis. As soon as the design stage begins, we have to create the testing plan and user documentation. 

Staged Delivery Model
The staged delivery model defines specification with delivery stage. The entire product design specifies that development should take place in the early stages. The advantage of this model is that the user or customer gets functionality earlier than in other models. You have to be careful, however, in the planning and design phases. For instance, component B is schedule for stage 3 but needs to be included in stage 2. 

The Prototyping Model:


Prototype Model
This model’s principle is to help customers and developers understand the system requirements. It includes back to back testing, detection and identification of missing or confusing services, and development of a prototype as a basis for delivering a system specification and working system early available in the process.

The Hybrid Model:
 In the development of the large or complex system we may use several models simultaneously. A prototype may be used for high risk assessment. The waterfall can be used for developing systems that are well understood, and life cycle can be used to determine the organization of the software.

The Agile Model:
The agile model provides several approaches such as an Adaptive Software
 Development (ASD), Crystal methods, Dynamic System Development Methods
 (DSDM), eXtreme Programming (XP), Feature Driven Development (FDD), Lean
 Development (LD), and Scrum models. Here, we will focus on ASD and DSDM.  The
 ASD life cycle focuses on developing working software one small piece at a time. The
 customer describes the functionality and features of the system and developers 
develop it at each stage. The diagram below shows the ASD life cycle.

The ASD Life Cycle Phases Model


The DSDM provides an overall framework of the software project developments. The principles of DSDM are users’ involvement and business rules, team decisions; focus on frequent product delivery, iterative and incremental development that fits the business purposes, reversible changes, and baseline requirements for software development, integrated testing throughout the system, and collaboration and cooperation between all stakeholders. The diagram below shows the DSDM method.
  

The DSDM method adopted from (Highsmith, 2002a) Model       


The Developer:
The developers during developing software are using several software processes model. The fundamental concept of the software engineering is the SDLC, which is stand for Software Development Life Cycle. The life cycle of software development is developing, using, and maintaining. The common pattern of the industries is products. The only differences are industries production for maintenance is repair process while in the software production, the maintenance is upgrading or updating or correcting.

There are lot of methodology and approach as mentioned above for developing enterprise software. However, there are two common software engineering methodologies that developer and software industries use to use. They are Waterfall and Spiral model.

The Waterfall methodology is providing a linier and sequential or step by step move forward development. As the matter of fact developer is developing software with phase by phase, likewise water is running from high level to low level and it will never go back.

For instance, developing software by using waterfall methodology as follows:
Requirement engineering: The system developer will elicit all requirements in the steps which are to be developed. As other model of processes, those requirements need to put into the functions and challenges that system need to fulfill. It includes analyzing the end user needs.

System design: System designer is involving in the architecture of design and the system has to be proper. In this section, it has to be a system definition, selection of hardware platform, operating system etc.

Software design: The software design is based on the system architecture in which can be defined software blocks and break it down into the code modules. The describe interface and interactive modules including functionality for instant system state, start up, shutdown, output, and error conditions.

Coding: The code is based on software design document. The developers are starting code the unit in small part of the system functions. They (units) are stand alone and later to integrate in software package form.

Software Integration and verification: In this section, each unit that has been developed, it needs a testing of the functionality. Verify each unit is meeting the requirements.

System Verification: In this section, verification for whole system is needed; it includes verifying the original hardware and environment.

Operation and Maintenance: In this part the developer handover to the user to test if all requirements are met the need or otherwise to need change to meet customer needs.  In this stage of waterfall methodology is never ending.

Weakness of waterfall method:
  • It is very important to put to gather all possible requirements at the first stage.
  •  Iteration only happen in the same stage
  • There would be very big maintenance at last stage


While in the Spiral method the process is staring for the center position and move across area clockwise.  The first traversals maybe place for requirement and planning.
  • Planning : to define recourse, milestone, and schedule
  • Evaluation: in this section developer is evaluating and analyzing all requirements and determine goal and task. It includes defines all possible alternatives.
  • Risk analysis: In this section, the developer is to asses both management and technical risk
  • Engineering: In this section, developer design and implement one or more prototypes or sample of application.


The software purchase or development decisions are based on several criteria such as available information from elicitation, being able to predict future features, available technology, and the scientific development. Purchasing or developing software applications is also based on having sufficient knowledge in the field.

In the situation where the decision is made to buy a system application, the outcome may be that it will not fully fit with the business’ requirements and needs. While, on the other hand, a decision made for developing a software application may take more time to develop.

There are situations where a group decision is necessary. For instance, if the decision involves, the imposition of regulations, technology specification, or lack of available knowledge, the organization will need to come to an agreement. The diagram below shows the differences between software development and purchase.
Build or buy decision making Diagram

Monday, 18 March 2013

Digital Image Processing


By Raul Bernardino (Dino)
Abstract: Digital image processing methods stems from two principal areas of the applications. The first area namely the improvement of the image for human information and interpretation and secondly, image processing data for storage, transmission, representation for autonomous machine perception.  We will also bring you some historical background of the image processing, scope, and component of image processing.
Introduction: Picture is the most common and convenient means of conveying or transmitting the information. An image or a picture is worth a thousand words. Pictures are concisely conveying information about positions, sizes, background, and inter-relationships between objects. They are representing two- and three-dimensional information that we can recognize as objects. Human beings are good at deriving information from such images, because of our innate visual and mental abilities. It is about 75% of the information received by human is in illustrative or graphical forms.
Background: The historical background is stated that from Institute of Electrical and Electronics Engineers (IEEE) – the technology advancement organization is a first primer professional society for signal processing scientists and professionals since 1948. Since then, there are several studies being done for the optical technology.
For instance, a group is located in Universidad de la Frontera and their main goal is to develop new optical methodologies and technologies that applied to the image processing in infrared and visible spectrum from live and inert material. The processed information is oriented to propose technological transfer and linkage by alternative solutions for non-destructive and non-invasive diagnostic that allows fast and safe control process in industry and agriculture. Between these photonics methodologies, this group is developing: Optical and digital pattern recognition in visible and infrared region; Infrared thermography image processing applications in fruits; diffractive and polarized images optics; Image processing by optical dynamic bio-speckle applications in seeds. Additionally, they develop optical sensors to agriculture industry is an up-and-coming area from collaborative results of this line. Currently, this line is formed by four researches of Physics Department and Electrical Engineering Department, in three laboratories. Also, this line is interested in to increase the fundamental research, with the training of human resources.
Scope of Image processing: The Scope: The IEEE Transactions on Image Processing covers signal-processing aspects of image processing, imaging systems, and image scanning, display, and printing. It is including a theory, algorithms, and architectures for image coding, filtering, enhancement, restoration, segmentation, and motion estimation; the image formation in tomography, radar, sonar, geophysics, astronomy, microscopy, and crystallography; image scanning, digital half-toning and display, and color reproduction.
This is important for computing professionals to understand how it is processed in order to be able to repair the existing pixel of the images. For instance, in the war scenarios the front line sends digital images to the command center in order to develop a strategy for next movement of combat operation. It will be a cost of life and other resources. Therefore, the images have to be high resolutions and during transmission of the packages or sending data to the destination, data has to be sealed or protected, or even encrypted and in secure mode.

Another example for health care issues such as doctor was not in the place and patient needs urgent prescription from a doctor. He / she (the doctor) can access patient image data from far end. This data image has to be precise and have high quality for diagnosing. Moreover, doctor can use a video conferencing tools to discuss with the team of doctors in ground by using same source of image and determine the diagnoses and so on.

“Most investigators and students actively involved in the image processing and analysis field or those who would like to participate in this field will be pleased to have this handbook as a reference. ...I am sure that this handbook will find its place in most academic radiology department libraries and on the shelf of investigators in the field." -ULTRASOUND IN MEDICINE & BIOLOGY (May 2001)


Reproducible research: The Transactions encourages authors to make their publications reproducible by making all information needed to reproduce the presented results available on-line. This typically requires publishing the code and data used to produce the publication`s figures and tables on a website. It gives other researchers easier access to the work, and facilitates fair comparisons. More information on a practical setup.

Multimedia content: It is now possible to submit for review and publish in Xplore supporting multimedia material such as speech samples, images, movies, matlab code etc. More information under Multimedia Materials at the IEEE Author Digital Tool Box
Digital Image Acquisition: 

The following picture shows how the number of pixels determines the resolution of the image:
Image with 35 pixels



 
Image with 2400 pixels



Conclusion: Image processing is an art work. A professional in this field has to be passion in order to give a maximum result. Pictorials are more informative or rich of the information and it is easy to convey the information to human being. The technology helps human being to capture, process, and record the image information.  It is also helps to reconstruct or to rebuild the current low quality images or captures becomes a better quality objects. Images are also helps to make a precise decision toward the objects.

References list:
Author Digital Tool Box, [Internet]. Available from: http://www.ieee.org/publications_standards/publications/authors/authors_journals.html (Accessed: 7 March 2013)
Vandewalle,P. Kovacevic, J., Vetterli, M. (2009), Reproducible Research in Signal Processing - What, why, and how, [Internet].  Available from:

Universidad de la Frontera(2013),  Digital Imaging Processing, [Internet].  Available from: http://www.cefop.cl/research-and-develope/lineas-de-investigacion/procesamiento-de-imagenes/
(Accessed: 7 March 2013)
Ted’sPhotographics (2013) The Science of Photography – Digital Image Processing, [Internet].  Available from:   http://www.ted.photographer.org.uk/photoscience_digital.htm  (Accessed: 7 March 2013)
Wikipedia (2013) Algorithm, [Internet].  Available from: lhttp://en.wikipedia.org/wiki/Algorithm (Accessed: 7 March 2013)


Tuesday, 26 February 2013

Interpreter vs Compiler

By Raul Bernardino

Introduction:
[1] In the computing field, the commands or instructions which are given by the users are normally use a high level language, whereas the computer machines will only  understand the instructions in the binary formats.  The computer language is known as machine language. The sole purpose of the compiler and interpreter is to convert the user high level language into a machine level language so that it makes the computer understand and executed users’ instructions.

 [2] The translation from high level to a low level machine language calls translator. The translator will be translating all identifier of high level collection into the machine language. The translator act similar to secondary generation of assembler, however, it does not do a compiling.

The assembler uses to compile the machine instructions into short sequence of activities in one single file. The assembler is compiling the instructions, calls compilers.
The other translator calls interpreter. This interpreter is doing an execution of the instructions of the program from high level generation without translating into the machine language.

There would be more delay on interpreting instructions from high level and executing compare to transiting or compiling into low level of programming and execute.

[3] Below diagram shows the compilation and interpretation:


By implementing these two distinctions of the interpreting and compiling, it has its own merits and weakness. If we are using an interpreting mode e.g. the web animation, it will be taking further delay of displaying in other end of the machine. It is because the source codes are in different location. Meanwhile, compiling web animation the source code will be going with the web site, however developer have to think of how it can be display in the far end machine while he or she have no idea what type machine is in the far end. Maybe she or he the developer has some assumption of the type machines. But it is unrealistic. Therefore, more developer are using interpreting mode today.

[4] Why is that most of developer are using interpreter mode in design compare to compiler? There are several reasons as follow:

The Interpreter:
  1. Easier to build an interactive development of the environments
  2. Easy to execute the instructions codes which are they are executed statement by statement
  3. Become a port to different the OSs and processor.
  4. The bytecode is portable to any system with an interpreter port.
  5. Bytecodes are tightly packed   
  6. The only weakness is boring performance
 The compiler:
  1. Compiling whole program in to the machine language
  2. Run in the specific operating system an processor
  3. Machine codes are not dense
  4. Run more faster

References:

[1] What are the differences between Compiler and Interpreter? [Internet]. Available from: http://readanddigest.com/what-are-the-differences-between-compiler-and-interpreter/ (Accessed:  6 November 2010)

[2] J. Glenn Brookshear, (2009) Computer science: An Overview. 10th Edition, Boston: Pearson Addison Wesley, Ch 6, P.282 and P.312

[3] What is the difference between compiler and interpreter? [Internet]. Available from:

http://stackoverflow.com/questions/3618074/what-is-the-difference-between-compiler-and-interpreter (Accessed:  6 November 2010)

[4] The difference between compiler and interpreter [internet].Available from: http://www.antlr.org/wiki/display/ANTLR3/The+difference+between+compilers+and+interpreters (Accessed:  6 November 2010)

 

Monday, 25 February 2013

Object Oriented Programming Languages


By Raul Bernardino

In the general, when we are developing system applications or computer programs with the object oriented or structured programming languages, we will meet several advantages and disadvantages. [1] Pascal and Assembler are examples of structured programming languages. Pascal is most popular uses to teach and helping students in the formal education. The structured programming language depends on the series of statements of the commands in which they are straight and cannot redirect to execute the statements in other area of the programming.

[2] If we compare the structured of the programming to the object oriented programming languages, the object oriented contains of the modular, which are can be reusable. As it’s a modular, it can be executed at several points, through-out the program. Moreover, it means, we do not need to rewrite the complexity of classes or functions. What we need to do, is to reuse them (modular). The popular object oriented languages are Java and C++.

The advantage of using structured programming:  It does not need to classes and complex functions. It is simply writing a straight forward piece of code, and totally depends on the purpose of having the program or application. We have to define program with a flexibility of creating function and procedures.

The disadvantage of using structure programming:  It will be taking up more time and energy to developing codes. We have to rewrite similar procedures or functions during programming code because it is not a reusable section. The procedure, function, and code are executing sequential. Therefore, you may found several similar codes repeatedly in the program. In short, we have to recreate same functions or procedures for same program.

The advantages to using object oriented programming languages: It consists of modular. It allows us to write a reusable piece of codes such as a function or a class, and it can be reuse multiple times in one program without to rewrite the whole process. This can save the developer much more time and effort in the development process. It can be distribute among the applications in the same platform which calls Application Program Interface (API). Some functions can be recalling from another program without recreate them.  In the short, create a program as an object oriented naturally comes with events, function, method or modular, procedures, and property.

The disadvantages of using an object oriented programming language: Probably one the disadvantage is full of complexity.

It is not recommended to use object oriented languages when developer is developing smaller or less complex programs or programs that are built to run on low powered computers, however it is recommend to use object oriented when it is more complex and programs or applications that runs in more powered computers.

[3] The object oriented language paradigm is reflecting to the human way of thinking and conceptualizing. Why is that, it is because in the object oriented language often use the exiting modular to it owns purposes of programming.
Talking about some keys concept of object oriented language, I can analogy them as a book.  

[4] Object: Gray Booch, (1991) define the object as “something you can do things to”. In this case, book is an object for us to read or write. Car is an object for us to use or drive.

[5] Function: the book can give us an answer or give us a reference of knowledge. The function in the object oriented is a program unit whereas we can call. It will be processing the inputs according to the function and it will return or giving an output or an answer to calling program unit.

Procedure: Who allow having or can read the book. How you get the book (buys it or borrows it). The book (control) is transferred to you to take over once you finished the reading you return to the owner. In this case procedure takes over the control and will return the result to the calling program unit once it processed.  

Event: It is a processing of reading and writing a book. An event is away for class to provide notification when something interest come about. 

Method: How you would like open or close the book. The Method is a collection of procedures in which contains a series of statements whereas to describe how the object is respond to the range on various event.

References:
[1] Janea Tyalor, Computers are Fun [internet].Available from: http://janeataylor.wordpress.com/2005/12/02/structured-vs-object-oriented-programming/ (Accessed: 5 November 2010)
[2] J. Glenn Brookshear, (2009) Computer science: An Overview. 10th Edition, Boston: Pearson Addison Wesley, Ch 6, P.281
[4] Booch, Grady. Object-Oriented Design with Applications. The Benjamin/Cummings Publishing Company, Inc. Redwood City, CA. 1991, P. 516 [internet]. Available from: http://www.umsl.edu/~sauterv/analysis/ooa.html#REF_1  (Accessed: 5 November 2010)
[5] Key Object-Oriented Concepts and how to use them in Visual C# [Internet]. Available from: