Software Engineering Unit I
Software Engineering Unit I
UNIT-I INTRODUCTION
UNIT-I INTRODUCTION
UNIT-I INTRODUCTION
UNIT-I INTRODUCTION
● Initial Focus on Hardware: The earliest computers were custom-built machines, and
much of the effort was focused on hardware.
● Ad Hoc Software Development: Software development was done in an ad hoc
manner, with little formal methodology.
7. Modern Trends
8. Professionalization
The evolution of software engineering as a discipline reflects the ongoing need to manage the
complexity, quality, and scale of software systems in a systematic and professional manner.
|-----------------------------------------------|
| 1970s | 1980s | 1990s | 2000s |
|-------------|-----------|-----------|---------|
| JSP | Spiral | UP | Agile |
| SADT | RAD | RUP | |
| Waterfall | | | |
|-----------------------------------------------|
Jackson Structured Programming (JSP) is a method for program design and modeling “in the
small”. It begins with considerations about what is known and develops a program design
that becomes more complete as the model is put through continues iterations. It emerged in
the 1970’s as a design method that concentrated on the structure of data using data-structure
methods. Because it builds the program design from an incomplete model. JSP structures the
programs and data in terms of sequences, iterations and selection. The method begins by
describing a program’s inputs in terms of the four fundamental component types
(fundamental operations, sequences, iterations, selections) it then goes on to describe the
program’s outputs in the same way. JSP uses a diagramming notation to describe the
structure of inputs, outputs and programs with diagram elements for each of the fundamental
component types.
A sequence is a composite component that has two or more parts occurring once each, in a
specific order. Take the following diagram as an example
UNIT-I INTRODUCTION
End Sport
Begin Cricket
Do
Batting
; Do
Bowlin
g;
End Cricket
A selection is similar to a sequence, but with a circle drawn in the top right hand
corner of each optional operation. A selection is a composite component that consists of 2 or
more parts, only one of which is selected once. In the example, operation A consists of one
and only one operations B, C or D.
IDENTIFY CHANGE
ABILITY NEEDS
UNIT-I INTRODUCTION
MODEL THE
SYSTEM
DETERMINE THE
BEST CONFIGURE
RECONFIGURE
THE SYSTEM
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 approach was first SDLC Model to be used widely in Software Engineering to
ensure success of the project. In "The Waterfall" approach, the whole process of software
development is divided into separate phases. In this Waterfall model, typically, the outcome
of one phase acts as the input for the next phase sequentially.
The following illustration is a representation of the different phases of the Waterfall Model.
UNIT-I INTRODUCTION
● System Design
● Implementation
● Deployment of system
● Maintenance
The Spiral Model is a combination of the waterfall model and the iterative model. It provides
support for Risk Handling
UNIT-I INTRODUCTION
Each phase of the model is categorised into four quadrants. Let’s dive deeper to understand
the functions of these four quadrants in-depth-
The first phase determines the project’s scope and creates a plan for the subsequent iteration
of the spiral. It involves tasks like gathering requirements and analysis. Depending on these
requirements, objectives are stated, and various alternate solutions are recommended.
This phase analyses all the recommended solutions. Moreover, any potential risk is
recognised, analysed, and resolved. An alternative solution is discussed and executed based
on the risks that arise.
It also involves prototype creation. In addition to identifying potential risks, it also arranges
and finalises the risk mitigation strategy.
This phase is the core of the spiral model process. This is because it implements various
essential features. All the executed features are verified with exhaustive testing. Once the
product development completes, the phase tests, codes, and deploys software on the client
side.
This phase evaluates the software to learn if it fulfils the customer’s requirements and
whether it is of high quality or not. It also involves recognising risks. The customer evaluates
the developed software in this phase. Based on the evaluation outcomes, the subsequent
iteration of the spiral starts with a new planning phase.
is based on prototyping and iterative development with no specific planning involved. The
process of writing the software itself involves the planning required for developing the
product.
Business Modelling
The business model for the product under development is designed in terms of flow of
information and the distribution of information between various business channels. A
complete business analysis is performed to find the vital information for business, how it can
be obtained, how and when is the information processed and what are the factors driving
successful flow of information.
Data Modelling
The information gathered in the Business Modelling phase is reviewed and analyzed to form
sets of data objects vital for the business. The attributes of all data sets is identified and
defined. The relation between these data objects are established and defined in detail in
relevance to the business model.
Process Modelling
The data object sets defined in the Data Modelling phase are converted to establish the
business information flow needed to achieve specific business objectives as per the business
model. The process model for any changes or enhancements to the data object sets is defined
in this phase. Process descriptions for adding, deleting, retrieving or modifying a data object
are given.
Application Generation
The actual system is built and coding is done by using automation tools to convert process
and data models into actual prototypes.
The overall testing time is reduced in the RAD model as the prototypes are independently
tested during every iteration. However, the data flow and the interfaces between all the
components need to be thoroughly tested with complete test coverage. Since most of the
programming components have already been tested, it reduces the risk of any major issues.
UNIT-I INTRODUCTION
is a software development framework used for Object oriented model. The framework is also
known as Rational Unified Process (RUP) and the Open Unified Process (Open UP). Some
of the key features of this process include:
4. Transition -delivering the product to users and ensuring it meets their needs
Inception –
Communication and planning are the main ones.
Identifies the scope of the project using a use-case model allowing managers to estimate
costs and time required.
Customers’ requirements are identified and then it becomes easy to make a plan for the
project.
The project plan, Project goal, risks, use-case model, and Project description, are made.
The project is checked against the milestone criteria and if it couldn’t pass these criteria
then the project can be either cancelled or redesigned.
Elaboration –
Planning and modelling are the main ones.
A detailed evaluation and development plan is carried out and diminishes the risks.
Revise or redefine the use-case model (approx. 80%), business case, and risks.
Again, checked against milestone criteria and if it couldn’t pass these criteria then again
project can be cancelled or redesigned.
Executable architecture baseline.
Construction –
The project is developed and completed.
System or source code is created and then testing is done.
Coding takes place.
Transition –
The final project is released to the public.
UNIT-I INTRODUCTION
The Agile model in the context of system design is a flexible and adaptive approach to
designing systems that can respond to changing requirements and customer needs. The key
objective is to create a functioning system as soon as possible and to refine it depending on
input from stakeholders. The agile model also promotes customer and developer
involvement, which helps guarantee that the system being created satisfies end-user
requirements.
● The agile model emphasizes iterative and incremental development, customer and
developer communication, and flexible response to evolving needs.
● The Agile model typically consists of several iterations or sprints, each of which is
focused on delivering a specific set of features or functionality.
● The stakeholders evaluate the work completed at the conclusion of each sprint and offer
feedback, which is then utilized to plan and prioritize the following batch of tasks.
Planning:
● Goal: Plan the first sprint, define user stories, and prioritize them. The team sets a
goal for the sprint and identifies tasks to complete.
● Activities:
UNIT-I INTRODUCTION
3. Design:
● Goal: Create a design or prototype based on user stories. The design is often minimal
and focuses on getting feedback quickly.
● Activities:
o Collaborative design sessions
o Creating wireframes or prototypes
o Refining requirements based on design feedback
4. Development:
● Goal: Build the functionality according to the design and requirements. Development
is done in small, iterative cycles.
● Activities:
o Coding
o Unit testing
o Continuous integration
5. Testing:
● Goal: Ensure the developed features meet the acceptance criteria. Testing is
integrated throughout the sprint to catch issues early.
● Activities:
o Automated and manual testing
o Bug tracking and resolution
o User acceptance testing (UAT)
6. Review/Demo:
● Goal: Present the completed work to stakeholders. The team demonstrates the
functionality and gathers feedback.
● Activities:
o Sprint review meetings
o Product demonstrations
o Feedback collection
7. Release (optional):
● Goal: Deploy the completed increment to production. This step may occur after
several sprints, depending on the project's release strategy.
UNIT-I INTRODUCTION
● Activities:
o Final testing and bug fixes
o Deployment to production
o Release notes and documentation
8. Maintenance (optional):
● Goal: Provide ongoing support, fix any post-release bugs, and plan for future
enhancements.
● Activities:
o Bug fixing
o Minor updates
o Planning for next iterations or phase
will be transformed into code, scripting a web-based system, and choosing among several
alternative solutions.
● Testing: The XP model gives high importance to testing and considers it to be the
primary factor in developing fault-free software.
● Listening: The developers need to carefully listen to the customers if they have to
develop good quality software. Sometimes programmers may not have the depth
knowledge of the system to be developed. So, the programmers should understand
properly the functionality of the system and they have to listen to the customers.
● Designing: Without a proper design, a system implementation becomes too complex, and
very difficult to understand the solution, thus making maintenance expensive. A good
design results elimination of complex dependencies within a system. So, effective use of
suitable design is emphasized.
● Feedback: One of the most important aspects of the XP model is to gain feedback to
understand the exact customer needs. Frequent contact with the customer makes the
development effective.
● Simplicity: The main principle of the XP model is to develop a simple system that will
work efficiently in the present time, rather than trying to build something that would take
time and may never be used. It focuses on some specific features that are immediately
needed, rather than engaging time and effort on speculations of future requirements.
● Pair Programming: XP encourages pair programming where two developers work
together at the same workstation. This approach helps in knowledge sharing, reduces
errors, and improves code quality.
● Continuous Integration: In XP, developers integrate their code into a shared repository
several times a day. This helps to detect and resolve integration issues early on in the
development process.
● Refactoring: XP encourages refactoring, which is the process of restructuring existing
code to make it more efficient and maintainable. Refactoring helps to keep the codebase
clean, organized, and easy to understand.
● Collective Code Ownership: In XP, there is no individual ownership of code. Instead,
the entire team is responsible for the codebase. This approach ensures that all team
members have a sense of ownership and responsibility towards the code.
● Planning Game: XP follows a planning game, where the customer and the development
team collaborate to prioritize and plan development tasks. This approach helps to ensure
that the team is working on the most important features and delivers value to the
customer.
● On-site Customer: XP requires an on-site customer who works closely with the
development team throughout the project. This approach helps to ensure that the
customer’s needs are understood and met, and also facilitates communication and
feedback.
UNIT-I INTRODUCTION
1. Planning: The first stage of Extreme Programming is planning. During this phase, clients
define their needs in concise descriptions known as user stories. The team calculates the
effort required for each story and schedules releases according to priority and effort.
2. Design: The team creates only the essential design needed for current user stories, using
a common analogy or story to help everyone understand the overall system architecture
and keep the design straightforward and clear.
3. Coding: Extreme Programming (XP) promotes pair programming i.e. wo developers
work together at one workstation, enhancing code quality and knowledge sharing. They
write tests before coding to ensure functionality from the start (TDD), and frequently
integrate their code into a shared repository with automated tests to catch issues early.
4. Testing: Extreme Programming (XP) gives more importance to testing that consist of
both unit tests and acceptance test. Unit tests, which are automated, check if specific
features work correctly. Acceptance tests, conducted by customers, ensure that the overall
system meets initial requirements. This continuous testing ensures the software’s quality
and alignment with customer needs.
5. Listening: In the listening phase regular feedback from customers to ensure the product
meets their needs and to adapt to any changes.
● Scrum allows us to develop products of the highest value while making sure that we
maintain creativity and productivity.
● The iterative and incremental approach used in scrum allows the teams to adapt to the
changing requirements.
Silent features of Scrum
● Scrum is a light-weighted framework
● Sprint: A Sprint is a time box of one month or less. A new Sprint starts immediately
after the completion of the previous Sprint. Release: When the product is completed, it
goes to the Release stage.
● Sprint Review: If the product still has some non-achievable features, it will be checked
in this stage and then passed to the Sprint Retrospective stage.
● Sprint Retrospective: In this stage quality or status of the product is checked. Product
Backlog: According to the prioritize features the product is organized.
● Sprint Backlog: Sprint Backlog is divided into two parts Product assigned features to
sprint and Sprint planning meeting.
Advantage of Scrum framework
● Scrum framework is fast moving and money efficient.
● Scrum framework works by dividing the large product into small sub-products. It’s like a
divide and conquer strategy
● In Scrum customer satisfaction is very important.
● As Scrum framework rely on constant feedback therefore the quality of product increases
in less amount of time
Disadvantage of Scrum framework
● Scrum framework do not allow changes into their sprint.
● Scrum framework is not fully described model. It can be difficult for the Scrum to plan,
structure and organize a project that lacks a clear definition.
● The daily Scrum meetings and frequent reviews require substantial resources.
Roles
● Product Owner: Responsible for maximizing the value of the product by managing the
product backlog, prioritizing features, and ensuring the team delivers value to the
customer.
● Scrum Master: Facilitates the Scrum process, removes impediments, and helps the team
adhere to Scrum practices. Acts as a coach for the team.
● Development Team: A cross-functional group responsible for delivering potentially
shippable increments of the product at the end of each sprint.
● Events
● Sprint: A time-boxed iteration (usually 1-4 weeks) during which the team works to
complete a set of selected product backlog items.
● Sprint Planning: A meeting where the team selects product backlog items to work on
during the sprint and defines a sprint goal.
● Daily Scrum: A short daily meeting (15 minutes) where the team discusses progress,
plans for the day, and identifies any impediments.
● Sprint Review: A meeting at the end of the sprint where the team demonstrates the
completed work to stakeholders and receives feedback.
● Sprint Retrospective: A meeting held after the Sprint Review where the team reflects on
the sprint and identifies ways to improve processes.
● Product Backlog: A prioritized list of features, enhancements, bug fixes, and
requirements maintained by the Product Owner.
● Sprint Backlog: A list of tasks and items selected from the product backlog for the
current sprint, along with a plan for delivering them.
● Increment: The sum of all completed product backlog items during a sprint, which must
be in a usable and potentially shippable state.
FDD stands for Feature-Driven Development. It is an agile iterative and incremental model
that focuses on progressing the features of the developing software. The main motive of
feature-driven development is to provide timely updated and working software to the client.
In FDD, reporting and progress tracking is necessary at all levels.
UNIT-I INTRODUCTION
Processes
Characteristics of FDD
● Short iterative: FDD lifecycle works in simple and short iterations to efficiently finish
the work on time and gives good pace for large projects.
● Customer focused: This agile practice is totally based on inspection of each feature by
client and then pushed to main build code.
● Structured and feature focused: Initial activities in lifecycle builds the domain model
and features list in the beginning of timeline and more than 70% of efforts are given to
last 2 activities.
● Frequent releases: Feature-driven development provides continuous releases of features
in the software and retaining continuous success of the project.
Advantages of FDD
● Reporting at all levels leads to easier progress tracking.
● FDD provides continuous success for larger size of teams and projects.
● Reduction in risks is observed as whole model and design is build in smaller segments.
UNIT-I INTRODUCTION
● FDD provides greater accuracy in cost estimation of the project due to feature
segmentation.
Disadvantages of FDD
● This agile practice is not good for smaller projects.
User Stories
User stories are short, simple descriptions of a feature or requirement from the end-user's
perspective. They typically follow the format: "As a [user], I want [goal] so that [benefit]."
User stories are placed in the product backlog and prioritized by the Product Owner.
Scenarios
Scenarios provide more detailed descriptions of how users will interact with the system in
specific situations. They often include context, steps, and expected outcomes. Scenarios help
to clarify user stories and guide the development process.
Example of a User Story and Scenario
User Story:
● "As a registered user, I want to reset my password so that I can regain access to my
account if I forget it."
Scenario:
● Context: The user is on the login page and has forgotten their password.
● Steps:
1. The user clicks on the "Forgot Password" link.
2. The system prompts the user to enter their registered email address.
3. The user enters their email address and clicks "Submit."
4. The system sends a password reset link to the user's email.
5. The user receives the email and clicks on the reset link.
6. The system prompts the user to enter a new password and confirm it.
7. The user enters and confirms the new password and clicks "Submit."
● Expected Outcome: The system successfully updates the user's password, and the
user can log in with the new password.
Scrum, FDD, user stories, and scenarios are fundamental components of the Agile process
model. Scrum focuses on iterative development and team collaboration, while FDD
emphasizes feature-centric development. User stories and scenarios help capture
requirements and guide the development process, ensuring that the final product meets user
needs and expectations.
UNIT-I INTRODUCTION