Software Project Planning, Design, Quality, and Testing

Temporary Planning Project

This planning can be viewed from two perspectives:

  • The launch system date is irrevocably established. Effort distribution within the prescribed framework may be necessary.
  • The second approach assumes we have studied approximate chronological limits, but the system’s organization is the final date to be fixed.

Therefore, are anti-productive work teams? The answer is no, considering that communication will improve the software’s quality and ease of maintenance.

Task Definition and Parallelism

  • When a software engineering project involves more than one person, development activities can be conducted in parallel.

Project Monitoring and Control

  • Software projects are often off schedule daily.
  • One day won’t affect the agenda, but accumulated days can cause major problems.
  • Monitoring is critical for project success and may develop in the following ways:
    • Conducting periodic meetings on project status where each team member reports progress and problems.
    • Evaluating the results of all reviews conducted throughout the engineering process.
    • Determining whether formal project milestones have been achieved on schedule.
    • Comparing the actual start date with the planned start date for each project task.
    • Meeting informally with technicians to make subjective judgments about their progress and potential problems.
  • Project managers use control to manage project resources, address problems, and direct staff.

Software Re-engineering

Almost all companies use some form of information and find that software “ages.” Many programs crucial to the organization’s operation have become more expensive and difficult to maintain. Sometimes, “patches on patches” are implemented, leading to inefficient operation, concurrent failures, and unresponsiveness to user needs.

To Consider Re-engineering

  • Select programs currently used extensively and likely to continue for the next five or ten years.
  • Estimate the annual maintenance cost of selected programs, including error correction, environmental adaptation, and functional improvements.
  • Prioritize selected programs by importance and maintenance cost.
  • Estimate the re-engineering cost of selected programs.
  • Compare maintenance costs with re-engineering costs for each program.
  • Calculate the time required to recover the re-engineering investment.
  • Consider intangible issues like improved ease of change, reliability, system performance, and user interfaces.
  • Start re-engineering with a simple program.
  • Apply lessons learned to subsequent programs.

Software Project Plan

The Software Project Plan culminates planning and provides baseline cost information and an agenda for project development. This short document should:

  • Communicate scope and resources to software managers, technical staff, and customers.
  • Define risks and suggest risk aversion techniques.
  • Define cost and agenda for management review.
  • Provide a comprehensive software development approach for project participants.

Software Design

Design is the first of three technical activities: Design, Coding, and Testing. It’s the process of applying techniques and principles to define a device, process, or system in sufficient detail for physical realization.

Design Methodologies

  • Data Design: Transforms the information field model into required data structures.
  • Architectural Design: Defines relationships between the program’s main structural elements.
  • Procedural Design: Transforms structural elements into a procedural description.

Design decisions affect implementation success and ease of maintenance.

Design Process

  • Preliminary Design: Focuses on transforming data requirements and software architecture.
  • Detailed Design: Refines architectural representation into detailed data structures and algorithms.

Design Basics

Fundamental concepts for software design include:

  • Abstraction: Represents data objects at different detail levels.
  • Refinement: Begins with a high-level function statement and refines it.
  • Modularity: Divides software into named components (modules) to meet requirements.
  • Software Architecture: Refers to the hierarchical structure of modules and data structure.
  • Hierarchy of Control (Program Structure): Represents the hierarchical organization of system components.
  • Data Structure: Represents logical relationships between data items.
  • Software Procedures: Focus on processing details of each module.
  • Information Hiding: Modules are designed so internal information is inaccessible to other modules.

Software Quality

What is Software Quality?

It’s consistency with explicitly established functional and performance requirements, documented development standards, and implicit characteristics expected of professionally developed software.

Software quality emphasizes:

  • Requirements are quality measures; inconsistency is a lack of quality.
  • Specific standards define development criteria; non-compliance leads to poor quality.
  • Software should meet implicit requirements (e.g., maintainability).

Quality Factors

Focus on operational characteristics, ability to withstand changes, and adaptability to new environments.

  • Ease of Maintenance: Can it be fixed?
  • Flexibility: Can it be changed?
  • Ease of Quiz: Can it be tested?
  • Portability: Can it be used on another machine?
  • Reusability: Can parts be reused?
  • Interoperability: Will it interact with another system?

Descriptions:

  • Correction: Satisfaction of specifications and objectives.
  • Reliability: Accuracy in performing duties.
  • Efficiency: Resources and code required for functions.
  • Integrity: Control over unauthorized access.
  • Reusability: Degree a module can be reused.
  • Ease of Interoperation: Effort to couple systems.

Software Quality Assurance (SQA)

Planned and systematic actions to ensure software quality.

Activities:

  • Implementation of Technical Methods: Tools for design and quality specifications.
  • Formal Technical Reviews: Meetings to discover quality problems.
  • Software Testing: Steps and test case design methods for error detection.
  • Setting Standards: Ensuring compliance with quality standards.
  • Change Control: Formalizing and controlling change requests.
  • Measurement: Technical measures for quantitative quality assessment.
  • Generation Quality of the Final Report: Applying management and design disciplines for quality assurance.

Software Testing

A critical element in software quality assurance, representing a final review of specification, design, and coding.

Test Objectives

Design tests to systematically reveal errors with minimal time and effort.

Flow Test Information

  • Correct operation and easily correctable errors indicate good quality and reliability.
  • Inadequate testing may miss serious errors.
  • Inefficient tests may lead to errors being detected by end-users.

Test Case Design

Methods to ensure completeness and find errors.

  • Black Box Testing: Tests on the software interface.
  • White Box Testing: Based on procedural details.

White Box Test

  • Ensure all independent paths are exercised.
  • Exercise all logical decisions.
  • Run conditions at boundaries and operational limits.
  • Exercise internal data structures.

Targets logic errors, incorrect assumptions, and typographical errors.

Black Box Testing

Focuses on functional requirements and input conditions.

Targets incorrect or missing functions, interface errors, data structure errors, performance errors, and initialization/termination errors.

  • Equivalent Partition: Divides input field into data types for test cases.
  • Analysis of Limit Values (AVL): Focuses on boundary conditions.
  • Technical Cause-Effect Graphs: Represents logical conditions and actions.
  • Comparison Test: Develops separate versions for critical software.

Test Real-Time System

Adds time as a difficult element.

  • Testing Tasks: Test all tasks independently.
  • Performance Tests: Simulate system behavior based on external events.
  • Intertasks Test: Test for time-related errors.
  • System Test: Integrate software and hardware for complex tests.