Friday, 5 July 2013

Data Structure-Oriented Design (Early 70s)

Q: Explain about 'Data Structure-Oriented Design (Early 70s)'
  • Soon it was discovered:
-        it is important to pay more attention to the design of data structures of a program
*        than to the design of its control structure.
  • Techniques which emphasize designing the data structure:
-        derive program structure from it:
*        are called data structure-oriented design techniques. 
  • Example of data structure-oriented design technique:
-        Jackson's Structured Programming(JSP) methodology
*        developed by Michael Jackson in 1970s.
  • JSP technique:
-         program code structure should correspond to the data structure.
  • In JSP methodology: 
-        a program's data structures are first designed using notations for 
*        sequence, selection, and iteration. 
-        Then data structure design is used :
*        to derive the program structure.
  • Several other data structure-oriented Methodologies also exist:
-         e.g., Warnier-Orr Methodology. 

Data Flow-Oriented Design  (Late 70s)

  • Data flow-oriented techniques advocate:
-        the data items input to a system must first be identified,
-        processing  required on the data items to produce the required outputs should be determined.
  • Data flow technique identifies:
-        different processing stations (functions) in a system 
-        the items (data) that flow between processing stations.
  • Data flow technique is a generic technique:
-        can be used to model the working of any system
·        not just software systems.
  •  A major advantage of the data flow technique is its simplicity
Data Flow Model of a Car Assembly Unit
**********************************************************************************



Thursday, 4 July 2013

difference betwen control flow oriented and data flow oriented design

Q: State at least two basic differences between control flow-oriented and data flow-oriented design techniques.
Ans.: - Control flow-oriented design deals with carefully designing the program’s control structure. A program's control structure refers to the sequence, in which the program's instructions are executed, i.e. the control flow of the program. But data flow-oriented design technique identifies:
• Different processing stations (functions) in a system
• The data items that flows between processing stations

Friday, 22 March 2013

Identify at least two advantages of using high-level languages over assembly languages.


Q: Identify at least two advantages of using high-level languages over assembly languages.
Ans.: - Assembly language programs are limited to about a few hundreds of lines of assembly code, i.e. are very small in size. Every programmer develops programs in his own individual style - based on intuition. This type of programming is called Exploratory Programming.
But use of high-level programming language reduces development efforts and development time significantly. Languages like FORTRAN, ALGOL, and COBOL are the examples of high-level programming languages.

Emergence of Software Engineering?


5. Emergence of Software Engineering?

Ans:
  Early Computer Programming (1950s):
-        Programs were being written in assembly language.
-        Programs were limited to  about a few hundreds of lines of assembly code.
  • Every programmer developed his own style of writing programs:
-        according to his intuition  (exploratory programming).
High-Level Language Programming (Early 60s)
  • High-level languages such as FORTRAN, ALGOL, and COBOL were introduced:
-        This reduced software development efforts greatly.
  • Software development style was still exploratory.
-        Typical program sizes were limited to a few thousands of lines of source code.
Control Flow-Based Design (late 60s)
  • Size and complexity of programs increased further:
-        exploratory programming style proved to be insufficient. 
  • Programmers found: 
                  -        very difficult to write cost-effective and correct programs
-        programs written by others very difficult to understand and maintain.
  • To over come with this problem, experienced programmers advised: ``Pay particular attention to the   design of the program's control structure.'’               
  • A program's control structure indicates:
-         the sequence in which the program's instructions are executed.
  • To help design programs having good control structure:
-        flow charting technique was developed.
  • Using  flow charting technique:
-        one can represent and design a program's control structure.
-        Usually one understands a program:
·        by mentally simulating the program's execution sequence
  • A program having a difficult(messy) flow chart representation:
-        difficult to understand and debug.
  • It was found:
-        GO TO statements  makes control structure of a program messy(difficult, unorganized)
-        GO TO statements alter the flow of control arbitrarily.
-        The need to restrict use of GO TO statements was recognized.
  • Many programmers  had extensively used assembly languages.
-        JUMP instructions are frequently used for program branching in assembly languages,
-        programmers considered use of GO TO statements inevitable.
  • But, soon it was conclusively proved:
-        only three programming constructs are sufficient to express any programming logic:
·        sequence  (e.g. a=0;b=5;)
·        selection (e.g.if(c=true) k=5 else m=5;)
·        iteration   (e.g. while(k>0) k=j-k;)
  • Everyone accepted:
-        it is possible to solve any programming problem without using GO TO statements.
-        This formed the basis of  Structured Programming  methodology.

What is Computer Systems Engineering?


5. What is Computer Systems Engineering?
Ans:
  • Computer systems engineering:
-        encompasses software engineering.
  • Many products require development of software as well as specific hardware to run it:
-         a coffee vending machine,
-        a mobile communication product, etc.
  • The high-level problem:
-        deciding which tasks are to be solved by software
-        which ones by hardware.
  • Often, hardware and software are developed together:
-        Hardware simulator is used during software development.
  • Integration of  hardware and software.
  • Final system testing

Programs versus Software Products?


4. Programs versus Software Products?

PROGRAMS
S/W PRODUCT
  • Usually small in size
  • Author himself is sole user
  • Single developer
  • Lacks proper user interface
  • Lacks proper documentation
  • Ad hoc(Not Systematic or unplanned) development. 

  • Large
  • Large number of users
  • Team of developers
  • Well-designed interface
  • Well documented & user-manual prepared
  • Systematic development

What is Software Crisis


3. What is Software Crisis
Software Crisis

·Software products:
-fail to meet user requirements.
-frequently crash.
-expensive.
-difficult to alter, debug, and enhance.
-often delivered late.
-use resources non-optimally.


Factors contributing to the software crisis

·Larger problems,
·Lack of adequate training in software engineering,
·Increasing skill shortage,
·Low productivity improvements.