Page 175 - DCAP305_PRINCIPLES_OF_SOFTWARE_ENGINEERING
P. 175

Unit 8: Detailed Design



            applications. The scientific foundation for such applications includes computational logic and   Notes
            logic-based AI.
            Algorithmic: Algorithmic is the part of computer science that deals with the design and analysis
            of algorithms and data structures and constitutes the scientific foundation for reasoning about
            resources used in computing such as time and space. This covers both the design and analysis
            of efficient algorithms solving concrete problems, and also with identifying common patterns
            of problems and associated algorithmic paradigms that can lead to efficient solutions for classes
            of problems.
            Computational Logic: Computational logic is the study of logic and logical methods within
            computer science. Logic is the study of valid inferences, and in computational logic it is studies
            how to automate such inferences on a computer. Computational logic is used for the specification
            and verification of software and hardware systems, for topics in databases and programming
            languages, and for logic-based AI, such as automated reasoning and knowledge-based systems

            The  basic  goal  in  detailed  design  is  to  specify  the  logic  for  the  different  modules  that  have
            been specified during system design. Specifying the logic will require developing an algorithm
            that will implement the given specifications. Here we consider some principles for designing
            algorithms or logic that will implement the given specifications. The term algorithm is quite
            general and is applicable to a wide variety of areas. For software we can consider an algorithm
            to be an unambiguous procedure for solving a problem. A procedure is a finite sequence of
            well-defined steps or operations, each of which requires a. finite amount of memory and time
            to complete. In this definition we swum that termination is an essential property of procedures.
            From now on we will use procedures, algorithms, and logic interchangeably.

            There are a number of steps that one has to perform while developing an algorithm. The starting
            step in the design of algorithms is statement of the problem. The problem for which an algorithm
            is being devised has to be precisely and clearly stated and properly understood by the person
            responsible for designing the algorithm. For detailed design, the problem statement comes from
            the system design. That is, the problem statement is already available when the detailed design
            of a module commences. The next step is development of a mathematical model for the problem.
            In modelling, one has to select the mathematical structures that are best suited for the problem.
            It can help to look at other similar problems that have been solved. In most cases, models are
            constructed by taking models of similar problems and modifying the model to suit the current
            problem. The next step is the design of the algorithm. During this step the data structure and
            program structure are decided. Once the algorithm is designed, its correctness should be verified.

            No clear procedure can be given for designing algorithms. Having such a procedure amounts
            to automating the problem of algorithm development, which is not possible with the current
            methods. However, some heuristics or methods can be provided to help the designer design
            algorithms for modules. The most common method for designing algorithms or the logic for a
            module is to use the stepwise refinement technique.
            The stepwise refinement technique breaks the logic design problem into a series of steps, so that
            the development can be done gradually. The problem starts by converting the specifications of
            the module into an abstract description of an Algorithm containing a few abstract statements,
            in each step; one or several statements in the algorithm developed so far are decomposed into
            more  detailed  instructions.  The  successive  refinement  terminates  when  all  instructions  are
            sufficiently precise that they can easily be converted into programming language statements.
            During refinement, both data and instructions have to be refined. A guideline for refinement is
            that in each step the amount of decomposition should be such that it can be easily handled and
            that represents one or two design decisions. Generally, detailed design is not specified using
            formal programming languages, but using languages that have formal programming like outer




                                             LOVELY PROFESSIONAL UNIVERSITY                                   169
   170   171   172   173   174   175   176   177   178   179   180