2. Outline
Software process lifecycle
Agile techniques
Establishing development environment &
choosing technology
3. Current Problem in PM & SW development
31.1% of projects will be canceled
before they ever get completed … 52.7% of
projects will
cost 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/management
practices addressing the problem?
5. 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
6. 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
7. Some Agile Methodologies
Extreme Programming (XP)
Scrum
Feature-Driven Development (FDD)
Adaptive Software Process
Crystal Light Methodologies
Dynamic Systems Development Method
(DSDM)
Lean Development
12. Modeller
Analyzer& designer
Agile modelling
Initial Requirements Initial Architectural
Modeling Modeling
(days) (days)
Cycle 0: Initial Modeling
Model Storming
(minutes)
Reviews
(optional)
All Cycles
(hours)
Implementation
(Ideally Test Driven)
(hours)
Cycle 1: Development
Cycle 2: Development
Copyright 2003-2005
Cycle n: Development Scott W. Ambler
13. Modeller
Analyzer& designer
Agile modelling
Main purpose for communicating
Model just «enough» details appear in
code
Using UML or not is not the problem
21. 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
22. 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
23. Outline
Software process lifecycle
Agile techniques
Establishing development environment &
choosing technology
24. 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
25. 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)
26. 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
27. Reference
Devlopment process
Agile Principles Patterns and Practices in C#
Scrum And Xp From The Trenches
Visual Studio Application Lifecycle
Management
28. Reference
Agile modeling
The object primer
Database change management
http://martinfowler.com/articles/evodb.ht
ml
http://www.liquibase.org/
Refactoring
Refactoring: Improving the Design of
Existing Code
29. Reference
Testing
UI Test
http://seleniumhq.org/docs/02_selenium_ide.
html
Acceptancetest
http://www.clemensreijnen.nl/post/Testing-in-
the-Application-Lifecycle-with-Visual-Studio-
2010-Test-Edition.aspx
http://fitnesse.org/
Unit test with data access layer
http://www.buunguyen.net/blog/unit-testing-
the-data-access-layer.html