initializing new project

Post on 15-Jan-2015

269 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Initializing new projectLai Duy Ha

Outline Software process lifecycle Agile techniques Establishing development environment

& choosing technology

Current Problem in PM & SW development

31.1% of projects will be canceledbefore they ever get completed … 52.7% of

projects willcost 189% of their original estimates.

– The Standish Group Plus project complexity is increasing

Demand for quicker delivery of useful systems Increasingly vague, volatile requirements Greater uncertainty/risk from limited knowledge of:

Underlying technologies Off-the-shelf (OTS) components used

Are conventional development/managementpractices addressing the problem?

Software project lifecyle

Main differences Lifecycle of the process Planing

Adaptability vs. predictability Customer collaboration

Confirmation Uncertain requirements

Communication environment Devide team by function vs process

Individual skill Test driven development Big design up to front vs simple + refactoring Pair programming

When to Apply Agile Methodologies Problems characterized by change, speed,

and turbulence are best solved by agility. Accelerated time schedule combined with

significant risk and uncertainty that generate constant change during the project.

Is your project more like drilling for oil or like managing a production line? Oil exploration projects need Agile

processes. Production-line projects are often well-

served by rigorous methodologies

Some Agile Methodologies Extreme Programming (XP) Scrum Feature-Driven Development (FDD) Adaptive Software Process Crystal Light Methodologies Dynamic Systems Development Method

(DSDM) Lean Development

Scrum process (life cycle)

Outline Software process lifecycle Agile techniques Establishing development environment

& choosing technology

Project leader Planing Project backlog Velocity Project meeting

Modeller Analyzer & designer Agile modelling

Cycle n: Development

Cycle 2: Development

Cycle 1: Development

Cycle 0: Initial Modeling

Initial RequirementsModeling

(days)

Initial ArchitecturalModeling

(days)

Model Storming(minutes)

Implementation(Ideally Test Driven)

(hours)

Reviews(optional)

All Cycles(hours)

Copyright 2003-2005Scott W. Ambler

Modeller Analyzer & designer Agile modelling

Main purpose for communicating Model just «enough» details appear in

code Using UML or not is not the problem

Modeller Conceptual domain modeling

CRC card

Modeller Conceptual domain modeling

Class diagram

Modeller Business process modeling

Activity diagram

Modeller Dynamic object modelling

Sequence diagram

Modeller Dynamic object modelling

State chart diagram

Modeller Agile Architecture

Free form diagram

Modeller User interface flow

Developer Apply patterns & sketch diagrams for

frist design Unitest

Unittest while coding Unittest makes the program failed Program makes the test passed

Refactoring At least, after «testing + coding» Make the code clear Easy to maintain

Other techniques Acceptancetest

Perform automatically Is written by customer, business analysis,

tester, and QA Should be created before implementation

Database problem Testing database

Unit test Intergration test

Database evolutionary Database refactoring Backup & chang DAL code

Outline Software process lifecycle Agile techniques Establishing development

environment & choosing technology

Establishing development environment

Open workplace Source version control Process management

Project backlog Velocity

Test management Unit test Acceptancetest

Database management Policy when changing database schema Tools support Testing with database

Chose technology Achitecture

N-tier application Enterprise & distributed system

Portability E.g Linq to SQL vs N-Hibernate

Execution environmentt Clould

Google App engine Window Azue

Mobile enterprise Service for client (Server technology) Client technology (Android, WP, iOS)

Chose technology Framework

Cross-layer framework ASP.NET with csla Java with Spring Python with Django

Layer dependence framework Presentation MVVM with Prims Web with ASP MVC Data access with Linq to SQL, N-Hibernate

CMS Joomla Wordpress Drupal Zend cart

MDA approach

Reference Devlopment process

Agile Principles Patterns and Practices in C#

Scrum And Xp From The Trenches Visual Studio Application Lifecycle Manag

ement

Reference Agile modeling

The object primer Database change management

http://martinfowler.com/articles/evodb.html

http://www.liquibase.org/ Refactoring

Refactoring: Improving the Design of Existing Code

Thank youQ & A

top related