SE Module1
SE Module1
SE Module1
Software
A collection of data or computer instructions that tell the computer how to work.
Nature of Software:
Nowadays, seven broad categories of computer software present continuing challenges for
software engineers .which is given below:
1. System Software:
System software is a collection of programs which are written to service other programs
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.
4. Embedded Software:
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.
Software Process
A software engineering process (also knows as software methodology) is the model selected
for managing the creation of software from customer initiation to the release of the finished
product.
In this phase, stakeholders communicate with customer & system users to gather the business
requirements like who will use the system? How user will interact with the system? What
Prepared.
ii. Design
This phase makes use of output of requirement gathering phase i.e requirement specification as
an input.
Data Flow Diagram, flowcharts etc. are included by design specification document.
iii. Implementation
Implementation phase of development process decomposes the system work into various
smaller parts called modules.
These modules are assigned to development team members and actual coding is started.
iv. Testing
Testing phase involves testing of actual code of system against requirements of user in order
Various testing strategies used are unit testing, system testing, integration testing etc.
v. Deployment
In this phase, the system is deployed at user’s site for their use.
In this phase customer uses the software and give feedback to development team for any
vi. Maintenance
Some additional functionality may need to add in the application as per user’s requirement.
The Software Engineering Institute (SEI) Capability Maturity Model (CMM) specifies an
increasing series of levels of a software development organization. The higher the level, the
better the software development process, hence reaching each level is an expensive and time-
consuming process.
Levels of CMM
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.
The name 'prescriptive' is given because the model prescribes a set of activities, actions,
tasks, quality assurance and change the mechanism for every project.
There are three types of prescriptive process models. They are:
The waterfall model is also called as 'Linear sequential model' or 'Classic life cycle
model'.
In this model, each phase is fully completed before the beginning of the next phase.
This model is used for the small projects.
In this model, feedback is taken after each phase to ensure that the project is on the right
path.
Testing part starts only after the development is complete.
NOTE: The description of the phases of the waterfall model is same as that of the process
model.
The incremental model combines the elements of waterfall model and they are applied in an
iterative fashion.
The first increment in this model is generally a core product.
Each increment builds the product and submits it to the customer for any suggested
modifications.
The next increment implements on the customer's suggestions and add additional
requirements in the previous increment.
This process is repeated until the product is finished.
For example, the word-processing software is developed using the incremental model.
3. V MODEL
The V-model is a type of SDLC model where process executes in a sequential manner in V-
shape. It is also known as Verification and Validation model.
It is based on the association of a testing phase for each corresponding development stage.
Development of each step directly associated with the testing phase.
The next phase starts only after completion of the previous phase i.e. for each development
activity, there is a testing activity corresponding to it.
Verification: It involves static analysis technique (review) done without executing code. It
is the process of evaluation of the product development phase to find whether specified
requirements meet.
So V-Model contains Verification phases on one side of the Validation phases on the other
side. Verification and Validation phases are joined by coding phase in V-shape. Thus it is
called V-Model.
Design Phase:
Requirement Analysis: This phase contains detailed communication with the customer
to understand their requirements and expectations. This stage is known as Requirement
Gathering.
System Design: This phase contains the system design and the complete hardware and
communication setup for developing product.
Architectural Design: System design is broken down further into modules taking up
different functionalities. The data transfer and communication between the internal
modules and with the outside world (other systems) is clearly understood.
Module Design: In this phase the system breaks dowm into small modules. The
detailed design of modules is specified, also known as Low-Level Design (LLD).
Testing Phases:
Unit Testing: Unit Test Plans are developed during module design phase. These Unit
Test Plans are executed to eliminate bugs at code or unit level.
Integration testing: After completion of unit testing Integration testing is performed.
In integration testing, the modules are integrated and the system is tested. Integration
testing is performed on the Architecture design phase. This test verifies the
communication of modules among themselves.
System Testing: System testing test the complete application with its functionality,
inter dependency, and communication.It tests the functional and non-functional
requirements of the developed application.
User Acceptance Testing (UAT): UAT is performed in a user environment that
resembles the production environment. UAT verifies that the delivered system meets
user’s requirement and system is ready for use in real world.
Advantages:
This is a highly disciplined model and Phases are completed one at a time.
V-Model is used for small projects where project requirements are clear.
Simple and easy to understand and use.
This model focuses on verification and validation activities early in the life cycle
thereby enhancing the probability of building an error-free and good quality product.
It enables project management to track progress accurately.
Disadvantages:
High risk and uncertainty.
It is not a good for complex and object-oriented projects.
It is not suitable for projects where requirements are not clear and contains high risk of
changing.
This model does not support iteration of phases.
It does not easily handle concurrent events.
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
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.
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.
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.
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.2. The Spiral model
Spiral model is a risk driven process model.
It is used for generating the software projects.
In spiral model, an alternate solution is provided if the risk is found in the risk analysis, then
alternate solutions are suggested and implemented.
It is a combination of prototype and sequential model or waterfall model.
In one iteration all activities are done, for large project's the output is small.
The framework activities of the spiral model are as shown in the following figure.
NOTE: The description of the phases of the spiral model is same as that of the process
model.
It needs better communication between the team members. This may not be achieved all the
time.
It requires to remember the status of the different activities.
Agile Model
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.
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.
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.
Agility Principles:
The Agile Alliance defines twelve lightness principles for those that need to attain agility:
1. Our highest priority is to satisfy the client through early and continuous delivery of
valuable computer software.
2. Welcome dynamical necessities, even late in development. Agile processes harness
modification for the customer’s competitive advantage.
3. Deliver operating computer software often, from a pair of weeks to a couple of months,
with a preference to the shorter timescale.
4. Business individuals and developers should work along daily throughout the project.
5. The build comes around actuated people. offer them the setting and support they have,
and trust them to urge the task done.
6. the foremost economical and effective methodology of convincing info to and among a
development team is face-to-face speech.
7. working computer software is the primary live of progress.
8. Agile processes promote property development. The sponsors, developers, and users got
to be able to maintain a relentless pace indefinitely.
9. Continuous attention to technical excellence and smart style enhances nimbleness.
10. Simplicity—the art of maximizing the number of work not done—is essential.
11. the most effective architectures, necessities, and styles emerge from self– organizing
groups.
12. At regular intervals, the team reflects on a way to become simpler, then tunes and
adjusts its behavior consequently.
Scrum
SCRUM is an agile development process focused primarily on ways to manage tasks in team-
based development conditions.
Scrum is the type of Agile framework. It is a framework within which people can address
complex adaptive problem while productivity and creativity of delivering product is at
highest possible values. Scrum uses Iterative process.
o Scrum Master: The scrum can set up the master team, arrange the meeting and
remove obstacles for the process
o Product owner: The product owner makes the product backlog, prioritizes the delay
and is responsible for the distribution of functionality on each repetition.
o Scrum Team: The team manages its work and organizes the work to complete the
sprint or cycle.
Lifecycle of Scrum:
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 then it goes to the Release stage.
Sprint Review:
If the product still have some non-achievable features then it will be checked in this stage
and then the product is 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.
eXtreme Programming(XP)
This type of methodology is used when customers are constantly changing demands or
requirements, or when they are not sure about the system's performance.
XP is a lightweight, efficient, low-risk, flexible, predictable, scientific, and fun way to develop
a software.
eXtreme Programming (XP) was conceived and developed to address the specific needs of
software development by small teams in the face of vague and changing requirements.
Extreme programming (XP) is one of the most important software development framework
of Agile models. It is used to improve software quality and responsive to customer
requirements.
The extreme programming model recommends taking the best practices that have worked
well in the past in program development projects to extreme levels.
Communication
Communication plays a major role in the success of a project. Problems with projects often
arise due to lack of communication. Many circumstances may lead to the breakdown in
communication. Some of the common problems are −
A developer may not tell someone else about a critical change in the design.
A developer may not ask the customer the right questions, and so a critical domain
decision is blown.
A manager may not ask a developer the right question, and project progress is
misreported.
A developer may ignore something important conveyed by the customer.
Extreme Programming emphasizes continuous and constant communication among the team
members, managers and the customer. The Extreme Programming practices, such as unit
testing, pair programming, simple designs, common metaphors, collective ownership and
customer feedback focus on the value of communication.
Simplicity
Extreme Programming believes in ‘it is better to do a simple thing today and pay a little more
tomorrow to change it’ than ‘to do a more complicated thing today that may never be used
anyway’.
Do what is needed and asked for, but no more.
o ''Do the simplest thing that could possibly work'' The DTSTTCPW principle.
o Implement a new capability in the simplest possible way. Also known as the
KISS principle ‘Keep It Simple, Stupid!’.
o A coach may say DTSTTCPW when he sees an Extreme Programming
developer doing something needlessly complicated.
o Refactor the system to be the simplest possible code with the current feature
set. This will maximize the value created for the investment made till date.
Take small simple steps to your goal and mitigate failures as they happen.
Create something that you are proud of and maintain it for a long term for reasonable
costs.
Never implement a feature you do not need now i.e. the ‘You Aren’t Going to Need It’
(YAGNI) principle.
Communication and Simplicity support each other.
The more you communicate the clearer you can see exactly what needs to be done, and you
gain more confidence about what really need not be done.
The simpler your system is, the less you have to communicate about the fewer developers that
you require. This leads to better communication.
Feedback
Every iteration commitment is taken seriously by delivering a working software. The software
is delivered early to the customer and a feedback is taken so that necessary changes can be
made if needed. Concrete feedback about the current state of the system is priceless. The value
of the feedback is a continuously running system that delivers information about itself in a
reliable way.
In Extreme Programming, feedback is ensured at all levels at different time scales −
Customers tell the developers what features they are interested in so that the developers
can focus only on those features.
Unit tests tell the developers the status of the system.
The system and the code provides feedback on the state of development to the
managers, stakeholders and the customers.
Frequent releases enable the customer to perform acceptance tests and provide
feedback and developers to work based on that feedback.
When the customers write new features/user stories, the developers estimate the time
required to deliver the changes, to set the expectations with the customer and
managers.
Thus, in Extreme Programming the feedback −
Works as a catalyst for change
Indicates progress
Gives confidence to the developers that they are on the right track
Courage
Extreme Programming provides courage to the developers in the following way −
To focus on only what is required
To communicate and accept feedback
To tell the truth about progress and estimates
To refactor the code
To adapt to changes whenever they happen
To throw the code away (prototypes)
This is possible as no one is working alone and the coach guides the team continuously.
Respect
Respect is a deep value, one that lies below the surface of the other four values. In Extreme
Programming,
Everyone respects each other as a valued team member.
Everyone contributes value such as enthusiasm.
Developers respect the expertise of the customers and vice versa.
Management respects the right of the developers to accept the responsibility and
receive authority over their own work.
Combined with communication, simplicity, and concrete feedback, courage becomes
extremely valuable.
Communication supports courage because it opens the possibility for more high-risk,
high-reward experiments.
Simplicity supports courage because you can afford to be much more courageous with
a simple system. You are much less likely to break it unknowingly.
Courage supports simplicity because as soon as you see the possibility of simplifying
the system you try it.
Concrete feedback supports courage because you feel much safer trying radical
modifications to the code, if you can see the tests turn green at the end. If any of the
tests do not turn green, you know that you can throw the code away.
Applications of Extreme Programming (XP): Some of the projects that are suitable to
develop using XP model are given below:
Small projects: XP model is very useful in small projects consisting of small teams as
face to face meeting is easier to achieve.
Projects involving new technology or Research projects: This type of projects face
changing of requirements rapidly and technical problems. So XP model is used to
complete this type of projects.
What is Kanban?
Kanban is a very popular framework for development in the agile software development
methodology. It provides a transparent way of visualizing the tasks and work capacity of a
team. It mainly uses physical and digital boards to allow the team members to visualize the
current state of the project they are working on.
Kanban can be used in any domain, and it can be used very effectively in software
development. Kanban project management helps in improving the efficiency of the
team.
It is a pull-based system. Tasks are being pulled as soon as an individual is free.
Kanban should be used when you want to release your work at any time. It requires
git branching, but it is doable.
Kanban should be used when you want to change the priorities on the fly. For that, all
you need to do is to put this story on the top of the to-do queue.
It should be used when you want to visualize your work, and you want to see the
progress of your tasks visually.
Kanban Cards
The Kanban system recommends visualization of work. It suggests the use of the physical
and the digital board.
The Kanban cards are essential pieces on the Kanban board as it represent the work that the
team is working on. These cards will have
1. Priority
2. Owner
3. Type
4. Due date
A column in Kanban board represents the work stage, and you can place a WIP (Work in
Progress) limit on the column. The WIP limit means the maximum number of cards that
can stay on that column.
Since Kanban project management uses a pull-based system, as and when a developer is free,
he/she can pull a card from the to-do column to the dev column.
Kanban Board
Kanban Board is an agile project management tool that helps implement Kanaban to
manage projects for personal and business purposes. It is a physical or digital (JIRA) board
designed to help teams visualize their work at different stages and processes. It also helps
represent the stages of work with columns using cards.
1. To-do,
2. Dev
3. Testing
4. Done.
1. Start with what you have now: Kanban system suggests working incrementally and
start with what you have currently. Since one of its practice is to improve
continuously, you must improve the system gradually.
3. Respect the Current Process, Roles & Responsibilities: Once again, start with what
you have now and change the process, role, and responsibilities in an incremental
manner.
4. Encourage Acts of Leadership at All Levels: Every individual can act as a leader
and provide ideas to improve the efficiency of the overall Kanban system. You should
not think that this is a management level activity, and even the youngest member of
the team can act as a leader.