This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
As a result of a rebid, the Company A for which I am working recently won a contract that had been administered by the Company B for the past 7 years.
To fully possess the application that was built by the Company B, I am preparing a list of questions (see below) to facilitate the transfer. Because my skills in the field are not quite up to the task, I am inviting comments and suggestions to ensure a smooth knowledge tranfer.
Particularly, I have no prior experience in the areas of building an application to Dev, Sat, and Prod and releasing an application, what should I ask in order to possess the knowledge in building and releasing an application?
Here is the list compiled by me:
1. Provide software application development documents; e.g. uses cases, sequence diagrams, class diagrams, and etc. If the aforementioned documents are unavailable, what are the document standards followed? And please provide those documents.
2. Provide the User's Manual for the software application developed
3. Provide access to software application code version control repository
4. List the application development environment
What is the operating system used? Is it the Windows (which version)? Or UNIX (which version)? Or both? Or others?
What is/are the application server(s) and their respective version(s) used for software development? WebSphere (which version)? Or WebLogic (which version)? Or Jboss (which version)? Or some other server(s)?
What is the portal server used (which version)?
What is the IDE and its version used for software development? The Eclipse? The NetBeans? Or some other IDE?
What is used for version control? CVS? Or SVN? Or something else?
5. Provide application production server configurations for code development and deployment
Services configuration; such as data source, connection pool, transaction services, messaging services, cache services, authentication services, etc.
6. List the application development languages used and their respective versions
Is the application web based? Or it is also a wireless application that uses WML or some other technologies to render data onto hand held devices
Is the Web Services technologies; SOAP, WSDL, UDDL, and etc., used in developing the application?
7. List all the code development tools and their versions used for the application code development
8. List all the frameworks and their versions used for the application code development
Examples: Struts, Spring, Hibernate, and etc.
9. Provide the original Java code of all the customized JAR files used in the application
10. List all the third party products used for the application development
11. List all the utility functionalities provided by the application and the technologies used to implement those functionalities
Does the application generate printouts? What are the format of those printouts? PDF? MS Excel? MS Word? And/or others?
Does the application use single sign-on?
What are the technologies used to impose application security (e.g. authentication and authorization)?
Does the application provide e-mail functionality? Is JavaMail used to implement the e-mail functionality?
Does the application generate reports? What technologies are used? JReport? Crystal Report? Or some other technologies?
12. Provide ANT/Maven scripts that are used to build and deploy and application
13. Provide the schema and DDL of the database tables used for the application development
14. Provide the code for all the stored procedures used for the application development
15. List the data persistence and retrieval languages used for the application development
Examples: SQL? Or PL/SQL? Or others?
16. List all the business rules implemented in the application
17. Document the business rules engines used to implement the business rules in the application
18. Provide all the images and watermarks used in the application
19. List all the code testing tools used for unit test, integration test, and module test of the application
Examples: Junit, Easy Mock, etc.
Well you seem to have prepared. The one thing you should also ask is for them to do a demo of that application. Once you understand the flow especially if those use cases are documented.
Another thing you should be prepared is what happens if they don't have any docs? No uml, user guides etc. And worse when you get the source code there aren't much comments. Given this scenario, having seen a demo would definitely help because the layout would most like indicate what features/functions are provides.
Oh depending on how "stable" the existing system is, are there any outstanding features or bugs that they are working in process (especially in the svn/cvs version).