0% found this document useful (0 votes)
8 views12 pages

3. SE - Notes

Software engineering is a discipline focused on the systematic development of software products using established principles and methods, resulting in efficient and reliable software. It is essential for managing large projects, ensuring quality, and adapting to changing user requirements. The document outlines the importance of software engineering, various types of software, application domains, and best practices in software development.

Uploaded by

napey62998
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views12 pages

3. SE - Notes

Software engineering is a discipline focused on the systematic development of software products using established principles and methods, resulting in efficient and reliable software. It is essential for managing large projects, ensuring quality, and adapting to changing user requirements. The document outlines the importance of software engineering, various types of software, application domains, and best practices in software development.

Uploaded by

napey62998
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

21CS2111RB: Software Engineering

 Introduction
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 is an efficient and reliable software product.

Software project management has wider scope than software engineering process as it
involves communication, pre and post delivery support etc.

 Definition
The term Software Engineering is the product of two words, Software, and Engineering.

The Software is a collection of integrated programs. Software subsists of carefully-


organized instructions and code written by developers on any of various particular
computer languages. Computer programs and related documentation such as
requirements, design models and user manuals.

Engineering is the application of scientific and practical knowledge to invent, design, build,
maintain, and improve frameworks, processes, etc.

Software Engineering is an engineering branch related to the evolution of software product


using well-defined scientific principles, techniques, and procedures. The result of software
engineering is an effective and reliable software product.

 Why Software Engineering?


Software Engineering is required due to the following reasons:
 To manage Large software
 For more Scalability
 Cost Management
 To manage the dynamic nature of software
 For better quality Management

 Need for Software Engineering


The necessity of software engineering appears because of a higher rate of progress in user
requirements and the environment on which the program is working.
 Huge Programming: It is simpler to manufacture a wall than to a house or building,
similarly, as the measure of programming become extensive engineering has to step
to give it a scientific process.
 Adaptability: If the software procedure were not based on scientific and engineering
ideas, it would be simpler to re-create new software than to scale an existing one.
 Cost: As the hardware industry has demonstrated its skills and huge manufacturing
has let down the cost of computer and electronic hardware. But the cost of
programming remains high if the proper process is not adapted.
 Dynamic Nature: The continually growing and adapting nature of programming
hugely depends upon the environment in which the client works. If the quality of the
software is continually changing, new upgrades need to be done in the existing one.
 Quality Management: Better procedure of software development provides a better
and quality software product.

 Importance of Software Engineering

1. Reduces complexity: Big software is always complicated and challenging to progress.


Software engineering has a great solution to reduce the complication of any project.
Software engineering divides big problems into various small issues. And then start
solving each small issue one by one. All these small problems are solved
independently to each other.
2. To minimize software cost: Software needs a lot of hardwork and software engineers
are highly paid experts. A lot of manpower is required to develop software with a
large number of codes. But in software engineering, programmers project everything
and decrease all those things that are not needed. In turn, the cost for software
productions becomes less as compared to any software that does not use software
engineering method.
3. To decrease time: Anything that is not made according to the project always wastes
time. And if you are making great software, then you may need to run many codes to
get the definitive running code. This is a very time-consuming procedure, and if it is
not well handled, then this can take a lot of time. So if you are making your software
according to the software engineering method, then it will decrease a lot of time.
4. Handling big projects: Big projects are not done in a couple of days, and they need
lots of patience, planning, and management. And to invest six and seven months of
any company, it requires heaps of planning, direction, testing, and maintenance. No
one can say that he has given four months of a company to the task, and the project
is still in its first stage. Because the company has provided many resources to the
plan and it should be completed. So to handle a big project without any problem, the
company has to go for a software engineering method.
5. Reliable software: Software should be secure, means if you have delivered the
software, then it should work for at least its given time or subscription. And if any
bugs come in the software, the company is responsible for solving all these bugs.
Because in software engineering, testing and maintenance are given, so there is no
worry of its reliability.
6. Effectiveness: Effectiveness comes if anything has made according to the standards.
Software standards are the big target of companies to make it more effective. So
Software becomes more effective in the act with the help of software engineering.

 Nature (Types) of Software


Nowadays, there are 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. 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. 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 non-numerical 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 Application Domains


Application domains can either be very extensive or very limited. Application domains
mainly in the context of commercial or governmental organizations, but they could easily
be in social or private organizations. Application domains include banks, insurance
companies, or hospitals. Equipment management for a small software company is our main
example. Internet applications have become increasingly important, especially for the
home and entertainment domains.

An application domain is the segment of reality for which a software system is developed.
It is the background or starting point for the actual-state analysis and the creation of a
domain model.

An application domain can be an organization, a department within an organization, or a


single workplace.

The concept of an application domain is at least as wide, so that the domain concepts and
relations relevant for the construction of models can be well understood during the
analysis of the actual state of the domain. On the other hand, its extent should always be
limited, that is, never be too complex.
An application domain normally includes a domain-specific language. This means that
people in this domain use specific terms and concepts and think about their domain in a
specific way.

NOTE: Refer “Nature (Types) of Software” (above topic) for Application Domain.

 Unique Nature of Web Applications


In the early days of the World Wide Web, websites consisted of little more than a set
of linked hypertext files that presented information using text and limited graphics. As time
passed, the augmentation of HTML by development tools (XML, Java) enabled Web
engineers to provide computing capability along with informational content. Web based
systems and applications (Unique Nature of Web Apps) were born.

Today, Web Apps have evolved into sophisticated computing tools that not only provide
stand-alone function to the end user, but also have been integrated with corporate
databases and business applications.

Web Apps are one of a number of distinct software categories. Web based systems and
applications “involve a mixture between print publishing and software development,
between marketing and computing, between internal communications and external
relations, and between art and technology.”
The following attributes are encountered in the vast majority of Unique Nature of Web
Apps.

 Network Intensiveness: A Web App resides on a network and must serve the needs
of a diverse community of clients. The network may enable worldwide access and
communication (the Internet) or more limited access and communication (a
corporate Intranet).
 Concurrency: A large number of users may access the Web App at one time. In many
cases, the patterns of usage among end users will vary greatly.
 Unpredictable Load: The number of users of the Web App may vary by orders of
magnitude from day to day. One hundred users may show up on Monday; 10,000
may use the system on Thursday.
 Performance: If a Web App user must wait too long, he or she may decide to go
elsewhere.
 Availability: Although expectation of 100 percent availability is un reasonable, users
of popular Web Apps often demand access on a 24 x 7 x 365 basis
 Data Driven: The primary function of many Web Apps is to use hypermedia to
present text, graphics, audio, and video content to the end user. In addition, Unique
Nature of Web Apps are commonly used to access information that exists on
databases that are not an integral part of the Web based environment (e-commerce
or financial applications).
 Content Sensitive: The quality and aesthetic nature of content remains an important
determinant of the quality of a Web App.
 Continuous Evolution: Unlike conventional application software that evolves over a
series of planned, chronologically spaced releases, Web applications evolve
continuously.
 Immediacy: Although immediacy the compelling need to get software to market
quickly is a characteristic of many application domains, Web Apps often exhibit a
time to market that can be a matter of a few days or weeks
 Security: Because Unique Nature of Web Apps are available via network access, it is
difficult, if not impossible, to limit the population of end users who may access the
application. In order to protect sensitive content and provide secure modes
 Aesthetics: An undeniable part of the appeal of a Web App is its look and feel. When
an application has been designed to market or sell products or ideas, aesthetics may
have as much to do with success as technical design.

 Software Processes
The term software specifies to the set of computer programs, procedures and associated
documents (Flowcharts, manuals, etc.) that describe the program and how they are to be
used.

A software process is the set of activities and associated outcome that produce a software
product. Software engineers mostly carry out these activities. These are four key process
activities, which are common to all software processes. These activities are:
 Software specifications: The functionality of the software and constraints on its
operation must be defined.
 Software development: The software to meet the requirement must be produced.
 Software validation: The software must be validated to ensure that it does what the
customer wants.
 Software evolution: The software must evolve to meet changing client needs.

1. The Software Process Model


A software process model is a specified definition of a software process, which is
presented from a particular perspective. Models, by their nature, are a simplification,
so a software process model is an abstraction of the actual process, which is being
described. Process models may contain activities, which are part of the software
process, software product, and the roles of people involved in software engineering.
Some examples of the types of software process models that may be produced are:

 A workflow model: This shows the series of activities in the process along with
their inputs, outputs and dependencies. The activities in this model perform
human actions.
 A dataflow or activity model: This represents the process as a set of activities,
each of which carries out some data transformations. It shows how the input to
the process, such as a specification is converted to an output such as a design. The
activities here may be at a lower level than activities in a workflow model. They
may perform transformations carried out by people or by computers.
 A role / action model: This means the roles of the people involved in the software
process and the activities for which they are responsible.

There are several various general models or paradigms of software development:


 The waterfall approach: This takes the above activities and produces them as
separate process phases such as requirements specification, software design,
implementation, testing, and so on. After each stage is defined, it is "signed off"
and development goes onto the following stage.
 Evolutionary development: This method interleaves the activities of specification,
development, and validation. An initial system is rapidly developed from a very
abstract specification.
 Formal transformation: This method is based on producing a formal
mathematical system specification and transforming this specification, using
mathematical methods to a program. These transformations are 'correctness
preserving.' This means that you can be sure that the developed programs meet
its specification.
 System assembly from reusable components: This method assumes the parts of
the system already exist. The system development process target on integrating
these parts rather than developing them from scratch.

2. Software Crisis
 Size: Software is becoming more expensive and more complex with the growing
complexity and expectation out of software. For example, the code in the
consumer product is doubling every couple of years.
 Quality: Many software products have poor quality, i.e., the software products
defects after putting into use due to ineffective testing technique. For example,
Software testing typically finds 25 errors per 1000 lines of code.
 Cost: Software development is costly i.e. in terms of time taken to develop and
the money involved. For example, Development of the FAA's Advanced
Automation System cost over $700 per lines of code.
 Delayed Delivery: Serious schedule overruns are common. Very often the
software takes longer than the estimated time to develop, which in turn leads to
cost shooting up. For example, one in four large-scale development projects is
never completed.
3. Program Vs. Software
Software is more than programs. Any program is a subset of software, and it
becomes software only if documentation & operating procedures manuals are
prepared.

There are three components of the software as shown in fig:


 Program: Program is a combination of source code & object code.
 Documentation: Documentation consists of different types of manuals. Examples
of documentation manuals are: Data Flow Diagram, Flow Charts, ER diagrams, etc.

 Operating Procedures: Operating Procedures consist of instructions to set up and


use the software system and instructions on how react to the system failure.

Example of operating system procedures manuals is: installation guide, Beginner's


guide, reference guide, system administration guide, etc.
 Software Engineering Practices
Software engineering practices are a set of approaches to software development.
 To overcome the software development problems.
 Understand the problem (Communication and Analysis)
 Plan the solution ( Modelling and Software Design)
 Carry out the plan (Code Generation)
 Examine the result for accuracy (Testing and Quality Assurance)
1. Understand the problem
 Who has a stake in the solution to the problem?
 What are unknowns?
 Can the problem be compartmentalized?
 Can the problem be represented graphically?
2. Develop Iteratively
 Critical risks are resolved before making large investments
 Initial iterations enable early user feedback
 Testing and integration are continuous
 Objective milestones provide short term focus
3. Manage Requirements
 Requirements are dynamic - expect them to change during software development
 User's own understanding of the requirements evolves over time
 Gain agreement with user on what the system should do and not how
 Maintain forward and backward traceability of requirements
4. Use Component Based Architecture
 Using components permits reuse
 Choice of thousands of commercially available components
 Improved maintainability and extensibility
 Promotes clean division of work among teams of developers
5. Plan the solution
 Have you seen similar problem before?
 Has a similar problem being solved?
 Can sub problems be defined?
 Can a solution be given for effective implementation?
 Can a design model be created?
6. Carry out the plan
 Does the solution conform the plan?
 Is the source code traceable to the design model
 Is each component solution correct?
 Have the design and code being reviewed?
7. Examine the result
 Is the each component part being tested?
 Does the solution produce the result?
 Has the software being evaluated against all stakeholder requirement?
8. Control Changes to Software
 Without explicit control parallel development degrades to chaos
 Decompose the architecture into subsystems and assign responsibility of each sub
system to a team. Establish secure workspaces for each team i.e. each team is
isolated from changes made in other workspaces.
 Establish an enforceable change control mechanism where
 Change requests are prioritized
 Impact of the change request is assessed
 Plan put in place to introduce change in a particular iteration

 Software Myths
Most, experienced experts have seen myths or superstitions (false beliefs or
interpretations) or misleading attitudes (naked users) which creates major problems for
management and technical people. The types of software-related myths are listed below:

1. Management Myths:
Myth 1:
 We have all the standards and procedures available for software
development.
Fact:
 Software experts do not know all the requirements for the software
development.
 And all existing processes are incomplete as new software development is
based on new and different problem.
Myth 2:
 The addition of the latest hardware programs will improve the software
development.
Fact:
 The role of the latest hardware is not very high on standard software
development; instead (CASE) Engineering tools help the computer, they are
more important than hardware to produce quality and productivity.
 Hence, the hardware resources are misused.
Myth 3:
 With the addition of more people and program planners to Software
development can help meet project deadlines (If lagging behind).
Fact:
 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.

2. Customer Myths:
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.
Myth 1:
 A general statement of intent is enough to start writing plans (software
development) and details of objectives can be done over time.
Fact:
 Official and detailed description of the database function, ethical performance,
communication, structural issues and the verification process are important.
 Unambiguous requirements (usually derived iteratively) are developed only
through effective and continuous communication between customer and
developer.
Myth 2:
 Software requirements continually change, but change can be easily
accommodated because software is flexible
Fact:
 It is true that software requirements change, but the impact of change varies
with the time at which it is introduced. When requirements changes are
requested early (before design or code has been started), the cost impact is
relatively small. However, as time passes, the cost impact grows rapidly—
resources have been committed, a design framework has been established, and
change can cause upheaval that requires additional resources and major design
modification.
Different Stages of Myths

3. Practitioner’s Myths:
Myths 1:
 They believe that their work has been completed with the writing of the plan.
Fact:
 It is true that every 60-80% effort goes into the maintenance phase (as of the
latter software release). Efforts are required, where the product is available first
delivered to customers.
Myths 2:
 There is no other way to achieve system quality, until it is “running”.
Fact:
 Systematic review of project technology is the quality of effective software
verification method. These updates are quality filters and more accessible than
test.
Myth 3:
 An operating system is the only product that can be successfully exported
project.
Fact:
 A working system is not enough, the right document brochures and booklets are
also required to provide guidance & software support.
Myth 4:
 Engineering software will enable us to build powerful and unnecessary
document & always delay us.
Fact:
 Software engineering is not about creating documents. It is about creating a
quality product. Better quality leads to reduced rework. And reduced rework
results in faster delivery times

 Process Models

You might also like