MD 4
MD 4
• Iterative Waterfall Model: Recognizing the limitations of the classical approach, the
iterative waterfall model introduces feedback loops between phases. After each phase,
there is a review where stakeholders provide feedback, which may lead to revisiting
previous phases or making adjustments before moving forward.
Key Principles:
Formal specification languages are used in software engineering to precisely describe system
requirements, behavior, and designs using mathematical or formal logic constructs. Here are
some types:
• Z Notation: Based on set theory and first-order logic, Z notation is used to specify
and refine software system specifications. It is particularly suited for describing
complex data structures and operations.
• VDM (Vienna Development Method): VDM uses mathematical notations to
describe software systems. It includes two main dialects: VDM-SL (Specification
Language) for functional specifications and VDM++ for object-oriented
specifications.
• B-Method: B-Method uses abstract machines, refinement, and mathematical proofs to
specify and verify software systems. It emphasizes correctness by construction
through systematic refinement.
• Larch: Larch incorporates formal specification techniques with programming
language design. It defines interfaces using specification languages to enhance
software design and verification.
• SPARK: SPARK is a subset of Ada programming language with annotations for
formal verification. It allows for writing formally verifiable software specifications
and guarantees.
• Statement Coverage: Ensures that each statement in the code is executed at least
once during testing.
• Branch Coverage: Tests every branch (decision) in the code to ensure all possible
paths are tested.
• Path Coverage: Tests every possible path from start to end within a module to ensure
that all feasible paths are exercised.
• Condition Coverage: Ensures that each Boolean sub-expression in a decision is
evaluated to both true and false during testing.
• Loop Coverage: Ensures that all loops execute at their boundaries, within their
operational bounds, and with maximum iterations.
• Data Flow Coverage: Ensures that all definitions and uses of variables within the
code are exercised during testing.
These techniques aim to achieve thorough test coverage of the code's internal structure,
ensuring its correctness and robustness.
• Risk Identification: Identify potential risks that could affect project scope, schedule,
cost, quality, or resources. Use techniques like brainstorming, checklists, and
historical data review.
• Risk Assessment: Assess the likelihood and impact of identified risks. Prioritize risks
based on their severity and potential consequences on project objectives.
• Risk Mitigation Planning: Develop strategies and action plans to mitigate or reduce
identified risks. This may include risk avoidance, risk transfer, risk reduction, or risk
acceptance strategies.
• Risk Monitoring and Control: Continuously monitor identified risks throughout the
project lifecycle. Implement risk responses, track mitigation actions, and reassess
risks as project conditions change.
• Documentation and Communication: Document all identified risks, assessments,
mitigation plans, and decisions. Communicate risks and mitigation strategies to
stakeholders to maintain transparency and alignment.
Software Configuration Management (SCM) is a set of processes, policies, and tools used to
manage and control changes to software artifacts throughout their lifecycle. Here’s how the
SCM process typically works:
• Identification: Identify and uniquely label each software configuration item (SCI),
including source code, documentation, and configuration files.
• Control: Manage changes to SCIs using version control tools and techniques.
Establish baselines and track changes to ensure consistency and traceability.
• Status Accounting: Record and report the status and history of SCIs and
configuration baselines throughout the project lifecycle. This includes tracking
changes, versions, and configurations.
• Auditing and Review: Conduct audits and reviews to ensure compliance with SCM
policies, procedures, and standards. Verify adherence to configuration management
plans and identify areas for improvement.
• Build and Release Management: Manage the build process to create software
releases from controlled SCIs. Ensure consistency, reproducibility, and traceability of
software builds.
• Change Management: Implement a formal process for requesting, evaluating,
approving, and implementing changes to SCIs. Ensure that changes are managed and
controlled to minimize disruption and risk.
Effective SCM helps improve software quality, reduce risks associated with changes, and
enhance collaboration among development teams