www.zeroonezero.com

Reggie’s Blog

Software Engineering

Thursday, May 15th, 2008

The principles of Software engineering consist of determining the feasible approach toward managing a software application. The normal processes of engineering software involve: the interviewing process, which is the research and studying of the problem domain; and the prototyping process, which refers to the understanding of the type of data needed for each level of the problem.

A good practice is to use Data Flow Diagrams to visually articulate how each process of the problem interacts with each other to solve the big problem. Using Data Dictionaries helps to define each data prototype and conceive the stability of managing each sub-unit of the problem domain. Each sub-routine that solves a specific problem should have its own specification.

If the software application utilized a database, the engineer is responsible for designing the Database, and designing the effective output and input. The final process is the software Documentation, which involves extensive testing to explain in detail the design and documentation technique, flowcharts, pseudo code, and procedures manual.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • e-mail
  • Reddit
  • StumbleUpon
Tags: , , , , , ,

Posted in Programming, Reggie

Cross Browser Compatibility

Wednesday, May 14th, 2008

Windows, Linux, Solaris, NetWare, HP-UX, and Mac OS are different operating systems developed on different machines because of machine dependency. Since each machine has its own unique sets of code, different sets of software had to be developed specifically for each machine. What does that mean for a web programmer? Many tools are developed to solve the cross browser compatibility. Each machine browser interprets code differently and each JavaScript interpreter in each different operating system are developed differently with their own specifications. So if a new feature of the JavaScript language is available in Firefox that doesn’t mean it will be available in Internet Explorer. The fact that some browsers cannot interpret certain code at all is a big issue; so, to alleviate the stress of bugs in a web application a specification of what all web browser share in common is formulated. There are tools to validate a web page html codes and JavaScript codes. The World Wide Web Consortium (W3C) is an organization working to make a standard specification for all web browsers.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • e-mail
  • Reddit
  • StumbleUpon
Tags: , , , ,

Posted in Programming, Reggie

Model-View Control

Tuesday, May 13th, 2008

In the development of Graphical User Interface (GUI) application or web application the Model-View Controller (MVC) architectural paradigm is often used to separate logic and the user interface. An event driven application such as web application or a Windows-based application would be implemented by first the model representation which is the data collection and logical set of regimented rules that govern the data. The view representation is the Graphical User Interface that users have to interact with and the controller is the events that are triggered behind the scenes as the user interacts with the application, which involves the communication between the model component and the view components. The Model-View Control Concept has been widely adapted in many languages such as the Java Enterprise Edition, mainly to solve the problem of interdependencies between all components of the application, which can have a cascading effect when adding more data and logic. The problem is often application maintainability, where the Model-View Control Concept comes in and separates business logic code, data access code, and representation code.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • e-mail
  • Reddit
  • StumbleUpon
Tags: , , , ,

Posted in Programming, Reggie

Programming Using IDE

Monday, May 12th, 2008

An Integrated Development Environment (IDE) is an application tool with the capability of facilitating a computer programmer with the environment of writing high language programs in their syntactic form and their regimented semantics. An IDE usually composes of a source editor, a compiler or interpreter, and a debugger. Working as a web programmer at Dynamic Digital Advertising (DDA), the main tool I’ve used to write code is called Abode Dreamweaver CS3. Dreamweaver CS3 supports web technology frameworks such as CSS, JavaScript and also various server side script languages such as ColdFusion, PHP, and ASP. At Dynamic Digital Advertising, the facility of Dreamweaver CS3 I mostly use is the server side script language framework of ColdFusion, which makes writing ColdFusion templates very easy. The IDE catches syntactic errors very easily. One thing I found difficult with the IDE is the inability to debug script templates at the local computer. Which makes sense because only the server has the script compiler or debugger.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • e-mail
  • Reddit
  • StumbleUpon
Tags: , , , , , , ,

Posted in Programming, Reggie

Parallel programming Paradigm

Thursday, May 8th, 2008

Parallel Programming algorithm is often implemented to speed-up an applications runtime. Amdahl’s law and Gustafson’s law state that if doubling the number of processing instructions in a given application, it should reduce the runtime to halves; hence the two are inversely proportional to each other. Of course considerable measure in the software engineering must be met when implementing parallel algorithms for an application. Knowledge in the understanding of data dependency must be obtained, understanding how the application shares resources to prevent software instability. Engineering software using parallel programming concept such as thread, which are subtasks, is a challenge for the programmer because of the many risk involved in achieved an optimal application within a defined specification. A programmer must consider a thread safe algorithm in the implementation cycle by considering all possible obstacles such as race conditions, mutual exclusion, synchronization, slow down and data consistencies.

Extensive knowledge of the computer specific domain of expertise must be ascertained such as bit-level parallelism, instruction-level parallelism, data parallelism. Such knowledge will serve well in implementing a successful application.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • e-mail
  • Reddit
  • StumbleUpon
Tags: , , , , , , ,

Posted in Programming, Reggie

Spanning Tree

Wednesday, May 7th, 2008

A spanning tree is a graph in computer science which composes of vertices and edges with connected nodes that form no cycle in the graph. A more refined definition would be that a spanning tree is synonymous to a graph that has a minimal or maximal set of edges that has no cycle which connects all vertices. The study spanning tree has derived some important algorithms such as depth-first search (DFS), and breath-first search (BFS). Depth-first search (DFS) is a searching algorithm that starts at the root of the graph or tree and explores every possible branch before traversing back to the root to explore the next branch. The Breath-first search (BFS) is another searching algorithm which also starts at a defined root but explores all neighboring nodes and determines each unexplored nearing nodes and explores them to reach the goal. Of course each of these algorithms was developed to optimize a way to traverse a graph or tree. Many problems were used to simulate the algorithm such as the Hamiltonian path problem, which focuses on whether a given graph has a Hamiltonian path.

A programmer spends most of his/her time studying algorithm and implementing them for each set of problems that come up.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • e-mail
  • Reddit
  • StumbleUpon
Tags: , , , , , ,

Posted in Programming, Reggie

Knapsack Algorithm

Tuesday, May 6th, 2008

As the human understanding of many processes throughout their field expanded, computer science expanded through that empirical data and extrapolated from that idea or experiment. For example, genetic programming is an algorithm developed from the simulation of biological processes, using greedy algorithm. Many of these algorithms are developed from mimicking how experts from their field approaches a problem. The Knapsack algorithm is derived from statistical and a probabilistic analysis often the field of business, combinatory, complexity theory, cryptography and applied mathematics. Each field of study thrived on a combinatorial optimization of the problem, by analyzing every possible outcome for their optimal solutions. The Knapsack algorithm is formulated for problem of this form, given a threshold Theta, how many alphas can be accumulated, given that the sum of the alpha should not exceed, threshold Theta, where alpha has many different values. Many Computer Science theorists have explored this approach of solving many problems in the dynamic programming solution. A brute force approach is often used to solve a knapsack problem if the complexity is not polynomial.

Often a programmer has to classify a problem and decided which approach is optimal, which algorithm to implement to solve the problem.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • e-mail
  • Reddit
  • StumbleUpon
Tags: , , ,

Posted in Programming, Reggie

Interpreter vs. Compiler

Monday, May 5th, 2008

We know that the computers can only understand binary numbers zero or one. An instruction to move or add to register memory would consist of several sequences of binary numbers: 0110010010101010101010000111001 for example. High level programming languages use a compiler or an interpreter to translate their instruction into machine code. Machine codes are independent to the machine they are in because of their architectural specification. An interpreter executes the source code written in a high level language, C++ for example, directly, while a compiler translates all of the source code into machine code and executes the machine code application. Both methodologies have their strengths and weaknesses, while in some situations an interpreter might be very optimal in terms of speed. Now a compiler spends most of its time analyzing and processing the program, but once the machine-specific binary code program is achieved, the program will be fast in execution. The interpreter translates each code and executes at the same time and can extrapolate base experience with other similar blocks of source code, which make the translation much faster. As more programming becomes complex in number, the methodology of interpreter and compiler is combined for optimal results. Many studies in the research of interpreter and compiler optimization have result in faster algorithm and faster programs.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • e-mail
  • Reddit
  • StumbleUpon
Tags: , , , ,

Posted in Programming, Reggie

Implementing e-Commerce Web Application

Thursday, May 1st, 2008

The development of an e-Commerce Web Application is complicated - the more characteristics that defines a products price the more complex to engineer such an application intuitive to the end-user. I have had such experience with a project that became more complex as many products that have many different characteristics that define which set of regimented should applied to it. This project I was working on was a jewelry site. I was able to learn many things about jewelry, in terms of their metal type, how they should be calculated base on pure metal or a percentage of metal purity. Many restrictions and rules had to be applied to some products which make the programming more complex to be implemented. The difficulty in the implementation process always goes back to optimization because the problem becomes more complex as the set of rules are being more and more refined for certain situations.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • e-mail
  • Reddit
  • StumbleUpon
Tags: , , ,

Posted in Programming, Reggie

Optimizing Web Application

Wednesday, April 30th, 2008

As an application becomes more complex and scalable there’s often a need to optimize the performance delivery from an End-User perspective. Optimization often involves an analysis of the whole system to determine what is hindering performance. A Web Application performance is measured by its ability to support multiple transactions and can support many safe threads and must be implemented using fast data retrieval algorithm. Many server side techniques can be utilities to remedy performance; once such technique is data caching strategies which can lower memory footprint and boost up application performance. The Data Caching mechanism is extremely useful for large queries that retrieve sizeable data, by caching such query would reduce considerable traffic to the database server and improve performance. A programmer must always utilize the most optimal and proficient algorithm in development cycle of a web application because as the application becomes more scalable the more difficult it becomes to maintain the application infrastructure in the optimization phase.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • e-mail
  • Reddit
  • StumbleUpon
Tags: , , ,

Posted in Programming, Reggie

Search


type and hit 'enter'