Se Unit I Notes
Se Unit I Notes
SE Unit I notes
SE IT
Savitribai Phule University, Pune
Subject: Software engineering [214454]
Unit I: Unit-I: Introduction to software Engineering
Software Engineering Fundamentals: Nature of Software, Software Engineering Practice, Software Process,
Software Myths.
Process Models : A Generic Process Model, Linear Sequential Development Model, Iterative Development
Model, The incremental Development Model
Agile software development: Agile manifesto, agility principles, Agile methods, myth of planned
development, Introduction to Extreme programming and Scrum.
Agile Practices: test driven development, pair programming, continuous integration in DevOps , Refactoring
Unit Outcomes:
Books :
1. Roger S Pressman, Software Engineering: A Practitioner’s Approach, Mcgraw-Hill, ISBN:
0073375977, Seventh or Eighth Edition.
2. Joseph Phillips, IT Project Management –On Track From Start to Finish, Tata Mc Graw-Hill,
ISBN13: 978-0-07106727-0, ISBN-10: 0-07-106727-2.
Software is a program or set of programs containing instructions which provide desired functionality. And
Engineering is the processes of designing and building something that serves a particular purpose and find
a cost-effective solution to problems.
Software Engineering is a systematic approach to the design, development, operation, and maintenance of
a software system.
Maintainability –
Correctness –
A software product is correct, if the different requirements as specified in the SRS document have been
correctly implemented.
Reusability –
A software product has good reusability, if the different modules of the product can easily be reused to
develop new products.
Testability –
Here software facilitates both the establishment of test criteria and the evaluation of the software with
respect to those criteria.
Reliability –
It is an attribute of software quality. The extent to which a program can be expected to perform its desired
function, over an arbitrary time period.
Portability –
In this case, software can be transferred from one computer system or environment to another.
Adaptability –
In this case, software allows differing system constraints and user needs to be satisfied by making changes
to the software.
Software Engineering
The term is made of two words, software and engineering. Software is more than just a program code. A
program is an executable code, which serves some computational purpose. Software is considered to be
collection of executable programming code, associated libraries and documentations. Software, when
made for a specific requirement is called software product.
Engineering on the other hand, is all about developing products, using well-defined, scientific principles
and methods.
Software engineering is an engineering branch associated with development of software product using
well-defined scientific principles, methods and procedures. The outcome of software engineering is an
efficient and reliable software product.
Nature of Software:-
Software can be applied in a situation for which a predefined set of procedural steps exists.based on
complex growth of software it can be classified into following categories.
System Software –
System Software is necessary to manage the computer resources and support the execution of application
programs. Software like operating systems, compilers, editors and drivers etc., come under this category.
Networking Software provides the required support necessary for computers to interact with each other
and with data storage facilities. The networking software is also used when software is running on a
network of computers (such as World Wide Web). It includes all network management software, server
software, security and encryption software and software to develop web-based applications like HTML,
PHP, XML, etc.
Embedded Software –
This type of software is embedded into the hardware normally in the Read Only Memory (ROM) as a part
of a large system and is used to support certain functionality under the control conditions. Examples are
software used in instrumentation and control applications, washing machines, satellites, microwaves,
washing machines etc.
Reservation Software –
A Reservation system is primarily used to store and retrieve information and perform transactions related
to air travel, car rental, hotels, or other activities. They also provide access to bus and railway reservations,
although these are not always integrated with the main system. These are also used to relay computerized
information for users in the hotel industry, making a reservation and ensuring that the hotel is not
overbooked.
Business Software –
This category of software is used to support the business applications and is the most widely used category
of software. Examples are software for inventory management, accounts, banking, hospitals, schools, stock
markets, etc.
Entertainment Software –
Education and entertainment software provides a powerful tool for educational agencies, especially those
that deal with educating young children. There is a wide range of entertainment software such as computer
games, educational games, translation software, mapping software, etc.
Software like expert systems, decision support systems, pattern recognition software, artificial neural
networks, etc. come under this category. They involve complex problems which are not affected by
complex computations using non-numerical algorithms.
Scientific Software –
Scientific and engineering 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 specific to that field. Examples are software like MATLAB, AUTOCAD, PSPICE, ORCAD, etc.
Utilities Software –
The programs coming under this category perform specific tasks and are different from other software in
terms of size, cost and complexity. Examples are anti-virus software, voice recognition software,
compression programs, etc.
A Document Management Software is used to track, manage and store documents in order to reduce the
paperwork. Such systems are capable of keeping a record of the various versions created and modified by
different users (history tracking). They commonly provide storage, versioning, metadata, security, as well
as indexing and retrieval capabilities.
Software engineering (SE) is concerned with developing and maintaining software systems that behave
reliably and efficiently, are affordable to develop and maintain, and satisfy all the requirements that
customers have defined for them.
Analysis: decompose a large problem into smaller, understandable pieces composition is challenging
• What are the unknowns? and what (data, function, behaviour) are required to properly solve the
Problem?
• Does the solution conform to the plan? Is the source code traceable back to the design?
• Is each component of the solution correct? Has the design and code been reviewed, or better?
Core Principles
Remember the reason that the software exists -The software should provide value to its users and
satisfy the requirements
Maintain the vision of the project - A clear vision is essential to the project’s success
Others will consume what you produce - Always specify, design, and implement knowing that
someone else will later have to understand and modify what you did
Be open to the future- Never design yourself into a corner; build software that can be easily
changed and adapted.
Software myths:
Software myths are misleading attitudes that have caused serious problems for managers and technical
people alike. Software myths propagate misinformation and confusion. There are three kinds of software
myths:
1) Management myths: Managers with software responsibility are often under pressure to maintain
budgets, keep schedules from slipping, and improve quality. Following are the management myths:
Myth: We already have a book that’s full of standards and procedures for building software, won’t that
provide my people with everything they need to know?
Reality: The book of standards may very well exist, but isn’t used. Most software practitioners aren’t
aware of its existence. Also, it doesn’t reflect modern software engineering practices and is also complete.
Myth: My people have state-of-the-art software development tools, after all, we buy them the newest
computers.
Reality: It takes much more than the latest model mainframe, workstation, or PC to do high-quality
software development. Computer-aided software engineering (CASE) tools
are more important than hardware for achieving good quality and productivity, yet the majority of software
developers still do not use them effectively.
Myth: If we get behind schedule, we can add more programmers and catch up (sometimes called the
Mongolian horde concept).
Reality: Software development is not a mechanistic process like manufacturing. 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.
2) Customer myths: Customer myths lead to false expectations (by the customer) and ultimately,
dissatisfaction with the developer. Following are the customer myths:
Myth: A general statement of objectives is sufficient to begin writing programs-we can fill in the details
later.
Reality: A poor up-front definition is the major cause of failed software efforts. A formal and detailed
description of the functions, behavior, performance, interfaces, design constraints, and validation criteria is
essential.
Myth: Project requirements continually change, but change can be easily accommodated because
software is flexible.
Reality: It is true that software requirements change, but the impact of change varies with the time at
which it is introduced. When changes are requested during software design, the cost impact grows rapidly.
Resources have been committed and a design framework has been established. Change can cause heavy
additional costs. Change, when requested after software is in production, can be much more expensive than
the same change requested earlier.
Myth: Once we write the program and get it to work, our job is done.
Reality: Industry data indicate that between 60 and 80 percent of all effort expended on software will be
expended after it is delivered to the customer for the first time.
Myth: Until I get the program “running” I have no way of assessing its quality.
Reality: One of the most effective software quality assurance mechanisms can be applied from the
inception of a project—the formal technical review.
A Layered Technology
SE process is the GLUE that holds all the technology layers together and enables the timely development
of computer software.
It forms the base for management control of software project.
3. Methods: -
SE methods provide the "Technical Questions" for building Software.
Methods contain a broad array of tasks that include communication requirement analysis, design modeling,
program construction testing and support.
4. Tools: -
SE tools provide automated or semi-automated support for the "Process" and the "Methods".
Tools are integrated so that information created by one tool can be used by another.
1. Communication:
The software development starts with the communication between customer and developer.
2. Planning:
It consists of complete estimation, scheduling for project development and tracking.
3. Modeling:
Modeling consists of complete requirement analysis and the design of the project like algorithm, flowchart
etc.
The algorithm is the step-by-step solution of the problem and the flow chart shows a complete flow
diagram of a program.
4. Construction:
Construction consists of code generation and the testing part. Coding part implements the design details
using an appropriate programming language.
Testing is to check whether the flow of coding is correct or not. Testing also check that the program
provides desired output.
5. Deployment:
Deployment step consists of delivering the product to the customer and take feedback from them.
If the customer wants some corrections or demands for the additional capabilities, then the change is
required for improvement in the quality of the software.
Umbrella activities
Typical umbrella activities are:
SQA is the planned and systematic pattern of activities which are required to give a guarantee of
software quality.
For example, during the software development meetings are conducted at every stage of
development to find out the defects and suggest improvements to produce good quality software.
4. Formal Technical Reviews (FTR)
FTR is a meeting conducted by the technical staff.
The motive of the meeting is to detect quality problems and suggest improvements.
The technical person focuses on the quality of the software from the customer point of view.
5. Measurement
Measurement consists of the effort required to measure the software.
The software cannot be measured directly. It is measured by direct and indirect measures.
Direct measures like cost, lines of code, size of software etc.
Indirect measures such as quality of software which is measured by some other factor. Hence, it is
an indirect measure of software.
6. Software Configuration Management (SCM)
It manages the effect of change throughout the software process.
7. Reusability management
It defines the criteria for reuse the product.
The quality of software is good when the components of the software are developed for certain
application and are useful for developing other applications.
8. Work product preparation and production
It consists of the activities that are needed to create the documents, forms, lists, logs and user
manuals for developing a software.
Process Models
A software process model is a specified definition of a software process, which is presented from a
particular perspective.
Models, by their nature, are a simplification, so a software process model is an abstraction of the actual
process, which is being described.
Process models may contain activities, which are part of the software process, software product, and the
roles of people involved in software engineering.
3. RAD model
RAD is a Rapid Application Development model.
Using the RAD model, software product is developed in a short period of time.
The initial activity starts with the communication between customer and developer.
Planning depends upon the initial requirements and then the requirements are divided into groups.
Planning is more important to work together on different modules.
For example, what type of information is produced by every function and which are the functions
to handle that information.
A complete business analysis should be performed to get the essential business information.
2. Data modelling
The information in the business modelling phase is refined into the set of objects and it is essential
for the business.
The attributes of each object are identified and define the relationship between objects.
3. Process modeling
The data objects defined in the data modeling phase are changed to fulfil the information flow to
implement the business model.
The process description is created for adding, modifying, deleting or retrieving a data object.
4. Application generation
In the application generation phase, the actual system is built.
To construct the software the automated tools are used.
5. Testing and turnover
The prototypes are independently tested after each iteration so that the overall testing time is
reduced.
The data flow and the interfaces between all the components are are fully tested. Hence, most of
the programming components are already tested.
1. Communication
In this phase, developer and customer meet and discuss the overall objectives of the software.
2. Quick design
Quick design is implemented when requirements are known.
It includes only the important aspects like input and output format of the software.
It focuses on those aspects which are visible to the user rather than the detailed plan.
It helps to construct a prototype.
3. Modeling quick design
This phase gives the clear idea about the development of software because the software is now
built.
It allows the developer to better understand the exact requirements.
4. Construction of prototype
The prototype is evaluated by the customer itself.
The process of refining the prototype is repeated until all the requirements of users are met.
When the users are satisfied with the developed prototype then the system is developed on the basis
of final prototype.
Advantages of Prototyping Model
Prototype model need not know the detailed input, output, processes, adaptability of operating
system and full machine interaction.
In the development process of this model users are actively involved.
The development process is the best platform to understand the system by the user.
Errors are detected much earlier.
Gives quick user feedback for better solutions.
It identifies the missing functionality easily. It also identifies the confusing or difficult functions.
Disadvantages of Prototyping Model:
The client involvement is more and it is not always considered by the developer.
It is a slow process because it takes more time for development.
Many changes can disturb the rhythm of the development team.
It is a thrown away prototype when the users are confused with it.
COMPONENT-BASED DEVELOPMENT.
Commercial off-the-shelf (COST) software components, developed by vendors who offer them as
products, can be used when software is to be built.
These components provide targeted functionality with well-defined interfaces that enable the component to
be integrated into the software.
Consists of the following process steps
Available component-based products are researched and evaluated for the application domain in question
Component integration issues are considered
A software architecture is designed to accommodate the components
Components are integrated into the architecture
Comprehensive testing is conducted to ensure proper functionality
Relies on a robust component library
Capitalizes on software reuse, which leads to documented savings in project cost and time component-
based development can lead to reduction in development cycle time, reduction in project cost and increase
in productivity.
1. Incremental planning
In this task, the incremental plan is developed.
The functionality of each increment, projected size of the increment and the cleanroom
development schedule is created.
The care is to be taken that each increment is certified and integrated in proper time according to
the plan.
2. Requirements gathering
Requirement gathering is done using the traditional techniques like analysis, design, code, test and
debug.
A more detailed description of the customer level requirement is developed.
3. Box structure specification
The specification method uses box structure.
Box structure is used to describe the functional specification.
The box structure separate and isolate the behaviour, data and procedure in each increment.
4. Formal design
The cleanroom design is a natural specification by using the black box structure approach.
The specification is called as state boxes and the component level diagram called as the clear
boxes.
5. Correctness verification
The cleanroom conducts the exact correctness verification activities on the design and then the
code.
Verification starts with the highest-level testing box structure and then moves toward the design
detail and code.
The first level of correctness takes place by applying a set of 'correcting questions'.
More mathematical or formal methods are used for verification if correctness does not signify that
the specification is correct.
6. Code generation, inspection and verification
The box structure specification is represented in a specialized language and these are translated into
the appropriate programming language.
Use the technical reviews for the syntactic correctness of the code.
7. Statical test planning
Analysed, planned and designed the projected usages of the software.
The cleanroom activity is organized in parallel with specification, verification and code generation.
8. Statistical use testing
The exhaustive testing of computer software is impossible. It is compulsory to design limited
number of test cases.
Statistical use technique executes a set of tests derived from a statistical sample in all possible
program executions.
These samples are collected from the users from a targeted population.
9. Certification
After the verification, inspection and correctness of all errors, the increments are certified and
ready for integration.
Cleanroom process model
The modeling approach in cleanroom software engineering uses a method called box structure
specification.
A 'box' contains the system or the aspect of the system in detail.
The information in each box specification is sufficient to define its refinement without depending
on the implementation of other boxes.
1. Black box
The black box identifies the behaviour of a system.
The system responds to specific events by applying the set of transition rules.
2. State box
The box consists of state data or operations that are similar to the objects.
The state box represents the history of the black box i.e the data contained in the state box must be
maintained in all transitions.
3. Clear box
The transition function used by the state box is defined in the clear box.
It simply states that a clear box includes the procedural design for the state box.
Disadvantage of SQA:
There are a number of disadvantages of quality assurance.
adding more resources, employing more workers to help maintain quality and so much more.
Usability of software is defined as its ease of use. Quality of the software is also identified as how easily a
user can understand the functions of the software and how much efforts are required to follow the features.
4. Efficiency
The efficiency of the software is dependent on the architecture and coding practice followed during
development.
5. Maintainability
Maintainability is also one of the significant factors to define the quality of the software. It refers to
identify the fault and fix in the software. It should be stable when the changes are made.
6. Portability
Portability of the software, defined as how easily a system adapts to changes in the specifications. Quality
of the software is also determined by the portability of the system how easy it is to install the software and
how easy it is to replace a component of the order in a given environment.
Verification:
Verification is the process of checking that a software achieves its goal without any bugs. It is the process
to ensure whether the product that is developed is right or not. It verifies whether the developed product
fulfils the requirements that we have.
Verification is Static Testing.
Validation:
Validation is the process of checking whether the software product is up to the mark or in other words
product has high level requirements.
It is the process of checking the validation of product i.e. it checks what we are developing is the right
product. it is validation of actual and expected product.
Validation is the Dynamic Testing.
Quality assurance provides assurance that the The quality of request required In QA is achieved
quality request has been met. in QC
The goal of quality assurance is to prevent the The goal of quality control is to recognize and fix
defects. defects.
Quality assurance manages the quality
Quality control checks the quality-Validation.
Verification.
It does not include the execution of program. It requires execution of program.
Quality assurance is a proactive technique. Quality control is a reactive technique.
It is a proactive measure. It is a reactive measure.
It is a procedure to produce the deliverables i.e a
It is a procedure to check those deliverables.
product of development process.
Quality assurance is included in complete Quality testing is included in complete software
software development life cycle. testing life cycle.
It defines the standards and methodologies to meet It ensures that the standards are followed while
customer requirements. working on the product.
It is executed only after quality assurance activity
It is executed before quality control.
is completed.
Quality assurance is a less time-consuming Quality control is a more time-consuming
activity. activity.
Statistical technique applied on QA is known as Statistical technique applied on QC is known as
Statistical Process Control (SPC). Statistical Quality Control (SQC).
The 2008 revision introduces a concept known as the process model. This means that you need to define
what your organization does by:
Developing a process model of your organization’s activities
Understanding how those processes inter-relate
Deciding who owns these processes and ensure they are trained and competent
Monitoring and improving the system by auditing and measuring customer satisfaction, etc.
ISO represents an accepted minimum management standard for a well-managed organization. Whether
you operate internationally or want to expand locally, ISO approval will demonstrate your commitment to
quality.
Capability Maturity Model (CMM) is an industry standard model. This model is used to develop
and refine processes of an organization.
This model is organized into the five levels of maturity.
Each level ranks the organization as per standardization of process assessed in the subject area.
The subject area can be software engineering, system engineering, project management, risk
management, system acquisition, information technology services etc.
A maturity model is a structured collection of element and explains the characteristics of effective
processes.
It is used as benchmark for accessing various organizations for equivalent comparison.
i) Initial
The software processes at this level are ad hoc and do not give a stable environment.
The success of project depends on the capability and braveness of the people in the organization.
There are no actual applications required to adopt planning, monitoring or controlling the process.
It is not possible to estimate the time and cost to develop the software.
ii) Repeatable
The software development processes are repeatable. They are not repeated for all the projects in the
organization.
An organization may use basic and constant project management processes to track cost, schedule
and functionality.
The minimum process discipline is used to repeat earlier success of project with same applications.
iii) Defined
In defined level of maturity model, common engineering and management activities are
standardized and documented.
These standards are adapted and accepted for use on various projects.
Test documents and plans are reviewed and accepted before testing starts.
The groups of testers are independent from the developers.
The test outputs are used to determine when the software is ready.
iv) Managed
In managed level of maturity, detailed measure of the software process and product quality is
gathered.
The software process and product are quantitatively understood and controlled.
v) Optimizing
This level show continuous improvement from previous levels and hence it is called as Optimizing.
The processes and new technologies are attempted, the outputs are measured and the evolutionary
and incremental changes are achieved for better quality levels.