- George Boole, and his Boolean Algebra.
- Claude Elwood Shannon, and his Information Theory.
- Alan Mathison Turing, and his Turing Machine.
- Charles Babbage, and his Programmable Computer.
- John von Neumann, and his Computer Architecture.
- Every computer problem is composed by 'only' three main parts: input, process, output.
- The input part needs both a layout and an interface to look nice.
- The main process must be structured, and it should support alternate logic to handle possible exceptions.
- The output also needs a layout specifically designed for screens, papers and files.
- Not all users will be allowed to use this program. So an authentication system is required. Also, it should allow many users, each one with possible different roles and levels.
- In the input part, users commit many mistakes, so validation is needed for each data that program receives.
- To ease distribution of the program, and to centralize the data store, a client/server structure is defined.
- Many users in different remote location have different languages. So, programs now need to support different types of languages, like english, spanish, etc.
- Good database software and modern platforms have been developed. So, it should be useful to make programs able to migrate to them. (db, os, platform, web, mobile, etc.)
- It's hard to create a migrable program, so we should separate our development into three layers or tiers: back,middle,front (A.K.A M.V.C.)
- There are several programming languages on which we can express many of these principles easier (C++, Java, etc.), so we should migrate our programs to them.
- We are losing performance as our user base grows up. So, we should test concepts like replication.
- Some foreign programs and systems also want to have access to our program. So, we should create Web Service or open ports for Socket programming.
- It's probable that, with all these changes, we have left some doors open because of lack of sanitation. We must protect our programs against Session Hijacking, Cross-Site Scripting (XSS), and several types of Injections (SQL, HTML, CMD)
- Many users access the same resource simultaneously, and that generates either deadlocks or data inconsistency. So, we should program taking into account concurrency and multiple threads of execution.
- Our application is growing too much. So, we should apply concepts like distributed/cloud computing, to make our programs and database expandable by simply buying extra hardware.
- OOP, EXCEPTIONS, CHANGE (files,interrupt)
---
PS: IPO (Input-Proccess-Output) ... Hajime no 'IPO' ;-P
No hay comentarios:
Publicar un comentario