3. • Software in its most general sense, is a set of instructions or programs
instructing a computer to do specific tasks. Software is a generic term
used to describe computer programs. Scripts, applications, programs and
a set of instructions are all terms often used to describe software
• Software engineering is an engineering branch associated with
development of software product using well-defined scientific principles,
methods and procedures. The outcome of software engineering should an
efficient and reliable software product.
• A software engineer/developer: takes the software needs of end users
into account and consequently develops or designs new applications.
Furthermore, software engineering may involve the process of analyzing
existing software and modifying it to meet current application needs.
4. SOFTWARE APPLICATION DOMAIN:
• An application domain is a mechanism (similar to a process in an operating system) used within
the Common Language Infrastructure (CLI) to isolate executed software applications from one
another so that they do not affect each other. Each application domain has its own virtual address
space which scopes the resources for the application domain using that address space
• 1) System Software: Systems software includes the programs that are dedicated to managing the
computer itself, such as the operating system, file management utilities, and disk operating system
(or DOS).
• System software is a software that provides platform to other software's. Some examples can be
operating systems, antivirus software's, disk formatting software's, Computer language translators
etc. These are commonly prepared by the computer manufacturers. These software's consists of
programs written in low-level languages, used to interact with the hardware at a very basic level.
System software serves as the interface between the hardware and the end users.
• 2) Application software: Application software is commonly defined as any program or number of
programs designed for end-users.
• Examples of application software include items like Microsoft Word, Microsoft Excel, or any of the
web browsers used navigate the Internet … or the actual software suites themselves
5. 3) Scientific and engineering: software satisfies the needs of a scientific or engineering user to
perform enterprise specific tasks. Such software is written for specific applications using principles,
techniques and formulae specific to that field. Examples are software like MATLAB, AUTOCAD,
PSPICE, ORCAD, etc
4) Embedded systems :Software can be defined as specialized programming tools in embedded
devices that facilitate the functioning of the machines. The software manages various hardware
devices and systems.
• Embedded systems software can be defined as specialized programming tools in embedded
devices that facilitate the functioning of the machines. The software manages various hardware
devices and systems Ex: Calculator, .Smart watch, Robots.
5)Product-Line Software: “A set of software-reliant systems that share a common managed set of
features satisfying a particular market or mission area, and are built from a common set of core assets
in a prescribed way.”
6) Web Application Software: A web application (or web app) is an application software that runs
on a web server, unlike computer-based software programs that are stored locally on the Operating
System (OS) of the device. Web applications are accessed by the user through a web browser with an
active internet connection.
6. 7) Artificial Intelligence Software :It is an area of computer science focused on the creation of
intelligent machines that work and react like humans. Some of the activities computers with
artificial intelligence are designed for include: Speech recognition
• SOFTWARE PROCESS:
• Software process can be defined as “set of activities and associated results that help to produce
software products.
• Software process comprises of four fundamental activities such as:
1. Software specification. In this activity the functionality of the software and constraints on its
operation must be defined.
2. Software design and implementation. Software design is a creative activity in which you
identify software components and their relationships, based on a customer's requirements. –
Implementation is the process of realizing the design as a program.
3. Software validation. The software must be validated to ensure that it has all the
functionalities what the customer needs.
4. Software evolution. The software must evolve to meet changing customer needs
7. • SOFTWARE ENGINEERING PRACTICES:
Consists of a collection of concepts, principles, methods, and tools that a software engineer calls upon on a
daily basis
• 1)The Reason It All Exists
• A software system exists for one reason: to value to its users. All decisions should be made with this in
mind. Before specifying a system requirement, before noting a piece of system functionality, If the
answer is no, don’t do it. All other principles support this one.
2)KIS (Keep It Simple)
• There are many factors to consider in any design effort. All design should be as simple as possible, but no
simpler. This facilities having a more easily understood, and easily maintained system. This is not to say
that features, even internal features, should be discarded in the name of simplicity. Indeed, the more
elegant designs are usually the simple ones. Simple also does not mean “quick and dirty.” In fact, it often,
takes a lot of thought and works over multiple iterations to simplify.
• 3)Maintain the Vision
• A clear vision is essential to the success of a software project. Without one, a project almost unfailingly
ends up being “of two minds” about itself.
8. • 4)What you produce, others will consume
• In some case or in some Situations there are some business stack holder will use the software what
you had developed of their business purpose , someone else will use, maintain, document, or
otherwise depend on being able to understand your system. . The audience for any product of
software development is potentially large.
• 5) Be Open to the future
• A system with a long lifetime has more value. In today’s computing environments, where
specifications change on a moment’s notice and hardware platforms are obsolete after just a few
months, software lifetimes are typically measured in months instead of years. Systems that do this
successfully are those that have been designed this way from the start. Never design yourself into a
corner
9. 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. 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.
Common management myths are listed in Table
1. Management myths
• Our company has books full of standards, procedures, protocol, and so on, related to programming
software. This provides everything that our programmers and managers need to know. While
company standards may exist, one must ask if the standards are complete, reflect modern software
practice, and are — importantly — actually used.
• If we fall behind schedule in developing software, we can just put more people on it. 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.
10. 2. Customer / end-user myths
• A vague collection of software objectives is all that is required to begin programming.
Further details can be added later. If the goals / objectives for a piece of software are vague
enough to become ambiguous, then the software will almost certainly not do what the
customer requires.
• Changing requirements can be easily taken care of because software is so flexible. This is
not true: the longer that development on the software has proceeded for, the more work is
required to incorporate any changes to the software requirements.
3. Programmer myths
• Once the software is written, and works, our job is done. A large portion of software
engineering occurs after the customer has the software, since bugs will be discovered,
missing requirements uncovered, and so on.
• The only deliverable for a project is the working program. At the very least there should
also be documentation, which provides support to both the software maintainers, and to the
end-users.
• Software engineering will make us create a lot of unnecessary documentation, and will
slow us down. Software engineering is not about producing documents. Software
engineering increases the quality of the software. Better quality reduces work load and
speeds up software delivery times.
11. • GENERIC SOFTWARE PROCESS MODEL:-
• A software process is a collection of various activities.
There are five generic process framework activities:
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.
12. • SOFTWARE PROCESS ASSESSMENTS(ACTION) & IMPROVEMENTS
• The existence of software process does not guarantee the timely delivery of the software and its ability to
meet the user's expectations. The process needs to be assessed in order to ensure that it meets a set of
basic process criteria, which is essential for implementing the principles of software engineering in an
efficient manner. The process is assessed to evaluate methods, tools, and practices, which are used to
develop and test the software. The aim of process assessment is to identify the areas for improvement
and suggest a plan for making that improvement. The main focus areas of process assessment are listed
below.
• Obtaining guidance for improving software development and test processes
• Obtaining an independent and unbiased review of the process
• Obtaining a baseline (defined as a set of software components and documents that have been formerly
reviewed and accepted; that serves as the basis for further development) for improving quality and
productivity of processes.
• The capability of a process determines whether a process with some variations is capable of meeting
user's requirements. In addition, it measures the extent to which the software process meets the user's
requirements. Process assessment is useful to the organization as it helps in improving the existing
processes. In addition, it determines the strengths, weaknesses and the risks involved in the processes.
13. • Cycle Of Software Process Assessment
Team selection – The members of the team should be professionals knowledgeable in software engineering and management.
The assessment team performs an analysis of the questionnaire responses and likewise identifies the areas that warrant further
exploration according to the CMM key process areas.
Assessment team conducts a site visit to gain an understanding of the software process followed by the site.
The assessment team produces a list of findings that identifies the strengths and likewise the weakness of the organization’s
software process.
Software Process Assessment Normative Models
SPICE (Software Process Improvement and Capability Determination) is a standard used for both process improvement and
process capability determination.
• Spice has three main objectives:
• 1.) to develop initial documents to the pattern of SPA called technical reports;
• 2.) to organize the industry initiatives regarding the use of the new pattern; and
• 3.) finally, to promote the technology transfer of SPA inside the software industry.
• CMMI
• The Capability Maturity Model Integration (CMMI) is a process and behavioral model that helps organizations streamline process
improvement and encourage productive, efficient behaviors that decrease risks in software, product and service development
• The CMMI are continuous and staged models. Therefore, software organizations should choose one or other of the models, and
also the disciplines that will be part of the model for the assessment and improvement of the software process.
14.
15. • PERSPECTIVE PROCESS MODEL:
• 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:
1. The Waterfall Model
2. Incremental Process model
3. RAD model
16. 1. The Waterfall Model
•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.
17. • Advantages of waterfall model: The waterfall model is simple and easy to
understand, implement, and use.
• All the requirements are known at the beginning of the project, hence it is easy to
manage.
• It avoids overlapping of phases because each phase is completed at once.
• This model works for small projects because the requirements are understood very
well.
• This model is preferred for those projects where the quality is more important as
compared to the cost of the project.
• Disadvantages of the waterfall model:This model is not good for complex and
object oriented projects.
• It is a poor model for long projects.
• The problems with this model are uncovered, until the software testing.
• The amount of risk is high.
18.
19.
20.
21. • Specialized Process Models:
• Specialized process models use many of the characteristics of one or more of the
Process model, however they tend to be applied when a narrowly defined
software engineering approach is chosen. They include,
Components based development
The Formal Methods Model
Aspect oriented software development
22. • Components Based Development :
• In this approach, Commercial Off-The-Shelf (COTS) S/W components, developed by vendors
Commercial off-the-shelf (COTS) :The 'shelf' normally means the shelf of products
in any store, accessible to anyone who walks into the store.
• commercial off-the-shelf, it describes software or hardware products that are
ready-made and available for sale to the general public
• Merits:
Leads to software reuse, which provides number of benefits
• 70% reduction in development cycle time
• 84 % reduction in project cost
• Productivity index goes up to 26.2
• Demerits:
Component Library must be robust.
Performance may degrade
23. The Formal Methods Model:
• The formal methods model encompasses a set of activities that lead to formal
mathematical specification of computer software.
• It consists of specifications, development & verification by applying rigorous
mathematical notation.
• Merits:
Removes many of the problems that are difficult to remove using other
S/W Engg approaches
Ambiguity, Incompleteness & Inconsistency can be discovered & corrected
easily by using formal methods of mathematical analysis.
• Demerits:
Development is time consuming & expensive
Extensive training is required
Difficult to use with technically unsophisticated customers
24. • Aspect Oriented Software Development (AOSD):
• A set of localized features, functions & information contents are used while
building complex software.
• These localized s/w characteristics are modelled as components
• (e.g. Object Oriented classes) & then constructed within the context of a system
architecture.
• Certain “concerns” (Customer required properties or areas of technical interest)
span the entire architecture i.e. Cross cutting Concerns like system security, fault
tolerance etc will be identified and recovered with specific period of time
• Merits:
It is similar to component based development for aspects
• Demerits:
Component Library must be robust.
Performance may degrade