1. Choose Appropriate Development Process
It is important to choose the appropriate development lifecycle process to the project at hand because all other activities are derived from the process. Each of the available methodologies is best suited to specific kinds of projects, based on various technical, organizational, project and team considerations. Microlucid always consider each of the major prescribed methodologies in context with business, applications, organization, and technical environments.
2. Requirement Gathering
Requirement gathering is an essential part of any project and project management. Understanding fully what a project will deliver is critical to its success. This may sound like common sense but surprisingly it’s an area that is often given far too little attention. Gathering and agreeing on requirements is fundamental to a successful project. Quality requirements are broken up into two kinds: functional and non-functional. A good way to document functional requirements is using Use Cases. Note that Use Cases are used for non-OO projects. Non-functional requirements describe the performance and system characteristics of the application. It is important to gather them because they have a major impact on the application architecture, design, and performance.
3. Change Management
Change happens. The problem is managing that change successfully in an ever-increasingly complex environment, especially when there’s a geographically distributed team handling high volumes of digital assets and activity requests coming from multiple stakeholders.
Software Change Management solution allows development organizations to control, communicate and respond more effectively to rapidly changing business demands. Furthermore, these integrated configuration and change management capabilities can be easily expanded across all phases of the application development lifecycle, including IT project and portfolio management, requirements definition & management (RDM), analysis and design, and testing and ASQ. The result is better visibility, increased responsiveness, greater predictability and improved software applications and systems.
4. System Architecture Design
Choosing the appropriate architecture for your application is key. Mostly all the troubled projects have incorporated bad designs and the development team did not apply well-known industry architecture best practices. A good way to avoid this type of problem is to use patterns and they range from the classic Gang of Four patterns, Java patterns, to EJB design patterns. Sun’s equivalent is the Core J2EE Patterns catalog. Many projects fail as discussed in the introduction. The study of these failures has given rise to the concept of ant patterns. They are valuable because they provide useful knowledge of what does not work, and why.
5. Application Design
Even with a good architecture it is still possible to have a bad design. Many applications are either over-designed or under-designed. The two basic principles here are “Keep it Simple” and information hiding. For many projects, it is important to perform Object-Oriented Analysis and Design using UML. There are many books on UML, but we recommend UML User Guide and Applying UML and Patterns. Reuse is one of the great promises of OO, but it is often unrealized because of the additional effort required to create reusable assets. Code reuse is but one form of reuse and there are other kinds of reuse that can provide better productivity gains.
6. Data Architecture Design
Data Architecture Design includes storage, accumulation, retention, archival, maintenance, and transfer of data within the system and between various systems within or outside the organization.
This requires ensuring that data elements, reflecting the enterprises’ functional and technical vocabulary, are organized into a standardized data dictionary that accommodates the breadth of business activities performed. The team evaluates the type of data stored to determine commonality, uniqueness, redundancy and efficiency and provides an assessment that lays the foundation for an enterprise data architecture, which supports the application development efforts and streamlines the design process.
7. Writing Quality code
Ensure quality from the start. Quality is not something that can be easily added later. Problems that are too complex, too obscure, or are discovered too late in the product cycle are usually not fixed. The following topics describe principles and procedures for improving code quality.
8. Peer reviews
It is important to review other people’s work. Code review is systematic examination (often as peer review) of computer source code intended to find and fix mistakes overlooked in the initial development phase, improving both the overall quality of software and the developers’ skills. Experience has shown that problems are eliminated earlier this way and reviews are even more effective than testing. Any artifact from the development process is reviewed, including plans, requirements, architecture, design, code, and test cases. Peer reviews are helpful in trying to produce software quality at top speed.
9. Data migration
Most applications are enhancements of existing applications and migration of data has lots of complexity involved. Data migration is necessary when a company upgrades its database or system software, either from one version to another or from one program to an entirely different program. Data migration from the existing data sources is usually a major project by itself. Data migration has lots complexity and it always require a set of in-depth experience to perform migration. The migration becomes complex as the new application has better business rules and expects higher quality data. Improving of data quality becomes challenging without compromising the actual contents. Data migration typically has four phases: analysis of source data, extraction and transformation of data, validation and repair of data, and use of data in the new program.
10. Quality & Testing
Testing is not an afterthought or cutback when the schedule gets tight. It is an integral part of software development that needs to be planned. It is also important that testing is done proactively; meaning that test cases are planned before coding starts, and test cases are developed while the application is being designed and coded. There are also a number of testing patterns that have been developed.
11. Defects management
Software defects are expensive. Moreover, the cost of finding and correcting defects represents one of the most expensive software development activities. For the foreseeable future, it will not be possible to eliminate defects. While defects may be inevitable, we can minimize their number and impact on our projects. To do this development teams need to implement a defect management process that focuses on preventing defects, catching defects as early in the process as possible, and minimizing the impact of defects. A little investment in this process can yield significant returns.
12. Configuration management
Configuration management (CM) is the detailed recording and updating of information that describes an enterprise’s computer systems and networks, including all hardware and software components. Such information typically includes the versions and updates that have been applied to installed software packages and the locations and network addresses of hardware devices. Special configuration management software is available. When a system needs hardware or software upgrade, a computer technician can accesses the configuration management program and database to see what is currently installed. The technician can then make a more informed decision about the upgrade needed.
An advantage of a configuration management application is that the entire collection of systems can be reviewed to make sure any changes made to one system do not adversely affect any of the other systems.
Deployment process consists of several interrelated activities with possible transitions between them. Installing, setting up, testing and running are the steps of deployment.
14. Maintenance and Support
Application Maintenance and Support has become the backbone of the business as any problem into running application directly affect the revenue and divert the business to the competitor. For a successful business, you must give importance to proper maintenance and support to the application.
15. Project management
An effective project management is very important for a successful project. Project management is the discipline of planning, organizing, and managing resources to bring about the successful completion of specific project goals and objectives. Project management is a carefully planned and organized effort to accomplish a specific set of tasks. Project management includes developing a project plan, which includes defining and confirming the project goals and objectives, identifying tasks and how goals will be achieved, quantifying the resources needed, and determining budgets and timelines for completion.
16. Project Evaluation
Project Evaluation is a step-by-step process for objectively assessing the success of the project by collecting, recording and organizing information about project results, including short-term outputs (immediate results of activities, or project deliverables), and immediate and longer-term project outcomes (changes in behavior, practice or policy resulting from the project).
A project evaluation checklist helps you evaluate your planned IT project objectively and realistically against known project management concepts and standards. Particular emphasis is put upon the project’s alignment to business direction and priorities, accountability, joint work with other departments, sharing resources, working according to project management and corporate disciplines and risk management.
Microlucid Delivery Model :
1) Kick Off Meeting.
2) Requirements Gathering and Review.
3) Detail Design and Review.
5) Code Review
6) Quality and Testing (Alpha).
7) Testing (Beta)
8) Deployment and Delivery.
9) Customer Support.
Microlucid Development Methodology :
– Rapid Application Development (RAD)
– Iterative and incremental development.
– Extreme Programming (XP).
– Agile software development
Microlucid Testing Methodology :
– Black box testing
– White box testing
– Unit Testing
– System Testing
– Integration Testing
– Regression testing
– Acceptance Testing
– Non Functional Software Testing