The Software Development Life Cycle - Development
What is the development phase? (Phase)
The development phase is concerned with creating a working software prototype as defined in the software design document (how) through writing programming code, no code solutions, reuse/modification of existing software or software components 1.
Why do I have to develop software? (High-quality software)
[2 c3]
- Produce a working software prototype/version which can be tested to ensure a software project’s quality and cost objectives are met
- When accompanied with unit or integration testing, it reduces the time between when faults are inserted into the code and when the faults are detected
- When code is reused, it mitigates the problem of code duplicates
Where do I develop software? (Controlled environment)
- Locations: In person, remote or hybrid meetings, events, collaborations, interviews
- Integrated development environment (IDE)
When do I develop software? (Design and development session)
- After the design phase i.e. when an individual, business, or government having designed a proposed software want to create a working version/prototype of said software
- During any phase in the SDLC project i.e. when a want or need is identified to alter any activity, result, code created in the design phase
How do I develop software? (Methodology)
[2 c3]
- Software development principles
- Minimize complexity
- Anticipate change in software and/or environment over time
- Construct for verification
- Systematically reuse libraries, modules, components, source code, and commercial off-the-shelf (COTS) assets
- Use of internal and/or external standards
- Software development technologies:
- API design and use
- Object-Oriented runtime issues i.e. polymorphism, relection
- Parameterization and Generics
- OOP behaviour composition using class inheritance, object composition and parameterization
- Assertions, Design by Contract, and Defensive Programming
- Error Handling, Exception Handling and Fault Tolerance
- Runtime Configuration and Internationalization
- Middleware
- Platform Standards
- Test-First Programming
- Software development tools:
- Algorithms
- Data structures
- Interfaces
- Programming Languages
- Testing
- GUI Builders
- Unit Testing Tools
- Profiling, Performance Analysis, and Slicing Tools
- Software development process:
- Define the order in which components are created and integrated
- Define the integration strategy
- Define the software quality management processes
- Define the allocation of task assignments to specific software engineers/developers
- Prepare software development environment
- Prepare software database
- Code
- Integrate
- Compile
- Project management process:
- In a sequential methodology such as Waterfall, development phase is a one-off activity
- In an iterative methodology such as Agile, Prototype, development phase is a concurrent process
- In an hybrid methodology, development phase is both a sequential and a concurrent phase
- Persons: Stakeholders, software engineers/developers who are directly involved with the project