SE_UNIT - I NOTES

Download as pdf or txt
Download as pdf or txt
You are on page 1of 19

SOFTWARE ENGINEERING

UNIT - I
Introduction to Software Engineering: The evolving role of software, changing nature of software,
software myths.
A Generic view of process: Software engineering- a layered technology, a process framework, the
capability maturity model integration (CMMI).
Process models: The waterfall model, Spiral model and Agile methodology
INTRODUCTION TO SOFTWARE ENGINEERING
WHAT IS SOFTWARE?
 Software is a program or set of programs containing instructions that provide desired
functionality.
(OR)
 Software is a collection of executable program codes and their associated libraries and
documentation
 Engineering is the process of designing and building something that serves a particular purpose
and finds a cost-effective solution to problems.
There are two main categories of software:
1. System Software
2. Application Software
1. System Software
This type of software provides a platform for running application software and managing computer
hardware.
Example
 Operating systems like Windows, macOS, Linux, and Unix
 Device drivers
 Firmware
 Utility programs such as disk management tools, antivirus software, and system optimization
utilities.
2. Application Software
Application software is designed to perform specific tasks or functions for end-users. Application
software can be general-purpose or specialized for particular industries or use cases.
Example
 Word processors
 Spreadsheets
 Web browsers

Email clients

Media players

Graphic design tools

Games

Business applications.

Application software can be general-purpose or specialized for particular industries or use
cases.
WHAT IS SOFTWARE ENGINEERING?
 Software Engineering is the process of designing, developing, testing, and maintaining software.
 Software engineering is a set of predefined procedure which a developer or any organization
should follow while developing any project.
 It is a systematic and disciplined approach to software development that aims to create high-
quality, reliable, and maintainable software.
 Software engineering includes a variety of techniques, tools, and methodologies, including
requirements analysis, design, testing, and maintenance.
 It is a rapidly evolving field, and new tools and technologies are constantly being developed to
improve the software development process.
SOFTWARE CHARACTERISTICS
The following are the top 7 characteristics of software:
1. Software does not wear out
2. Software is not manufacture
3. Reusability of components
4. Flexibility of software
5. Maintainability of software
6. Portability of software
7. Reliability of Software
1. Software does not wear out
Different things like clothes, shoes, ornaments do wear out after some time. But, software once created
never wears out. It can be used for as long as needed and in case of need for any updating, required
changes can be made in the same software and then it can be used further with updated features.
2. Software is not manufactured
Software is not manufactured but is developed. So, it does not require any raw material for its
development.
3. Reusability of components
If any particular segment of code is required in some other software, we can reuse the existing code
form the software in which it is already present. This reduced our work and also saves time and money.
4. Flexibility of software
A software is flexible. What this means is that we can make necessary changes in our software in the
future according to the need of that time and then can use the same software then also.
5. Maintainability of software
Every software is maintainable. This means that if any errors or bugs appear in the software, then they
can be fixed.
6. Portability of software
Portability of the software means that we can transfer our software from one platform to another that
too with easy. Due to this, the sharing of the software among the developers and other members can be
done flexibly.
7. Reliability of Software
This is the ability of the software to provide the desired functionalities under every condition. This
means that our software should work properly in each condition.
THE EVOLVING ROLE OF SOFTWARE
Software Evolution is a term that refers to the process of developing software initially, and then
timely updating it for various reasons, i.e., to add new features or to remove obsolete functionalities,
etc.
Dual Role of Software
There is a dual role of software in the industry. The first one is as a product and the other one is as a
vehicle for delivering the product.
1. As a Product
 It transforms information
 It produces, manages, acquires, modifies, displays, or transmits information
 It delivers computing potential of hardware and networks
Example: Website, Web App, Android App
2. As a Vehicle for Delivering a Product
 It provides system functionality (e.g., payroll system).
 It controls other software (e.g., an operating system).
 It helps build other software (e.g., software tools).
 It effects communications (e.g., networking software).
CHANGING NATURE OF SOFTWARE
There are seven broad categories of computer software present continuing challenges for software
engineers.
1. System Software
 System software refers to the collection of programs and software components that enable a
computer or computing device to function properly.
 System software is software that provides a platform for other software.
Example
1. Operating Systems
2. Antivirus Software
3. Disk Formatting Software
4. Computer Language Translators, Etc .
2. Application Software
The term “application software” refers to software that performs specific functions for a user.
When a user interacts directly with a piece of software, it is called application software.
Example
1. Microsoft Word
2. Excel
3. Firefox
4. Google Chrome
5. C, JAVA
3.Engineering and Scientific Software
 Engineering and Scientific Software satisfies the needs of a scientific or engineering user to
perform enterprise-specific tasks.
 Such software is written for specific applications using principles, techniques, and formulae
particular to that field.
Example
1. MATLAB
2. AUTOCAD
3. ORCAD, etc.
4.Embedded Software
 Embedded software is software that is not directly visible or invokable by a human user but is
part of a system.
 Embedded software is used to control the functions of hardware devices. For example, a train
control system reads various signals produced by sensors along tracks to control the speed of the
train.
Example
1. Television Sets
2. Airplanes
3. Video Games.
5.Product-line Software
Designed to provide a specific capability for use by many different customers, product-
line software can focus on a limited and esoteric market place or address mass consumer markets.
Example
1. Word processing
2. Spreadsheets
3. Computer graphics
4. Multimedia
5. Entertainment
6. Database management
7. Personal and business financial applications
6.Web Application
 A web application is software that runs in your web browser.
 Businesses have to exchange information and deliver services remotely.
 They use web applications to connect with customers conveniently and securely.
Example
1. Shopping carts
2. Product search and filtering
3. Instant messaging
4. Social media newsfeeds
7.Artificial Intelligence Software
 Artificial intelligence software makes use of a nonnumerical algorithm to solve a complex
problem.
 Applications within this area include robotics, expert systems, pattern recognition, artificial
neural networks, theorem proving, and game playing.
SOFTWARE MYTHS
A software myth refers to a common misconception or widely held belief about software development,
processes, or technology that may not align with reality or best practices.
Types of Software Myths
There are three kinds of software myths that are busted down in the article.
1. Management Myths
2. Customer Myths
3. Practitioner’s Myths

Management myths
Managers are often under pressure for software development under a tight budget, improved quality,
and a packed schedule, often believing in some software myths. Following are some management
myths.
Myth: We have all the standards and procedures available for software development.
Reality: Software experts do not know all the requirements for the software development. And all
existing processes are incomplete as new software development is based on new and
different problem.
Myth: If we get behind schedule, we can add more programmers and catch up.
Reality: Software development is not a mechanistic process like manufacturing. In the words of
Brooks [Bro95]: “adding people to a late software project makes it later.” However, as new
people are added, people who were working must spend time educating the newcomers,
thereby reducing the amount of time spent on productive development effort. People can
be added but only in a planned and well coordinated manner.
Myth: If I decide to outsource the software project to a third party, I can just relax and let
that firm build it.
Reality: If an organization does not understand how to manage and control software projects
internally, it will invariably struggle when it outsources software projects.
Customer myths
Customer Myths are generally due to false expectations by customers, and these myths end up leaving
customers with dissatisfaction with the software developers. Following are some customer myths.
Myth: A general statement of objectives is sufficient to begin writing programs—we can
fill in the details later.
Reality: Although a comprehensive and stable statement of requirements is not always possible,
an ambiguous “statement of objectives” is a recipe for disaster. Unambiguous
requirements (usually derived iteratively) are developed only through effective and
continuous communication between customer and developer.
Myth: Softwares are flexible, and developers could accommodate any change later.
Developers can quickly take care of these changes in requirements.
Reality: Longer the time for which software has proceeded for development, it becomes more and
more difficult to accommodate any changes. Any change causes an increase in additional
costs because incorporating changes at later stages needs redesigning and extra
resources.
Practitioner’s myths
Developers often work under management pressure to complete software within a timeframe, with
fewer resources often believing in these software myths. Following are some practitioners’ myths.
Myth: Once the software is developed or the code is delivered to the customer, the
developer's work ends.
Reality: A significant chunk of developers' work, i.e., 50-60 % of all the efforts expended on
software, will be spent after the customer provides the software. Major requirements
would get found missing, and new bugs may get discovered, and so on.
Myth: Software testing could only be possible when the software program starts running.
Reality: Quality of software could be measured at any phase of development by applying some QA
mechanism.
Myth: Unnecessary Documentation slows down the process of software development.
Reality: Software engineering is about creating a quality product at every level and not about
adding unnecessary work. Proper documentation of software helps us guide the user and
enhance the quality, which reduces the amount of rework.
A GENERIC VIEW OF PROCESS
Process: A set of activities, methods, practices, and transformations that people use to develop and
maintain software and the associated products (e.g., project plans, design documents, code, test cases,
and user manuals)
SOFTWARE ENGINEERING - A LAYERED TECHNOLOGY
Software engineering is a fully layered technology, to develop software we need to go from one layer to
another. All the layers are connected and each layer demands the fulfillment of the previous layer.

Layered technology is divided into four parts:


1. A quality focus
 It defines the continuous process improvement principles of software.
 It provides integrity that means providing security to the software so that data can be accessed
by only an authorized person, no outsider can access the data.
 It also focuses on maintainability and usability.
2. Process
 It is the foundation or base layer of software engineering. It is key that binds all the layers together
which enables the development of software before the deadline or on time.
 Process defines a framework that must be established for the effective delivery of software
engineering technology.
 The software process covers all the activities, actions, and tasks required to be carried out for
software development.
Process activities are listed below
 Communication: It is the first and foremost thing for the development of software.
Communication is necessary to know the actual demand of the client.
 Planning: It basically means drawing a map for reduced the complication of development.
 Modeling: In this process, a model is created according to the client for better understanding.
 Construction: It includes the coding and testing of the problem.
 Deployment:- It includes the delivery of software to the client for evaluation and feedback.
3. Method
During the process of software development the answers to all “how-to-do” questions are given by
method. It has the information of all the tasks which includes communication, requirement analysis,
design modeling, program construction, testing, and support.
4.Tools
 Software engineering tools provide a self-operating system for processes and methods.
 Tools are integrated which means information created by one tool can be used by another.
A PROCESS FRAMEWORK
 Framework is a Standard way to build and deploy applications.
 Software Process Framework is a foundation of complete software engineering process.
 Software process framework includes all set of umbrella activities. It also includes number of
framework activities that are applicable to all software projects.
Software Process includes:
1. Tasks: They focus on a small, specific objective.
2. Action: It is a set of tasks that produce a major work product.
3. Activities: Activities are groups of related tasks and actions for a major objective.
Process Framework Activities
Five framework activities are described in a process framework for software engineering.
1. Communication
2. Planning
3. Modeling
4. Construction
5. Deployment
1. Communication
 The software development starts with the communication between customer and developer.
 Developer gather requirements of the project with the users.
 Communication with consumers and stakeholders to determine the system’s objectives and the
software’s requirements.
2. Planning
 It consists of complete estimation, scheduling for project development and tracking.
 Discuss work plan, technical risks, list of resource requirements, work produced & work schedule.
3. Modeling
 Develop a practical model to get a better understanding of the project.
 It consists of complete requirement analysis and design of the project like algorithm, flowchart.
 The software model is prepared by:
 Analysis of requirements
 Design
4. Construction
Creating code, testing the system, fixing bugs, and confirming that all criteria are met. The software
design is mapped into a code by:
 Code generation
 Testing
5. Deployment
 Deployment step consists of delivering the product to the customer and take feedback from them.
 On the basis of their feedback, we modify the product for the supply of better products.
Umbrella Activities
Umbrella Activities are that take place during a software development process for improved project
management and tracking.
1. Software project tracking and control
Compare the progress of the project with the plan and take steps to maintain a planned schedule.
2. Risk management
The risks that may affect project outcomes or quality can be analyzed. Analyze potential risks that
may have an impact on the software product’s quality and outcome.
3. Software quality assurance
These are activities required to maintain software quality. Perform actions to ensure the product’s
quality.
4. Formal technical reviews
It is required to assess engineering work products to uncover and remove errors before they
propagate to the next activity. At each level of the process, errors are evaluated and fixed.
5. Software configuration management
Managing of configuration process when any change in the software occurs.
6. Work product preparation and production
The activities to create models, documents, logs, forms, and lists are carried out.
7. Reusability management
It defines criteria for work product reuse. Reusable work items should be backed up, and reusable
software components should be achieved.
8. Measurement
In this activity, the process can be defined and collected. Also, project and product measures are used
to assist the software team in delivering the required software.
THE CAPABILITY MATURITY MODEL INTEGRATION (CMMI)
 The Capability Maturity Model Integration (CMMI) is the benchmark for measuring the maturity of
an organization’s software processes.
 The purpose of the CMMI model is to assess the maturity of an organization's processes and to
provide guidance on improving processes, with a goal of improved products.
 It was developed as a process enhancement tool.
Objectives of CMMI
1. Fulfilling customer needs and expectations.
2. Value creation for investors/stockholders.
3. Market growth is increased.
4. Improved quality of products and services.
5. Enhanced reputation in Industry.
CMMI Model – Maturity Levels
In CMMI with staged representation, there are five maturity levels described as follows :
1. Maturity level 1 : Initial
 Processes are poorly managed or controlled.
 Unpredictable outcomes of processes involved.
 Ad hoc and chaotic approach used.
 No KPAs (Key Process Areas) defined.
 Lowest quality and highest risk.
2. Maturity level 2 : Managed
 Requirements are managed.
 Processes are planned and controlled.
 Projects are managed and implemented according to their documented plans.
 This risk involved is lower than Initial level, but still exists.
 Quality is better than Initial level.
3. Maturity level 3 : Defined
 Processes are well characterized and described using standards, proper
Procedures, and methods, tools, etc.
 Medium quality and medium risk involved.
 Focus is process standardization.
4. Maturity level 4 : Quantitatively managed
 Quantitative objectives for process performance and quality are set.
 Quantitative objectives are based on customer requirements, organization
needs, etc.
 Process performance measures are analyzed quantitatively.
 Higher quality of processes is achieved.
 Lower risk
5. Maturity level 5 : Optimizing
 Continuous improvement in processes and their performance.
 Improvement has to be both incremental and innovative.
 Highest quality of processes.
 Lowest risk in processes and their performance.
PROCESS MODELS
Software processes in software engineering refer to the methods and techniques used to develop and
maintain software.
It is also known as a software development life cycle (SDLC).
The most popular and important SDLC models are as follows:
1. Waterfall model
2. Agile model
3. Spiral model
WATERFALL MODEL
 The classical waterfall model is the basic software development life cycle model.
 It is very simple but idealistic.
 Earlier this model was very popular but nowadays it is not used.
 But it is very important because all the other software development life cycle models are based on
the classical waterfall model.
 It is a linear and sequential approach to software development that consists of several phases that
must be completed in a specific order.
Phases of Waterfall Model

The Waterfall Model has six phases which are:


1. Requirements: The first phase involves gathering requirements from stakeholders and analyzing
them to understand the scope and objectives of the project.
2. Design: Once the requirements are understood, the design phase begins. This involves creating a
detailed design document that outlines the software architecture, user interface, and system
components.
3. Development: The Development phase include implementation involves coding the software
based on the design specifications. This phase also includes unit testing to ensure that each
component of the software is working as expected.
4. Testing: In the testing phase, the software is tested as a whole to ensure that it meets the
requirements and is free from defects.
5. Deployment: Once the software has been tested and approved, it is deployed to the production
environment.
6. Maintenance: The final phase of the Waterfall Model is maintenance, which involves fixing any
issues that arise after the software has been deployed and ensuring that it continues to meet the
requirements over time.
DISADVANTAGES
 High amounts of risk and uncertainty.
 Not a good model for complex and object-oriented projects.
 Poor model for long and ongoing projects.
 Not suitable for the projects where requirements are at a moderate to high risk of changing. So, risk
and uncertainty is high with this process model.
 It is difficult to measure progress within stages.
 Cannot accommodate changing requirements.
 Adjusting scope during the life cycle can end a project.
SPIRAL MODEL
 The biggest problem we face in the waterfall model is that taking a long duration to complete the
product, and the software became outdated.
 To solve this problem, we have a new approach, which is known as the Spiral model.
 The spiral model is also known as the cyclic model.
 The Spiral Model is a Software Development Life Cycle (SDLC) model that provides a systematic
and iterative approach to software development.
 In this model, we create the application module by module and handed over to the customer so
that they can start using the application at a very early stage.
 And we prepare this model only when the module is dependent on each other.
 In this model, we develop the application in the stages because sometimes the client gives the
requirements in between the process.
What Are the Phases of Spiral Model?
The different phases of the spiral model are as follows:
1. Requirement analysis
2. Design
3. Coding
4. Testing and risk analysis
Requirement Analysis
 The spiral model process starts with collecting business needs.
 In this, the following spirals will include the documentation of system requirements, unit
requirements, and the subsystem needs.
 In this stage, we can easily understand the system requirements because the business analyst and
the client have constant communication.
 And once the cycle is completed, the application will be deployed in the market.
Design
The second stage of the spiral model is designed, where we will plan the logical design, architectural
design, flow charts, decision tree, and so on.
Coding
 After the compilation of the design stage, we will move to our next step, which is the coding stage.
 In this, we will develop the product based on the client's requirement and getting the client's
feedback as well.
 This stage refers to the construction of the real application in every cycle.
 And those spirals had an excellent clarity of the requirements, and the design details of an
application are known as the build with having version numbers.
 After that, these builds are transferred to the client for their responses.
Testing and Risk Analysis
Once the development is completed successfully, we will test the build at the end of the first cycle and
also analyze the risk of the software on the different aspects such as managing risks, detecting, and
observing the technical feasibility. And after that, the client will test the application and give feedback.
DISADVANTAGES OF THE SPIRAL MODEL
1. Complex: The Spiral Model is much more complex than other SDLC models.
2. Expensive: Spiral Model is not suitable for small projects as it is expensive.
3. Too much dependability on Risk Analysis: The successful completion of the project is very
much dependent on Risk Analysis. Without very highly experienced experts, it is going to be a
failure to develop a project using this model.
4. Difficulty in time management: As the number of phases is unknown at the start of the project,
time estimation is very difficult.
5. Complexity: The Spiral Model can be complex, as it involves multiple iterations of the software
development process.
6. Time-Consuming: The Spiral Model can be time-consuming, as it requires multiple evaluations
and reviews.
AGILE MODEL
 In the Agile model, the requirements are decomposed into many small parts that can be
incrementally developed.
 The Agile model adopts Iterative development.
 Each incremental part is developed over an iteration.
 Each iteration is intended to be small and easily manageable and can be completed within a couple
of weeks only.
 At a time one iteration is planned, developed, and deployed to the customers. Long-term plans are
not made.
Steps in the Agile Model
The agile model is a combination of iterative and incremental process models. The steps involve in
agile SDLC models are:
 Requirement gathering
 Design the Requirements
 Construction / Iteration
 Testing / Quality Assurance
 Deployment
 Feedback
1. Requirement Gathering
In this step, the development team must gather the requirements, by interaction with the customer.
development team should plan the time and effort needed to build the project. Based on this
information you can evaluate technical and economical feasibility.
2. Design the Requirements
In this step, the development team will use user-flow-diagram or high-level UML diagrams to show
the working of the new features and show how they will apply to the existing software.
3. Construction / Iteration
In this step, development team members start working on their project, which aims to deploy a
working product.
4. Testing / Quality Assurance
Testing involves Unit Testing, Integration Testing, and System Testing. A brief introduction of these
three tests is as follows:
Unit Testing
Unit testing is the process of checking small pieces of code to ensure that the individual parts of a
program work properly on their own. Unit testing is used to test individual blocks (units) of code.
Integration Testing:- Integration testing is used to identify and resolve any issues that may arise
when different units of the software are combined.
System Testing:- Goal is to ensure that the software meets the requirements of the users and that it
works correctly in all possible scenarios.
5. Deployment
In this step, the development team will deploy the working project to end users.
6. Feedback
This is the last step of the Agile Model. In this, the team receives feedback about the product and
works on correcting bugs based on feedback provided by the customer.
DISADVANTAGES OF THE SPIRAL MODEL
1. Complex: The Spiral Model is much more complex than other SDLC models.
2. Expensive: Spiral Model is not suitable for small projects as it is expensive.
3. Too much dependability on Risk Analysis: The successful completion of the project is very
much dependent on Risk Analysis. Without very highly experienced experts, it is going to be a
failure to develop a project using this model.
4. Difficulty in time management: As the number of phases is unknown at the start of the project,
time estimation is very difficult.
5. Complexity: The Spiral Model can be complex, as it involves multiple iterations of the software
development process.
6. Time-Consuming: The Spiral Model can be time-consuming, as it requires multiple evaluations
and reviews.
7. Resource Intensive: The Spiral Model can be resource-intensive, as it requires a significant
investment in planning, risk analysis, and evaluations.

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy