Describing our vision to enhance development process in five steps.
1- Build basic modules and wrap them with a set of startup-projects
2- Enhance already built and running project.
3- Define standard, specification and guidelines.
4- Achieve software quality factors
5- Define learning path.
2. Vision tips
1 Build basic modules and wrap them with a set of startup-projects
2 Enhance already built and running project.
Define standard, specification and guidelines.3
4 Achieve software quality factors
5 Define learning path.
3. Build basic modules and wrap them with a set of startup-projects
Design and build basic modules based on a flexible and
extendable design
Document module design
[How to use and how to extend it’s functionality].
Wrap these modules with a start up project
Define basic project configuration
Test all your start-up project functionality for different cases
Version update have to deal well with old versions.
Start-up
project
Authentication
File uploader
Notification
Mail handler
4. Build basic modules and wrap them with a set of startup-projects
MVC architecture mainly target admin tool and small to
medium projects which doesn’t expect to scale.
Service oriented architecture target medium to big
projects which expected to scale.
Workflow target mainly for automated systems.
Three start-up projects for different business models.
MVC
Service oriented
Workflow systems
5. Build basic modules and wrap them with a set of startup-projects
Visualize your design(minimize complexity).
Use case Diagram
Provide an overview of system business models
Layard Diagram
To clarify system architecture and how modules interact with each other.
ERD Diagram
For database design
Activity Diagram
To simplify complex and sensitive business cases
Class Diagram
Clarify how objects interact with each other and how we apply a specific
design pattern.
6. Build basic modules and wrap them with a set of startup-projects
Build specification layer (abstraction layer)
Dependency inversion principle.
depend on abstractions not on concretions
Program to an interface, not an implementation
7. Build basic modules and wrap them with a set of startup-projects
Legacy code (dead code):
Code which we can’t improve design further
Code which very difficult to make changes as system tightly coupled
Code which doesn’t include great unit testing
Code without any documentation
We don’t have to write more legacy code..
8. Build basic modules and wrap them with a set of startup-projects
RethinkThink Discover
9. Vision tips
1 Build basic modules and wrap them with a set of startup-projects
2 Enhance already built and running project.
Define standard, specification and guidelines.3
4 Achieve software quality factors
5 Define learning path.
10. Enhance already built and running project.
Project description
Documentation [deployment documentation]
Module replacement.
Adapt yourself to deal well with .
Project enhancement and refactoring
Old technologies.
Legacy code
Code which opposes your thinking.
11. Vision tips
1 Build basic modules and wrap them with a set of startup-projects
2 Enhance already built and running project.
Define standard, specification and guidelines.3
4 Achieve software quality factors
5 Define learning path.
12. Define standard, specification and guidelines.
Discover community standard and Best Practices
Take a look at popular samples (APIs).
Define your own standard
Database, API, Naming convention and docs
What to do.
13. Define standard, specification and guidelines.
Facilitate interaction and communication among team members.
Facilitate new candidate to collaborate well with team
Displays a positive and professional image to clients
why to do.
14. Vision tips
1 Build basic modules and wrap them with a set of startup-projects
2 Enhance already built and running project.
Define standard, specification and guidelines.3
4 Achieve software quality factors
5 Define learning path.
16. Achieve software quality factors (correctness)
Testing is a really important thing to make your code reusable
Provide unit testing for all startup project modules and sensitive
business cases.
Testing.
17. Achieve software quality factors (security)
Build your basic authentication mechanism (stateless, stateful)
Discover security vulnerabilities and check how your security layer
solve it
Check how to integrate well to solve un supported vulnerabilities
Build a separate project to include all security investigations which
categorized into several levels.
Don’t forget include your basic level into all your startup-projects
Security.
18. Achieve software quality factors (scalability)
Design for horizontal scalability
Build a stateless web application.
Scalability.
19. Achieve software quality factors (performance)
speed up data lookups and data retrieving
Use caches wherever possible
Cashing
20. Achieve software quality factors (performance)
Optimize your system on all levels
Optimize database (indexing, right key, query optimizations)
Optimize your application
Optimize your deployment environment (application server, jvm)
Optimization.
21. Vision tips
1 Build basic modules and wrap them with a set of startup-projects
2 Enhance already built and running project.
Define standard, specification and guidelines.3
4 Achieve software quality factors
5 Define learning path.
22. Define learning path
To share and build knowledge among team members.
Support previews steps.
Represented in Presentations, Courses