Unit 1 SE
Unit 1 SE
Unit 1 SE
• Software
– programs that provide function & performance
– data structures for information manipulation
– documents that describe the operations and use of
the programs
• Engineering
– A discipline that applies scientific and technical
methods in the design and production of a product
IEEE Definition of Software
Engineering
Powerful Desktop
Multi user Distributed System OOP technology
Batch Oriented Real Time Embedded Intelligence Expert System
Limited Distribution Database Low Cost Software Neural network
Custom Software Product Software Consumer Impact Parallel Computing
1ST Era :
-Software was custom designed and had a relatively limited
distribution.
-Job mobility was low
-Design and documentation was often non- existent.
Multi user
Real Time
Database
Product Software
2nd Era:
-Multiprogramming and multiuser systems
-Various interactive technologies were developed
-Introduction of database management system
-Real time systems
-All these leads to Software Maintenance
Distributed System
Embedded Intelligence
Low Cost Software
Consumer Impact
3rd Era
-The distributed system
-Global and Local area networks, high bandwidth digital
communications
-Embedded systems
Powerful Desktop
OOP technology
Expert System
Neural network
Parallel Computing
4th Era –
-Powerful desktop machines
-Object – Oriented technologies were developed
-Expert system and artificial intelligence software have been developed
-Artificial neural network software coupled with the application fuzzy
logic for pattern recognition
-Virtual reality programming and multimedia system also developed
Software Characteristics
Time
Time
• Product Line Software: These software use Personnel use software like
Word processing, spreadsheet, computer graphics, multimedia,
entertainment, database management, Personnel and financial applications
etc.
• Artificial Intelligence Software:
These related to specific analysis and interpretation of problem to
solve it.
Another application areas for AI software are pattern recognition,
theorem proving and game playing.
Neural network simulates the structure of brain process and can
recognize complex patterns and learn from past experience.
Generic View of Software
Engineering
Design, code generation and testing part will occur in this phase
Generic View of Software Engineering
- Maintenance Phase
Maintenance Phase
◦ Correction: Correct Uncovered defects
◦ Adaptation: Adapt due to environmental changes
◦ Enhancement: To extend software Functionality
◦ Prevention: To enable the software to serve needs of end user.
Preventive maintenance makes changes to computer programs so
that they can be more easily corrected, adapted, and enhanced.
The Software Process
The term software specifies to the set of computer programs, procedures and associated
documents (Flowcharts, manuals, etc.) that describe the program and how they are to be
used.
A software process is the set of activities that are applied to design and build a software
product.
There are some fundamental activities that are common to all software processes:
Software specification. In this activity the functionality of the software and constraints on
its operation must be defined.
Software design and implementation. The software that meets the specification is
produced.
Software validation. The software must be validated to ensure that it has all the
functionalities what the customer needs.
Software evolution. The software must evolve to meet changing customer needs.
Software Myths
Software Myths:
Myth 1: We have all the standards and procedures available for software development.
Fact: 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 2:
The addition of the latest hardware programs will improve the software development.
Myth 2: The addition of the latest hardware programs will improve the software development.
Fact: The role of the latest hardware is not very high on standard software development; instead
(CASE) Engineering tools help the computer, they are more important than hardware to produce
quality and productivity.
•Hence, the hardware resources are misused.
Myth 3: With the addition of more people and program planners to Software development can help
meet project deadlines (If lagging behind).
Fact: If software is late, adding more people will merely make the problem worse. This is because
the people already working on the project now need to spend time educating the newcomers, and are
thus taken away from their work. The newcomers are also far less productive than the existing
software engineers, and so the work put into training them to work on the software does not
immediately meet with an appropriate reduction in work.
Software Myths
(ii)Customer Myths:
The customer can be the direct users of the software, the technical team, marketing / sales
department, or other company. Customer has myths leading to false expectations (customer) & that’s
why you create dissatisfaction with the developer.
Myth 1: A general statement of intent is enough to start writing plans (software development) and
details of objectives can be done over time.
Fact: Official and detailed description of the database function, ethical performance,
communication, structural issues and the verification process are important.
•Unambiguous requirements (usually derived iteratively) are developed only through effective and
continuous
communication between customer and developer.
Myth 2: Software requirements continually change, but change can be easily accommodated
because software is flexible
Fact: It is true that software requirements change, but the impact of change varies with the time at
which it is introduced. When requirements changes are requested early (before design or code has
been started), the cost impact is relatively small. However, as time passes, the cost impact grows
rapidly—resources have been committed, a design framework has been established, and change can
cause upheaval that requires additional resources and major design modification.
Software Myths
(iii)Practitioner’s Myths:
Myths 1: They believe that their work has been completed with the writing of the plan.
Fact: It is true that every 60-80% effort goes into the maintenance phase (as of the latter software
release). Efforts are required, where the product is available first delivered to customers.
Myths 2: There is no other way to achieve system quality, until it is “running”.
Fact: Systematic review of project technology is the quality of effective software verification
method. These updates are quality filters and more accessible than test.
Myth 3: An operating system is the only product that can be successfully exported project.
Fact: A working system is not enough, the right document brochures and booklets are also required
to provide guidance & software support.
Myth 4: Engineering software will enable us to build powerful and unnecessary document & always
delay us.
Fact: Software engineering is not about creating documents. It is about creating a quality product.
Better quality leads to reduced rework. And reduced rework results in faster delivery times
The Software Process Models
• Waterfall model
• Incremental process model
• RAD model
Waterfall Model
• The Waterfall Model was the first Process Model to be introduced.
• It is also referred to as a linear-sequential life cycle model.
• It is very simple to understand and use.
• In a waterfall model, each phase must be completed before the next
phase can begin and there is no overlapping in the phases.
• The Waterfall model is the earliest SDLC approach that was used for
software development.
• The waterfall Model illustrates the software development process in a
linear sequential flow.
• This means that any phase in the development process begins only if
the previous phase is complete.
• In this waterfall model, the phases do not overlap.
Waterfall Model
System
Analysis
Requirement
Analysis
Design
Coding
Testing
Maintenance
Waterfall Model
The sequential phases in Waterfall model are −
• Requirement Gathering and analysis − All possible requirements of the system to be
developed are captured in this phase and documented in a requirement specification
document.
• System Design − The requirement specifications from first phase are studied in this
phase and the system design is prepared. This system design helps in specifying
hardware and system requirements and helps in defining the overall system
architecture.
• Implementation − With inputs from the system design, the system is first developed in
small programs called units, which are integrated in the next phase. Each unit is develop
and tested for its functionality, which is referred to as Unit Testing.
• Integration and Testing − All the units developed in the implementation phase are
integrated into a system after testing of each unit. Post integration the entire system is
tested for any faults and failures.
• Deployment of system − Once the functional and non-functional testing is done; the
product is deployed in the customer environment or released into the market.
• Maintenance − There are some issues which come up in the client environment. To fix
those issues, patches are released. Also to enhance the product some better versions
are released. Maintenance is done to deliver these changes in the customer
environment.
Advantages of Waterfall Model
Some of the major advantages of the Waterfall Model are as
follows −
• Prototyping
• Spiral Model
• Concurrent Development Model
Prototype Model
Requirement
Build prototype
analysis
Satisfied
Firm up the requirement
Basic Requirement Identification : This step involves understanding the very basics
product requirements especially in terms of user interface. The more intricate details of
the internal design and external aspects like performance and security can be ignored at
this stage.
Developing the initial Prototype : The initial Prototype is developed in this stage, where
the very basic requirements are showcased and user interfaces are provided. While, the
workarounds are used to give the same look and feel to the customer in the prototype
developed.
Review of the Prototype : The prototype developed is then presented to the customer
and the other important stakeholders in the project. The feedback is collected in an
organized manner and used for further enhancements in the product under development.
Revise and Enhance the Prototype : The feedback and the review comments are
discussed during this stage and some negotiations happen with the customer based on
factors like – time and budget constraints and technical feasibility of the actual
implementation. Prototypes can have horizontal or vertical dimensions.
Advantages of Prototype Model
Identification : This phase starts with gathering the business requirements in the baseline
spiral. In the subsequent spirals as the product matures, identification of system
requirements, subsystem requirements and unit requirements are all done in this phase.
At the end of the spiral, the product is deployed in the identified market.
Design : The Design phase starts with the conceptual design in the baseline spiral and
involves architectural design, logical design of modules, physical product design and the
final design in the subsequent spirals.
Construct or Build : The Construct phase refers to production of the actual software
product at every spiral. In the baseline spiral, when the product is just thought of and the
design is being developed a POC (Proof of Concept) is developed in this phase to get
customer feedback.
Evaluation and Risk Analysis : Risk Analysis includes identifying, estimating and
monitoring the technical feasibility and management risks, such as schedule slippage and
cost overrun. After testing the build, at the end of first iteration, the customer evaluates
the software and provides feedback.
Advantages of Spiral Model
Awa it ing
c ha nge s
Unde r re vie w
Unde r
re vis ion
Ba s e line d
Done
Concurrent Development Model
All activities exist concurrently but reside in different states.
For example, early in the project the communication activity
has completed its first iteration and exists in the awaiting
changes state.
The modeling activity which existed in the none state while
initial communication was completed now makes a transition
into underdevelopment state.
If, however, the customer indicates the changes in
requirements must be made, the modeling activity moves from
the under development state into the awaiting changes state.
The concurrent process model defines a series of events that
will trigger transitions from state to state for each of the
Software engineering activities, actions, or tasks.
Advantages of Concurrent Development
Model
Each iteration is considered as a short time "frame" in the Agile process model, which
typically lasts from one to four weeks. The division of the entire project into smaller
parts helps to minimize the project risk and to reduce the overall project delivery time
requirements. Each iteration involves a team working through a full software
development life cycle including planning, requirements analysis, design, coding, and
testing before a working product is demonstrated to the client.
Agile Process Models
Agile Process Models
1. 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.
2. 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.
3. 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.
4. Testing: In this phase, the Quality Assurance team examines the product's performance
and looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work environment.
6. Feedback: After releasing the product, the last step is feedback. In this, the team
receives feedback about the product and works through the feedback.
Agile Process Model Types
82
Extreme Programming (XP)
•XP Design
– Follows the KIS principle
– Encourage the use of CRC cards
– For difficult design problems, suggests the creation of
spike solutions — a design prototype
– Encourages refactoring — an iterative refinement of the
internal program design
•XP Coding
– Recommends the construction of a unit test for a store
before coding commences
– Encourages pair programming
•XP Testing
– All unit tests are executed daily
– Acceptance tests are defined by the customer and
executed to assess customer visible functionality
83
Extreme Programming (XP)
84
THANK YOU