Software Development
Software development is the process of designing, coding, testing, and maintaining applications or systems to solve problems or perform tasks using computer software.
Software Development
-
Project Management
-
Methodology
- Prince2
- Scrum
- Extreme Programming (XP)
- Unified Process (UP)
- Rapid Application Development (RAD)
-
Documents
- Procedures
- Templates
- Check Lists
- Task Management
- Change Management
- Issue Management
- Risk Management
-
Methodology
-
Architecture And Design
-
Design Balance
- Requirements
- Constraints
- Dependencies
- Risks
-
Design Documentation
- Business Processes
- Business Requirements
- Functional Specification
- Technical Specification
-
Design Approach
- Adaptive Design
- Progressive Enhancement
- Graceful Degradation
-
Design Thinking
- Identify The Nouns (Entities/Data)
- Identify The Verbs (Requests/Actions)
-
Separate The Verbs
- Commands
- Queries
-
Separate The Commands
- Data Creation (Create)
- Data Mutation (Update, Delete)
-
Favour Pure Functions
- Pass Dependencies As Parameters
- Favour Composition Over Inheritance
- Minimise Nesting
-
Remove Or Minimise Shared State
- Organise Shared State Into Data Structures
-
Service Oriented Architecture (SOA)
- Simple Object Access Protocol (SOAP)
-
Resource Oriented Architecture (ROA)
- Representational State Transfer (REST)
-
Unified Modelling Language (UML)
-
Structure Diagrams
- Class Diagram
- Component Diagram
- Composite Structure Diagram
- Deployment Diagram
- Object Diagram
- Package Diagram
- Profile Diagram
-
Behaviour Diagrams
- Activity Diagram
- Use Case Diagram
- State Machine Diagram
-
Interaction Diagrams
- Sequence Diagram
- Communication Diagram
- Timing Diagram
- Interaction Overview Diagram
-
Structure Diagrams
-
Design Balance
-
Software Development Life Cycle
- Plan
- Design
- Develop
- Test
- Deploy
-
Monitor
-
Telemetry
- Logging And Auditing
- Tracing
- Metrics
-
Telemetry
- Support
-
Quality Assurance
- Best Practice
- Coding Standards
- Coding Reviews
-
Testing
-
Types
- Acceptance Testing
- Black Box Testing
- White Box Testing
- Regression Testing
- Stress Testing
-
Levels
- System Testing
- Integration Testing
-
Unit Testing
- Mock, Stub, Fake
-
Types
- Issue Resolution
- Change Management
- Configuration Management
- Version Control
-
Programming Paradigm
-
Functional Programming
- Pure Functions
- Expressions Rather Than Statements
- Composition Rather Than Inheritance
- Immutability
- Declarative Programming
-
Object Oriented Programming (OOP)
-
Attributes
- Abstraction
- Encapsulation
- Polymorphism
- Inheritance
-
Principles And Patterns
-
SOLID Principles
- Single Responsibility Principle (SRP)
- Open / Closed Principle
- Liskov Substitution Principle (LSP)
- Interface Segregation Principle (ISP)
- Dependency Inversion Principle (DIP)
-
Design Patterns
-
Creational Patterns
- Abstract Factory
- Factory Method
- Lazy Initialization
- Prototype
- Singleton
-
Structural Patterns
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Proxy
-
Concurrency Patterns
- Lock
-
Behavioural Patterns
- Chain of Responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- Publish / Subscribe
- Specification
- State
- Strategy
- Template Method
- Visitor
-
Creational Patterns
-
SOLID Principles
-
Attributes
-
Functional Programming
-
Applications
-
Enterprise Resource Planning (ERP)
- Planning
- Production
- Sales And Marketing
- Customer Relationship Management (CRM)
- Inventory Management
- Finance And Accounting
- Human Resources
- Reporting
-
Enterprise Resource Planning (ERP)
-
Tasks
- Automation
- Optimisation
- Integration
- Migration
-
Tools
-
Agile
- Jira (by Atlassian)
- YouTrack (by JetBrains)
-
Package Manager
- NuGet
-
Dependency Injection
- Ninject
- StructureMap
- Castle Windsor
-
Validation
- FluentValidation
- DataAnnotation
-
Logging
- Serilog
- Log4Net
- NLog
- Logging Application Block
- Elmah
-
Testing
- MSTest
- NUnit
- XUnit
-
Mocking
- NSubstitute
- Moq (Privacy Concern ???)
-
Benchmarking
- BenchmarkDotNet
-
Debugging
- Visual Studio Debugger
-
System Debugging
- Sysinternals
-
Version Control
- Git
- Team Foundation Version Control (TFVC)
- PVCS
- Visual Source Safe (VSS)
-
Deployment (CI/CD)
- Jenkins
- TeamCity (by JetBrains)
-
Agile