0% found this document useful (0 votes)
105 views13 pages

Se Unit 1 Notes

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)
105 views13 pages

Se Unit 1 Notes

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
You are on page 1/ 13

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
INTRODUCTION:
Software Engineering is a framework for building software and is an engineering approach to software
development. Software programs can be developed without S/E principles and methodologies but they are
indispensable if we want to achieve good quality software in a cost effective manner.
Software is defined as:

Instructions + Data Structures + Documents

Engineering is the branch of science and technology concerned with the design, building, and use of
engines, machines, and structures. It is the application of science, tools and methods to find cost effective
solution to simple and complex problems.

SOFTWARE ENGINEERING is defined as a systematic, disciplined and quantifiable approach for the
development, operation and maintenance of software.

The Evolving role of software:


The dual role of Software is as follows:
• A Product-Information transformer producing, managing and displaying information.
• A Vehicle for delivering a product-Control of computer (operating system), the communication of
information (networks) and the creation of other programs.
Characteristics of software
• Software is developed or engineered; it is not manufactured in the classical sense:
• Although some similarities exist between software development and hardware
manufacturing, few activities are fundamentally different.
• In both activities, high quality is achieved through good design, but the manufacturing
phase for hardware can introduce quality problems than software.
• The software doesn’t “wear out.” :
• Hardware components suffer from the growing effects of many other environmental factors.
Stated simply, the hardware begins to wear out.
• Software is not susceptible to the environmental maladies that cause hardware to wear out.
• When a hardware component wears out, it is replaced by a spare part.
• There are no software spare parts.
• Every software failure indicates an error in design or in the process through which the
design was translated into machine-executable code. Therefore, the software
maintenance tasks that accommodate requests for change involve considerably more
complexity than hardware maintenance. However, the implication is clear—the software
doesn’t wear out. But it does deteriorate.
• The software continues to be custom-built:
• A software part should be planned and carried out with the goal that it tends to be reused in
various projects.
• Current reusable segments encapsulate the two pieces of information and the preparation
that is applied to the information, empowering the programmer to make new applications
from reusable parts.
• In the hardware world, component reuse is a natural part of the engineering process.

THE CHANGING NATURE OF SOFTWARE


The various categories of software are:
• System software
• Application software
• Engineering and scientific software
• Embedded software
• Product-line software
• Web-applications
• Artificial intelligence software

1. System Software:
System software is a collection of programs which are written to service other programs. Some system
software processes complex but determinate, information structures. Other system application process largely
indeterminate data. Sometimes when, the system software area is characterized by the heavy interaction with
computer hardware that requires scheduling, resource sharing, and sophisticated process management.
2. Application Software:
Application software is defined as programs that solve a specific business need. Application in this area
process business or technical data in a way that facilitates business operation or management technical
decision making. In addition to convention data processing application, application software is used to
control business function in real time.
3. Engineering and Scientific Software:
This software is used to facilitate the engineering function and task. However modern application within the
engineering and scientific area is moving away from the conventional numerical algorithms. Computer-
aided design, system simulation, and other interactive applications have begun to take real-time and even
system software characteristic.
4. Embedded Software:
Embedded software resides within the system or product and is used to implement and control feature and
function for the end-user and for the system itself. Embedded software can perform the limited and esoteric
function or provided significant function and control capability.
5. Product-line Software:
Designed to provide a specific capability for use by many different customers, product line software can
focus on the limited and esoteric marketplace or address the mass consumer market.
6. Web Application:
It is a client-server computer program which the client runs on the web browser. In their simplest form,
Web apps can be little more than a set of linked hypertext files that present information using text and
limited graphics. However, as e-commerce and B2B application grow in importance. Web apps are
evolving into a sophisticate computing environment that not only provides a standalone feature, computing
function, and content to the end user.
7. Artificial Intelligence Software:
Artificial intelligence software makes use of a nonnumeric algorithm to solve a complex problem that is not
amenable to computation or straightforward analysis. Application within this area includes robotics, expert
system, pattern recognition, artificial neural network, theorem proving and game playing
LEGACY SOFTWARE
Legacy software is older programs that are developed decades ago. The quality of legacy software is poor
because it has in extensible design, convoluted code, poor and nonexistent documentation, test cases and
results that are not achieved.
As time passes legacy systems evolve due to following reasons:
• The software must be adapted to meet the needs of new computing environment or technology.
• The software must be enhanced to implement new business requirements.
• The software must be extended to make it inter operable with more modern systems or database .
• The software must be re architected to make it viable within a network environment.
SOFTWARE MYTHS
Myths are widely held but false beliefs and views which propagate misinformation and confusion. Three
types of myth are associated with software:
• Management myth
• Customer myth
• Practitioner’s myth

MANAGEMENT MYTHS
Myth1 - The available standards and procedures are enough.
Reality: Standards exist, but not complete, not adaptable and software practitioners not aware of their
existence.
Myth 2 - Each organization feel that they have software development tools since they have latest computer.
Reality: Latest computer are nothing without software experts
Myth 3 - Adding more programmers when the work is behind schedule can catch up.
Reality: Adding people to a late project makes it more lately because software development is not like
manufacturing.
Myth 4 - Outsourcing the software project to third party, we can relax and let that party build it.
Reality: If management does not know how to manage and control Software projects, it will struggle if it
outsources the projects.
CUSTOMER MYTHS
• Customer is a person, group, outside company that request for software under contract
• Customer believes on myths which lead to false expectations.
• Ultimately it leads to dissatisfaction with the developer.
Myth1 - General statement of requirements or objectives is enough to start writing programs, the details can be filled
in later.
Reality: Ambiguous (doubtful or uncertain) statement of objectives creates disaster.
Unambiguous requirements can come by effective and continuous communication between customer and
developer
Myth 2-Project requirements changes continuously and change can be done easily because software is flexible.
Reality: The impact of requirement changes depends on the time at which they are given.
When requirement changes requested early i.e. before design or code, cost effect is less.
PRACTITIONER’S MYTH
Myth1: Once the program is written and it started, the job has been done.
Reality: 80 percent of efforts expended after it is delivered to the customer for the first time.
Myth 2: Until the program is running, there is no way of assessing the quality.
Reality: software reviews are the effective ways of assessing the quality as compared to testing for finding
errors.
Myth 3: The only deliverable work product for a successful project is the working program.
Reality: Working program is only one part of software configuration. Documentation provides foundation for
support.
Myth 4: Software Engineering creates huge and unnecessary documents and slows down software development.
Reality: Software Engineering is about creating quality, better quality gives reduced works, and reduced work
results in faster delivery time.
A Generic view of process
SOFTWARE ENGINEERING-A LAYERED TECHNOLOGY

Fig: Software Engineering-A layered technology

• Quality focus – Bedrock that supports Software Engineering.


• Process-Foundation for software Engineering
• Methods-Provide technical How-to’s for building software
• Tools-Provide semi-automatic and automatic support to methods

A PROCESS FRAMEWORK
• Establishes the foundation for a complete software process
• Identifies a number of frame work activities applicable to all software projects
• Also include a set of umbrella activities that are applicable across the entries of software process.

• A PROCESS FRAME WORK comprises of: Common process frame work Umbrella activities Framework
activities Tasks, Milestones, deliverables SQA points
A PROCESS FRAME WORK:
• Used as a basis for the description of process models
• Generic process activities include:
o Communication
o Planning
o Modeling
o Construction
o Deployment

APROCESSFRAMEWORK
Generic view of engineering complimented by a number of umbrella activities :
• Software project tracking and control
• Formal technical reviews
• Software quality assurance
• Software configuration management
• Document preparation and production
• Reusability management
• Measurement
• Risk management

CAPABILITY MATURITY MODEL INTEGRATION (CMMI):


• Developed by SEI (Software Engineering institute)
• Assess the process model followed by an organization and rate the organization with different levels
• A set of software engineering capabilities should be present as organizations reach different levels of process
capability and maturity.
• CMMI process Meta model can be represented in different ways:
1. A continuous model
2. A staged model
Continuous model:
• Lets organizations elect specific improvement that best meet its business objectives and minimize risk- Levels
are called capability levels.
• Describes a process in 2 dimensions
• Each process area is assessed against specific goals and practices and is rated according to the following
capability levels.
CMMI
Six levels of CMMI
• Level0:Incomplete
• Level1:Performed
• Level2:Managed
• Level3:Defined
• Level4:Quantitativelymanaged
• Level5:Optimized
CMMI
• Incomplete-Process is adhoc. Objective and goal of process areas are not known
• Performed-Goal, objective, work tasks, work products and other activities of software process are carried out
• Managed-Activities are monitored, reviewed, evaluated and controlled
• Defined-Activities are standardized, integrated and documented
• Quantitatively Managed-Metrics and indicators are available to measure the process and quality
• Optimized-Continuous process improvement based on quantitative feedback from the user
• Use of innovative ideas and techniques, statistical quality control and other methods for process improvement.

CMMI-Staged model
• This model is used if you have no clue of how to improve the process for quality software.
• It gives a suggestion of what things other organizations have found helpful to work first
• Levels are called maturity levels

PROCESS MODELS
Software Processes is a coherent set of activities for specifying, designing, implementing and testing software
systems
A software process model is an abstract representation of a process that presents a description of a process from
some particular perspective.

WATERFALL MODEL:
• It was the first model introduced.
• It is also known as linear sequential life cycle model.
• It is very simple and understand to use.
• It is basic of all the process development models.
• It is a theoretical model, not to use practically.
• It is called Waterfall because stages go top to bottom like a natural waterfall.
• When one stage gets completed then only move to next stage.
• Not supposed to come back to previous stage.
• This is considered conventional or classical software life cycle model.

PHASES OF WATERFALL MODEL:


1. Feasibility Study
This preliminary step involves assessing the feasibility of the project in terms of technical, economic,
operational, legal, and schedule aspects. It helps in determining whether the project is worth pursuing.
2. Requirements Gathering
In this phase, the project team works closely with stakeholders to gather and document the software
requirements. This involves understanding the desired functionality, features, and constraints of the software product.
3. Analysis Phase
The requirements gathered in the previous phase are analyzed and refined to ensure clarity, completeness, and
consistency. This phase focuses on understanding the underlying problem and identifying the system’s functional and
non-functional requirements.

4. Design
Based on the analyzed requirements, the system design phase begins. The software architecture, modules, and
components are designed, considering factors like scalability, security, and performance. The design phase creates a
blueprint for the development process.
5. Coding
In this phase, the actual coding or programming takes place. The software developers write the code according
to the design specifications. This phase involves translating the design into executable code using programming
languages and tools.
6. Testing
After the coding phase, the software goes through rigorous testing. The testing phase involves various types of
testing, including unit testing (testing individual components), integration testing (testing how components work
together), and system testing (testing the entire system as a whole). The goal is to ensure that the software functions as
expected and meets the defined requirements.
7. Maintenance
Once the software is deployed, the maintenance phase begins. This phase involves addressing issues, fixing
bugs, and providing ongoing support to the users. Maintenance may also include making enhancements or updates to
the software based on user feedback or changing requirements.

ADVANTAGES OF WATERFALL MODEL


• Simple and easy to understand and use.
• Phases do not overlap.
• Phases are executed one at a time.
• Each phase has specific output and a review process, which makes it easy to manage.
• Best for small projects where requirements are very well understood.

DISADVANTAGES OF WATERFALL MODEL


• When model in execution it is very difficult to go back and make changes in previous stage.
• Risk is very high.
• Not suitable for complex and object oriented projects.
• Not suitable for large projects.
• Not suitable for when requirements are not understood, or requirements are not fixed.

Evolutionary Process Models


• Evolutionary models are iterative type models.
• They allow to develop more complete versions of the software.

Following are the evolutionary process models.

1. The prototyping model


2. The spiral model

SPIRAL MODEL:
• The spiral model blends the notion of repeated development with the waterfall model's structured, supervised
characteristics.
• This Spiral approach also combines an iterative development process model with a sequential linear
development model, i.e., the waterfall model, with a strong focus on risk analysis.
• It enables incremental product launches or enhancement as each iteration around the spiral progresses.
Phases of Spiral Model
The Spiral model has four phases in the software development process. They are:
Planning: The baseline spiral collects the business needs at this phase. This phase is followed by identifying
system requirements, subsystem requirements, and unit requirements as the product grows.
This phase also includes continual contact between the client and the system analyst to understand the system
requirements. The product is launched in the specified market after the spiral.
Risk Analysis: In the second quadrant, all viable solutions are reviewed to choose the optimal one. The risks
connected with that solution are then identified, and the risks are mitigated using the best technique feasible.
The prototype is made at the end of this quadrant for the most satisfactory potential solution.
Execution: At each spiral, the execution phase relates to developing the authentic software product. A POC
(Proof of Concept) is produced in this phase of the baseline spiral when the idea is merely being thought of,
and the design is being developed to collect user input.
Then, when the requirements and design specifics become more precise, a functioning model of the program
known as a build is created with a version number. These prototypes are submitted to the buyer for review.
Evaluation: Technical feasibility and management risks, such as schedule slippage and cost overrun, are
identified, estimated, and monitored through risk analysis. At the end of the first iteration, the client analyses
the program and comments after testing it.
Advantages of Spiral Model
The spiral model has the following advantages:
• Requirements may be captured with more precision.
• Users get a first look at the system.
• Development may be broken down into smaller chunks, with the hazardous elements first, allowing for better
risk management.
• It's excellent for big, mission-critical projects.

Disadvantages of Spiral Model


The spiral model has the following disadvantages:
• Smaller tasks are not well served by this method.
• The procedure is intricate.
• Spiral might continue endlessly.
• A large number of intermediate phases demands a mountain of paperwork.
• When to use Spiral Model

The spiral model is best suited for implementation where: (Applications)


• There is a budget constraint, risk assessment is critical.
• For projects with a medium to a high level of risk.
• Long-term project commitment due to the possibility of shifting economic priorities as requirements change
over time.
• The customer is unsure about their needs, which is typical.
• Conditions are difficult to understand and must be evaluated.
The Prototyping model

• Prototype is defined as first or preliminary form using which other forms are copied or derived.
• Prototype model is a set of general objectives for software.
• It does not identify the requirements like detailed input, output.
• It is software working model of limited functionality.

• In this model, working programs are quickly produced.


The different phases of Prototyping model are:
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.


5. Deployment, delivery, feedback
• If the user is not satisfied with current prototype then it refines according to the requirements of the user.
• 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.

Agility and Agile Process model


The meaning of Agile is swift or versatile."Agile process model" refers to a software development approach based on
iterative development. Agile methods break tasks into smaller iterations, or parts do not directly involve long term

planning. The project scope and requirements are laid down at the beginning of the development process. Plans regarding
the number of iterations, the duration and the scope of each iteration are clearly defined in advance

Phases of Agile model:


• Requirements gathering
• Design the requirements
• Construction/iteration
• Testing/Quality assurance
• Deployment
• Feedback

Requirements gathering: In this phase, you must define the requirements. You should explain business opportunities
and plan the time and effort needed to build the project. Based on this information, you can evaluate technical and
economic feasibility.
Design the requirements: When you have identified the project, work with stakeholders to define requirements. You
can use the user flow diagram or the high-level UML diagram to show the work of new features and show how it will
apply to your existing system.
Construction/ iteration: When the team defines the requirements, the work begins. Designers and developers start
working on their project, which aims to deploy a working product. The product will undergo various stages of
improvement, so it includes simple, minimal functionality.
Testing: In this phase, the Quality Assurance team examines the product's performance and looks for the bug.
Deployment: In this phase, the team issues a product for the user's work environment.
Feedback: After releasing the product, the last step is feedback. In this, the team receives feedback about the product
and works through the feedback.
Advantages:
• Frequent Delivery
• Face-to-Face Communication with clients.
• Efficient design and fulfils the business requirement.
• Any time changes are acceptable.
• It reduces total development time.

Disadvantages:
• Due to the shortage of formal documents, it creates confusion and crucial decisions taken throughout various
phases can be misinterpreted at any time by different team members.
• Due to the lack of proper documentation, once the project completes and the developers allotted to another
project, maintenance of the finished project can become a difficulty.

Other process models of Agile Development and Tools

• Crystal
• Scrum

Scrum
• Scrum is aimed at sustaining strong collaboration between people working on complex products, and details
are being changed or added.
• It is based upon the systematic interactions between the three major roles:
• Scrum Master,
• Product Owner
• The Team.

Crystal
Crystal is an agile methodology for software development. It places focus on people over processes, to empower
teams to find their own solutions for each project rather than being constricted with rigid methodologies.
Crystal methods focus on:-
• People involved
• Interaction between the teams/Community
• Skills of people involved Their Talents

You might also like