Friday, August 16, 2019

Software Engineering

INTRODUCTION:
Software Engineering is a structured ,systematic approach for the design,development and maintenance of software systems.
1) on time
2) on budget
3) with acceptable performance
4) with correct operation

The economies of all developed nations are dependent on software.
• More and more systems are software controlled.
• Software engineering is concerned with theories, methods and tools for

   professional software development.

NEED :
  • Correct Specifications
  • Proper Delivery on time.
  • Solve the problem
  • Conform the budget.
  • Reliable
  • Maintain Quality

SOFTWARE PROCESS:
 It refers to a set of logically related activities, which are carried out in a
systematic order that leads to the production of the software to be delivered.
It is also known as Software development life cycle (SDLC).

Structured set of activities required to develop a software system
• Specification
• Design
• Validation
• Evolution
• Activities vary depending on the organization and the type of system being         developed.
• Must be explicitly modeled if it is to be managed.



SOFTWARE DEVELOPMENT LIFE CYCLE (SDLC)

SDLC PHASES:    (https://www.youtube.com/watch?v=8MV9c2TtEG4)

• Software specification(Data/Information gathering)
• Feasibility
• System Analysis
• System Design
• System Coding and Testing
• Implementation / Conversion
• Software Verification and Validation
• Software Evolution/Maintenance 

SOFTWARE PROCESS MODELS:

A software process model is asn abstract representation of a software process. The Widely - used generic software process models are classified into three types:
1- The Waterfall model  2-  Evolutionary model  3-  Component based model

WATERFALL MODEL (Linear-sequential life cycle model)

It is based on linear sequential approach. In this model , the project is divided into sequence of well defined phases. One phase is completed before the next starts. There is a feedback loop between adjacent phases. Every phase has to be completed before the next phase starts and there is no overlapping of the phase.


                     see video for clear concepts: 

It should be used in situations with:-
  • Clear and fixed requirement
  • Stable problem definition
  • Technology is static
  • Small projects
  • No confusing need
Advantage :
  • easy to understand
  • easy to arrange the task
  • easy to manage
  • clearly defined stages
  • well understood milestones
Disadvantage :
  • Poor model for long term projects
  • Not suitable for changing requirements during development
  • not suitable for complex systems.
  • Difficult to measure the progress in phases.

EVOLUTIONARY MODEL
It is like "Incremental Waterfall Model" where the developent cycle is divided into smaller cycles. This model is useful for projects using new technology that is not well understood. This is also used for complex projects.


see video for more details


Advantage: 
  • User satisfaction
  • Error reduction
  • High Quality
  • Low risk
  • Low cost
Disadvantage: 
  • Uncertain Customer Needs
  • Difficult to divide software
  • increases complexity
  • Increases Time if requirement not gathered correctly
  • multiple versions
PROTOTYPING MODEL

It is a software working model of limited functionality. In this model working programs are quickly produced. it comprises of five stages:-


See Video for more understanding purpose

  • Communication: it takes place between the developer and the customer to discuss the overall objectives of the software.
  • Quick Design: it involves developing a quick design of known requirements.
  • Modelling quick design:  This stage is essential for getting a clear data about the development of a software.
  • Construction of Prototype: It is evaluated by the customer itself.
  • Deployment,delivery, feedback of developed software solution.

 Advantage:
  • Increased user involvement in the product even before its implementation.
  • Since a working model of the system is displayed, the users get a better understanding of the system being developed.
  • Reduces time and cost as the defects can be detected much earlier.
  • Quicker user feedback is available leading to better solutions.
  • Missing functionality can be identified easily.
  • Confusing or difficult functions can be identified.

Disadvantage:

  • Risk of insufficient requirement analysis owing to too much dependency on the prototype.
  • Users may get confused in the prototypes and actual systems.
  • Practically, this methodology may increase the complexity of the system as scope of the system may expand beyond original plans.
  • Developers may try to reuse the existing prototypes to build the actual system, even when it is not technically feasible.
  • The effort invested in building prototypes may be too much if it is not monitored properly.


SPIRAL MODEL

This model was first described by Barry Boehm in his 1986 paper, "A Spiral Model of Software Development and Enhancement".  it is a combination of prototype and sequential model or waterfall model. all activities are done in one iteration. Software development is done in phases like planning,modelling,construction,deployment, communication in spiral manner. These phases are repeated till a fully functional software is not developed.




In the following situations spiral model can be used:
  • Large and high budget projects are being implemented.
  • When risk assessment is very critical.
  • Requirements are not very clearly defined.
  • Requirement are vague and even complex.
  • Ample time is available.

Advantage:

  • Changing requirements can be accommodated.
  • Allows extensive use of prototypes.
  • Requirements can be captured more accurately.
  • Users see the system early.
  • Development can be divided into smaller parts and the risky parts can be developed earlier which helps in better risk management.

Disadvantage:

  • Management is more complex.
  • End of the project may not be known early.
  • Not suitable for small or low risk projects and could be expensive for small projects.
  • Process is complex
  • Spiral may go on indefinitely.
  • Large number of intermediate stages requires excessive documentation.
 See video for clear concepts : https://www.youtube.com/watch?v=A4s9lf46hM8


Component based Model

Software products are built using components and these components are developed through a number of different sources that cane be written in several different programming languages. Software development goes through various steps like  :-

  • feasibility study 
  • system design, 
  • component identification, 
  • component integration and 
  • system testing 
  • system release.



Situations where component-based Model should be used are;
  • when emphasis is given on buying components and not on building components.
  • when the software structure is lower in coupling.
  • when the development process is evolutionary i.e. underging transitions and modifications continuously and is concurrent in nature.
  • when the focus is laid on assembling the software component and on developing them.

Advantage :
  • Low Cost
  • Low Risk
  • Fast delivery
Disadvantage:

  • Requirement changes affect the software development
  • Control over system evolution is lost.
Delivery Models

software delivery is the process of getting a software product to the market or to the client. Software delivery performs the following actions:
  • Finding and tracking client requirements.
  • Technology for software development and deployment.
  • Testing and validation of software for qualitiy.

Software delivery model is classified into two types:
  1. Incremental Delivery Model
  2. Spiral Delivery Model

Incremental Delivery Model

Incremental Model is a process of software development where requirements are broken down into multiple standalone modules of software development cycle. Incremental development is done in steps from analysis design, implementation, testing/verification, maintenance.
Each iteration passes through the requirements, design, coding and testing phases. And each subsequent release of the system adds function to the previous release until all designed functionality has been implemented.


Characteristics of an Incremental module includes

  • System development is broken down into many mini development projects
  • Partial systems are successively built to produce a final total system
  • Highest priority requirement is tackled first
  • Once the requirement is developed, requirement for that increment are frozen

When to use Incremental models?

  • Requirements of the system are clearly understood
  • When demand for an early release of a product arises
  • When software engineering team are not very well skilled or trained
  • When high-risk features and goals are involved
  • Such methodology is more in use for web application and product based companies

Advantage :

  • The software will be generated quickly during the software life cycle
  • It is flexible and less expensive to change requirements and scope
  • Thought the development stages changes can be done
  • This model is less costly compared to others
  • A customer can respond to each building
  • Errors are easy to be identified

Disadvantage:

  • It requires a good planning designing
  • Problems might cause due to system architecture as such not all requirements collected up front for the entire software lifecycle
  • Each iteration phase is rigid and does not overlap each other
  • Rectifying a problem in one unit requires correction in all the units and consumes a lot of time.
Spiral Delivery Model

Spiral model is one of the most important Software Development Life Cycle models, which provides support for Risk Handling. In its diagrammatic representation, it looks like a spiral with many loops. The exact number of loops of the spiral is unknown and can vary from project to project. Each loop of the spiral is called a Phase of the software development process. The exact number of phases needed to develop the product can be varied by the project manager depending upon the project risks. As the project manager dynamically determines the number of phases, so the project manager has an important role to develop a product using spiral model.
The Radius of the spiral at any point represents the expenses(cost) of the project so far, and the angular dimension represents the progress made so far in the current phase.
Below diagram shows the different phases of the Spiral Model:

Each phase of Spiral Model is divided into four quadrants as shown in the above figure. 
The functions of these four quadrants are discussed below-
  1. Objectives determination and identify alternative solutions: Requirements are gathered from the customers and the objectives are identified, elaborated and analyzed at the start of every phase. Then alternative solutions possible for the phase are proposed in this quadrant.
  2. Identify and resolve Risks: During the second quadrant all the possible solutions are evaluated to select the best possible solution. Then the risks associated with that solution is identified and the risks are resolved using the best possible strategy. At the end of this quadrant, Prototype is built for the best possible solution.
  3. Develop next version of the Product: During the third quadrant, the identified features are developed and verified through testing. At the end of the third quadrant, the next version of the software is available.
  4. Review and plan for the next Phase: In the fourth quadrant, the Customers evaluate the so far developed version of the software. In the end, planning for the next phase is started.
Advantages of Spiral Model: Below are some of the advantages of the Spiral Model.
  • Risk Handling: The projects with many unknown risks that occur as the development proceeds, in that case, Spiral Model is the best development model to follow due to the risk analysis and risk handling at every phase.
  • Good for large projects: It is recommended to use the Spiral Model in large and complex projects.
  • Flexibility in Requirements: Change requests in the Requirements at later phase can be incorporated accurately by using this model.
  • Customer Satisfaction: Customer can see the development of the product at the early phase of the software development and thus, they habituated with the system by using it before completion of the total product.
Disadvantages of Spiral Model: Below are some of the main disadvantages of the spiral model.
  • Complex: The Spiral Model is much more complex than other SDLC models.
  • Expensive: Spiral Model is not suitable for small projects as it is expensive.
  • Too much dependable on Risk Analysis: The successful completion of the project is very much dependent on Risk Analysis. Without very highly experienced expertise, it is going to be a failure to develop a project using this model.
  • Difficulty in time management: As the number of phases is unknown at the start of the project, so time estimation is very difficult.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.