Agile Methodology
Estimation of the project…
Estimation of that week work
Confirmation of the estimation with project manager…
Starts working on that week task…
Every morning before starting the work full team has to get together and tell about our self that
1. What we did yesterday.
2. What we are going to do today.
3. Any backlogs and problems while working like admin or system and application bugs…
Every Friday of that week has code review and if any changes are made it reflects for next week.
Achievements in the work of that week. If backlogs we discuss the problem and solution will transfer with in the team…
Discussion regarding whether we reached the goals for that week.
Appreciation part includes in the meeting on Friday…(ex: if u done with ur work of that week and so more work of the next week also then manager will appreciate the team member in front of full team)
Over all by the agile development we use to resolve our problems with time line …
Team communication will have more, so that we can transfer our knowledge if any person stuck on any issue (regarding the task issues)
Some of the principles behind the Agile Manifesto are:
Customer satisfaction by rapid, continuous delivery of useful software
Working software is delivered frequently (weeks rather than months)
Working software is the principal measure of progress
Even late changes in requirements are welcomed (this does not mean code & run. Instead removing an existing feature or moving a deadline forward to accommodate late/unplanned feature requests)
Close, daily cooperation between business people and developers
Face-to-face conversation is the best form of communication (Co-location)
Projects are built around motivated individuals, who should be trusted
Continuous attention to technical excellence and good design
Simplicity
Self-organizing teams
Regular adaptation to changing circumstances
CVS(Concurrent Versioning System)
CVS is a utility to help manage a group of users that are all editing the same group of files at the same time. A CVS repository is simply the collection of files under CVS management. Typically, CVS is used to manage source code when there are multiple developers on a project. In this case, "repository" typically means the most recent versions of the source code used in the project.
CVS is a version control system, an important component of Source Configuration Management (SCM). Using it, you can record the history of sources files, and documents. It fills a similar role to the free software RCS, PRCS, and Aegis packages.
CVS is a production quality system in wide use around the world, including many free software projects.
While CVS stores individual file history in the same format as RCS, it offers the following significant advantages over RCS:
It can run scripts which you can supply to log CVS operations or enforce site-specific polices.
Client/server CVS enables developers scattered by geography or slow modems to function as a single team. The version history is stored on a single central server and the client machines have a copy of all the files that the developers are working on. Therefore, the network between the client and the server must be up to perform CVS operations (such as checking’s or updates) but need not be up to edit or manipulate the current versions of the files. Clients can perform all the same operations which are available locally.
In cases where several developers or teams want to each maintain their own version of the files, because of geography and/or policy, CVS's vendor branches can import a version from another team (even if they don't use CVS), and then CVS can merge the changes from the vendor branch with the latest files if that is what is desired.
Unreserved checkouts, allowing more than one developer to work on the same files at the same time.
CVS provides a flexible modules database that provides a symbolic mapping of names to components of a larger software distribution. It applies names to collections of directories and files. A single command can manipulate the entire collection.
CVS servers run on most unix variants, and clients for Windows NT/95, OS/2 and VMS are also available. CVS will also operate in what is sometimes called server mode against local repositories on Windows 95/NT.
Java Development within Eclipse
Even before you start writing Java code, you need to familiarize yourself with the Eclipse Workbench and its various elements. This is because the Java Development Tools (JDT), as well as many other Eclipse-based development tools (such as PDE), build upon this framework to deliver their own functionality. As you already know, Eclipse is a component-based platform (components in Eclipse-speak are called plug-ins, or bundles) and Eclipse-based applications (such as the Eclipse SDK) are highly modular. Eclipse SDK itself consists of a mixture of plug-ins, which together make it what it is; other Eclipse-based applications may share some of those plug-ins, but usually bring along their own set of plug-ins that differentiate them.
At a high level, you can think of the Workbench as a window (or a set of windows) around which all of the visual elements of an application are organized. It is the window you'll see when you launch your Eclipse SDK. Not all Eclipse-based applications must necessarily use the Workbench; in fact, it is possible to create "headless" applications that are completely driven from the command-line (or through other, non-visual means). However, complex rich-client applications, such as IDEs, are typically based on the Workbench. (In fact, what you'll see in an IDE is typically the IDE Workbench, a special flavor of the Generic Workbench provided by Eclipse.)
SEAM
Seam is a powerful open source development platform for building rich Internet applications in Java. Seam integrates technologies such as Asynchronous JavaScript and XML (AJAX), JavaServer Faces (JSF), Java Persistence (JPA), Enterprise Java Beans (EJB 3.0) and Business Process Management (BPM) into a unified full-stack solution, complete with sophisticated tooling.
Seam has been designed from the ground up to eliminate complexity at both architecture and API levels. It enables developers to assemble complex web applications using simple annotated Java classes, a rich set of UI components, and very little XML. Seam's unique support for conversations and declarative state management can introduce a more sophisticated user experience while at the same time eliminating common bugs found in traditional web applications.
Spring
Spring is not necessarily one more framework dependency for your project. Spring is potentially a one-stop shop, addressing most infrastructure concerns of typical applications. It also goes places other frameworks don't.
An open source project since February 2003, Spring has a long heritage. The open source project started from infrastructure code published with my book, Expert One-on-One J2EE Design and Development, in late 2002. Expert One-on-One J2EE laid out the basic architectural thinking behind Spring. However, the architectural concepts go back to early 2000, and reflect my experience in developing infrastructure for a series of successful commercial projects.
Since January 2003, Spring has been hosted on SourceForge. There are now 20 developers, with the leading contributors devoted full-time to Spring development and support. The flourishing open source community has helped it evolve into far more than could have been achieved by any individual.
Architectural benefits of Spring:
Before we get down to specifics, let's look at some of the benefits Spring can bring to a project:
Spring can effectively organize your middle tier objects, whether or not you choose to use EJB. Spring takes care of plumbing that would be left up to you if you use only Struts or other frameworks geared to particular J2EE APIs. And while it is perhaps most valuable in the middle tier, Spring's configuration management services can be used in any architectural layer, in whatever runtime environment.
Spring can eliminate the proliferation of Singletons seen on many projects. In my experience, this is a major problem, reducing testability and object orientation.
Spring can eliminate the need to use a variety of custom properties file formats, by handling configuration in a consistent way throughout applications and projects. Ever wondered what magic property keys or system properties a particular class looks for, and had to read the Javadoc or even source code? With Spring you simply look at the class's JavaBean properties or constructor arguments. The use of Inversion of Control and Dependency Injection (discussed below) helps achieve this simplification.
Spring can facilitate good programming practice by reducing the cost of programming to interfaces, rather than classes, almost to zero.
Spring is designed so that applications built with it depend on as few of its APIs as possible. Most business objects in Spring applications have no dependency on Spring.
Applications built using Spring are very easy to unit test.
Spring can make the use of EJB an implementation choice, rather than the determinant of application architecture. You can choose to implement business interfaces as POJOs or local EJBs without affecting calling code.
Spring helps you solve many problems without using EJB. Spring can provide an alternative to EJB that's appropriate for many applications. For example, Spring can use AOP to deliver declarative transaction management without using an EJB container; even without a JTA implementation, if you only need to work with a single database.
Spring provides a consistent framework for data access, whether using JDBC or an O/R mapping product such as TopLink, Hibernate or a JDO implementation.
Spring provides a consistent, simple programming model in many areas, making it an ideal architectural "glue." You can see this consistency in the Spring approach to JDBC, JMS, JavaMail, JNDI and many other important APIs.
IBM's WebSphere Application Server
The WebSphere Application Server drives business agility by providing millions of developers and IT Architects with an innovative, performance-based foundation to build, reuse, run, integrate and manage Service Oriented Architecture (SOA) applications and services. From business critical and key enterprise-wide applications to the smallest departmental level applications, WebSphere Application Server offers the highest levels of reliability, availability, security and scalability.
Only WebSphere Application Server has the three foundational attributes to enable robust and agile business applications: Simplified Development, High Performance and Intelligent Management.
Simplified Development Increase developer productivity with a proven, standards-based platform. WebSphere Application Server V7 offers enhanced support for standards, emerging technology and a choice of development frameworks that simplifies programming models to increase developer productivity. Integral tooling makes the most of existing technology skills for rapid time-to-value.
· Java EE 5 certification, EJB 3.0 support and Java Persistence API (JPA) and Java Development Kit (JDK) 6.0, deliver simplified programming models for building reusable persistent object
· Web services support, including JAX-WS, SOAP 1.2, MTOM, XOP, WS-ReliableMessaging, WS-Trust, WS-SecureConversation, WS-Policy, and Kerberos Token Profile, simplifies interoperability in mixed environments
· Web 2.0 support (via Feature Pack for Web 2.0) extends Service Oriented Architecture (SOA) by connecting external Web services, internal SOA services, and Java Platform Enterprise Edition (JEE) objects into highly interactive Web application interfaces
· Session Initiation Protocol (SIP) servlets simplify development with standardized support for interactive user sessions involving real-time multimedia elements such as voice, video, instant messaging and online games
· Spring has certification for use with WebSphere Application Server to enable module-based programming
· Single-step installation and configuration, wizards and default configurations, and easy- to-navigate documentation that includes extensive use of sample code help ensure fast and smooth start-up
· IBM Rational® Application Developer for WebSphere V7.5 is available and fully exploits capabilities within WebSphere Application Server V7, accelerating delivery of higher quality, mission-critical applications
· WebSphere Application Server Feature Packs simplify the adoption of new standards such Services Component Architecture (SCA), and improve consumability by enabling users to selectively take advantage of new standards and features while maintaining a more stable internal release cycle.
Estimation of the project…
Estimation of that week work
Confirmation of the estimation with project manager…
Starts working on that week task…
Every morning before starting the work full team has to get together and tell about our self that
1. What we did yesterday.
2. What we are going to do today.
3. Any backlogs and problems while working like admin or system and application bugs…
Every Friday of that week has code review and if any changes are made it reflects for next week.
Achievements in the work of that week. If backlogs we discuss the problem and solution will transfer with in the team…
Discussion regarding whether we reached the goals for that week.
Appreciation part includes in the meeting on Friday…(ex: if u done with ur work of that week and so more work of the next week also then manager will appreciate the team member in front of full team)
Over all by the agile development we use to resolve our problems with time line …
Team communication will have more, so that we can transfer our knowledge if any person stuck on any issue (regarding the task issues)
Some of the principles behind the Agile Manifesto are:
Customer satisfaction by rapid, continuous delivery of useful software
Working software is delivered frequently (weeks rather than months)
Working software is the principal measure of progress
Even late changes in requirements are welcomed (this does not mean code & run. Instead removing an existing feature or moving a deadline forward to accommodate late/unplanned feature requests)
Close, daily cooperation between business people and developers
Face-to-face conversation is the best form of communication (Co-location)
Projects are built around motivated individuals, who should be trusted
Continuous attention to technical excellence and good design
Simplicity
Self-organizing teams
Regular adaptation to changing circumstances
CVS(Concurrent Versioning System)
CVS is a utility to help manage a group of users that are all editing the same group of files at the same time. A CVS repository is simply the collection of files under CVS management. Typically, CVS is used to manage source code when there are multiple developers on a project. In this case, "repository" typically means the most recent versions of the source code used in the project.
CVS is a version control system, an important component of Source Configuration Management (SCM). Using it, you can record the history of sources files, and documents. It fills a similar role to the free software RCS, PRCS, and Aegis packages.
CVS is a production quality system in wide use around the world, including many free software projects.
While CVS stores individual file history in the same format as RCS, it offers the following significant advantages over RCS:
It can run scripts which you can supply to log CVS operations or enforce site-specific polices.
Client/server CVS enables developers scattered by geography or slow modems to function as a single team. The version history is stored on a single central server and the client machines have a copy of all the files that the developers are working on. Therefore, the network between the client and the server must be up to perform CVS operations (such as checking’s or updates) but need not be up to edit or manipulate the current versions of the files. Clients can perform all the same operations which are available locally.
In cases where several developers or teams want to each maintain their own version of the files, because of geography and/or policy, CVS's vendor branches can import a version from another team (even if they don't use CVS), and then CVS can merge the changes from the vendor branch with the latest files if that is what is desired.
Unreserved checkouts, allowing more than one developer to work on the same files at the same time.
CVS provides a flexible modules database that provides a symbolic mapping of names to components of a larger software distribution. It applies names to collections of directories and files. A single command can manipulate the entire collection.
CVS servers run on most unix variants, and clients for Windows NT/95, OS/2 and VMS are also available. CVS will also operate in what is sometimes called server mode against local repositories on Windows 95/NT.
Java Development within Eclipse
Even before you start writing Java code, you need to familiarize yourself with the Eclipse Workbench and its various elements. This is because the Java Development Tools (JDT), as well as many other Eclipse-based development tools (such as PDE), build upon this framework to deliver their own functionality. As you already know, Eclipse is a component-based platform (components in Eclipse-speak are called plug-ins, or bundles) and Eclipse-based applications (such as the Eclipse SDK) are highly modular. Eclipse SDK itself consists of a mixture of plug-ins, which together make it what it is; other Eclipse-based applications may share some of those plug-ins, but usually bring along their own set of plug-ins that differentiate them.
At a high level, you can think of the Workbench as a window (or a set of windows) around which all of the visual elements of an application are organized. It is the window you'll see when you launch your Eclipse SDK. Not all Eclipse-based applications must necessarily use the Workbench; in fact, it is possible to create "headless" applications that are completely driven from the command-line (or through other, non-visual means). However, complex rich-client applications, such as IDEs, are typically based on the Workbench. (In fact, what you'll see in an IDE is typically the IDE Workbench, a special flavor of the Generic Workbench provided by Eclipse.)
SEAM
Seam is a powerful open source development platform for building rich Internet applications in Java. Seam integrates technologies such as Asynchronous JavaScript and XML (AJAX), JavaServer Faces (JSF), Java Persistence (JPA), Enterprise Java Beans (EJB 3.0) and Business Process Management (BPM) into a unified full-stack solution, complete with sophisticated tooling.
Seam has been designed from the ground up to eliminate complexity at both architecture and API levels. It enables developers to assemble complex web applications using simple annotated Java classes, a rich set of UI components, and very little XML. Seam's unique support for conversations and declarative state management can introduce a more sophisticated user experience while at the same time eliminating common bugs found in traditional web applications.
Spring
Spring is not necessarily one more framework dependency for your project. Spring is potentially a one-stop shop, addressing most infrastructure concerns of typical applications. It also goes places other frameworks don't.
An open source project since February 2003, Spring has a long heritage. The open source project started from infrastructure code published with my book, Expert One-on-One J2EE Design and Development, in late 2002. Expert One-on-One J2EE laid out the basic architectural thinking behind Spring. However, the architectural concepts go back to early 2000, and reflect my experience in developing infrastructure for a series of successful commercial projects.
Since January 2003, Spring has been hosted on SourceForge. There are now 20 developers, with the leading contributors devoted full-time to Spring development and support. The flourishing open source community has helped it evolve into far more than could have been achieved by any individual.
Architectural benefits of Spring:
Before we get down to specifics, let's look at some of the benefits Spring can bring to a project:
Spring can effectively organize your middle tier objects, whether or not you choose to use EJB. Spring takes care of plumbing that would be left up to you if you use only Struts or other frameworks geared to particular J2EE APIs. And while it is perhaps most valuable in the middle tier, Spring's configuration management services can be used in any architectural layer, in whatever runtime environment.
Spring can eliminate the proliferation of Singletons seen on many projects. In my experience, this is a major problem, reducing testability and object orientation.
Spring can eliminate the need to use a variety of custom properties file formats, by handling configuration in a consistent way throughout applications and projects. Ever wondered what magic property keys or system properties a particular class looks for, and had to read the Javadoc or even source code? With Spring you simply look at the class's JavaBean properties or constructor arguments. The use of Inversion of Control and Dependency Injection (discussed below) helps achieve this simplification.
Spring can facilitate good programming practice by reducing the cost of programming to interfaces, rather than classes, almost to zero.
Spring is designed so that applications built with it depend on as few of its APIs as possible. Most business objects in Spring applications have no dependency on Spring.
Applications built using Spring are very easy to unit test.
Spring can make the use of EJB an implementation choice, rather than the determinant of application architecture. You can choose to implement business interfaces as POJOs or local EJBs without affecting calling code.
Spring helps you solve many problems without using EJB. Spring can provide an alternative to EJB that's appropriate for many applications. For example, Spring can use AOP to deliver declarative transaction management without using an EJB container; even without a JTA implementation, if you only need to work with a single database.
Spring provides a consistent framework for data access, whether using JDBC or an O/R mapping product such as TopLink, Hibernate or a JDO implementation.
Spring provides a consistent, simple programming model in many areas, making it an ideal architectural "glue." You can see this consistency in the Spring approach to JDBC, JMS, JavaMail, JNDI and many other important APIs.
IBM's WebSphere Application Server
The WebSphere Application Server drives business agility by providing millions of developers and IT Architects with an innovative, performance-based foundation to build, reuse, run, integrate and manage Service Oriented Architecture (SOA) applications and services. From business critical and key enterprise-wide applications to the smallest departmental level applications, WebSphere Application Server offers the highest levels of reliability, availability, security and scalability.
Only WebSphere Application Server has the three foundational attributes to enable robust and agile business applications: Simplified Development, High Performance and Intelligent Management.
Simplified Development Increase developer productivity with a proven, standards-based platform. WebSphere Application Server V7 offers enhanced support for standards, emerging technology and a choice of development frameworks that simplifies programming models to increase developer productivity. Integral tooling makes the most of existing technology skills for rapid time-to-value.
· Java EE 5 certification, EJB 3.0 support and Java Persistence API (JPA) and Java Development Kit (JDK) 6.0, deliver simplified programming models for building reusable persistent object
· Web services support, including JAX-WS, SOAP 1.2, MTOM, XOP, WS-ReliableMessaging, WS-Trust, WS-SecureConversation, WS-Policy, and Kerberos Token Profile, simplifies interoperability in mixed environments
· Web 2.0 support (via Feature Pack for Web 2.0) extends Service Oriented Architecture (SOA) by connecting external Web services, internal SOA services, and Java Platform Enterprise Edition (JEE) objects into highly interactive Web application interfaces
· Session Initiation Protocol (SIP) servlets simplify development with standardized support for interactive user sessions involving real-time multimedia elements such as voice, video, instant messaging and online games
· Spring has certification for use with WebSphere Application Server to enable module-based programming
· Single-step installation and configuration, wizards and default configurations, and easy- to-navigate documentation that includes extensive use of sample code help ensure fast and smooth start-up
· IBM Rational® Application Developer for WebSphere V7.5 is available and fully exploits capabilities within WebSphere Application Server V7, accelerating delivery of higher quality, mission-critical applications
· WebSphere Application Server Feature Packs simplify the adoption of new standards such Services Component Architecture (SCA), and improve consumability by enabling users to selectively take advantage of new standards and features while maintaining a more stable internal release cycle.