Personal notes on software development.
For Java technologies check my dedicated site

Pages

Some usefull resources: IEEE - Standards Glossary

  • Ad hoc: em engenharia de software, a expressão ad hoc é utilizada para designar ciclos completos de construção de softwares que não foram devidamente projectados em razão da necessidade de atender a uma demanda específica do usuário, ligada a prazo, qualidade ou custo;
  • Architecture vs Design there seems to be some different views about this 2 concepts. I tend to sympathise with Natty Gur definition for its simplicity:
    there are two main steps while designing a system: the first one is architecture and the second one is designing.

       - Architecture :  sets which functionality the system should perform, split the functionality between components, set how components should behave and communicate in the system context, set the physical location of components and finally choose the tools in order to create components.

       - Design : while architecture deals more with the wide picture, design should drill down in to the details relating to implementing certain components. Designing of components end up with classes, interfaces, abstract classes and other OO feature in order to fulfill the given component tasks.

    Both architecture and design got patterns available to solve given problem. While design pattern are more about classes and interfaces needed in order to create component, architecture patterns on the other hand are more about behaviour of the system.
  • Audit is the monitoring and recording of all user actions on a database. You can base auditing on individual actions, such as database backup, change of user logins, insert, etc. or on any combination of factors;
  • Batch File: In DOS, OS/2, and Microsoft Windows, batch file is the name given to a type of script file, a text file containing a series of commands to be executed by the command interpreter.
    Batch files were added to ease the work required for certain regular tasks by allowing the user to set up a script to automate them. When a batch file is run, the shell program (usually COMMAND.COM or cmd.exe) reads the file and executes its commands, normally line-by-line.
    This files use the extension ".bat" or ".cmd"
    Unix-like operating systems (such as Linux) have a similar type of file called a shell script.;
  • Blueprint(noun) something which acts as a plan, model, or template for others: "the scheme was a blueprint for future development programmes";
  • Bottom up Development: see "Top Down Development"; 
  • Business Inteligence
  • DAL (Database Abstraction Layer/Data Access Layer): is a software architecture layer commonly provided as a API which unifies the communication between a computer application and databases such as MySQL, PostgreSQL, Oracle or SQLite. Traditionally, all database vendors provide their own interface tailored to their products which leaves it to the application programmer to implement code for all database interfaces he would like to support. Database abstraction layers reduce the amount of work by providing a consistent API to the developer and hide the database specifics behind this interface as much as possible. There exist many abstraction layers with different interfaces in numerous programming languages;
  • CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart). A type of challenge-response test used in computing to ensure that the response is not generated by a computer. Example: 
  • CASE (Computer-Aided Software Engineering): The term can refer to the software used for the automated development of systems software, i.e., computer code. The CASE functions include analysis, design, and programming. CASE tools automate methods for designing, documenting, and producing structured computer code in the desired programming language;
  • Control, same as widget. Microsoft often uses the term Control instead of widget;
  • CRUD (Create, Read, Update and Delete): are the four basic functions of persistent storage. Sometimes CRUD is expanded with the words retrieve instead of read or destroy instead of delete.
  • CSS: Cascading Style Sheets; 
  • CVS, ou Concurrent Version System "é um sistema de controle de versão que permite que se trabalhe com diversas versões de arquivos organizados num diretório e localizados local ou remotamente, mantendo-se suas versões antigas e os logs de quem e quando manipulou os arquivos. É especialmente útil para se controlar versões de um software durante seu desenvolvimento, ou para composição colaborativa de um documento." NOTA: ver também SVN;
  • Design: see "Architecture vs Design";
  • Database Schema: "What's the difference between a schema and a database?" In fact, the MySQL command CREATE SCHEMA is a synonym for CREATE DATABASE. Think of a schema as a blueprint that defines the contents of the database, including tables, relationships, views, etc. A database implements the schema by containing data in a way that adheres to the structure of the schema. This is similar to the object-oriented world of Java classes and objects. A class defines an object. When a program runs however, objects (i.e., class instances) are created, managed, and eventually destroyed as the program runs its course.
  • Diff tool: a file comparison utility that outputs the differences between two files. For example, NetBeans IDE has a built in diff tool (go to Tools -> Diff);
  • Dirty Read (databases): "After a lock is set, it remains in force until the transaction is committed or rolled back. For example, a DBMS could lock a row of a table until updates to it have been committed. The effect of this lock would be to prevent a user from getting a dirty read, that is, reading a value before it is made permanent. (Accessing an updated value that has not been committed is considered a dirty read because it is possible for that value to be rolled back to its previous value. If you read a value that is later rolled back, you will have read an invalid value.)"
  • Favicon: (short for "favorites icon"), aka shortcut icon, Web site icon, URL icon, or bookmark icon, is a file containing one or more small icons, most commonly 16×16 pixels, associated with a particular Web site or Web page.
  • GUI: Graphics User Interface;
  • GUID (Globally Unique Identifier) same as UUID;
  • Heartbeat Mechanism: To monitor the connection, the connector client sends periodic heartbeats (ping requests) to the connector server that acknowledges them by sending a reply (ping responses). If either heartbeat is lost, the components of the connector retry until either the connection is reestablished or the number of retries has been exhausted.
  • Internationalization and Localization: are means of adapting computer software to different languages, regional differences and technical requirements of a target market. Internationalization is the process of designing a software application so that it can be adapted to various languages and regions without engineering changes. Localization is the process of adapting internationalized software for a specific region or language by adding locale-specific components and translating text.
  • Interoperability: Ability of a system or a product to work with other systems or products without special effort on the part of the customer. Interoperability is made possible by the implementation of standards.
  • ISO 9000: The ISO 9000 family of standards represents an international consensus on good management practices with the aim of ensuring that the organization can time and time again deliver the product or services that meet the client's quality requirements developed by an ISO Technical Committee. These good practices have been distilled into a set of standardized requirements for a quality management system, regardless of what an organization does, its size, or whether it's in the private, or public sector.
  • ISP: Internet Service Provider;
  • LAMP: Linux, Apache, MySQL and Perl/PHP/Python (ver WAMP);
  • Localization: see Internationalization; 
  • Loosely Coupled: in OOP when two objects are loosely coupled, they can interact, but have very little knowledge of each other. Many design patterns aim to achieve this goal (ex. the Observer Pattern provides an object design where subjects and observers are loosely coupled). Loosely coupled designs allow us to build flexible OO systems that can handle change because they minimize the interdependency between objects.
  • Loosely typed language: This means that variables do not have to be declared before they are used, and that the language always converts variables to the type required by their context when they are accessed. An example of such a language is PHP;
  • Method overload (not to be confused with "method override"): happens when the same class has two (or more) methods with the same name but with different parameters. Ex.:
    public void myMethod(int param){}
    public void myMethod(string param){}
  • Method override (not to be confused with "method overload"): happens when a sub-class substitutes (overrides) a base class method (same method name and parameters);
  • OOP: Object-oriented programming;
  • OOAD: (Object Oriented Analysis and Design): is a software engineering approach that models a system as a group of interacting objects. OOAD is about analyzing, designing, and writing  software: that's easy to reuse, maintain, and extend; software that lets you add new features without breaking the old ones. Covering topics like:
    - Use OO principles like encapsulation and delegation to build applications that are flexible;
    - Apply the Open-Closed Principle (OCP) and the Single Responsibility Principle (SRP) to promote reuse of your code
    - Leverage the power of design patterns to solve your problems more efficiently
    - Use UML, use cases, and diagrams to ensure that all stakeholders are communicating clearly to help you deliver the right software that meets everyone's needs.
  • ORM (or ORM, O/RM, O/R mapping) Object-Relational Mapping: in computer software is a programming technique for converting data between incompatible type systems in object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language. Some well known ORM frameworks are: Hibernate (for Java), Doctrine and Propel (on PHP), and ADO.NET Entity Framework (on .NET). See a list of ORM frameworks here. Some ORM frameworks also use a DAL framework for multiple Database compatibility;
  • Overhead: is generally considered any combination of excess or indirect computation time, memory, bandwidth, or other resources that are required to attain a particular goal. It is a special case of engineering overhead;
  • Overkill: much more of something than is needed, resulting in less effectiveness;
  • Phishing: In the field of computer security, phishing is the criminally fraudulent process of attempting to acquire sensitive information such as usernames, passwords and credit card details by masquerading as a trustworthy entity in an electronic communication.
  • PME - segundo o IAPMEI (Instituto de Apoio às Pequenas e Médias Empresas e à Inovação), uma empresa é PME – micro, pequena ou média empresa – quando:

    Dimensão Nº Efectivos Volume de Negócios ou Balanço Total
    PME < 250 <= 50 Milhões de Euros (VN) ou <= 43 Milhões de Euros (BT)
    Micro < 10 <= 2 Milhões de Euros
    Pequena < 50 <= 10 Milhões de Euros
    Média As PME que não forem micro ou pequenas empresas
  • Pruning process (also known as marked for deletion): Ex. already  adopted by the Java SE and JAVA EE group, it consists of proposing a list of features for possible removal in  Java EE 7. It means that some features will be replaced by newer specifications (such as entity beans being replaced by JPA), and others will just leave the Java EE 7 umbrella and keep on evolving as individual JSRs.
  • PUA: Política de utilização aceitável. Um exemplo de PUA utilizado pela ZON pode ser encontrado aqui;
  • Query string:  is the part of a Uniform Resource Locator (URL) that contains data to be passed to web applications such as CGI programs. A typical URL containing a query string is as follows: http://server/path/program?query_string
    • The question mark is used as a separator and is not part of the query string.
    • The query string is composed of a series of field-value pairs.
    • The field-value pairs are each separated by an equals sign. The equals sign may be omitted if the value is an empty string.
    • The series of pairs is separated by the ampersand, '&' or semicolon, ';'.
    Example of a query string:  field1=value1&field2=value2&field3=value3...
  • Refactoring (code refactoring): is "a disciplined way to restructure code", undertaken in order to improve some of the nonfunctional attributes of the software (e.g. reduce complexity and improve code readability, improve extensibility/maintainability, achieve a more expressive internal architecture or object model). Typically, this is done by applying series of "refactorings", each of which is a (usually) tiny change in a computer program's source code that does not modify its functional requirements.
  • Round trip: in travel means purchasing a ticket or traveling from one destination to another and then returning to the starting location;
  • Round trip time (RTT) or Round Trip Delay Time (RTD): In telecommunications, the RTT is the length of time it takes for a signal to be sent plus the length of time it takes for an acknowledgment of that signal to be received. In the context of computer networks, the signal is generally a data packet, and the RTT time is also known as the ping time. An internet user can determine the RTT by using the ping command.
  • Scope: The technical boundaries of the document. The scope explains what is covered in the document, and may explain what is not covered in the document;
  • Screen scraping (or Data scraping): is a technique in which a computer program extracts data from human-readable output coming from another program.
  • Shell Script: see Batch File;
  • Soft Skills: are personal attributes that enhance an individual's interactions, job performance and career prospects. Unlike hard skills, which tend to be specific to a certain type of task or activity, soft skills are broadly applicable.
    Soft skills are sometimes broken down into personal attributes (such as: optimism; common sense; responsibility; a sense of humor; integrity; time-management; motivation) and interpersonal abilities (such as: empathy; leadership; communication; good manners; sociability; the ability to teach).
    It's often said that hard skills will get you an interview but you need soft skills to get (and keep) the job.
  • String literal: a string literal is the representation of a string value within the source code of a computer program;
  • SVN ou Subversion, é um sistema de controle de versão desenhado especificamente para ser um substituto moderno do CVS. (Subversion is an open source version control system);
  • TCP (Transmission Control Protocol): TCP is one of the main protocols in TCP/IP networks. Whereas the IP protocol deals only with packets, TCP enables two hosts to establish a connection and exchange streams of data. TCP guarantees delivery of data and also guarantees that packets will be delivered in the same order in which they were sent (see also UDP).
  • Threads Vs Processes
  • Processes:
    A process has a self-contained execution environment. A process generally has a complete, private set of basic run-time resources; in particular, each process has its own memory space. Processes are often seen as synonymous with programs or applications. However, what the user sees as a single application may in fact be a set of cooperating processes. To facilitate communication between processes, most operating systems support Inter Process Communication (IPC) resources, such as pipes and sockets. IPC is used not just for communication between processes on the same system, but processes on different systems. Most implementations of the Java virtual machine run as a single process. A Java application can create additional processes using a ProcessBuilder object. Multiprocess applications are beyond the scope of this lesson.

    Threads
    Threads are sometimes called lightweight processes. Both processes and threads provide an execution environment, but creating a new thread requires fewer resources than creating a new process.
    Threads exist within a process — every process has at least one. Threads share the process's resources, including memory and open files. This makes for efficient, but potentially problematic, communication. Multithreaded execution is an essential feature of the Java platform. Every application has at least one thread — or several, if you count "system" threads that do things like memory management and signal handling. But from the application programmer's point of view, you start with just one thread, called the main thread. This thread has the ability to create additional threads, as we'll demonstrate in the next section.
    coiso
  • Top Down Development: in what concerns to data modelling methodologies this could mean using, for example, JPA/Hibernate entities to create a database schema  instead of starting with a database schema and then creating the java entities (Bottom Up Development). I.e:

    Top down: In top down development, you start with an existing Java implementation of the domain model, and have complete freedom with respect to the design of the database schema. You must create mapping metadata (i.e., annotations used in JPA entity classes), and can optionally use a persistence tool to automatically generate the schema.

    Bottom up: Bottom up development begins with an existing database schema. In this case, the easiest way to proceed is to use forward-engineering tools to extract metadata from the schema and generate annotated Java source code (JPA entity classes).

    For more info, check wikipedia article: Data modeling: Modeling methodologies
  • TOS (Terms Of Service) are rules by which one must agree to abide by in order to use a service;
  • UUID (Universally Unique Identifiers) as defined by RFC 4122, ISO/IEC 9834-8:2005, and related standards. (Some systems refer to this data type as globally unique identifier, or GUID, instead.) Such an identifier is a 128-bit quantity that is generated by an algorithm chosen to make it very unlikely that the same identifier will be generated by anyone else in the known universe using the same algorithm. Therefore, for distributed systems, these identifiers provide a better uniqueness guarantee than that which can be achieved using sequence generators, which are only unique within a single database. 
  • WAMP "é o termo usado para denominar os softwares que efetuam a instalação automática de vários softwares de forma que facilitem e agilizem a instalação dos mesmos. Em geral é usado WAMP para dizer que é um instalador de Apache, Mysql e PHP para Windows, sendo denominados como LAMP os softwares que tem a mesma destinação para sistemas operacionais LINUX e MAMP para Macintosh."
  • Whitepaper: is an authoritative report or guide that often addresses issues and how to solve them. White papers are used to educate readers and help people make decisions.
  • Widget (or Control or Component) is an element of a graphical user interface (GUI) that displays an information arrangement changeable by the user, such as: a button, a text box, a window, etc. See a common widgets list on Wikipedia. 
  • WildCard: is a character that may be substituted for any of a defined subset of all possible characters. For example in a SQL Query with a where clause: "WHERE Last_Name like 'Ant%'" the character "%" is a wildcard which signifies that any value containing the string 'Ant' plus zero or more additional characters will satisfy the selection criterion;
  • WODA: Write Once Deploy Anywhere. Frees you from being at the mercy of your application server vendor - in the old days, each application had its own proprietary API.
  • WORA: Write Once Run Anywhere. Java, for example, has portability across multiple platforms. Frees you from being forced to work on a single OS;
  • XML:  besides XML itself there are many XML related technologies like: XSD, XSL, XSLT and XPATH.
  • XSD (XML Schema Definition): An XML Schema describes the structure of an XML document.  XML Schema is an XML-based alternative to DTD. XML Schemas are more powerful than DTDs.  The XML Schema language is also referred to as XML Schema Definition (XSD).
    XML documents can have a reference to a DTD or to an XML Schema.
    Just like a DTD, the purpose of an XML Schema is to define the legal building blocks of an XML document.
    XSD are stored in files with ".xsd" extension.
    An XML Schema:
    • defines elements that can appear in a document
    • defines attributes that can appear in a document
    • defines which elements are child elements
    • defines the order of child elements
    • defines the number of child elements
    • defines whether an element is empty or can include text
    • defines data types for elements and attributes
    • defines default and fixed values for elements and attributes

No comments:

Post a Comment