[go: up one dir, main page]

0% found this document useful (0 votes)
23 views11 pages

Bca C104 SM01

Download as pdf or txt
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 11

UNIT-1

Introduction to Software Engineering


Software is a programme, or collection of programmes, that contains instructions to
perform specific functions. Engineering is the process of creating something with a specific
aim in mind and figuring out how to do it efficiently.

The process of designing, creating, testing, and maintaining software is known as software
engineering. It is a methodical, disciplined method of developing software with the end
goal of producing high-quality, dependable, and maintainable software. Requirements
analysis, design, testing, and maintenance are only a few of the techniques, tools, and
approaches that make up software engineering.

A systematic, disciplined, quantitative study and method is known as "software


engineering," and it is used to create, operate, and maintain software systems.

Software engineering's goals:


1. Maintainability
The programme should be able to change to meet evolving requirements.
2. Efficiency
The software shouldn't use memory, CPU cycles, or other computing resources
inefficiently.
3. Correctness
If all of the requirements listed in the SRS document have been implemented
appropriately, then the software product is correct.
4. Reusability
If the various product components can be quickly used to create new products, then the
software product has strong reusability.
5. Testability
Here, software makes it easier to set test criteria and to assess the programme in relation
to those criteria.
6. Reliability
It is a characteristic of high-quality software. How well a programme is likely to carry
out its intended purpose over an extended length of time?
7. Portability
In this situation, the software can be moved between computer environments or
systems.
8. Adaptability
In this instance, the programme supports various system constraints, and the user's
needs are met by modifying the software.
9. Interoperability
Capacity for cooperative data processing between two or more functional units.

Need of Software Engineering:


 Handling Big Projects: A company needs to employ a software engineering
methodology to successfully manage huge projects.
 To manage the cost: Software engineering programmers organise everything and
eliminate anything unnecessary.
 To decrease time: Using a software engineering approach when creating software will
save a tonne of time.
 Reliable software: It is the obligation of the business to meet delivery deadlines for
software products and to fix any potential flaws.
 Effectiveness: When something is produced in conformity with the standards, it is
effective.
 Reduces complexity: In software engineering, big problems are divided into smaller
ones and tackled one at a time. Each of these problems has a unique solution.
 Productivity: It includes testing systems at every level, so proper maintenance is done
to keep software productive.

Software Development Life Cycle (SDLC)
Software development is the process of creating software for a variety of uses. There is a
specific programming language, such as Java, Python, C/C++, etc., for developing
software. Software development is a complex process that is not as straightforward as its
definition might suggest. As a result, the developer must take an effective strategy using the
Software Development Life Cycle (SDLC).

There are 6 steps in the entire software development process.

Stage-1: Planning and Requirement Analysis: In everything, including software


development, planning is the most important phase. Requirement analysis is also carried
out at this level by the company's developers. This is obtained from feedback from the sales
department, market surveys, and customers. The foundation of a fundamental project is
built on the facts from this study. Planning yields the project's quality evidence.

Stage-2: Defining Requirements: All of the target software's requirements are laid out at
this point. Customers, market analysts, and other stakeholders give their assent to these
needs. SRS (Software Requirement Specification) is used to satisfy this.

Stage-3: Designing Architecture: Software architects can use SRS as a guide to create the
optimal software architecture. As a result, the Design Document Specification (DDS)
contains various designs for the product architecture based on the SRS criteria. Market
analysts and stakeholders evaluate this DDS. The development's design is decided after
considering all of the potential aspects in detail.
Stage-4: Developing Product: At this point, the product's core development begins.
Developers implement this using a particular programming language in accordance with the
DDS design. Therefore, it is crucial that the coders adhere to the guidelines established by
the association. At this point, traditional programming tools like compilers, interpreters,
debuggers, etc. are also used. Several well-known languages, including C/C++, Python,
Java, etc., are used in accordance with software regulations.

Stage-5: Product Testing and Integration- Software must be tested after product
development in order to assure smooth operation. Even yet, just a little testing is done at
each stage of the SDLC. Therefore, all potential issues are currently being identified,
rectified,andretested.

Stage6: Deployment and Maintenance of Product: The final product is released in


stages in accordance with the organization's strategy after thorough testing. Then it is
examined in a true industrial setting. Since it's crucial to guarantee its efficient operation.
The company releases the entire product if it functions effectively. After gathering
constructive criticism, the corporation either publishes the product as is or with
supplemental enhancements to make it even more useful for the clients. However, this is
insufficient on its own. Therefore, product supervision is also necessary along with
deployment.

Dual Role of Software:


1. As a product:
 It delivers the hardware networks' computational potential.
 The Hardware is able to perform as expected because of it.
Because it creates, manages, acquires, modifies, displays, or transmits information, it serves
as an information transformer.
2. as a vehicle for delivering a product
 It offers system functions, such as a payroll system.
 It regulates additional software (like an operating system).
 It aids in the development of other software, such as software tools.
Software Characteristics
The characteristics of software include:

1. It cannot be seen or felt since it is intangible.


2. It is non-perishable, which means it won't lose quality with time.
3. It is simple to replicate, making it simple to copy and distribute.
4. It may be complicated, which entails having numerous interconnected components and
features.
5. Particularly with regard to huge and complicated systems, it might be challenging to
comprehend and alter.
6. It may need to be updated or modified when user needs alter as a result of it being
impacted by shifting requirements.
7. It may need to be tested and debugged to ensure that it functions as intended because it
may be affected by flaws and other problems.

Types of Software
The software is widely utilised in a variety of industries, including healthcare, banking,
education, the military, and the financial and stock markets. It can be divided into various
sorts:
 Based on Application
 Based on Copyright
Based on Application
The application of the software allows for classification. These are to be completed based
on this.
1. System Software
To manage computer resources and facilitate the execution of application programmes,
system software is required. This category includes programmes like operating systems,
compilers, editors, and drivers, among others. Without these, a computer is unable to
operate. Operating systems are required to connect a program's machine-specific
requirements with the capabilities of the computer on which it runs. Programmes are
converted from high-level language to machine language via compilers.
2. Application Software
Application software is created to interact with users in order to meet their needs. Generic
or customised are the two main categories that it could fall into. Generic software is
available to all users and behaves consistently for them. Its functionality is constrained and
not adjusted to the user's shifting needs. Customised software, on the other hand, refers to
software products created specifically for a client's needs and is not accessible to everyone
3. Networking and Web Applications Software
The necessary assistance for computers to communicate with one another and with data
storage facilities is provided by networking software. Software that runs on a network of
computers, such as the World Wide Web, also uses networking software. All server
software, security and encryption tools, and software to create web-based applications like
HTML, PHP, XML, etc. are included.
4. Embedded Software
This kind of software is used to support specific functionality under control settings and is
typically integrated within the hardware in the Read-Only Memory (ROM) of a large
system. Software used in instrumentation and control applications, such as those for
microwaves, satellites, and washing machines, are some examples.
Based on Copyright
Software can be categorised depending on copyright. The following is a list of these:
1. Commercial Software
It is an example of the vast majority of software that we buy from commercial computer
stores, software vendors, etc. In this instance, a user gets a licence key to use the software
when they purchase it. The software cannot be duplicated by users. The program's
copyright is owned by the firm.
2. Shareware Software
Shareware software is similarly protected by copyright, but buyers are permitted to produce
and distribute copies with the caveat that if they decide to use the software after testing it,
they must pay for it. Changes to the software are prohibited in the two categories of
software mentioned above.
3. Freeware Software
Generally speaking, copies of freeware software can be generated for both archival and
distribution reasons, although in this case, distribution cannot be done for financial gain.
The use of derivative works and software changes is permitted and encouraged. The
programme code may also be decompiled without the copyright holder's express consent.
4. Public Domain Software
In the case of software that is in the public domain, the original copyright holder expressly
waives all claims to the software. Therefore, software copies can be created without any
distribution limitations for both archive and dissemination purposes. Reverse engineering
and software modifications are also permitted.
Software Crisis

In computer science, the inability to create meaningful and effective computer programmes
in the allotted time is referred to as a "software crisis." The software crisis resulted from
using the same workforce, methodologies, and tools despite the fact that software demand,
complexity, and problems were all fast rising. Because old solutions were insufficient,
various software issues have emerged as programme complexity has increased. After the
rapid rise in software demand, complexity, and challenges, if we continue to use the same
workforce, methods, and tools, then issues such as software budget issues, software
efficiency issues, software quality issues, software managing and delivering issues, etc. will
arise. A software crisis is the name given to this situation.

Causes of Software Crisis:

 The price of maintaining and owning software was comparable to the cost of creating it.
 Projects were running late at the time.
 Software at the time was incredibly ineffective.
 The quality of the software was average.
 Software frequently fell short of user expectations.
 The typical software project runs half an hour behind schedule.
 No software was ever given at that time.
 Suboptimal use of resources.
 Hard to change, debug, and improve.
 It is more difficult to adjust software complexity.
Software Engineering Problems:

You must adjust several aspects that lead to unsolved difficulties in software engineering
programming if you want to solve them or find answers to them. The difficulties that the
problems and solutions often address are complicated and challenging. Making a change can
lead to solutions, which will have the intended consequences on the problems. Larger
structures may contain the effects. The actions conducted result in the desired outcomes and
necessary impacts on the issues that require fixing. In the early stages of its development
process, freshly created software frequently has some issues. Programme engineers
frequently embrace and employ "Agile" approaches to help the programme run correctly and
quickly due to time limitations. When the testing teams conduct integration tests, the ultimate
objective is to get the fastest response times.

Software Processes in Software Engineering


 The methods and procedures used to create and maintain software are referred to as
"software processes" in software engineering. Software processes include, for instance:
 Waterfall: a method of developing software that is linear and sequential that has
different stages including requirement collecting, design, implementation, testing, and
maintenance.
 Agile: a flexible, iterative approach to software development that prioritises continuous
delivery and quick prototyping.
 Scrum: a well-known agile approach that prioritises collaboration, iterative
development, and a fluid, adaptable style of planning and management.
 DevOps: a collection of guidelines that focuses on automating the software delivery
process and strives to enhance cooperation and communication between development
and operations teams.

Components of Software:
The software is made up of three parts: a programme, documentation, and operating
instructions.
1. Program
A computer programme is a set of directives that specify what to do for a machine.

2. Documentation
A list of directives that tell a computer what to do is referred to as a computer
programme.
3. Operating Procedures: Set of detailed instructions created by a company to assist staff
in doing difficult everyday tasks.
4. Code: The commands that a computer follows to carry out a certain task or collection
of tasks.
5. Data: information that the software manipulates or uses.
6. User interface: Button, menu, and text field interactions that the user has with the
software.
7. Libraries: pre-written code that the software can utilise repeatedly to carry out routine
operations.
8. Documentation: User manuals and technical guides are examples of materials that
provide instructions on how to operate and maintain the software.
9. Test cases: a collection of inputs, conditions for execution, and anticipated results used
to check the software's accuracy and dependability.
10. Configuration files: files that include configuration information necessary to set up
software to operate in a certain environment.
11. Build and deployment scripts: tools or programmes used to create, package, and
distribute software across several environments..
12. Metadata: information about the software, including its developers, version numbers,
and copyright details.

Software Engineering | Architectural Design


Introduction: The architectural design is necessary for the programme to represent the
software design. Architectural design, as defined by IEEE, is "the process of defining a
collection of hardware and software components and their interfaces to establish the
framework for the development of a computer system." One of these numerous
architectural styles can be seen in the software created for computer-based systems.
Each style will outline a group of systems that includes:
A set of components (eg: a database, computational modules) that will perform a function
required by the system.
 The set of connectors will help in coordination, communication, and cooperation
between the components.
 Conditions that how components can be integrated to form the system.
 Semantic models that help the designer to understand the overall properties of the
system.

Interface Design: Interface design describes how a system will interact with its
surroundings. With regard to the internal operations of the system, this phase is highly
abstract; specifically, during interface design, the internal operations of the system are
completely disregarded, and the system is treated as a "black box." The dialogue between
the target system and the people, things, and other systems it interacts with are the main
focus. The humans, other systems, and devices—collectively referred to as agents—should
be identified in the design problem statement created during the problem analysis process.
The following information should be included in interface design:
Precise description of events in the environment, or messages from agents to which the
system must respond.
 Precise description of the events or messages that the system must produce.
 Specification of the data, and the formats of the data coming into and going out of the
system.
 Specification of the ordering and timing relationships between incoming events or
messages, and outgoing events or outputs.

Architectural Design: Architectural design is the specification of a system's key


elements, as well as of their roles, attributes, interfaces, connections, and interactions.
In architectural design, the overall system structure is selected, but internal details of
significant components are disregarded. Architectural design problems include:
Gross decomposition of the systems into major components.
 Allocation of functional responsibilities to components.
 Component Interfaces
 Component scaling and performance properties, resource consumption properties,
reliability properties, and so forth.
 Communication and interaction between components.
Important aspects that were missed during the interface design are added in the architectural
design. Up until the very end of the design process, internal significant component design is
neglected.

Detailed Design: Design is the specification of all internal elements, attributes, relationships,
processes, and frequently algorithms and data structures of all significant system components.
The intricate design might have:
 Decomposition of major system components into program units.
 Allocation of functional responsibilities to units.
 User interfaces
 Unit states and state changes
 Data and control interaction between units
 Data packaging and implementation, including issues of scope and visibility of program
elements
 Algorithms and data structures

You might also like