Unit-1 (Intro To SE)
Unit-1 (Intro To SE)
Unit-1 (Intro To SE)
What is Engineering?
⮚ It is all about developing an application or a product in a well defined format structures using scientific
principles of logics.
⮚ Engineering is the application of scientific and practical knowledge to invent, design, build, maintain,
and improve frameworks, processes, etc.
What is a Software?
� The software is a collection of integrated programs.
� Software is a set of instructions, data or programs used to operate computers and execute specific tasks.
� Software is a generic term used to refer to applications, scripts and programs that run on a device.
� An example of software is Excel or Windows or iTunes.
1) Operational: -This tells how good a software works on operations like budget , usability, efficiency,
correctness ,functionality , dependability , security and safety.
2) Transitional: - Transitional is important when an application is shifted from one platform to another.
So, portability, reusability and adaptability come in this area.
3) Maintenance: - This specifies how good a software works in the changing environment. Modularity,
maintainability, flexibility and scalability come in maintenance part.
It is difficult to modify It is easy to modify the process even after the development.
once it is manufactured.
Software Crisis
Software Crisis is a term used in computer science for the difficulty of writing useful and
efficient computer programs in the required time. The software crisis was due to using the same
workforce, same methods, same tools even though rapidly increasing in software demand, the
complexity of software, and software challenges. With the increase in the complexity of
software, many software problems arise because existing methods were insufficient. If we will
use the same workforce, same methods, and same tools after the fast increase in software
demand, software complexity, and software challenges, then there arise some problems like
software budget problems, software efficiency problems, software quality problems, software
managing and delivering problem, etc. This condition is called a software crisis.
Causes of Software Crisis:
● The cost of owning and maintaining software was as expensive as developing
the software
● At that time Projects were running over-time
● At that time Software was very inefficient
● The quality of the software was low quality
● Software often did not meet user requirements
● The average software project overshoots its schedule by half
● At that time Software was never delivered
● Non-optimal resource utilization.
● Difficult to alter, debug, and enhance.
● The software complexity is harder to change.
Solution of Software Crisis:
There is no single solution to the crisis. One possible solution to a software crisis
is Software Engineering because software engineering is a systematic, disciplined, and
quantifiable approach. For preventing software crises, there are some guidelines:
● Reduction in software over budget.
● The quality of software must be high.
● Less time is needed for a software project.
● Experienced and skilled people working over the software project.
● Software must be delivered.
● Software must meet user requirements.
Characteristic of software:
There is some characteristic of software which is given below:
1. Functionality
2. Reliability
3. Usability
4. Efficiency
5. Maintainability
6. Portability
Changing 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. 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 are moving away from the
conventional numerical algorithms. Computer-aided design, system
simulation, and other interactive applications have begun to take a 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. WebApplication:
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 nonnumerical 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.
Software Myths :
What is meant by Myth?
⮚ The meaning of myth is fable (wrong) stories or wrong beliefs.
⮚ In a relation to a computer software myth is nothing but information,
misunderstanding or confusion in software development field.
⮚ Many Software problems arises due to myths that are formed during the
initial stage of software development.
Definition of Software Myths :
The development of software requires dedication and understanding on the developers’ part.
Many software problems arise due to myths that are formed during the initial stages of
software development. Unlike ancient folklore that often provides valuable lessons, software
myths propagate false beliefs and confusion in the minds of management, users and
developers.Managers, who own software development responsibility, are often under strain
and pressure to maintain a software budget, time constraints, improved quality, and many
other considerations.
There are three types of Software Myths :
1.Management Myths
2.Customer Myths
3.Practitioner’s Myths
Management Myths: Managers with software responsibility, like mangers in most disciplines,
are often under pressure to maintain budgets, keep schedules from slipping, and improve quality.
Myth1: Manager think “when need, we can add more programmer for faster development”.
Reality:
⮚ Training must be given to new comers.
⮚ Spend time for training people.
⮚ Cannot be developed fast.
Myth2: We already have a book that’s full of standards and procedures for building software. It
will provide the developer everything that he needs in the development process.
Reality:
⮚ The book Exits but question arise.
⮚ Are software developer aware about this book?
⮚ Does it contain all modern practices?
⮚ Does it focus quality?
⮚ Is it actually used by developer?
Myth3: Manager think “there is no need to change approach to software development. We can
develop same kind of software that we develop 10 year ago.
Reality :
⮚ Quality of software need to improve according to customer demands.
⮚ Customer demands change time to time.
Customer Myth: 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.
Myth1: Only the general statement is sufficient and no need to mention detail project
requirements.
Reality:
⮚ Other details are also essential.
⮚ Customer must provides design details, validation criteria.
⮚ During software development customer and developer communication is essential.
Myth2: Software requirements continually change, but change can be easily accommodated
because software is flexible.
Reality:
⮚ When requirements changes are requested early (before design or code has been started),
the cost impact is relatively small.
⮚ Otherwise cost is so high.
3.Practitioner’s Myths / Developers Myths : Software practitioners are the ones who are
involved in the development and maintenance of the software. Earlier developing software is
considered as an art. So, the software practitioners have developed some myths regarding the
software.
Myth 1: Practitioner think “Once we write the program and get it to work, our job is done”.
Reality: Almost 60% to 80% Percent work is required after delivering the project to customer
Myth 3: The only deliverable work product for a successful project is the working program.
Reality :
⮚ A working program is only one part of a software configuration that includes many
elements.
⮚ A variety of work products (e.g, models, documents, plans) provide a foundation for
successful engineering and
⮚ More important, guidance for software support.
Software Development Life Cycle (SDLC) :
Software Development Life Cycle (SDLC) is a process used by the software industry to
design, develop and test high quality softwares. The SDLC aims to produce a high-quality
software that meets or exceeds customer expectations, reaches completion within times and cost
estimates.
● SDLC is the acronym of Software Development Life Cycle.
● It is also called as Software Development Process.
● SDLC is a framework defining tasks performed at each step in the software
development process.
What is SDLC?
SDLC is a process followed for a software project, within a software organization. It consists of
a detailed plan describing how to develop, maintain, replace and alter or enhance specific
software. The life cycle defines a methodology for improving the quality of software and the
overall development process.
The following figure is a graphical representation of the various stages of a typical SDLC.
Incremental Model :
Incremental Model is a process of software development where requirements divided into
multiple standalone modules of the software development cycle. In this model, each module goes
through the requirements, design, implementation and testing phases. Every subsequent release
of the module adds function to the previous release. The process continues until the complete
system achieved.
Agile 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.
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.
Phase
s of Agile Model:
Following are the phases in the Agile model are as follows:
1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback
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 t
000he product, the last step is feedback. In this, the team receives feedback about the product and works through the feedback.
When to use the Agile Model?
o When frequent changes are required.
o When a highly qualified and experienced team is available.
o When a customer is ready to have a meeting with a software team all the time.
o When project size is small.
� Frequent Delivery
� Face-to-Face Communication with clients.
� Efficient design and fulfils the business requirement.
� Anytime changes are acceptable.
� It reduces total development time.
Disadvantages of Agile Model : Due to the shortage of formal documents, it creates confusion
and crucial decisions taken throughout variousphases can be misinterpreted at any time by
different team members.2.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.
Scrum
SCRUM is an agile development process focused primarily on ways to manage tasks in team-
based development conditions.
There are three roles in it, and their responsibilities are:
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.
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.
Crystal:
There are three concepts of this method-
1. Chartering: Multi activities are involved in this phase such as making a development
team, performing feasibility analysis, developing plans, etc.
2. Cyclic delivery: under this, two more cycles consist, these are: