BcaStudy
SOFTWARE ENGINEERING

Unit- 1 :Software Engineering

Software engineering

Software engineering is the branch of computer science that deals with the design, development, testing, and maintenance of software applications.

Software engineers apply engineering principles and knowledge of programming languages to build software solutions for end users..

Software Paradigms

Software paradigms refer to the methods and steps, which are taken while designing the software.

Software development life cycle (SDLC) :
SDLC is the acronym for software development life cycle. It is also called the software development process. All the tasks required for developing and maintaining software. It consists of a plan describing how to develop, maintain, replace and alter the specific software. It is a process for planning, creating, testing, and information system.

Stage-1: Planning And Requirement Analysis:
Planning is the crucial step in everything and so as in software development. In this same stage, requirement analysis is also performed by the developers of the organization. This is attained from the inputs from the customers, sales department/market surveys.

Stage-2: Defining Requirements:
In this stage, all the requirements for the target software are specified. These requirements get approval from the customers, market analysts, and stakeholders.
This is fulfilled by utilizing SRS (Software Requirement Specification). This is a sort of document that specifies all those things that need to be defined and created during the entire project cycle

  • Stage-3: Designing Architecture:
    SRS is a reference for software designers to come out with the best architecture for the software. Hence, with the requirements defined in SRS, multiple designs for the product architecture are present in the Design Document Specification (DDS).
    This DDS is assessed by market analysts and stakeholders. After evaluating all the possible factors, the most practical and logical design is chosen for the development.
  • Stage-4: Developing Product:
    At this stage, the fundamental development of the product starts. For this, developers use a specific programming code as per the design in the DDS.
  • Stage-5: Product Testing and Integration:
    After the development of the product, testing of the software is necessary to ensure its smooth execution. Although, minimal testing is conducted at every stage of SDLC. Therefore, at this stage, all the probable flaws are tracked, fixed, and retested. This ensures that the product confronts the quality requirements of SRS.
  • Documentation, Training and Support:
  • A well-written document acts as a tool and means to information repository necessary to know about software processes, functions and maintenance.
  • Documentation also provides information about how to use the product.
  • Stage 6: Deployment and Maintenance Of Product:
    After detailed testing, the conclusive product is released in phases as per the organization’s strategy. Then it is tested in a real industrial environment.
  • Because it is important to ensure its smooth performance. If it performs well, the organization sends out the product as a whole. After retrieving beneficial feedback, the company releases it as it is or with auxiliary improvements to make it further helpful for the customers.

Different types of software development life cycle models :

#1) Waterfall Model

Waterfall model is the very first model that is used in SDLC. It is also known as the linear sequential model.

In this model, the outcome of one phase is the input for the next phase. Development of the next phase starts only when the previous phase is complete.

  1. First, Requirement gathering and analysis is done. Herein, the SRS document created is the output for the Requirement phase and it acts as an input for the System Design.
  2. In System Design Software architecture and Design, documents which act as an input for the next phase are created
  3. In the Implementation phase, coding is done and the software developed is the input for the next phase.
  4. In the testing phase, the developed code is tested thoroughly to detect the defects in the software.
  5. In the Deployment phase, the developed code is moved into production after the sign off is given by the customer.
  6. Any issues in the production environment are resolved by the developers which come under maintenance.

Advantages of the Waterfall Model:

  • Waterfall model is the simple model which can be easily understood and is the one in which all the phases are done step by step.
  • less complex ,easily manageable.

Disadvantages of Waterfall model:

  • Waterfall model is time-consuming & cannot be used in the short duration projects as in this model a new phase cannot be started until the ongoing phase is completed.
  • Waterfall model cannot be used for the projects which have uncertain requirement or wherein the requirement keeps on changing as this model expects the requirement to be clear in the requirement gathering and analysis phase itself and any change in the later stages would lead to cost higher as the changes would be required in all the phases.

#2) V-Shaped Model

V- Model is also known as Verification and Validation Model. In this model Verification & Validation goes hand in hand i.e. development and testing goes parallel.

#3) Prototype Model

The prototype model is a model in which the prototype is developed prior to the actual software.

Software prototypes are built prior to the actual software to get valuable feedback from the customer.

Feedbacks are implemented and the prototype is again reviewed by the customer for any change. This process goes on until the model is accepted by the customer.

Advantages of Prototype Model:

  • Prototype model reduces the cost and time of development as the defects are found much earlier.
  • Missing feature or functionality or a change in requirement can be identified in the evaluation phase and can be implemented in the refined prototype.
  • Involvement of a customer from the initial stage reduces any confusion in the requirement or understanding of any functionality.

Disadvantages of Prototype Model:

  • Since the customer is involved in every phase, the customer can change the requirement of the end product which increases the complexity of the scope and may increase the delivery time of the product.

#4) Spiral Model

The Spiral Model includes iterative and prototype approach.

Spiral Model has four phases:

  • Planning
  • Risk Analysis
  • Engineering
  • Evaluation

(i) Planning:

The planning phase includes requirement gathering wherein all the required information is gathered from the customer and is documented. Software requirement specification document is created for the next phase.

(ii) Risk Analysis:

In this phase, the best solution is selected for the risks involved and analysis is done by building the prototype.

For Example, the risk involved in accessing the data from a remote database can be that the data access rate might be too slow. The risk can be resolved by building a prototype of the data access subsystem.

(iii) Engineering:

Once the risk analysis is done, coding and testing are done.

(iv) Evaluation:

Customer evaluates the developed system and plans for the next iteration.

Advantages of Spiral Model:

  • Risk Analysis is done extensively using the prototype models.
  • Any enhancement or change in the functionality can be done in the next iteration.

Disadvantages of Spiral Model:

  • The spiral model is best suited for large projects only.
  • The cost can be high as it might take a large number of iterations which can lead to high time to reach the final product.

#5) Iterative Incremental Model

The iterative incremental model divides the product into small chunks.

For Example, Feature to be developed in the iteration is decided and implemented. Each iteration goes through the phases namely Requirement Analysis, Designing, Coding, and Testing. Detailed planning is not required in iterations.

Once the iteration is completed, a product is verified and is delivered to the customer for their evaluation and feedback.

Customer’s feedback is implemented in the next iteration along with the newly added feature.

Hence, the product increments in terms of features and once the iterations are completed the final build holds all the features of the product.

Phases of Iterative & Incremental Development Model:

  • Inception phase
  • Elaboration Phase
  • Construction Phase
  • Transition Phase

(i) Inception Phase:

Inception phase includes the requirement and scope of the Project.

(ii) Elaboration Phase:

In the elaboration phase, the working architecture of a product is delivered which covers the risk identified in the inception phase and also fulfills the non-functional requirements.

(iii) Construction Phase:

In the Construction phase, the architecture is filled in with the code which is ready to be deployed and is created through analysis, designing, implementation, and testing of the functional requirement.

(iv) Transition Phase:

In the Transition Phase, the product is deployed in the Production environment.

Advantages of Iterative & Incremental Model:

  • Any change in the requirement can be easily done and would not cost as there is a scope of incorporating the new requirement in the next iteration.
  • Risk is analyzed & identified in the iterations.
  • Defects are detected at an early stage.
  • As the product is divided into smaller chunks it is easy to manage the product.

Disadvantages of Iterative & Incremental Model:

  • Complete requirement and understanding of a product are required to break down and build incrementally.

#6) Big Bang Model

Big Bang Model does not have any defined process. Money and efforts are put together as the input and output come as a developed product which might be or might not be the same as what the customer needs.

Big Bang Model does not require much planning and scheduling. The developer does the requirement analysis & coding and develops the product as per his understanding.

This model is used for small projects only. There is no testing team and no formal testing is done, and this could be a cause for the failure of the project.

Advantages of Big Bang Model:

  • It’s a very simple Model.
  • Less Planning and scheduling is required.
  • The developer has the flexibility to build the software of their own.

Disadvantages of the Big Bang Model:

  • Big Bang models cannot be used for large, ongoing & complex projects.
  • High risk and uncertainty.

#7) Agile Model

Agile Model is a combination of the Iterative and incremental model. This model focuses more on flexibility while developing a product rather than on the requirement.

In Agile, a product is broken into small incremental builds. It is not developed as a complete product in one go. Each build increments in terms of features. The next build is built on previous functionality.

In agile iterations are termed as sprints. Each sprint lasts for2-4 weeks. At the end of each sprint, the product owner verifies the product and after his approval, it is delivered to the customer.

Customer feedback is taken for improvement and his suggestions and enhancement are worked on in the next sprint. Testing is done in each sprint to minimize the risk of any failures.

Advantages of Agile Model:

  • It allows more flexibility to adapt to the changes.
  • The new feature can be added easily.
  • Customer satisfaction as the feedback and suggestions are taken at every stage.

Disadvantages:

  • Lack of documentation.
  • Agile needs experienced and highly skilled resources.
  • If a customer is not clear about how exactly they want the product to be, then the project would fail.

The process of a software development has three Generic views which are:

Definition Phase - It is the base of Definition phase. The experts get the knowledge about "What". This phase defines all the expectations depending on the standard of the software Engineering. It contains three steps.

  • Information needed for processing.
  • Which functions are required.
  • Expectations about the capacity.
  • Interface which is established.
  • Area of the validation.
  • Analysis of system
  • Planning of project
  • Requirement Analysis

Development phase - Focus point of development phase is "How". After the explanation of "What" it turn to "How". Various type of question raised in developer mind that how to design the data structure and Architecture of software,

Procedural detail how to implemented and how design convert in a programming language and testing of software how to perform. Three special steps always taken in this phase which are

  • Design of software
  • Coding
  • testing of software system
  1. Maintenance phase - The main focus of maintenance phase is change which cause is correction of errors, adaption of new idea, According to the needs of software after change in customer mood.

Have doubts ? Ask in Comment Section.

Comments

Comments take few seconds to update

Resource to learn

Message
If you want your notes and pdf on website send me google drive link