Software Development Concepts
SDLC Phase Steps
Phase Name | Description | Mnemonic |
⬇️ Requirements and Analysis | In this phase, the needs of potential users are understood and analyzed to produce a requirements specification. |
Real |
⬇️ Design | This phase involves creating a detailed design of the software system, specifying architecture, components, interfaces, and other characteristics. |
Developers |
⬇️ Implementation (or coding) | The actual code is written in this phase, transforming design documentation into functional software. |
Ideas |
⬇️ Testing | The software is tested to ensure it meets the specifications and is free of defects. |
Take |
🔁 Evolution (or Maintenance) |
As software gets used, it will evolve to meet new user requirements, address discovered bugs, and incorporate other changes. |
Effort |
Systems Development Models
Work Breakdown Structure (WBS):
The Work Breakdown Structure (WBS) is a project management tool that breaks down the project into smaller, more manageable components. It's a hierarchical decomposition of a project into deliverables and work packages. The main goal of the WBS is to make complex projects more comprehensible by dividing them into smaller parts, but it can include things like functional requirements as well. This makes it easier to manage, schedule, and allocate resources. A project plan is different from a WBS and would provide things like timing and resources.
Agile
Agile, at its heart, champions customer-centricity and rapid, iterative development. Instead of a fixed blueprint, Agile thrives on adaptation, evolving with the client's insights and the project's needs.
Four Core Principles:
- Individuals and interactions over processes and tools.
- Working software over comprehensive documentation.
- Customer collaboration over contract negotiation.
- For example, a customer might start to use the software and learn what they really need verses what they thought they needed.
- Responding to change over following a plan.
- User Acceptance Testing (UAT) can provide guidance on adapting and pivoting direction.
Remember the four core principles of Agile for the exam.
SCRUM
- The most popular Agile methodology.
- Named after daily team meetings known as scrums.
- Teams review daily progress, plan for the next day, and address impediments.
- Led by a Scrum Master who aids in the team's progress towards objectives.
- Organizes work into short sprints, usually ranging from one to four weeks. Each sprint aims to achieve short-term objectives contributing to the project's overall goals.
- At the sprint's start, the team plans the work, and by the end, there should be a potentially releasable product, even if not complete.
- Includes contractual and liability controls, multiple suppliers for continuity, and validating financial stability of suppliers.
Waterfall
Contrary to Agile, the Waterfall model is characterized by its linear, step-by-step approach towards product development. It meticulously follows each phase, permitting revisions only to the immediate preceding step. While it shares semblance with the software development lifecycle, Waterfall's structure demands comprehensive analysis and design for the entire project from the outset. One of its main limitations is the absence of consistent feedback loops, making alterations both challenging and expensive.
Seven stages:
- ⬇️ System Requirements
- ↕️ Software Requirements
- ↕️ Preliminary design
- ↕️ Detailed Design
- ↕️ Code and Debug
- ↕️ Testing
- ✅ Operations & Maintenance
Reminiscent from earlier manufacturing processes where tasks were done in a sequential manner, one after the other.
Spiral
Often referred to as the "metamodel" or a "model of models," the Spiral model can be visualized as an enhancement of the Waterfall model, integrating multiple iterations of it. Each spiral in the model represents a developmental phase, culminating in a new prototype or iteration of the software.
Here's what distinguishes the Spiral model:
-
Iterative Nature: Unlike the strict linear progression of Waterfall, the Spiral model allows for iterative development. This aspect addresses one of the primary criticisms of the Waterfall model, where changes post-phase completion were cumbersome and expensive.
-
Customer Feedback and Realization: Should a customer have an epiphany or change of requirements mid-way through the development process, the Spiral model offers the flexibility to circle back, adjust, and refine. This iterative feedback loop ensures the end product is closely aligned with customer expectations and needs.
Unlike the Waterfall model, you don't revert to the previous stage; instead, you iterate to the next spiral if a requirement changes.
Programming Languages
Software developers use programming languages to create software. Developers mostly use high-level languages like Python, Java, etc. which are closer to human language. There are two main ways code gets executed: through compilation or interpretation.
Aspect | Compiled Code | Interpreted Code |
---|---|---|
Languages | C, Java | Python, JavaScript |
Development Process | Developers write code, then use a compiler to create an executable file | Developers write code and distribute it as is |
Execution | Users run the executable file | An interpreter on the user's computer reads and runs the code |
Visibility | Regular users can't easily see or alter the code | Anyone can open and see the code |
Security Measures | Code obfuscation to deter reverse engineering, although decompilers tools exist. | None in this context |
Security Implications | - Hard for outsiders to alter - Difficult to detect hidden issues or malware |
- Users can see and potentially alter the code - Harder for original developers to hide malicious elements but easy for others to insert if they get access |
Software Development Maturity Models
Maturity models serve as the guiding light, steering the process from initial chaos to disciplined, optimized operations. They offer an evolutionary trajectory, marking the journey from low to high maturity smoother high maturity. While these models share common principles of progress, each has its unique characteristics and nuances.
Capability Maturity Model (SW-CMM)
SW-CMM (Software Capability Maturity Model) primarily concentrates on improving software development processes, offering organizations a roadmap to mature their software practices.
Capability Maturity Model Integration (CMMI)
CMMI (Capability Maturity Model Integration), integrates multiple maturity models, making it applicable not only to software engineering but also to product development and service provision. It differs from SW-CMM by providing a broader framework, capturing an array of disciplines beyond just software, and emphasizing integrated product and process development. CMMI gives an insight into our current maturity level and helps us plan where we need to head.
Level | Name | Characteristic | Description |
Level 1 | Initial | REACTIVE | Unpredictable and poorly controlled. |
Level 2 | Repeatable | MANAGED | Projects are characterized. |
Peer review is required from level 3 onwards.
Level 3 | Defined | PROACTIVE | Processes characterized. |
Level 4 | Quantitatively Managed | QUANTITATIVE | Measured processes provide insights into performance. |
Level 5 | Optimizing | CONTINUOUS | Projects are characterized. |
IDEAL Model
A software development model that incorporates attributes of SW-CMM.
- Initiating - Business reasons established, infrastructure put in place.
- Diagnosing - Current state analysis and change recommendations.
- Establishing - Development of change plans.
- Acting - Implementation of the plan and solutions.
- Learning - Continuous analysis for improvement.