Thursday, October 6, 2011

JSF Technologies

  • JSF(Java Server FaceS)

JavaServer Faces technology establishes the standard for building server-side user interfaces
http://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html

  • Prime Faces

PrimeFaces is a lightweight open source component suite for Java Server Faces 2.0 featuring 100+ rich set of JSF components
http://www.primefaces.org/

  • RichFaces

The RichFaces project is an advanced UI component framework for easily integrating Ajax capabilities into business applications using JSF.
http://www.jboss.org/richfaces

  • ICEfaces

As a leading open source Ajax framework, ICEfaces is more than a Ajax JSF component library, it's an J2EE Ajax framework for developing and deploying rich enterprise applications (REAs).
http://www.icefaces.org/main/home/



  • Apache MyFaces is a project of the Apache Software Foundation, and hosts several sub-projects relating to the JavaServer™ technology. If you want to know more about how JavaServer™ Faces works, take a look at the MyFaces introduction to JSF


The Apache MyFaces project provides:

    a JavaServer™ Faces implementation (MyFaces Core, providing api/impl and bundle modules)
    several component libraries containing UI widgets for building web-applications with JSF (e.g. MyFaces Tomahawk, MyFaces Trinidad, MyFaces Tobago)
    extension packages to JavaServer™ Faces (e.g. MyFaces Orchestra, MyFaces Extensions Validator, MyFaces Extensions CDI)
    integration modules to other technologies and standards (e.g. MyFaces Portlet Bridge for integration with the portlet-standard)

http://myfaces.apache.org/




  • MyFaces Tomahawk

MyFaces provides a series of JSF components that go beyond the JSF specification. These components are 100% compatible with the Sun JSF 1.1 Reference Implementation (RI) or any other JSF 1.1 compatible implementation. Of course the custom components can also be used with the Apache MyFaces JSF implementation.

Although we try to make Tomahawk as "portable" as possible, not all Tomahawk releases are compatible with all MyFaces or Sun Mojarra (formerly RI) releases. A Tomahawk release is always compatible with the latest MyFaces Core release available at the time that Tomahawk version was released
http://myfaces.apache.org/tomahawk/index.html





  • MyFaces Trinidad

Apache MyFaces Trinidad is a JSF framework including a large, enterprise quality component library, supporting critical features such as accessibility (e.g. Section 508), right-to-left languages, etc. It also includes a set of framework features, including :

    Partial-page rendering support for the entire component set
    Integrated client-side validation
    A dialog framework
    pageFlowScope, for communicating between pages

Apache MyFaces Trinidad currently supports the following JSF versions:

    JSF 1.1: supported by the Apache MyFaces Trinidad 1.0.x line
    JSF 1.2: supported by the Apache MyFaces Trinidad 1.2.x line
    JSF 2.0: supported by the Apache MyFaces Trinidad 2.0.x line

http://myfaces.apache.org/trinidad/index.html





  • Apache Tobago

The goal of Apache Tobago™ is to provide the community with a well designed set of user interface components based on JSF and run on MyFaces.

Tobago is more than just a tag library. The following statements characterize Tobago and make it different from other frameworks:

    The focus of Tobago is to create business applications without the need for HTML design. The development of Tobago pages follows more the development of conventional user interfaces than the creation of web pages.
    The UI components are abstracted from HTML and any layout information that does not belong to the general page structure. The final output format is determined by the client/user-agent.
    A theming mechanism makes it easy to change the look and feel and to provide special implementations for certain browsers. A fallback solution ensures that as much code is reused for new themes as possible.
    A layout manager is used to arrange the components automatically. This means, no manual laying out with HTML tables or other constructs is needed.

http://myfaces.apache.org/tobago/index.html


  • Apache Tiles

Apache Tiles is a templating framework built to simplify the development of web application user interfaces.
Tiles allows authors to define page fragments which can be assembled into a complete page at runtime. These fragments, or tiles, can be used as simple includes in order to reduce the duplication of common page elements or embedded within other tiles to develop a series of reusable templates. These templates streamline the development of a consistent look and feel across an entire application.
Tiles grew in popularity as a component of the popular Struts framework. It has since been extracted from Struts
http://tiles.apache.org/


  • Shale Framework

Shale is a modern web application framework, fundamentally based on JavaServer Faces. Architecturally, Shale is a set of loosely coupled services that can be combined as needed to meet particular application requirements. Shale provides additional functionality such as application event callbacks, dialogs with conversation-scoped state, a view technology called Clay, annotation-based functionality to reduce configuration requirements and support for remoting. Shale also provides integration links for other frameworks, to ease development when combinations of technologies are required.
http://shale.apache.org/

Rich, Thin,Thick client

  • fat (heavy, rich,thick) client 


A fat client (also called heavy, rich, or thick client) is a computer (client) in client–server architecture or networks that typically provides rich functionality independent of the central server. Originally known as just a "client" or "thick client"[1] the name is contrasted to thin client, which describes a computer heavily dependent on a server's applications.

http://en.wikipedia.org/wiki/Fat_client

  • Rich Client

The Rich Client mixes the characteristics of classical web applications and RIAs.
The web application is client-centric (i.e. the user interface is loaded to client at the start of the application).
The view uses HTML widgets, thus no plugin is required.
Contrary to RIAs, the goal of a Rich Client is NOT to offer a modern looking user interface, but to improve the usability of an already widespread and accepted view

http://www.kai-waehner.de/blog/2010/12/30/categorization-of-web-frameworks-in-the-java-environment/



  • What is a thin client?

A thin client is a lightweight interface to the application that does not have such operations like query databases, execute complex business rules, or connect to  legacy applications.


  • Thick vs. Thin Client Applications

A thin client machine is going to communicate with a central processing server, meaning there is little hardware and software installed on the user's machine. At times, thin may be defined as simply not needing the software or operating system installed on the user machine. This allows all end users' systems to be centrally managed and software deployed on a central server location as opposed to installed on each individual system.
Thin clients are really best-suited to environments in which the same information is going to be accessed by the clients, making it a better solution for public environments. For this reason, thin clients are often deployed in hotels and airports, where installing software to all systems wouldn't make sense. It would be a massive headache for IT to both deploy and maintain.

When using thin clients, compared to a feature-rich desktop PCs today, they often tend to look a bit primitive and outdated. Since many thin clients run on very little hardware, it is impossible to incorporate rich graphical user interfaces. To use the client, an input device (keyboard) and viewing device (display) is usually the basic requirements. Some may not even require a mouse.

In contrast, a thick client will provide users with more features, graphics and choices making the applications more customizable. Unlike thin clients, thick clients do not rely on a central processing server because the processing is done locally on the user system, and the server is accessed primarily for storage purposes. For that reason, thick clients often are not well-suited for public environments. To maintain a thick client, IT needs to maintain all systems for software deployment and upgrades, rather than just maintaining the applications on the server.  Additionally, thick clients often require operating specific applications, again posing more work and limitations for deployment. The trade-off is a more robust and local computing environment.


http://www.webopedia.com/DidYouKnow/Hardware_Software/2006/thin_client_applications.as




Database Products

  • sqlite db
SQLite is a software library that implements a self-contained, zero-configuration, transactional SQL database engine.
http://www.sqlite.org/

  • Borland Interbase
Easy installation, small footprint, automatic crash recovery, self-tuning, Unicode, SMP support, SQL 92 compliance, and near zero maintenance makes InterBase 2007 the ideal database for embedded and business-critical small-to-medium enterprise server applications
http://www.borland.com/fr/products/interbase/index.html

  • MariaDB
MariaDB is a database server that offers drop-in replacement functionality for MySQL. MariaDB is built by some of the original authors of MySQL, with assistance from the broader community of Free and open source software developers
http://mariadb.org/


  • Versant

The Versant Object Oriented Database can be customized for your application architecture and production environment based on the particular requirements.
http://www.versant.com/products/Versant_Database_Engine.aspx









Wednesday, October 5, 2011

VA-Scanner vulnerability assessment (VA)

  • nmap

Nmap Free Security Scanner For Network Exploration & Hacking

http://nmap.org/

  • Closed Port: If you send a SYN to a closed port, it will respond back with a RST.
Filtered Port: Presumably, the host is behind some sort of firewall. Here, the packet is simply dropped and you receive no response (not even a RST).
Open Port: If you send a SYN to an open port, you would expect to receive SYN/ACK.

http://www.madhur.co.in/blog/2011/09/18/filteredclosed.html

  • The six port states recognized by Nmap

open
An application is actively accepting TCP connections, UDP datagrams or SCTP associations on this port. Finding these is often the primary goal of port scanning. Security-minded people know that each open port is an avenue for attack. Attackers and pen-testers want to exploit the open ports, while administrators try to close or protect them with firewalls without thwarting legitimate users. Open ports are also interesting for non-security scans because they show services available for use on the network


closed
A closed port is accessible (it receives and responds to Nmap probe packets), but there is no application listening on it. They can be helpful in showing that a host is up on an IP address (host discovery, or ping scanning), and as part of OS detection. Because closed ports are reachable.Administrators may want to consider blocking such ports with a firewall

filtered
Nmap cannot determine whether the port is open because packet filtering prevents its probes from reaching the port. The filtering could be from a dedicated firewall device, router rules, or host-based firewall software. These ports frustrate attackers because they provide so little information. Sometimes they respond with ICMP error messages such as type 3 code 13 (destination unreachable: communication administratively prohibited), but filters that simply drop probes without responding are far more common. This forces Nmap to retry several times just in case the probe was dropped due to network congestion rather than filtering. This slows down the scan dramatically

https://nmap.org/book/man-port-scanning-basics.html
  • Metasploit integrates with Nexpose to verify vulnerabilities
https://www.metasploit.com/
  • Microsoft Baseline Security Analyzer 2.3
The Microsoft Baseline Security Analyzer provides a streamlined method to identify missing security updates and common security misconfigurations.,
https://docs.microsoft.com/en-us/windows/security/threat-protection/mbsa-removal-and-guidance


  • Nessus is the most trusted vulnerability scanning platform for auditors and security analysts. Users can schedule scans across multiple scanners, use wizards to easily and quickly create policies, schedule scans and send results via email.
http://www.tenable.com/products/nessus/select-your-operating-system#tos 


  • Lynis is an open source security auditing tool. Used by system administrators, security professionals, and auditors, to evaluate the security defenses of their Linux/Unix-based systems.

https://cisofy.com/lynis/

Unified Communications Systems

  • Microsoft Lync
Microsoft Lync Server (previously Microsoft Office Communications Server) is an enterprise real-time communications server, providing the infrastructure for enterprise instant messaging, presence, file transfer, peer-to-peer and multiparty voice and video calling, ad hoc and structured conferences (audio, video and web) and, through a 3rd party gateway or SIP trunk, PSTN connectivity.
http://en.wikipedia.org/wiki/Microsoft_Lync_Server
http://lync.microsoft.com/en-us/Pages/default.aspx

Business Intelligence

  • IBM Cognos
Cognos Business Intelligence software to gain a complete perspective of their business and to understand performance and Cognos Financial Performance Management to set targets and allocate the resources to achieve them
http://www-01.ibm.com/software/analytics/cognos/

  • SAP Business Objects
functionality that can streamline your business processes and help you manage your enterprise – so you can focus on sustainable growth.
http://www.sap.com/solutions/sapbusinessobjects/index.epx

  • Oracle Hyperion
In 2007, Oracle acquired Hyperion, a leading provider of performance management software.

After the acquisition, we introduced a new product family called Oracle Business Intelligence Enterprise Edition Plus.This integrated suite includes all of the Oracle and Hyperion reporting and analysis tool
http://www.oracle.com/us/corporate/Acquisitions/hyperion/index.html?origref=http://www.google.com/search?q=oracle+hyperion&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a

In 2010, we released Oracle Business Intelligence 11g
http://www.oracle.com/us/corporate/press/143363


  • Oracle Essbase
Oracle Essbase is the industry-leading multi-dimensional online analytical processing (OLAP) server, providing a rich environment for effectively developing custom analytic and enterprise performance management applications
http://www.oracle.com/us/solutions/ent-performance-bi/business-intelligence/essbase/index.html


  • What is business intelligence?
Business intelligence (BI) simplifies information discovery and analysis, making it possible for decision-makers at all levels of an organization to more easily access, understand, analyze, collaborate, and act on information, anytime and anywhere
http://technet.microsoft.com/en-us/library/cc811595%28v=office.12%29.aspx


Business intelligence
Business intelligence (BI) is a set of theories, methodologies, architectures, and technologies that transform raw data into meaningful and useful information for business purposes

Business Intelligence is made up of an increasing number of components

    Multidimensional aggregation and allocation
    Denormalization, tagging and standardization
    Realtime reporting with analytical alert
    Interface with unstructured data source
    Group consolidation, budgeting and rolling forecast
    Statistical inference and probabilistic simulation
    Key performance indicators optimization
    Version control and process management
    Open item management
   
    Common functions of business intelligence technologies are reporting, online analytical processing, analytics, data mining, process mining, complex event processing, business performance management, benchmarking, text mining, predictive analytics and prescriptive analytics.
   
    Business intelligence and data warehousing
    Often BI applications use data gathered from a data warehouse or a data mart.
    A data warehouse is a copy of analytical data that facilitates decision support. However, not all data warehouses are used for business intelligence, nor do all business intelligence applications require a data warehouse.
   
http://en.wikipedia.org/wiki/Business_intelligence

  •  Qlikview
The QlikView Business Discovery platform delivers true self-service BI that empowers business users by driving innovative decision-making.
http://www.qlik.com/us/explore/products/qlikview

  • Birst
2-Tier BI and Analytics is a fundamentally new approach to enterprise BI. It leverages Birst’s unique 2-Tier BI and Analytics technology, which automatically unifies and refines all data across your enterprise, whether generated by de-centralized business users or centralized BI teams and systems.
https://www.birst.com/product/

Tuesday, October 4, 2011

Web Application Software

  • Microsoft IIS
http://www.iis.net/overview

  • IBM Websphere
http://www-01.ibm.com/software/websphere/

  • Oracle WebLogic Server
http://www.oracle.com/technetwork/middleware/weblogic/overview/index.html


  • Apache Tomcat
http://tomcat.apache.org

  • The Apache Software
http://www.apache.org/

  • Apache Geronimo

Apache Geronimo is an open source application server developed by the Apache Software Foundation and distributed under the Apache license.
Geronimo 2 is currently compatible with the Java Enterprise Edition (Java EE) 5.0 specification such as JDBC, RMI, e-mail, JMS, web services, XML, Enterprise JavaBeans, Connectors, servlets, portlets and JavaServer Pages.
This allows developers to create enterprise applications that are portable and scalable, and that integrate with legacy technologies. Geronimo 3 is compatible with Java EE 6.0.
http://en.wikipedia.org/wiki/Apache_Geronimo



Apache Geronimo
Apache Geronimo is an open source server runtime that integrates the best open source projects to create Java/OSGi server runtimes that meet the needs of enterprise developers and system administrators.
Our most popular distribution is a fully certified Java EE 6 application server runtime.
http://geronimo.apache.org/



  • JBoss AS 7

Boss Enterprise Application Platform (EAP) is the productized version of JBoss Application Server (AS)
http://www.jboss.org/jbossas



  • Jetty
Jetty provides an HTTP server, HTTP client, and javax.servlet container. These components are open source and available for commercial use and distribution
http://jetty.codehaus.org/jetty/

  • Glassfish
Free community-supported application server
http://glassfish.java.net/


  • nginx

NGINX functionality includes HTTP server, HTTP and mail reverse proxy, caching, load balancing, compression, request throttling, connection multiplexing and reuse, SSL offload and HTTP media streaming

http://nginx.com/
http://nginx.org/




  • LAMP

David Axmark and Monty Widenius of the MySQL team visited us in Sebastopol and they dropped a new term in our laps: LAMP. This term was popular in Germany, they said, to define how MySQL was used in conjunction with Linux, Apache, and either Perl, Python, or PHP. Their explanation of LAMP made a lightbulb go off in my head.
http://onlamp.com/pub/a/onlamp/2001/01/25/lamp.html




  • mod_perl

mod_perl  is more than CGI scripting
It is a whole new way to create dynamic content by utilizing the full power of the Apache web server to create stateful sessions, customized user authentication systems, smart proxies and much more
magically, your old CGI scripts will continue to work and work very fast indeed
mod_perl gives you a persistent Perl interpreter embedded in your web server

http://perl.apache.org/



  • CGI

The Common Gateway Interface (CGI) is a standard method for web server software to delegate the generation of web pages to executable files.
Such files are known as CGI scripts; they are programs, often stand-alone applications, usually written in a scripting language.
A web server that supports CGI can be configured to interpret a URL that it serves as a reference to a CGI script
A common convention is to have a cgi-bin/ directory at the base of the directory tree and treat all executable files within it as CGI scripts
Another popular convention is to use filename extensions; for instance, if CGI scripts are consistently given the extension .cgi, the web server can be configured to interpret all such files as CGI scripts.
In the case of HTTP PUT or POSTs, the user-submitted data is provided to the program via the standard input. The web server creates a small and efficient subset of the environment variables passed to it and adds details pertinent to the execution of the program.

http://en.wikipedia.org/wiki/Common_Gateway_Interface



  • Apache Felix

Apache Felix is a community effort to implement the OSGi R4 Service Platform and other interesting OSGi-related technologies under the Apache license
https://felix.apache.org/




  • lighttpd

Security, speed, compliance, and flexibility -- all of these describe lighttpd (pron. lighty) which is rapidly redefining efficiency of a webserver; as it is designed and optimized for high performance environments. With a small memory footprint compared to other web-servers, effective management of the cpu-load, and advanced feature set (FastCGI, SCGI, Auth, Output-Compression, URL-Rewriting and many more) lighttpd is the perfect solution for every server that is suffering load problems.
http://www.lighttpd.net




what is snmp? how is it used?

  • what's snmp?
Simple Network Management Protocol (SNMP) is an "Internet-standard protocol for managing devices on IP networks. Devices that typically support SNMP include routers, switches, servers, workstations, printers, modem racks, and more. It is used mostly in network management systems to monitor network-attached devices for conditions that warrant administrative attention
http://en.wikipedia.org/wiki/Simple_Network_Management_Protocol


  • Mibble MIB Parser
An open-source SNMP MIB parser library for Java.
http://www.mibble.org/download/stable/index.html

  • MIB Browser Free Personal Edition
http://ireasoning.com/downloadmibbrowserfree.php


  • IT organizations can typically rely on having access to management data from SNMP MIBs on network devices such as switches and routers. SNMP data, however, does not provide the network manager with information about the applications involved, the servers the data is coming from or the user to whom the data is being delivered. In addition, SNMP data does not provide any insight into such things as class of service, which is important for QoS management.
For more granular information, many organizations turn to NetFlow. Within NetFlow, a flow is defined as a unidirectional sequence of packets between a given source and destination. Flow-based analysis can then be used to perform tasks such as quantifying overall link utilization and identifying which network users or applications are consuming bandwidth. In particular, flow-based analysis contains information that gives the IT organization answers to questions such as:

    Where does the traffic originate? Who’s affected?
    What application is involved? Is it one of the critical applications that business managers care about?
    How much traffic has been transmitted?
NetFlow, however, has its limitations. For example, NetFlow cannot provide real-time insight into the operations of the network.
http://enterprise.netscout.com/The-Importance-of-Flow-Based-Monitoring
  • MIB browsers equip you to keep tabs on your SNMP-enabled devices and to quickly troubleshoot issues before they affect your end users. Using an MIB browser to troubleshoot SNMP issues—for example, by querying SNMP variables on the devices you’re using, assessing response times, or checking whether a variable has been implemented at all—can help ensure all of your SNMP-enabled devices are available and functioning well at all times.

https://www.dnsstuff.com/mib-browsers

Thursday, September 29, 2011

Enterprise Service Bus (ESB)

An enterprise service bus (ESB) is a software architecture model used for designing and implementing the interaction and communication between mutually interacting software applications in Service Oriented Architecture




  • ESB Evolution

http://www.youtube.com/watch?v=9Q8jjWHqSDs&feature=channel&list=UL

JMS and SOAP
routing messages from one point to another.there's a single point for incoming messages which are sent to
different destinations without revealing the sender's identity



  • Enterprise Service Bus

http://www.youtube.com/watch?v=DrqfmgZF6Rs&feature=related

ESB is a software architecture which provides fundamental services for complex architectures via
event-driven and standards-based messaging-engine(bus)

Benefits
Divergence(branching off)integration methods:
standardization of API
enterprise application integration(EAI) frameworks/practices
re-usable interfaces
Reduces cost and cost of change:
loosely coupled architecture
change/support
management/monitoring




  • WebSphere Enterprise Service Bus
IBM WebSphere Enterprise Service Bus ,for quick integration of applications and processes
http://www-01.ibm.com/software/integration/wsesb/#


  • Microsoft BizTalk ESB
An Enterprise Service Bus (ESB) is an architectural pattern and a key enabler in implementing the infrastructure for a service-oriented architecture (SOA)
http://www.microsoft.com/biztalk/en/us/esb-guidance.aspx

  • WebSphere Message Broker
IBM WebSphere Message Broker provides an Enterprise Service Bus (ESB) that has been designed for universal connectivity and transformation in heterogeneous IT environments.
http://www-01.ibm.com/software/integration/wbimessagebroker



  • BEA AquaLogic Service Bus

BEA AquaLogic Service Bus is an intermediary for use as a core element of distributed services networks. It enables service-oriented architecture (SOA) allowing accelerated service re-use and deployment.
http://docs.oracle.com/cd/E13171_01/alsb/docs20/index.html


  • Oracle Service Bus 

Oracle Service Bus transforms complex and brittle architectures into agile integration networks by connecting, mediating, and managing interactions between services and applications.
http://www.oracle.com/technetwork/middleware/service-bus/overview/index.html


  • Open Source ESB Projects

  • JBoss ESB
leverages JEMS technologies like the JBoss business rules engine for content-based routing and messaging.

  • JBoss Fuse is an open source integration platform based on Apache ServiceMix. It is a service-oriented architecture (SOA) infrastructure that provides a standardized methodology, server, and tools to integrate application components
http://en.wikipedia.org/wiki/Fuse_ESB



  • Red Hat JBoss Fuse
Open source enterprise bus
flexible, small-footprint enterprise service bus (ESB) that enables rapid integration across the extended enterprise—on premise or in the cloud.
http://www.redhat.com/en/technologies/jboss-middleware/fuse
  • Apache ServiceMix
uses a JBI standard which provides a lot of components like JMS, BPEL, Web service, and Camel

  • OpenESB
solid integration with the GlassFish Application Server and Sun's popular IDE, NetBeans
OpenESB's tools include WSDL and schema editors, a JPI manager integrated into the service manager, and Ant running in the background.

  • MuleESB
Java centric

  • Petals ESB, the distributed Open-Source Enterprise Service Bus
Petals ESB is an open-source Enterprise Service Bus (ESB) provided by the OW2 Middleware Consortium. More concretely, Petals ESB is a Java platform based on SOA principles to interconnect heterogeneous systems, applications and services
http://petals.ow2.org/


Designing Modelling Tools

  • IBM Rational DOORS
IBM® Rational® DOORS® software is a leading requirements management application that can help you reduce costs, increase efficiency and improve quality by enabling you to optimize requirements communication, collaboration and verification — throughout your organization and across your supply chain

http://www-01.ibm.com/software/awdtools/doors/



  • Sparx Enterprise Architect
Enterprise Architect 9.1 is a high performance modeling, visualization and design platform based on the UML 2.3 standard

http://www.sparxsystems.com

Wednesday, September 28, 2011

Software Development Methodologies

  • Agile

Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.
http://en.wikipedia.org/wiki/Agile_software_development



  • Scrum

Scrum is an iterative, incremental framework for project management often seen in agile software development, a type of software engineering.

Scrum in project management is an agile management process to coordinate teams of approximately six or seven people who can be located anywhere in the world.

The Scrum Methodology is based on the Rugby term for individual groups collaborating together to form a powerful whole.

The scrums (teams) are made up of the Product Owner, the Scrum Master and the team members. The Product Owner is responsible for representing the interest of the client for whom the product is being made. The Scrum Master is the liaison between the team and the Product Owner. The team itself is comprised of a cross-functional mix of personnel, which can include software engineers, programmers, Q/A specialists and the like. While the Scrum Master is responsible for facilitating the team, the team has total control over how they will perform their work.

During the course of the Scrum, a daily meeting will take place to update everyone on each team’s progress

During the meeting, each team member answers three questions:

What have you done since yesterday?
What are you planning to do by tomorrow?
Do you have any problems preventing you from accomplishing your goal?
Advantages of Agile SCRUM

Scrum methodology enables project’s where the business requirements documentation is hard to quantify to be successfully developed.

It is a lightly controlled method which insists on frequent updating of the progress in work through regular meetings. Thus there is clear visibility of the project development.


Like any other agile methodology, this is also iterative in nature. It requires continuous feedback from the user.

Daily meetings make it possible to measure individual productivity. This leads to the improvement in the productivity of each of the team members

It is easier to deliver a quality product in a scheduled time

Agile Scrum can work with any technology/ programming language but is particularly useful for fast moving web 2.0 or new media projects



Disadvantages of Agile SCRUM

It is good for small, fast moving projects as it works well only with small team

http://www.brighthub.com/office/project-management/articles/2042.aspx


  • Test-driven development
Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: first the developer writes a failing automated test case that defines a desired improvement or new function, then produces code to pass that test and finally refactors the new code to acceptable standardsTest-driven design (TDD) (Beck 2003; Astels 2003), is an evolutionary approach to development which combines test-first development where you write a test before you write just enough production code to fulfill that test and refactoring
http://www.agiledata.org/essays/tdd.html
http://en.wikipedia.org/wiki/Test-driven_development

TDD vs ATDD
Test-Driven Development is related to, but different from Acceptance Test-Driven Development (ATDD). TDD is primarily a developer’s tool to help create well-written unit of code (function, class, or module) that correctly performs a set of operations. ATDD is a communication tool between the customer, developer, and tester to ensure that the requirements are well-defined. TDD requires test automation. ATDD does not, although automation helps with regression testing. Tests used In TDD can often be derived from ATDD tests, since the code units implement some portion of a requirement. ATDD tests should be readable by the customer. TDD tests do not.
http://en.wikipedia.org/wiki/Test-driven_development

TDD toolbox
-automated testing framework
-mocking framework ;jmock,easymock,mockito
-specialized testing libraries;junit
-acceptance testing framework
-continuous testing;easyb,infinitest
introduction-to-tdd-course-notes.pdf

  • Acceptance Test-Driven Development (ATDD)

the practice of expressing functional story requirements as concrete examples or expectations prior to story development. During story development, a collaborative workflow occurs in which: examples written and then automated; granular automated unit tests are developed; and the system code is written and integrated with the rest of the running, tested software. The story is "done"—deemed ready for exploratory and other testing—when these scope-defining automated checks pass
http://janetgregory.blogspot.com/2010/08/atdd-vs-bdd-vs-specification-by-example.html

  • Continuous Integration
Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possibleIn software engineering, continuous integration (CI) implements continuous processes of applying quality control — small pieces of effort, applied frequently. Continuous integration aims to improve the quality of software, and to reduce the time taken to deliver it, by replacing the traditional practice of applying quality control after completing all development.
http://martinfowler.com/articles/continuousIntegration.html
http://en.wikipedia.org/wiki/Continuous_integration


  • Pair programming
Pair programming is an agile software development technique in which two programmers work together at one workstation. One types in code while the other reviews each line of code as it is typed in. The person typing is called the driver. The person reviewing the code is called the observer (or navigator[1]). The two programmers switch roles frequently.
http://en.wikipedia.org/wiki/Pair_programming

  • Behavior Driven Development
Behavior driven development (or BDD) is an agile software development technique that encourages collaboration between developers, QA and non-technical or business participants in a software project
http://en.wikipedia.org/wiki/Behavior_Driven_Development

Behavior-driven development
In software engineering, behavior-driven development (abbreviated BDD) is a software development process based on test-driven development (TDD)
Behavior-driven development combines the general techniques and principles of TDD with ideas from domain-driven design and object-oriented analysis and design to provide software developers and business analysts with shared tools and a shared process to collaborate on software development
http://en.wikipedia.org/wiki/Behavior-driven_development

“BDD's focus is on the discovery of stuff we didn't know about, particularly around the contexts in which scenarios or examples take place. This is where using words like "should" and "behaviour" comes in, rather than "test" - because for most people "test" presupposes that we know what the behaviour ought to be. "Should" lets us ask, "Should it? Really? Is there a context which we're missing in which it behaves differently?"
http://janetgregory.blogspot.com/2010/08/atdd-vs-bdd-vs-specification-by-example.html


Behavior-Driven Development
Test-driven development is rather a paradigm than a process. It describes the cycle of writing a test first, and application code afterwards – followed by an optional refactoring. But it doesn’t make any statements about

    Where do I begin to develop?
    What exactly should I test?
    How should tests be structured and named?

The name test-driven development also caused confusion. How can you test something that’s not there yet?

It was Dan North 1 who noticed all these unsolved questions and came up with a solution: He suggested that instead of writing tests you should think of specifying behavior. Behavior is how the user wants the application to behave.

When your development is Behavior-driven, you always start with the piece of functionality that’s most important to your user. I consider this phase as taking the developer hat off and putting the user hat on. Once you’ve specified the user needs, you put the developer hat back on and implement your specification.

http://blog.codeship.io/2013/04/22/from-tdd-to-bdd.html


  • Cucumber

Cucumber lets software development teams describe how software should behave in plain text. The text is written in a business-readable domain-specific language and serves as documentation, automated tests and development-aid - all rolled into one format.
http://cukes.info/


  • JBehave

JBehave is a framework for Behaviour-Driven Development (BDD). BDD is an evolution of test-driven development (TDD) and acceptance-test driven design
jbehave.org


  • specflow

Binding Business Requirements to .NET Code
Cucumber for .NET. The open source solution trusted by .NET devs around the world.
https://specflow.org/
  • easyb
easyb is a behavior driven development framework for the Java platform. By using a specification based Domain Specific Language, easyb aims to enable executable, yet readable documentation.
Behavior driven development?
Behavior driven development (or BDD) isn't anything new or revolutionary-- it's just an evolutionary offshoot of test driven development, in which the word test is replaced by the word should.
easyb.org

  • Feature-driven development
Feature-driven development (FDD) is an iterative and incremental software development process. It is one of a number of Agile methods for developing software and forms part of the Agile Alliance
http://www.nebulon.com/fdd/
http://en.wikipedia.org/wiki/Feature-driven_development

  • Object-oriented analysis and design (OOAD)

Object-oriented analysis and design (OOAD) is a software engineering approach that models a system as a group of interacting objects. Each object represents some entity of interest in the system being modeled, and is characterised by its class, its state (data elements), and its behavior. Various models can be created to show the static structure, dynamic behavior, and run-time deployment of these collaborating objects. There are a number of different notations for representing these models, such as the Unified Modeling Language (UML).

Object-oriented analysis (OOA) applies object-modeling techniques to analyze the functional requirements for a system. Object-oriented design (OOD) elaborates the analysis models to produce implementation specifications. OOA focuses on what the system does, OOD on how the system does it.
http://en.wikipedia.org/wiki/Object-oriented_analysis_and_design







  • Kanban

Kanban is a method for developing software products & processes with an emphasis on just-in-time delivery while not overloading the software developers. It emphasizes that developers pull work from a queue, and the process, from definition of a task to its delivery to the customer, is displayed for participants to see.[1]
Kanban can be divided into two parts:
Kanban - A visual process management system that tells what to produce, when to produce it, and how much to produce.

http://en.wikipedia.org/wiki/Kanban_(development)




  • SCRUM vs. Kanban

Now, being such an open methodology, it tends to be adapted depending on the environment. For instance, Toyota defined 6 rules for its process. In fact, you can add all rules of Scrum to Kanban, and still have a sound methodology - with 25 rules!
http://blog.outsystems.com/aboutagility/2010/11/scrum-vs-kanban.html






  • Adaptive Software Development 


Adaptive Software Development is a software development process that grew out of rapid application development work by Jim Highsmith and Sam Bayer. ASD embodies the principle that continuous adaptation of the process to the work at hand is the normal state of affairs.


ASD replaces the traditional waterfall cycle with a repeating series of speculate, collaborate, and learn cycles
This dynamic cycle provides for continuous learning and adaptation to the emergent state of the project. The characteristics of an ASD life cycle are that it is mission focused, feature based, iterative, timeboxed, risk driven, and change tolerant.


The word speculate refers to the paradox of planning – it is more likely to assume that all stakeholders are comparably wrong for certain aspects of the project’s mission, while trying to define it.

Collaboration refers to the efforts for balancing the work based on predictable parts of the environment (planning and guiding them) and adapting to the uncertain surrounding mix of changes caused by various factors – technology, requirements, stakeholders, software vendors, etc.

The learning cycles, challenging all stakeholders, are based on the short iterations with design, build and testing. During these iterations the knowledge is gathered by making small mistakes based on false assumptions and correcting those mistakes, thus leading to greater experience and eventually mastery in the problem domain.[1]

https://en.wikipedia.org/wiki/Adaptive_Software_Development



  • Rapid application development (RAD)

Rapid application development (RAD) is a software development methodology that uses minimal planning in favor of rapid prototyping.
The lack of extensive pre-planning generally allows software to be written much faster, and makes it easier to change requirements.
https://en.wikipedia.org/wiki/Rapid_application_development


  • Project Management implies a project manager. This is not the case in terms of Scrum which only recognize three roles: scrum master, developer and product owner.

https://langerman.co.za/agile_pm_harmful/


Web Service Technologies

  • SOA(Service Oriented Architecture)
In software engineering, a Service-Oriented Architecture (SOA) is a set of principles and methodologies for designing and developing software in the form of interoperable services.
http://en.wikipedia.org/wiki/Service-oriented_architecture

  • The Common Object Request Broker Architecture (CORBA)
The Common Object Request Broker Architecture (CORBA) is a standard defined by the Object Management Group (OMG) that enables software components written in multiple computer languages and running on multiple computers to work together
http://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture


  • JacORB
The free Java implementation of the OMG's CORBA standard.
http://www.jacorb.org/


  • omniORB
Free CORBA ORB.omniORB is a robust high performance CORBA ORB for C++ and Python.
http://omniorb.sourceforge.net/

  • Representational state transfer(REST)
Representational state transfer (REST) is a style of software architecture for distributed hypermedia systems such as the World Wide Web.
http://en.wikipedia.org/wiki/Representational_State_Transfer


  • Systems Modeling Language (SysML)
http://en.wikipedia.org/wiki/Systems_Modeling_Language
http://www.omgsysml.org/



  • Unified Modelling Language (UML)
Unified Modeling Language (UML) is a standardized general-purpose modeling language in the field of object-oriented software engineering.
http://en.wikipedia.org/wiki/Unified_Modeling_Language
http://www.uml.org/


  • SoaML
Service Oriented Architecture Modeling Language
http://www.omg.org/spec/SoaML/


  • What are the current free and commercial implementations available for Web Services?


Apache SOAP, Axis 1 and Axis 2. SOAP and Axis 1 are now obsolete; use Axis 2 instead.
JAX-WS Reference Implementation
JAX-RS Reference Implementation
Metro (includes the JAX-WS reference implementation)
Apache CXF (formerly XFire)
MS.NET



  • Hessian binary web service protocol

The Hessian binary web service protocol makes web services usable without requiring a large framework, and without learning yet another alphabet soup of protocols. Because it is a binary protocol, it is well-suited to sending binary data without any need to extend the protocol with attachments.
http://hessian.caucho.com/

  • Axis
Apache Axis is an implementation of the SOAP ("Simple Object Access Protocol") submission to W3C
http://axis.apache.org/axis/



  • Axis2
Apache Axis2™ is a Web Services / SOAP / WSDL engine, the successor to the widely used Apache Axis SOAP stack. There are two implementations of the Apache Axis2 Web services engine - Apache Axis2/Java and Apache Axis2/C
http://axis.apache.org/axis2/java/core/

  • Burlap is a simple XML-based protocol for connecting web services. The com.caucho.burlap.client and com.caucho.burlap.server packages do not require any other Resin classes, so can be used in smaller clients, like applets.

Because Burlap is a small protocol, J2ME devices like cell-phones can use it to connect to Resin servers. Because it's powerful, it can be used for EJB services.
http://www.caucho.com/resin-3.0/protocols/burlap.xtp

Monday, September 26, 2011

Object Relational Mapping / Data Persistency

  • Hibernate
Relational Persistence for Java and .NET.Historically, Hibernate facilitated the storage and retrieval of Java domain objects via Object/Relational Mapping. Today, Hibernate is a collection of related projects enabling developers to utilize POJO-style domain models in their applications in ways extending well beyond Object/Relational Mapping.
http://www.hibernate.org

  • Oracle TopLink
Oracle TopLink delivers a proven standards based enterprise Java solution for all of your relational and XML persistence needs based on high performance and scalability, developer productivity, and flexibility in architecture and design.
http://www.oracle.com/technetwork/middleware/toplink/overview/index.html

  • Castor
Castor is an Open Source data binding framework for Java[tm]. It's the shortest path between Java objects, XML documents and relational tables. Castor provides Java-to-XML binding, Java-to-SQL persistence, and more.
http://www.castor.org/


  • FireStorm/DAO
FireStorm/DAO makes Java software developers more productive by automatically generating Java source code for data persistence.
http://www.codefutures.com/object-persistence/

  • ObJect Relational Bridge
Apache ObJectRelationalBridge (OJB) is an Object/Relational mapping tool that allows transparent persistence for Java Objects against relational databases
http://db.apache.org/ojb/

  • iBATIS / mybatis
Apache iBATIS is retired at the apache software foundation (2010/06/16)
The MyBatis data mapper framework makes it easier to use a relational database with object-oriented applications. MyBatis couples objects with stored procedures or SQL statements using a XML descriptor or annotations. Simplicity is the biggest advantage of the MyBatis data mapper over object relational mapping tools.
http://code.google.com/p/mybatis/
http://www.mybatis.org/
http://ibatis.apache.org/


  • EclipseLink

The EclipseLink project delivers a comprehensive open-source Java persistence solution addressing relational, XML, and database web services.
It will run in any Java environment and read and write objects to virtually any type of data source, including relational databases, XML, or EIS systems
EclipseLink will focus on providing leading edge support, including advanced feature extensions, for the dominant persistence standards for each target data source; Java Persistence API (JPA) for relational databases, Java API for XML Binding (JAXB) for XML, Java Connector Architecture (JCA) for EIS and other types of legacy systems, and Service Data Objects (SDO).

 
http://www.eclipse.org/eclipselink/

Issue/Bug Tracking Tools

  • Trac
Trac is an enhanced wiki and issue tracking system for software development projects
http://trac.edgewall.org/
  • Bugzilla
Bugzilla is server software designed to help you manage software development
http://www.bugzilla.org/
  • Lighthouse
Beautifully Simple Issue Tracking. Collaborate effortlessly on projects
lighthouseapp.com
  • JIRA
JIRA provides issue tracking and project tracking for software development teams to improve code quality and the speed of development.
http://www.atlassian.com/software/jira/

  • Mantis
MantisBT is a free popular web-based bugtracking system (feature list). It is written in the PHP scripting language and works with MySQL, MS SQL, and PostgreSQL databases and a webserver.
http://www.mantisbt.org


  • Confluence

one place online for teams to collaborate and capture knowledge – create, share, and discuss your files, ideas, minutes, specs, mockups, diagrams, and projects.A powerful rich editor, integration with Office and JIRA, and hundreds of add-ons help teams create intranets, technical documentation, and knowledge bases.
http://www.atlassian.com/software/confluence/overview

  • Redmine
Redmine is a flexible project management web application. Written using the Ruby on Rails framework, it is cross-platform and cross-database.
http://www.redmine.org/