0% found this document useful (0 votes)
18 views8 pages

Introduction to Software Engineering

Software engineering is a systematic approach to software development that applies scientific principles and methods. It aims to produce software that meets specifications and is delivered on time and on budget by incorporating core principles like correct specifications, scalability, cost control, and quality. The software development life cycle (SDLC) refers to the set of activities involved in software development, including requirements specification, design, implementation, verification, and maintenance. Common software process models include waterfall, evolutionary, and component-based models. The waterfall model is a linear sequential approach divided into phases, while evolutionary is an iterative approach that develops prototypes. Component-based model incorporates existing software components.

Uploaded by

YOU NEED TO ALL
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views8 pages

Introduction to Software Engineering

Software engineering is a systematic approach to software development that applies scientific principles and methods. It aims to produce software that meets specifications and is delivered on time and on budget by incorporating core principles like correct specifications, scalability, cost control, and quality. The software development life cycle (SDLC) refers to the set of activities involved in software development, including requirements specification, design, implementation, verification, and maintenance. Common software process models include waterfall, evolutionary, and component-based models. The waterfall model is a linear sequential approach divided into phases, while evolutionary is an iterative approach that develops prototypes. Component-based model incorporates existing software components.

Uploaded by

YOU NEED TO ALL
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

CHAPTER 5 –SOFTWARE ENGINEERING

What is Software Engineering?


(Engineering means applying well–defined concepts, methodologies, scientific principles and methods)
 It is a structured, systematic approach for the design, development and maintenance of software systems.

Need for Software Engineering?

 Modern day software are large and complex, handles large amount of data.
 In most cases, software is not delivered on time or did not conform to the specifications provided by Customer.

Importance of Software Engineering?


1. Correct Specifications – As large software systems are complex, and have numerous functionality, it is very important
to devise its specifications in a scientific, methodical manner.
2. Scalability scope – Software should be scalable with the current design. And to design such software, scientific
methodology should be adapted.
3. Cost Control – If software not designed using scientific methodology, faults may occur at later stages. A fault detected
later costs much higher as compared to early fault-detection.
4. Quality – Engineering methodology ensures that correct problem and specifications for the new software are
determined. This leads to efficient design and overall enhanced quality of the software.

Software Process Activities/SDLC (Software development Life Cycle)


 It refers to set of logically related activities, which are carried out in a systematic order that leads to the production of
‘the software to be delivered’.
 Four important activities in SDLC are:
1. Software Specification (Requirement Engineering)
 This activity is responsible for defining the main functionalities of the software as per the customer’s
requirements and expectations.
 It also defined constraints on its operation.
 It is carried out in four phases:
(i) Feasibility study
 Cost estimation of proposed software.
 Determines whether the software will be cost-effective from a business point of view.
 Economic, technical and operational feasibility of the project.
(ii) Requirements Elicitation and analysis
 Determining the System requirements, by studying existing system and discussion with potential users.
(iii) Requirement Specification
 Determined requirements are documented for user (functionality features) requirements and system
(non-functional, e.g. security, performance, interface etc.) requirements.
(iv) Requirements Validation
 Determine whether the requirements defined are complete and all user problems, needs and
expectations etc, have been taken care of.

2. Software Design and Implementation


 This activity is responsible for the design and programming of proposed software.
 Sub activities carried out in this phase are:
(i) Architectural and abstract design
The sub-system of system and their relationships are identified.
(ii) Interface design
The interface is designed and documented for each sub-system.
(iii) Data Structure and algorithm design
 The required data structures used in the system implementation are designed.
 The algorithms used to provide services are designed.

(iv) Programming and Implementation


 The programming is done with determined data structures and algorithms as per the design.
 The program code is implemented.

3. Software Verification and Validation


 This activity is responsible for ensuring that software conforms to all the specifications and works as per the
proposed design.
 Verification – It means that set of activities that are carried out to confirm that the software correctly
implements the specific functionality.
 Validation – It means that the set of activities that ensure that the software that has been built is satisfying the
customer’s requirements.
 For verification and validation, system testing is carried out in three forms:
 System components are tested – For components, usually, components development and testing are
carried out simultaneously with one another.
 Integrated components of the system are tested together.
 Entire system is tested in actual conditions.

4. Software Evolution/Software Maintenance


This activity ensures that:
(i) The developed software meets the customer requirements.
(ii) The software design ensures adaptability and scalability, i.e., it must evolve to meet changing customer
needs.

Software Process Model


- It is a simplified representation of a software process.
- Three Generic Models:
1. The Waterfall model
2. Evolutionary model
3. Component-based model

The Waterfall Model


- The waterfall model is a linear and sequential approach of software development where software develops systematically
from one phase to another in a downward fashion. This model is divided into different ph ases and the output of one
phase is used as the input of the next phase. It means that every phase has to be completed before the next phase starts
and there is no overlapping of the phases.
- Most suitable for projects where:
1. Requirements are clearly determined.
2. Each phase fully completes and makes available its output as input of next phase.
- This model consist of 5 phases:

1. Requirement specification
- Requirements are gathered.
- Estimating Project costs, risks and schedule.
2. Analysis and System Design
- Design the overall software architecture.
- Identifying fundamental software system components and their relationships.
3. Implementation and unit testing
- Software design is realised as a set of software components through programming, coding and documentation.
- Each component tested along with its development.
4. Integration and System testing
- components are integrated and tested as a complete system.
5. Operation and Maintenance
- System is delivered and deployed for the client.
- The real and practical use of the software system begins.

Advantages of Waterfall Model


1. Departmentalisation: It divides the whole process into departments. This allows for separate schedules and deadlines
for each department.
2. Easy to understand and explainable Model
3. It is easy to manage model as each phase has specific deliverables and a review process.
4. No overlapping of phases  makes this model simple.

Disadvantages of Waterfall Model


1. No estimation of time and cost: not give idea of estimated time and cost for each phase of the development process.
2. Difficult to incorporate changes: once an application is in the testing stage, it is very difficult to go back and change
something.
3. Not for complex systems: Not a good model for large and complex software system, as they have many overlapping
modules.
V-Model

- a variation of waterfall model.


- The processes/phases are same as waterfall model , but phases are bent upwards after the implementation phase, to
form the typical V-Shape.
- This model allows parallel execution of activities.

The Evolutionary Model


- It is a rapid-software development model where an initial software implementation is rapidly developed from very abstract
specifications, which is then iteratively modified according to the user’s appraisal of the software.
- It is therefore also called Prototype model.
- Most suitable for projects where:
1. High technical risks are involved.
2. Timeline is aggressive.
Advantages of Evolutionary Model
(i) It reduces risk of failure, as potential risks can be identified early by continuous appraisal of the software
implementation and corrective steps can be taken.
(ii) The development takes place with combined contribution of the development team and the client.
(iii) User gets a fair idea of final product’s working as a working model of the system is provided, the user get a
better understanding of the system being developed and can suggest changes and modifications.
(iv) User feedback is available at an early stage leading to better solution.

Disadvantages of Evolutionary Model


(i) If changes suggested are too many then it may disturb the rhythm of the development team.
(ii) Too many changes may increase the complexity of the system. Also, the scope of the system may expand beyond
original plans.
(iii) Repeated changes may increase the cost of development and it may derail the budgeting of the software system.

Component-based Model
Component/Software component – It is a software element that confirms to a software model and can be independently
deployed and composed without modification according to a composition standard.

- Component-based software development model is a software development process that develops software systems by
selecting appropriate off-the-shelf components and then assembles them with a well-defined software architecture.
- It is based on idea of incorporating and reuse existing software components in current software development if feasible
and possible.
Various phases in this model are:

1. Requirement Specification: the basic software specifications (not full specifications) for the new system are
determined.
2. Component Analysis: From the available software-components pool or library, a search is made for the
components that can implement specification as per specifications decided for the new system.
If a component meets a specification partly (say about 60-70%), the components may be used.
3. Requirements modification: The software requirements are re-analysed using information about the available
reusable components.
4. System design with reuse:
Two activities:
(i) System design after taking into account the reusable component available.
(ii) If no reusable components are available, the new software (components) may have to be designed.
5. Development and integration:
- The fresh development of the software components takes place for which no reusable components were
found.
- Then the freshly developed software components and the reusable systems are integrated to create the
new system.

Advantages of Component-based Model


(i) It reduces the amount of software to be developed.
(ii) It also leads to faster delivery of the software.

Disadvantages of Component-based Model


(i) Sometimes requirements are compromised.
(ii) This may lead to a system that does not meet the real (original) needs of users.

Delivery Models
Why delivery models needed?

(a) Changing environment and conditions result in changes in system requirements (e.g. growth in user base)
(b) Policies and management priorities may change.
(c) Technological advancement may lead to forced changes.

Delivery models is not just about delivery, but it is about development process that delivers iteratively along with
software development.

Two important delivery models: (i) Incremental delivery model (ii) Spiral development model

Incremental Delivery Model


- The Incremental Model is designed, implemented and tested as a series of incremental software builds until the
product is finished. A build consist of pieces of code from various modules that interact together to provide a
specific service or functionality.
- Phases in incremental model are:
1. Determine overall services to be delivered
This phase identifies all types of services that the proposed system needs to deliver.

2. Determine software incremental builds


In order to determine software builds or Software Increments, the following mechanism is carried out:
(i) The customer is asked to prioritise the required services as the ‘most important service(s)’ to the ‘least
important service(s)’.
(ii) As per the customer decided priority levels, the number of software-delivery increments (also called
software builds) are defined where each software increment provides each priority level service(s).

3. Development and delivery of each software incremental build


The following activities are carried out for each software increment, in the order of their priority:
(i) The requirements for each software increment are defined in detail, and that increment is developed
using the best suited software process.
(ii) Once developed and tested, the software build is delivered and implemented for the client,
integrating it with already installed increments.
(iii) The work for next priority software build starts and the whole process is repeated.

Advantages of Incremental Delivery Model

1. It generates working software quickly. Customers do not have to wait until the entire system is delivered.
2. It is easier to test and debug during a smaller iteration.
3. It cost less to change scope and requirements.
4. There is a lower risk of overall project failure as tested increments are added.
5. Easier to manage risk because risky pieces are identified and handled first of all.

Disadvantages of Incremental Delivery Model

1. After each software increment is added with the system, the integration testing to test the system working as
a whole, is carried out, which increases the testing-load.
2. If all requirements are not clearly identified and not aptly prioritised, it may lead to major problems in overall
system architecture.
The Spiral Model
- It combines the iterative nature of prototyping with the systematic approach of waterfall model.
- Software is developed in a series of incremental release, where in early stage, prototypes are used and in later
iterations, it becomes a more complete version of the product.
- In this model, the sequence of activities takes place with some backtracking from one activity to another, just like
a spiral – and hence the name.
- Most suitable for large, complex and expensive software systems.
- The following activities are carried out during each phase of spiral mode l:
(i) Objective setting (First Quadrant) – The objective of the phase are determined and associated risks are
examined.
(ii) Risk Assessment and Reduction (Second Quadrant) – Detailed Analysis of the risk that determined in previous
phase. This phase is also responsible for risk reduction.
(iii) Development and Validation (Third Quadrant) – This phase is for the development and validation of the
next level of the product after resolving the identified risks.
(iv) Review and Planning (Fourth Quadrant) – During this phase, the results achieved so far are reviewed with
the customer. And the planning for the next iteration also takes place.

*****************

Common questions

Powered by AI

The Incremental Delivery Model structures development into smaller, manageable builds that deliver portions of functionality over time, allowing user feedback at each increment, and enabling early identification of issues . Changes can be integrated between increments, making it adaptable to evolving user requirements. In contrast, the Evolutionary Model focuses on developing a rough initial version of the software that is iteratively refined based on user feedback, aiming to quickly address high-risk areas. This model involves ongoing user appraisals and refinement, allowing flexibility and continuous adaptation to user feedback . While both models emphasize user involvement, the Incremental Model provides structured deliveries of functionality, whereas the Evolutionary Model facilitates rapid adjustments to functionality throughout development.

The primary activities in the Software Development Life Cycle (SDLC) are Software Specification, Software Design and Implementation, Software Verification and Validation, and Software Evolution/Maintenance. Software Specification defines the main functionalities according to customer requirements and establishes constraints, ensuring well-grounded expectations. Software Design and Implementation involve designing and programming the software, developing the architecture, interfaces, data structures, and algorithms necessary for building a functional system . Verification and Validation guarantee that the developed software meets all specified requirements and works as intended, with testing at different levels to ensure quality . Finally, Software Evolution addresses maintaining adaptability and scalability post-deployment, ensuring the system evolves with changing needs . Each activity is crucial in ensuring a well-structured approach to software development, addressing customer needs, quality, and maintainability.

The Waterfall model structures the software development process through a linear and sequential approach, moving phase by phase from requirement specification to system operation and maintenance, with each phase needing to be completed before the next begins . Advantages include clear departmentalization, ease of understanding and management, and the absence of overlapping phases, ensuring predictability . Disadvantages encompass difficulty in accommodating changes post-testing phase, lack of flexibility for complex systems, and potential inefficiencies in time and cost estimation . These characteristics make the Waterfall model suitable for projects with rigid specifications but less adaptable to dynamic or complex environments.

Changes in system requirements due to environmental and technological advancements necessitate adaptive delivery models in software development. Environmental changes, like an increased user base, and technological advancements can lead to shifts in system functionalities and performance needs . Delivery models help manage such changes by incorporating iterative and incremental approaches, allowing for adaption and continual integration of new features and technologies. Models like Incremental and Spiral Development offer structures that accommodate evolving requirements, where systems are developed in increments with each build reflecting current conditions and integrating user feedback . As such, delivery models are crucial in ensuring software can evolve alongside changes, maintaining relevancy and effectiveness in dynamic conditions.

Software Verification and Validation (V&V) play a crucial role in ensuring the software system's quality and reliability by evaluating both its functionality and user satisfaction. Verification ensures that the software correctly implements specified functionalities by conducting a set of activities that confirm compliance with design and technical specifications . Validation ensures that the software system meets the actual needs and requirements of the users, verifying that the operational software satisfies customer expectations . These processes involve creating test scenarios that check individual components, their integration, and overall system performance under actual conditions. By emphasizing early and comprehensive testing, V&V reduce the likelihood of critical defects reaching the user, enhancing the overall system reliability and acceptance.

The Spiral Model addresses risks by integrating phases dedicated explicitly to risk assessment and reduction. These activities occur early in each cycle, effectively identifying risks through objective setting and detailed analysis . One of the potential risks involved in using the Spiral Model is managing cost and schedule overruns due to its iterative nature. This is mitigated by reviewing and planning after each cycle, ensuring alignment with project goals, and recalibrating plans based on previous iterations . The model also provides flexibility, allowing for backtracking and refinements which can handle unexpected issues over time. Ultimately, by combining iterative development with continuous risk assessment, the Spiral Model significantly reduces project uncertainty and enhances the likelihood of successful, adaptive system development, particularly for large and complex projects .

The Evolutionary Model enhances user feedback and involvement by facilitating ongoing interaction and iterative development. Unlike the Waterfall Model, it allows for an early rough initial implementation of software, which users can evaluate and provide feedback on, leading to frequent iterations and modifications based on real-world usage and suggestions . This continuous user involvement helps in refining requirements and system features incrementally, adapting to any changes in user needs or emerging issues quickly. As the system evolves, users consistently evaluate and contribute to its direction, ensuring early detection and incorporation of feedback, ultimately resulting in a product that aligns more closely with user expectations and operational needs .

The V-Model is a variation of the Waterfall Model, differing primarily in its structure of parallel execution and feedback loops. While the Waterfall Model progresses linearly through its phases with no overlap, the V-Model allows for parallel execution of corresponding verification and validation activities alongside each development phase. This parallel structure provides an early opportunity for feedback and error identification . The V-Model creates a V-shaped diagram, bending upwards after the implementation phase, integrating testing phases early, which enhances error detection and rectification in earlier stages, unlike the Waterfall Model that delays testing until after completion of development . These features make the V-Model more adaptive to feedback, reducing the likelihood of late-stage changes and errors.

The Component-based Model manages software complexity by enabling the reuse of existing components, reducing the amount of new code required and thus minimizing complexity in development . It accelerates delivery by leveraging tested components and facilitating easier integration, making it easier to develop complex software systems incrementally. However, it can lead to compromises in user requirements, as the availability of suitable components may not perfectly align with specific system needs, potentially affecting user satisfaction if critical functionalities are inadequately addressed . While it simplifies development and enhances maintainability, reliance on reusable components can restrict customization flexibility, sometimes necessitating architectural adjustments and potentially leading to a system that falls short of bespoke user or organizational requirements.

The Component-based Software Development Model supports the reuse of existing software components by focusing on identifying and integrating off-the-shelf components to meet new software requirements. This model involves a systematic process of requirement specification, component analysis, and system design with reuse, wherein developers search for existing components that can partially or fully fulfill given specifications . Components that meet specifications to a significant extent are integrated or adapted to suit the system architecture. If no suitable components are found, new components are developed. This approach reduces development time and costs by minimizing the amount of new software that needs to be created, allowing faster delivery and incremental updates of the software system .

You might also like