Software Articles

    Software Design & Development


    By pntglobal

    Software design is a process of problem-solving and planning for a software solution. There are many aspects to consider in the design of a piece of software. The importance of each should reflect the goals the software is trying to achieve. Some of these aspects are:


    • Extensibility - New capabilities can be added to the software without major changes to the underlying architecture.

    • Robustness - The software is able to operate under stress or tolerate unpredictable or invalid input. For example, it can be designed with resilience to low memory conditions.

    • Reliability - The software is able to perform a required function under stated conditions for a specified period of time.

    • Fault-tolerance - The software is resistant to and able to recover from component failure.

    • Security - The software is able to withstand hostile acts and influences.

    • Maintainability - The software can be restored to a specified condition within a specified period of time. For example, virus software may include the ability to periodically receive virus definition updates in order to maintain the software's effectiveness.

    • Compatibility - The software is able to operate with other products that are designed for interoperability with another product. For example, a piece of software may be backward-compatible with an older version of itself.

    • Modularity - the resulting software comprises of well defined, independent components. That leads to better maintainability. The components could be then implemented and tested in isolation before being integrated to form a desired software system. This allows division of work in a software development project.

    • Reuse - the modular components designed should capture the essence of the functionality expected out of them and no more or less. This single-minded purpose render the components reusable wherever there are similar needs in other designs.