Lecture 3:  Software Engineering.

 

Overview

q       Analytical and Algorithmic methods address problems that are specific, concise and not too complicated

q       Typical real-life problems are large-scale in nature and require a team effort to design and implement

q       SE method addresses these more complicated real-life problems

 

Objectives of this lecture

q       Introduce the field of Software Engineering

q       Discuss the basic software lifecycle and what is required at each stage of the cycle  --the waterfall model

 

What is & Why Software Engineering?

q       A computer's behaviour is completely dictated by software.

q       In order to make efficient and effective use of computers, we must design software systems that are reliable, flexible, expandable, efficient, and verifiable

q       In the late 1950s and early 1960s software systems were generally built without following any established, systematic methodology

q       This lead to a serious crisis as every serious modification in needs, involved re-writing the whole software.

q       Experiences in the analysis of previous software development failures forced software designers to adopt more scientific approach to software development

q       Software Engineering (SE), therefore, is an attempt to apply the structured methods of engineering to software development

q       It involves the analysis and application of strategies to design, construct, and maintain large-scale software systems using certain common methods.

q       The goal of SE is to ensure the development of software that has the characteristics listed in the second point above


 

q       SE emphasizes on

Ø                  Conceptual understanding: requires the detailed understanding of the requirements of the system to be implemented in software

Ø                  Design: successive refinement of abstract models toward concrete implementation

Ø                  Prototyping: construction trial model or preliminary models to be carefully examined before building the final system

Algorithm Design Tools

q       Hierarchy chart

Ø                  Used to show, pictorially, the phases of software design and execution in terms of levels of increasing details

 

 

 

 

 

 

 


q       Program documentation

Ø                  Gives a clear statement of the purpose and design of a piece of software

Ø                  Should include at least, the title, description, formal statement, author & date

Ø                  Helps programmers involved in a large SE project to understand each other's programs

Ø                  Although useful, documentation should be used carefully so that the source program is not buried inside the documentation

Algorithm Design Strategies

There are two main algorithm design approaches namely:

q       Bottom-up

Ø                  This approach identifies and constructs the basic building blocks of a large system, then incrementally builds larger subsystems using smaller ones, until the whole system desired is constructed

Ø                  This approach may be useful in projects such as creating software library or scientific research.

Ø                  The method is generally bad when constructing software whole requirements can be pre-determined. 

q       Top-down

Ø                  Requires a more detailed understanding of the problem at hand

Ø                  Overall problem is then broken down into smaller logic subunits

Ø                  Specifications, hierarchy charts, and algorithms are then developed

Ø                  Must understand the design of all phases of the project before the first line code is written.

Ø                  This method requires more preparatory work and thus too formal to be attractive to beginners.


The Waterfall Model

q       This model describes six phases found in the life cycle of a professional software development process

q       Needs Analysis:  Determines the customers’ needs

q       Needs Specification:  Documents the needs in terms of input, process and output and verify with the customer

q       Algorithm Design:  Breaking the problem into modules using tools such as hierarchy charts and develop algorithm for each module.

q       Software implementation:  Actual coding using a suitable language.

q       Testing and Integration: Evaluation of the various modules and integrating them to form the complete software.

q       Delivery & Operation: Turning over the finish product to the customer/installation

q       Program Maintenance:  Could arise as a result of errors, changing needs or new requirements.  Could lead to starting the project from any of the previous stages  --- life cycle

 

Criticisms of the Waterfall Approach:

q       Real projects rarely follow the sequence – Iterations always occur

q       Difficult for the customer to specify all requirements

q       The developer may be unsure of the efficiency of an algorithm, etc.

q       Working version is at the end – Customer must be patient.

 

Other Paradigms

Prototyping:

q       Enable the developer to create a model of the software

q       It involves an Iteration of:

Ø                  Requirement gathering

Ø                  Quick Design

Ø                  Building Prototype

Ø                  Customer evaluation

q       It gives the customer confidence and allow the developer to test his methods

 

q       Problems:

Ø                  Could also lead to the customer losing confidence

Ø                  The developer often makes compromises to get the prototype working

The Spiral Method

q       Combines the Classic life cycle and Prototyping

q       It involves the sequence:

Ø                  Planning –determine objectives, alternatives, and constrains

Ø                  Risk analysis – analysis of alternatives and identification/   resolution of risks

Ø                  Engineering – development of the next level product

Ø                  Customer evaluation

q       Currently the most realistic approach – although relatively new

 

Fourth Generation Technique (4GT)

q       Involves software tools (4GL) that automatically translates designs to products

q       It involves the sequence:

Ø                  Requirement gathering

Ø                  Design

Ø                  Implementation using 4GL

Ø                  Testing

q       Reduces time/cost

q       Problems:

Ø                  Current tools are limited to business information systems