SOFTWARE Eng
SOFTWARE Eng
Program :
1. A computer program is a set of instructions that is used as a process of creating a software
program by using programming language
2. Programs do not have further categorization.
3. A program does not have a user interface
4. Programs are smaller in size, and their size exists between Kilobyte (Kb) to a megabyte (Mb).
5. A program takes less time to be developed.
6. A program includes fewer features and limited functionalities
7. The development approach of a program is unorganized, unplanned, and unprocedural.
8. There is a lack of documentation in the program.
9. Examples of the program are - video games, malware, and many more.
SOTWARE:
1. Software is a set of programs that enables the hardware to perform a specific task.
2. The software can be of three types: system software, application software, and programming
software.
3. Every software has a user interface that may be in graphical format or in the form of a
command prompt.
4. Every software has a user interface that may be in graphical format or in the form of a
command prompt.
5. software requires more time to be developed.
6. It has more features and functionalities
7. The development approach of software is well planned, organized, and systematic
8. Softwares are properly documented.
9. Examples of software are - Adobe Photoshop, Adobe Reader, Google Chrome, and many
more.
Software characteristics
Software is defined as collection of data, programs, procedures, associated documentaion
and rules. which does not have any mass, volume and colour. software does not wear out,get
tired or degrade over a long period of time.
• Functionality:
It refers to the suitability, accuracy, interoperability, compliance, security of software
which is measured as degree of performance of the software against its intended
purpose.
• Reliability:
Refers to the recoverability, fault tolerance, maturity of software, which is basically
a capability of the software that provide required functionality under the given
situations.
• Efficiency:
It is the ability of the software to use resources of system in the most effective and
efficient manner. Software must make effective use of syetm storage and
execute command as per required timing.
• Usability:
It is the extent to which the software can be utilized with ease and the amount of
effort or time required to learn how to use the software.
• Maintainability:
It is the ease with which the modifications can be made in a software to extend or
enhance its functionality, improve its performance, or resolve bugs.
• Portability:
It is the ease with which software developers can relaunch software from one platform
to another, without (or with minimum) changes. In simple terms, software must be
made in way that it should be platform independent.
a) Change in requirement with time: With the passes of time, the organization’s needs and
modus Operandi of working could substantially be changed so in this frequently changing
time the tools(software) that they are using need to change for maximizing the performance.
b) Environment change: As the working environment changes the things(tools) that enable
us to work in that environment also changes proportionally same happens in the software
world as the working environment changes then, the organizations need reintroduction of old
software with updated features and functionality to adapt the new environment.
c) Errors and bugs: As the age of the deployed software within an organization increases
their preciseness or impeccability decrease and the efficiency to bear the increasing
complexity workload also continually degrades. So, in that case, it becomes necessary to
avoid use of obsolete and aged software. All such obsolete Softwares need to undergo the
evolution process in order to become robust as per the workload complexity of the current
environment.
d) Security risks: Using outdated software within an organization may lead you to at the
verge of various software-based cyberattacks and could expose your confidential data
illegally associated with the software that is in use. So, it becomes necessary to avoid such
security breaches through regular assessment of the security patches/modules are used within
the software. If the software isn’t robust enough to bear the current occurring Cyber attacks
so it must be changed (updated).
e) For having new functionality and features: In order to increase the performance and fast
data processing and other functionalities, an organization need to continuously evolute the
software throughout its life cycle so that stakeholders & clients of the product could work
efficiently.
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
• 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:
Software engineering is the establishment and use of sound engineering principles in order to
obtain economically software that is reliable and work efficiently on real machines.
SOFTWARE PRODUCT
Software Products are nothing but software systems delivered to the customer with the
documentation that describes how to install and use the system. In certain cases, software
products may be part of system products where hardware, as well as software, is delivered to
a customer. Software products are produced with the help of the software process. The
software process is a way in which we produce software.
1. Generic products:
Generic products are stand-alone systems that are developed by a production unit and
sold on the open market to any customer who is able to buy them.
2. Customized Products:
Customized products are the systems that are commissioned by a particular customer.
Some contractor develops the software for that customer.
• Efficiency:
The software should not make wasteful use of system resources such as memory and
processor cycles.
• Maintainability:
It should be possible to evolve the software to meet the changing requirements of
customers.
• Dependability:
It is the flexibility of the software that ought to not cause any physical or economic
injury within the event of system failure. It includes a range of characteristics such as
reliability, security, and safety.
• In time:
Software should be developed well in time.
• Within Budget:
The software development costs should not overrun and it should be within the
budgetary limit.
• Functionality:
The software system should exhibit the proper functionality, i.e. it should perform all
the functions it is supposed to perform.
• Adaptability:
The software system should have the ability to get adapted to a reasonable extent with
the changing requirements.
Attributes
1.WATERFALL MODEL:
APPLICATIONS:
APPLICATIONS
3.SPIRAL MODEL:
The spiral model, initially proposed by Boehm, is an evolutionary
software process model that couples the iterative feature of
prototyping with the controlled and systematic aspects of the linear
sequential model. It implements the potential for rapid development
of new versions of the software. Using the spiral model, the software
is developed in a series of incremental releases. During the early
iterations, the additional release may be a paper model or prototype.
During later iterations, more and more complete versions of the
engineered system are produced.
Each cycle in the spiral is divided into four parts:
USES:
5.Prototyping:
It is defined as the process of developing a working replication of a
product or system that has to be engineered. It offers a small-scale
facsimile of the end product and is used for obtaining customer
feedback. The Prototyping concept is described below:
The Prototyping Model is one of the most popularly used Software
Development Life Cycle Models (SDLC models). This model is used when the
customers do not know the exact project requirements beforehand. In this
model, a prototype of the end product is first developed, tested, and refined
as per customer feedback repeatedly till a final acceptable prototype is
achieved which forms the basis for developing the final product. In this
process model, the system is partially implemented before or during the
analysis phase thereby giving the customers an opportunity to see the
product early in the life cycle. The process starts by interviewing the
customers and developing the incomplete high-level paper model. This
document is used to build the initial prototype supporting only the basic
functionality as desired by the customer. Once the customer figures out the
problems, the prototype is further refined to eliminate them. The process
continues until the user approves the prototype and finds the working model
to be satisfactory.
Steps Prototyping Model
Step 1: Requirement Gathering and Analysis: This is the initial step in
designing a prototype model. In this phase, users are asked about what they
expect or what they want from the system.
Step 2: Quick Design: This is the second step in Prototyping Model. This
model covers the basic design of the requirement through which a quick
overview can be easily described.
Step 3: Build a Prototype: This step helps in building an actual prototype
from the knowledge gained from prototype design.
Step 4: Initial User Evaluation: This step describes the preliminary testing
where the investigation of the performance model occurs, as the customer
will tell the strength and weaknesses of the design, which was sent to the
developer.
Step 5: Refining Prototype: If any feedback is given by the user, then
improving the client’s response to feedback and suggestions, the final system
is approved.
Step 6: Implement Product and Maintain: This is the final step in the phase
of the Prototyping Model where the final system is tested and distributed to
production, here program is run regularly to prevent failures.
For more, you can refer to Software Prototyping Model Phases.
Prototyping Models
3. Incremental Prototyping
In this type of incremental Prototyping, the final expected product is broken
into different small pieces of prototypes and developed individually. In the
end, when all individual pieces are properly developed, then the different
prototypes are collectively merged into a single final product in their
predefined order. It’s a very efficient approach that reduces the complexity of
the development process, where the goal is divided into sub-parts and each
sub-part is developed individually. The time interval between the project’s
beginning and final delivery is substantially reduced because all parts of the
system are prototyped and tested simultaneously. Of course, there might be
the possibility that the pieces just do not fit together due to some lack of ness
in the development phase – this can only be fixed by careful and complete
plotting of the entire system before prototyping starts.
4. Extreme Prototyping
This method is mainly used for web development. It consists of three
sequential independent phases:
1. In this phase, a basic prototype with all the existing static pages is
presented in HTML format.
2. In the 2nd phase, Functional screens are made with a simulated data
process using a prototype services layer.
3. This is the final step where all the services are implemented and
associated with the final prototype.
This Extreme Prototyping method makes the project cycling and delivery
robust and fast and keeps the entire developer team focused and centralized
on product deliveries rather than discovering all possible needs and
specifications and adding unnecessitated features.
FORMAL MODEL:
The formal methods model is an approach to software engineering that applies
mathematical methods or techniques to the process of developing complex software
systems. The approach uses a formal specification language to define each characteristic of
the system. The language is very particular and employs a unique syntax whose
components includes objects, relations, and rules.
When used together, these components can validate the correctness of each characteristic.
Think of the process like balancing a series of equations. At each step in the series, if the
right-side of the equation doesn’t equal the left, there's a problem that must be addressed.
CONCEPT OF AGILITY:
• Agility means effective (rapid and adaptive) response to change,
effective communication among all stockholder.
• Drawing the customer onto team and organizing a team so that it
is in control of work performed. -The Agile process, light-weight
methods are People-based rather than plan-based methods.The
agile process forces the development team to focus on software
itself rather than design and documentation. The agile process
believes in iterative method. The aim of agile process is to deliver
the working model of software quickly to the customer For
example: Extreme programming is the best known of agile
process.
• Agility is applied to any software method. However, to accomplish
this, it’s essential that the method be designed during a manner that
enables the project team to adapt tasks and to contour them, conduct
coming up within a good manner that understands the fluidity of an
agile development approach, eliminate about the foremost essential
work products and keeps them lean, Associate in emphasize a
progressive delivery strategy that gets operating package to the client
as apace as possible for the merchandise sort and operational
atmosphere.
Agile development
Agile development is a project management methodology that values individuals
and interactions over processes and tools. The Agile Manifesto, which was created in
2001, outlines the four main values and twelve principles of Agile development. Agile
development is important because it helps to ensure that development teams
complete projects on time and within budget. It also helps to improve
communication between the development team and the product owner.
Additionally, Agile development methodology can help reduce the risks associated
with complex projects. It allows for development teams to make changes quickly and
easily without affecting the overall project timeline
The four Agile values give you an inside look at what the methodology is founded
upon:
We can break the Agile process down into three main stages:
1. Preparation
2. Sprint planning
3. Sprint
2. Sprint planning: The sprint planning meeting is where the team decides
which features from the product backlog they are going to work on during the sprint.
A sprint is a set period (usually two weeks) during which the development team must
achieve a specific goal. The team also decides how many of each type of task they
can complete during the sprint. For example, the team may decide they can
complete three coding tasks, two testing tasks, and one documentation task during
the sprint. This information is then added to the sprint backlog.
3. Sprint: During the sprint, the team works on completing the tasks in the sprint
backlog. They may also come across new issues to address. If this happens, they will
add these issues to the product backlog and prioritize them accordingly. At the end
of the sprint, the development team should have completed all features in the sprint
backlog. If not, the team will carry them over to the next sprint. The team then holds
a sprint review meeting where they demo completed features to the product owner
and stakeholders. They also discuss what went well during the sprint and how they
could improve their next one. Finally, the team holds a retrospective meeting, where
they reflect on what went well and what didn’t go so well during the sprint. They
then create a plan of action for addressing these issues in future sprints. This
feedback loop helps to ensure that each sprint is more successful than the last.