Friday, December 21, 2012

BASIC OVERVIEW OF REQUIREMENTS AND CURRENT SYSTEMS


THESE SYSTEMS WHOLLY COMPRISE MY BUSINESS OPERATION CURRENTLY

 
BASIC OVERVIEW OF REQUIREMENTS AND CURRENT SYSTEMS
I would like the software to manage all my data and perform every operation that currently exists in my business processes.
Mostly i want everything to work as it does now but
·        To be integrated into one whole software solution which is online
·        enable tutors/clients to enter and view data online at will instead of having to make phone enquiries to view/change their data...i.e. clients can log in, view their tutor’s contact details, view past progress reports and account statements; view details of their last payment etc.... tutors can log in, complete reports, create invoices for their hours...
·        enable a better automation of tasks, especially if-then processes which are dependent on an amount of time passing e.g. if client has had > 10 hrs of tutoring then send a “follow up” email.....
·        enable access to the system from any internet enabled computer and have different access rights for various staff

The main systems:
1.     SALES SYSTEM
CURRENTLY: this system exists as a separate MS Excel file. VBA forms and macros manage this volume of data and keep track of prospective clients as they move through the sales process.
·        Stores prospective client enquiries and manages sales data; clients enquire by email, phone, online form
·        Needs to operate almost exactly as it currently does... including looking up client locations via the MapQuest API currently being used to see if there are tutors in the vicinity for a given subject and grade level
·        This system is very simple; it queries data and has numerous auto- templates for SMS and email messages
·        It also has basic stats for how many enquiries are converted to sales etc ...very simple calculations
·        Probably the trickiest part of this program is tracking the conversion from enquiry to
“new client” and attributing the sale to a corresponding sales person AND removing the attributed sale if the client cancels before their first lesson

2.     Recruitment Management System
General Recruitment Concepts


·         Because tutors are mostly uni students and their timetable are subject to change regularly etc many tutors don’t stay for very long due to lack of availability. This means recruitment needs to be constant and in high volume. For this to be feasible it needs to be very efficient.


The Recruitment Process
1.      Applicants submit their resume through an online form

2.      Successful applicants submit a thorough profile application through an online form


3.      Successful applicants are invited to book an interview using online booking software

4.      Applicants attend an online interview using software not dissimilar to Skype


5.      Successful applicants are called and offered a position, sent a contract

6.      Once the contract is received they are sent the training manual and training manual test


7.      Once they send back the test they are Entered into our system and sent an email with welcome documents
·         Now they can be considered for new students in their areas and are entered into the regular BMS

The Recruitment Management System
·         This is a web based software package built by an outsourcer to my exact specifications. It allows for the recruitment process above to be done super efficiently.

·         Resume and profile applications go directly into this software package

·         It basically takes only the click of one button to move an applicant from one step in the above process to the next


·        This works perfectly in its current form; perhaps a couple new queries would be useful to meet new needs
·        Really it just needs to be integrated with the rest of the system so that
                                                              i.      New tutors can be entered into the regular BMS system with a click directly from RMS
                                                            ii.      Tutor resumes and profile applications can be accessed from the individual tutor record within the regular database (BMS)..
o   This system completely manages the whole recruitment process. Captures resumes, organises interviews, sends contracts etc

3.     CEP Program – Training Module Software
Basic concept/Purpose
·         There needs to be a simple way to remain in communication with tutors otherwise there is no relationship between EMT and the tutors besides monthly invoices

·         It would be great to give ongoing bits of training to tutors to keep them somewhat engaged and improve their skill

·         Some tutors take their jobs seriously whereas others are very casual about it. Most tutors are Gen-Y

·         With an ever growing number of tutors (currently around 220 actively working) if there is going to be regular communication, it needs to be automated as much as possible.

·         There also needs to be a way to efficiently collect standardised invoices from tutors

Overview
·         The CEP works only with tutors that currently have active students

·         It sends a “learning module” or article to tutors on a fortnightly basis

·         Each article comes with an online form that the tutors must complete – the form asks

·         If tutors are too busy they can elect online “Can’t complete CEP this fortnight”

·         There is a part of this program that collects invoices from tutors through an online form.


o   The online form collects Monthly Progress reports and Invoices from tutors
o   The software form then renames the files to a  standardised name series which is compatible with the BMS for end of month processing
o   NB: with the new software there will be a separate process to submit tutor invoices – i am just trying to show how the business works.

Functionality
·         This system is 100% completely automated

·         CEP and invoices are submitted via online forms

·         The only human involvement is to overview the submitted CEP forms i.e. reply to any tutors who wanted some help or advice. \


·         The system automatically sends SMS and email reminders to tutors when they need to submit any documents
o   It also sends auto reminders when tutors are late with their correspondence

·         If a tutor has not submitted their CEP form for 3 fortnights in a row, they will not be able to submit an invoice

·         This system is an online system written by an outsourced programmer according to my own specifications. It is completely separate to the BMS.

·         We also need to manage tutor’s status i.e.
o   When they have active students, the CEP should run and they should submit invoices and be sent reminders
o   When they don’t have active students they don’t need to complete the CEP forms or submit invoices

·         In order to manage the tutor’s status a CEP-Excel software module was created. It allows for communication between the BMS VBA program  and the CEP program. This allows for a situation where human involvement is not necessary for managing the CEP or Invoice Submission process.

·        This works perfectly as it currently is – it would only need to be integrated
·        The current integration has a few tricky IF-THEN rules which determine when to set a tutor to active in the CEP system, when to immediately deactivate them and when to set them as “deactivating” for another month....all these rules are based on testing whether or not a tutor has “active” students and if not then when their last month of work would be/would have been
                                                              i.      In a nutshell, this system automates the distribution of training modules to tutors and reminds them to submit invoices.


4.     BUSINESS MANAGEMENT SYSTEM
This is the excel spreadsheet that holds all our data currently. A VBA form with various functions helps to manage this. It is what i have instead of a database at the moment. There are 2 main data workbooks; one for storing tutor details and one for storing client details. There is also a new workbook for each month to store client details that may change on a monthly basis such as their tutor, payments received; hourly rate etc... I don’t imagine it would be too difficult to model a real database on this data.
The business management system is itself comprised of numerous main functions/processes/interfaces

a)     ACCOUNT START
a.     Monitor a client’s account after they are entered as a new client for example: see which new clients need to be assigned a tutor; assign an original tutor to them; if a tutor hasn’t confirmed contact with the client send them and email/sms; if the client has had >10hrs tuition send an automated follow up email; after 20hrs tuition send an email requesting testimonials etc; also has incorporated the mapping software to see which tutors are suitable/close
·  This is mostly just a set of queries and set of automated email/sms responses

b)    TUTOR SWAP
a.     Similar to Account Start; see which clients need to be assigned a replacement tutor; this is the process by which a replacement tutor is allocated to a client; again if the tutor hasn’t confirmed contact with client after 2 days of being assigned they are sent an email; after 10hr the client is sent a follow up email etc; also has incorporated the mapping software to see which tutors are suitable/close
·  This is mostly just a set of queries and set of automated email/sms responses

c)     ACCOUNT MANAGEMENT
a.     This is the system by which i manage who owes us how much money; who has not paid any money to their account for 1 month-2months-3months etc; plus a few other query types are available
·  This is mostly just a set of queries and set of automated email/sms responses

d)    STATISTICS
a.     This is a page which calculates various metrics such as average hours per student; average rate per hour etc etc . . . really this is just aggreagating information and manipulating it. There are a few tricky formulas here but nothing genuinely complex.

e)     EMAIL PROGRAM
a.     This program allows me to send a template email only to those clients or tutors which meet certain conditions. For example an email to clients who are “active”; an email to senior tutors who have had more than 100hours of experience etc

f)      INVOICING AND BILLING
·        This is by far the most complicated system i have created for the business and is probably the most convoluted in terms of processes, conditions, rules etc BUT it is probably less complicated than the CEP Training Module Software.

1.     A tutor’s hours are entered for each student; the software stores those hours in the tutor records and creates a pdf statement which is emailed to clients. Complications arise because there may/may not have been other tutors who worked with this student during the month and we need their invoices for this client account too; also the software tests if the tutor submitted a progress report which is mandatory under certain conditions and if they did not then they are sent a reminder and the account statement is not yet sent etc...
·        With the new software this will all need to happen online such that tutors can themselves enter their hours for each student each month etc...

Expected Challenges; Unanswered Questions and Concerns:
1.     Data entry from forms. Currently i have custom built forms such as the contact form which clients use to enquire from our website – i would like this data to be auto captured into the “Sales Management” part of the system. I am also concerned about this because in the near future i will have a design company build me a new site and i am not sure how to make it so that the new forms will be compatible with this system that we are going to build?

2.     Payments. I need some sort of integrated ecommerce component. Clients need to be able to log in to their account – see what they owe and make a payment. The payment should automatically be added to their account. I am not sure what solutions exist for this? There is Eway and SecurePay which i have been considering – they have APIs.
                                                              i.      Also, the way i pay my tutors is direct into their bank account using their bank account details – there is a way to semi-automate this by creating ABA files so i don’t have to do it manually for each tutor as i do now. It definitely is possible, have a look at http://www.bluechilli.com/software/apps/cemtex-aba-file/aba-file-format.html . ABA files are simple text documents with very specific formatting.

3.     Implementation. How will we convert from me using the old system to using the new system? My business is at a size where i have new clients, new tutors, payments etc on a  daily basis. ALSO, how will we enter the existing data into the new system? There is a lot of it – too much to do by hand, and i need that data to be readily available.

4.     Security/Password protection etc
                                                              i.      Currently i use a program called Website Access Manager to manage which users have access to log in to the tutor admin section etc... this will not suffice for our project. Each tutor and each client needs to have access not only to generic forms as now but also to their specific information. As such i believe that a new system/process will need to be created for assigning access priviledges to users – also this needs to be automated somewhat and integrated, for example; when a tutor is “hired” a password and username is automatically created for them and they are assigned standard access rights to their data as well as generic resources which are available to all tutors such as practice maths worksheets

                                                            ii.      Also, there needs to be a way to manage access rights to this software itself for my employees. i.e. the sales staff should only have access to the sales program; only i should have access to the statistics etc
                                                          iii.      How will we convert the existing users and passwords to the new system?

5.     General risks:
                                                              i.      Once the software is up and running my WHOLE business will depend on it. Should you fall ill or your company fall apart, there will be no way for errors to be corrected or for new functionality to be installed. This is a major concern for me. I think we can possibly handle this by creating extremely thorough documentation so that in such an event another coder or company of coders could pick up the pieces?

                                                      ii.      Surely with such a large project there will be many tweaks and “extras” required over the next few months after installation. I don’t think these “extras” are predictable and i would like to organise some sort of retainer payment system whereby on top of the quoted price for the project, i will pay you some sort of maintenance fee? The business is growing and i have high ambitions – changes are likely to be regular.


Agile Software Development


Introduction
This article presents Agile Software development - an alternative approach to software project management that is quite different from the traditional models. It promises to bring agility to your software development processes and promotes a new, evolutionary change in how software projects are managed. The article aims at providing its readers a broad level overview on this latest methodology.
What is Agile Software Development?
Agile is basically an alternative approach to the software project management that is quite different from the traditional waterfall model that is mostly practiced by software farms globally. We are now coming across various hot methods like Crystal, Extreme Programming (XP), Scrum, Adaptive Software Development, etc. All of these team up to form the agile software development. Agility is important not only for the software development methodologies, but also concerning any organization. Agility is the keyword for survival of the organizations in the near future.
Agile methods are based on real time communication between the programming team and its customers. The customers normally include project managers, analysts, and actual customers. All of them communicate face-to-face without putting much emphasis on written documentations. This is a key emphasis area for Agile Development and is a point of criticism. The team resides in an arrangement or enclosure wherein they can freely communicate with each other. The enclosure also may contain Quality Assurance Engineers, Graphics Designers and respective managers.
Most of the agile software development methods call for minimizing the risk by developing software in short modular boxes called iterations. Each of these iterations is by itself a mini software project and follows all the standard phases of the software project life cycle, such as project planning, requirement analysis, system design, code generation, testing and documentation. Completion of any iteration is followed by review of the project priorities by the project team.
Looking back in time
Agile development is an effect of the negative reaction against the commonly practiced software development models of the olden days, namely the waterfall model. It started becoming a popular and practical mode of development approach since the mid 1990's. Agile development came into existence due to the fact that theoretical approach of the waterfall model came out to be quite different from the practical methodologies followed by the developers to successfully design and develop any software solution. During initial days of programming, agile development methods have been referred to as “light weight” methods. In the year 2001 the agile community adopted the name “agile methods.” In the past there have been several agile development methods available to the software industry and each of these are having its own significance and importance to its followers and the community is consistently working towards effective utilization of these methods by the software development world.
The Agile Development Standards
Agile development is based on some standards outlined in this section.
Continuous involvement of customer - The need for involvement of an end user throughout the project lifecycle in agile development is very important. An end user has to be made available throughout the project development lifecycle and interact with the developers and help them achieve their project goals. They also need to verbally communicate on a regular basis to make the project lively and free of any bugs arising from misconceptions.
Team members should take important decisions - The project development team should possess enough power to take important decisions in collaboration with the end user (customer). The team members need not always wait for their higher authorities to take important decisions for taking the project ahead. This can be done when absolutely needed and can be avoided in general. The team members can very well take proper decisions in collaboration with the customer contacts that are in collaboration. They should, however, know to manage the customer’s expectations optimally.
Requirement analysis, a continuous process - In traditional models, the requirements are normally analyzed and fixed at the very initial level of the project lifecycle. Whatever the case may be, the emphasis is given to capture as much requirements as possible and to streamline the project scope. Any future changes are normally taken care of as a separate activity under “change request management.” Agile development works on a philosophy that is very much different from traditional software development methodologies.
Agile development methodology can address the evolving requirements over time. How? The time period for any project is kept fixed and the requirements are allowed to come in during the project lifecycle. Therefore, the project team and also the end user (the customer) need to include or remove any requirement keeping in mind the fixed time period. As a result, they may need to adjust this new work with some other comparable work within the project to put up this change.
Project requirements are visual and adequately drawn - Agile project requirements are drawn mostly at high level and are optimal and visual in nature. These requirements are mostly drawn bit by bit and help to develop the software for any specific feature or module. The visual representation of the requirements helps the agile developers to develop the solution closest to accuracy against its actual requirements. The requirements are sufficient in volume so as to provide that much input that is required for developing and testing the feature or module. This also enables reasonable efficiency. The objective behind this approach is to minimize the time taken for secondary activities in the project lifecycle that are always required to take ahead the project, but are certainly not a part of the end product or the solution.
Development produces small, incremental releases with iterations - In traditional software development methodologies the requirements for the whole software are collected at the very beginning, analyzed and then the software is developed with all its components and finally testing is done for the entire solution followed by its release. Agile software development approach supports a different cycle in terms of analysis, development and testing. The agile development projects are produced in separate pieces with small, “incremental releases.” Each of the features in the whole solution is separately treated and each of these features has its own three phases or steps (analysis, development, and testing). Once this feature is developed, the next feature is developed in succession following similar phases. Hence, the methodology enables doing each of these steps for each feature, with one feature at a time.
Recurrent product delivery – Agile development methodology supports recurrent delivery of any software product. It enables the breakup of the product into several modular features and delivers each feature incrementally on a regular basis.
Fullest completion of each feature – Agile development ensures fullest completion of each of its isolated features in terms of analysis, development, testing and release. Only then is the next feature or module in succession taken up. Care is taken to fully complete the functionalities within each feature (a mini project by itself) and then proceed on to the next feature that is another mini project and is in succession.
The 80/20 Rule – The law of distribution and the similarity in distribution curve amongst many things are defined in the Pareto’s law which is also known as the 80/20 rule. The law defines that 20% of the efforts put in can bring out 80% of results. The percentages may vary in various situations, but overall it means that the optimum amount of very important efforts can be identified and put in to bring out the bulk of the desired results. Hence, agile development emphasizes smart development wherein the team focuses on identifying the most important “20%” efforts to bring out the greater part of the results.
Continuous testing – Agile development encourages regular testing throughout the project lifecycle. It does not normally encourage a separate all new testing phase as such. The team does the unit testing exercise while developing the feature in phases. This not only ensures developing software of great quality, but also helps in the iterative, incremental releases of the software. The automated repeatable unit tests ensure that all the modular features are working as per expectations each time while creating a build. Regular builds are created and integration is also done as the development progresses. The primary objective for this approach is to ensure the software to be available in release condition at all times throughout the development cycle.
Collaborative and cooperative development approach – Agile development is strongly based on effective collaboration and cooperation amongst all its team members and also the end users (clients). Agile development focuses on keeping sleek but effective requirements and documentation that needs great collaboration at all times. Requirements need to be clarified in the right time. The team members and the end users should always be updated equally throughout the development to understand and appreciate the status of work in progress and the goals to be attained.
The Agile Development Methods
There are several agile methods currently available out of which few have gained greater importance in real-time practice. We will elaborate on a few of the popular agile methods, such as Scrum, Extreme Programming (XP), Crystal Clear, and DSDM (Dynamic Systems Development Methods). The other methods available are Agile Unified Process (AUP), Agile Modeling, Adaptive Software Development, FDD (Feature Driven Development), and Lean Software Development.
Let us take a look into a few commonly practiced agile methods in the following sections.
Scrum
Scrum development has its inception during 1986 and had the objective to present a highly iterative development methodology. The popular developers behind its successful initiation are Jeff Sutherland, Ken Schwaber, and Mike Beedle.
Scrum has its primary focus on the management part of the software development, dividing the whole development period into small iterations (of thirty days) called "sprints." This helps in administering the process better and also to control the development with daily team meetings. The engineering practices are less important in scrum development. The users, however, can merge the engineering practices of other popular agile methods with the project management aspects of scrum.
There is a Scrum Master who acts as a facilitator in scrum development and removes the obstacles that the team faces while attaining its sprint goals. The scrum development team is generally located in the same place, very well organized and encourages in extensive communication amongst each other regarding the project development aspects. These help in effective error-free progress and help them to attain the sprint goals. Scrum development takes its credit in addressing the fundamentally empirical challenges by appreciating the fact that any software problem is not defined fully during its inception and by maximizing the team’s efforts in rapid delivery and faster response to up-and-coming requirements.
Extreme Programming (XP)
Extreme Programming is said to be the most popular and important of the various agile development methodologies available to date. Extreme Programming owes its inception to the Smalltalk community during the late 1980's. The popular developers behind its successful initiation are Kent Beck and Ward Cunningham who also took up the task of enhancing the XP practices to provide a software development methodology that is people-centric and highly adaptive. Kent Beck authored the popular book on this methodology called "Extreme Programming Explained" which came out in the market during October 1999. The book still provides good references to the followers of this software development practice.
Extreme Programming recommends a set of daily practices for its team members. These practices can be seen as traditional software development practices taken to its highest productivity level. This effort helps in providing greater and faster response to the customers which is in contrast to the traditional methods. It also helps produce software solution of better quality. XP in line with other agile development methods also believes that requirements can come up during any time throughout the project lifecycle (instead of getting defined at the very beginning), and the team has to be highly adaptive to these up-and-coming requirements and make effective this realistic approach through energetic response.
Crystal Clear
One of the great exponents of agile community Alistair Cockburn developed the crystal family of software development approaches meant for teams of different sizes. All of these methods have similar features and properties. Important properties are Frequent Delivery, Reflective Improvement, and Close Communication. Crystal requires lesser discipline as compared to XP and has reduced chance of failure.
Crystal Clear is an important variant of crystal methodologies that is ideal for a team of about 6 to 8 developers located in the same venue and working on light weight systems. It has its emphasis on people and not on processes. Important properties of crystal clear are as follows.
·         Usable Code should be regularly delivered to the users
·         Improvements are insightful
·         Regular effective verbal communication between co-located team members
·         Ease of accessibility to the expert users
Dynamic Systems Development Methods (DSDM)
DSDM is a RAD (Rapid Application Development) based framework that follows a user driven, incremental approach in an iterative development for designing and developing software on time, satisfying all its business needs and strict budget. This agile methodology has its inception at the United Kingdom during the 1990's by DSDM Consortium (a non-profit organization). DSDM is an extension of RAD and it emphasizes information systems projects that are having steep deadlines and strict budgets. DSDM can be integrated to other agile methods in typical cases.
So, should we go agile?
Agile development and its usage belong to a specific group of people who clearly understand its significance. Agile development has its own set of drawbacks and may not be suitable for any type and size of software project, but can be successfully used for reasonably sized projects with a maximum team size of around 100 developers. However, agile development should be taken up by any organization in steps and can be started with a small project that can fall in line with the agile methods. Agile development is also a boon in providing customers who are so collaborative and act as stakeholders in a project development all through, along with the developers. Agile methods are still very young to draw the boundary conditions effectively for a software project. The decision for choosing agile methods should ideally go to the people primarily who are the best ones to decide whether they can suffice to the excellent collaborative project development. If not, it is better not to follow any agile methods as lack of the desire for adapting this development may ruin the project. However, with all its pros and cons, agile development is gaining immense popularity amongst organizations across the globe that believe in simplicity in designing and developing software with great and effective collaboration between the project stakeholders.

Wednesday, July 18, 2012

Essential-Software-Testing-a-Use-Case-Approach Free E-Book


Aglie Methodology Performace Testing - About Complete Methodology


An Agile Methodology


Prescriptive software methodologies typically employ sequential, step-wise wise models consisting of requirements analysis, design, implementation, and integration testing.


Figure 1

Historically, this approach does not react well to changing requirements, is difficult to estimate for time and cost, and is architecturally fragile.

Agile methodologies provide a collection of foundational values, guiding principles and development practices that to address the challenges of prescriptive, weighty methodologies to  produce software in a lighter, faster, more people-centric manner.  Agile methodologies work best with motivated, reliable people who desire to work together to fulfill their stakeholder's business goals.  Slackers, complainers, and lazy developers need not apply!



Figure 2

Agile developers have as their foundation the following values:  

·         Individuals and interactions over processes and tools
·         Working software over comprehensive documentation
·         Customer collaboration over contract negotiation
·         Responding to change over following a plan

Guiding principles emerge from the foundational values:

·         Software is the primary goal.
The developer's highest priority is to satisfy the customer through early and continuous delivery of quality software.

·         Embrace change
Changing requirements are expected and embraced throughout the software lifecycle.

·         Frequent delivery
Software is delivered at frequent intervals with a preference for shorter timescales.

·         Encourage collaboration and promote communication
Developers and Stakeholders should collaborate throughout the software lifecycle.  The most efficient and effective method of communication is face-to-face conversation. Immediate feedback is desirable and preferred.

·         Trust is essential
The best architectures, requirements, and designs emerge from self-organizing teams.  Equip the developers with the tools and environment to be successful and trust them to get the job done.  Allow the team to self-organize based on its strengths and weaknesses to accomplish the work.

·         Be proactive
As the project grows in size and complexity, proactively seek principles and practices that increase efficiency so the team can continue at the same development pace while maintaining quality and sanity.

·         Strive for quality work
Continuous attention to technical excellence and good design enhances quality.

·         Keep it simple
Suspect complicated solutions without justification. Maximizing the amount of work not done is essential.

·         Introspection is vital
At regular intervals, the team determines the strategies and practices that worked and those that did not. Reflect on way to become more effective and tune and adjust the team’s strategy and practices.

The Guiding Principles drive development practices:

·         Active stakeholder participation
Collaborate with the stakeholder who has the authority and ability to provide information relevant to the system under construction and to make pertinent and timely decisions regarding it.

·         Agile Modeling
Communicates and establishes the “good enough” solution model.

·         Simple design
Resist the desire to complicate and code for the future – keep design and development simple.

·         Standards
Consistent design and coding standards resolve ambiguity and increase communication.

·         Small releases
Partitioning a large effort into small, incremental releases delivers working software to stakeholders faster and reacts quicker to changing requirements.

·         Pair programming
Two heads are often better than one!

·         Iterative, incremental development
Partition the solution into units that can be completed and tested within a series of development cycles.

·         Test Driven development
Defines the requirements of the code and fosters refactoring.

·         Refactoring
Improves the structure and clarity of the code without changing the functionality.

·         Continuous integration
Identifies integration errors faster.

·         Position for next project
Use the artifacts and successful practices from one project to inform and position the next project for success.

Agile methodologies vary by team and mature over time so starting with a broad vision is helpful to transition from a prescriptive methodology.  The following is an agile methodology that retains familiar procedural steps, but incorporates agile principles and practices using four phases.

 
Figure 3


Phase 1: Domain Understanding (Conception)
a. Understand the application from the perspective of the stakeholder
Time to accomplish: normally accomplished in days; sometimes 1 week
Inputs: customer collaboration, requirements documents, legacy code
Possible artifacts that demonstrate understanding:
·         High level problem statement
·         Generalized use cases that captures the intentions of a user
·         High level activity diagram
·         High level work flow
Agile practices employed:
·         Active stakeholder participation

b. Estimate the solution to the problem
Time to accomplish: Hours
Inputs: High level use cases, project requirements
Artifacts:  project estimate
Agile practices employed:
·         Active stakeholder participation
·         Small releases

Phase 2 - Model the solution to the problem (Elaboration)
Time to accomplish: Several days to 1 week for large problem domains
Inputs: High level use cases, project requirements from Phase 1
Artifacts:
·         Agile class diagrams depicting data layer objects
·         Agile class diagrams depicting business layer objects
·         Agile sequence diagrams for complex logic
·         User interface mock-ups and flows
·         Others as “painfully” required
Agile practices employed:
·         Active stakeholder participation
·         Agile Modeling
·         Style and modeling standards
·         Simple design
·         Model refactoring

Phase 3 - Implement the solution to the problem (Construction)
Time to accomplish: Weeks to months
Inputs: Design Model from Phase 2
Artifacts: Working code
Agile practices employed:
·         Active stakeholder participation
·         Test Driven development
·         Pair programming
·         Accomplished in iterations
·         Develop Incrementally
·         Code refactoring
·         Coding standards


Phase 4 - Verify the solution (Transition)
Time to accomplish:  Hours to Days
Inputs:  Implementation from Phase 3
Artifacts:  Proven and tested code
Agile practices employed:
·         Active stakeholder participation
·         Continuous Integration Testing; run the test suite at least daily, email the results to team