Software Engineering

DEFINITION:

                      

SOFTWARE is collection of Programs in order to follow a particular task. Process of developing a software product and a systematic approach of maintaining it is called “SOFTWARE ENGINEERING”.

Software has no limits; it may be developed or engineered. It does not ware out. Earlier, it is custom based development but now it is also becoming component based development like hardware. But software engineering is concerned with cost effective software development.

 

SOFTWARE PRODUCTS:

Generic Products

Customized Products.

GENERIC PRODUCTS:    Stand-alone systems can be sold to customers if they wish to buy. For example, an editing and graphics programs.

CUSTOMIZED PRODUCTS:  These Products has to meet the customer specific needs. For example, Air traffic control software.

 

Why to Software is important?

Now a days, if we see most of the developed nations depends up on software. Where ever if we see in any field like transport, medical, business, military, Industries there are more and more number of software systems.

Software Applications:

System software

Application

Engineering

Embedded Systems

Product line

websites

Artificial Intelligence

Legacy Software characteristics:

If we change a software, the content must be there. It means it needs to be carried out to the future. It plays a vital role if it is not in use, For making a software legacy it must be:

ADAPTIVE

PERFECTIVE

CORRECTIVE

 

Software Engineering is not rigid process of prescription for how building a software, rather it is an adaptive approach that enables the team to pick and choose set of actions and tasks with an intension of delivering the quality software on time.

 

Software engineering is a layered technology:

Divided into 4 types of layers:

Quality focus

Process

Methods

Tools

 

For a Qualified software it has to follow some process frame work, Frame work activities, Umbrella Activities.

 

FRAME WORK ACTIVITES: (GENERIC)

Communication:  Communication should be between customer and Software developer.

Planning: Feasibility study on technology, people.

Modeling:   Design and analysis of Software.

Construction: Writing the code and testing the software.

Deployment: Delivery of software to customer and taking feed back

 

UMBRELLA ACTIVITIES: (ASSOCIATIVE)

Software project management

Software quality assurance

Formal technical Reviews

Reusability

Risk management

Software configuration management

 

SOFTWARE MYTHS:

Myths for Management:

1. If product needs more number of programmers we can add and catch up?(NO)

2. Book that is full of standards and procedures for building a software?(No,practically experienced).

 

3. If I decide to outsource the software project to the third parties, I can just relax and let the firm build it.(NO).

 

Myths for customers:

1. A general statement of objective is sufficient to begin writing the programs, we can fill the details later.

2. Project requirement changes continuously but the change can be made easily accommodated because it is flexible. In order to change or accept any changes in software there will be a team  Change Control Board(CCB).

 

Myths for practitioner:

1. Once we write the program and get it work, our job is done.

2. Untill, I get the program running I have no way of assessing its quality.

3. The only deliverable work product for a successful project is the working program.

 

Process means a set of tasks or actions. It follows a particular pattern.

PROCESS FLOW:

Linear

Iterative

Evolutionary

Parallel

Now coming to the process models,

PROCESS MODELS:

GENERIC PROCESS

PRESCRIPTIVE PROCESS

SPECIALIZED PROCESS

UNIFIED MODELING PROCESS

 

GENERIC PROCESS MODEL:

         

It’s like a framework for the analysis of software. Those process analysis methods are language independent. It undergoes different Generic process tasks and actions such as validating, testing, robustness etc.

2. PRESCRIPTIVE PROCESS: (Traditional model)

Waterfall model

Incremental model

Evolutionary

Concurrent

 

WATER FALL MODEL:

It’s a classic life cycle old fashioned one but reasonable.

We approach this model when all the requirements are well known or well understood from the client. Variation in representing this model is “V-shaped” model.

Advantage:  SIMPLICITY.

Disadvantage: Changes can’t be done. But can overcome by “v-shaped model”. If we rely more on testing alone, bugs created at first are detected last.

INCREMENTAL MODEL:

 

Deliver the software in small pieces, each piece builds on pieces that are already delivered.

Here the requirements will be divided into models. Requirements are partitioned into subsystems by functionality. Beginning with one small functional sub system then adding functionality with each new release.

 

                       

 

Here multiple independent deliveries will be identified .Work flow is in linear fashion with in an increment or staggered between increments. Provides a needed set of functionalities. We can show the product with in short period of time and the client will also be satisfied.

EVOLUTIONARY PROCESS:

This process is good to start when the when the customer has a legitimate need. But it is clueless about the details. Developer needs to resist pressure to extend it to a rough prototype into a production product.

A small mockup of working system is discarded and sometimes it is extended based on customer’s feedback. This model is used when the requirements are not well understood. Sometimes the system is discarded and sometimes it is extended based on customer’s feedback.

In this special type of model is PROTOTYPE MODEL. Mock up working model is prototype model.

Customers see a working version of the software wants to stop all development and then buy the prototype after few fixes are made. Developers often make implementation compromises to get the software running quickly.

For example: Language Choice.

 

SPIRAL MODEL:

This process model follows Couples iterative nature of prototyping with the control of lead and systematic approach of Water fall model.

Invented by  DR.BARRY BOEHM  in 1988 working at TRW evolutionary approach.

When Requirements are not well understood and also Risks are also very high then we will go to this spiral model process.

Risk Occurrence is high and Risk Impacts are more then we can go for this model, if both are low we can neglect this model.

 

CONCURENT MODELS:

It allows the software team to represent the iterative and concurrent element of any process model.

It undergoes Resource sharing. Software process should focus on flexibility and Extendibility.

3. SPECIALIZED PROCESS MODEL:

In this kind of process modeling, Software parts are developed from different nations and made as unique software. Evolutionary Nature and demands Iterative approach to create software.

Spiral model variation in which applications are built from prepackaged software components called “CLASSES”.

It is component based development. It incorporates many characteristics of spiral model.

It follows “Formal method models” which has rigorous math notations used to specify or design of software.

Aspect oriented software development, concerns with formal methods.

STEPS INVOLVED:

1. Components based products are researched and calculated for application domain in question.

2 .Component integration issues are considered.

3. Software architecture is designed to accommodate components.

4. Components are integrated into Architecture.

5. Comphrensive training should be carried for proper functionality.

 

4. UNIFIED PRCOESS MODEL :

It is robust process. Based on BOOCH, JACOBSON, RUMBAUGH later developed unified process model.

It consists of 5 phases:

Inception

Elaboration

Production

Transition

Construction

Inception includes Planning and Communication. Fundamental business requirements are described through preliminary use cases.

Requirements may be both Functional and Nonfunctional.

It composes both customer communication and planning activities of generic process. Rough architecture for the system is proposed. A plan is created for an increment and iterative development.

 

Elaboration includes Planning and Modeling, follows activities of generic process. Refines and expands the preliminary use cases and analyses it.

Construction includes Software Construction and its design pattern.

UML is a part of Unified modeling language. It includes 4 types of diagrams:

USE CASE

CLASS

SEQUENTIAL

ACTIVITY

 

USE CASE:

Use case diagram is a type of behavioral diagram that comes under Unified modeling language created from use case analysis.

CLASS:

 

Class diagram in the Unified Modeling Language (UML) is a type of static structure diagram that describes the structure of a system by showing the system’s classes, their attributes, operations (or methods), and the relationships among the classes.

 

It contains classes for person class Admin side may be interviewer etc.

Sequence Diagram:

 

A sequence diagram in Unified modeling language (UML) is a kind of Interaction diagram it shows how processes operate with one another and in what order.

 

It shows how object behaves with another object during its life line.

Activity diagrams:

Activity diagrams are graphical representations of workflows of stepwise activities and actions with support for choice, iteration and concurrency.

 

 This system contains activities like inquiring, applying merit generating final admission confirmation payments etc.

 

Contributor's Info

Created: Edited:
0Comment