SEN Micro Project
SEN Micro Project
Introduction
Description: A software product is judged by how easily it can be used by the end-user and
the features it offers to the user. An application must score in the following areas:-
1) Operational: -This tells how good a software works on operations like budget , usability,
efficiency, correctness ,functionality , dependability , security and safety.
3) Maintenance: - This specifies how good a software works in the changing environment.
Modularity, maintainability, flexibility and scalability come in maintenance part.
1) Communication
2) Requirement Gathering
3) Feasibility Study
4) System Analysis
5) Software Design
6) Coding
7) Testing
8) Integration
9) Implementation
11) Disposition
Software engineering generally begins with the first step as a user-request initiation
for a specific task or an output. He submits his requirement to a service provider
organization. The software development team segregates user requirement, system
requirement and functional requirements. The requirement is collected by conducting
interviews of a user, referring to a database, studying the existing system etc. After
requirement gathering, the team analyses if the software can be made to fulfil all the
requirements of the user. The developer then decides a roadmap of his plan. System analysis
also includes an understanding of software product limitations. As per the requirement and
analysis, a software design is made. The implementation of software design starts in terms of
writing program code in a suitable programming language. Software testing is done while
coding by the developers and thorough testing is conducted by testing experts at various
levels of code such as module testing, program testing, product testing, in-house testing and
testing the product at user’s engagement and feedback.
Types of Software
Application Software.
System Software.
Firmware.
Programming Software.
Driver Software.
Freeware.
Shareware.
Open Source Software.
History
Beginning in the 1960s, software engineering was seen as its own type of engineering.
Additionally, the development of software engineering was seen as a struggle. It was difficult
to keep up with the hardware which caused many problems for software engineers. Problems
included software that was over budget, exceeded deadlines, required extensive de-bugging
and maintenance, and unsuccessfully met the needs of consumers or was never even
completed. In 1968 NATO held the first Software Engineering conference where issues
related to software were addressed: guidelines and best practices for the development of
software were established.
The origins of the term "software engineering" have been attributed to various
sources. The term "software engineering" appeared in a list of services offered by companies
in the June 1965 issue of COMPUTERS and AUTOMATION and was used more formally in
the August 1966 issue of Communications of the ACM (Volume 9, number 8) “letter to the
ACM membership” by the ACM President Anthony A. Oettinger,it is also associated with the
title of a NATO conference in 1968 by Professor Friedrich L. Bauer, the first conference on
software engineering.Margaret Hamilton described the discipline "software engineering"
during the Apollo missions to give what they were doing legitimacy.At the time there was
perceived to be a "software crisis". The 40th International Conference on Software
Engineering (ICSE 2018) celebrates 50 years of "Software Engineering" with the Plenary
Sessions' keynotes of Frederick Brooks and Margaret Hamilton.
2. Process: It is the foundation or base layer of software engineering. It is key that binds all
the layers together which enables the development of software before the deadline or on time.
Process defines a framework that must be established for the effective delivery of software
engineering technology. The software process covers all the activities, actions, and tasks
required to be carried out for software development.
Communication: It is the first and foremost thing for the development of software.
Communication is necessary to know the actual demand of the client.
Planning: It basically means drawing a map for reduced the complication of development.
Modeling: In this process, a model is created according to the client for better understanding.
Deployment:- It includes the delivery of software to the client for evaluation and feedback.
3. Method: During the process of software development the answers to all “how-to-do”
questions are given by method. It has the information of all the tasks which includes
communication, requirement analysis, design modeling, program construction, testing,
andsupport.
4. Tools: Software engineering tools provide a self-operating system for processes and
methods. Tools are integrated which means information created by one tool can be used by
another.
A generic process framework encompasses five activities which are given below one by one:
1. Communication:
In this activity, heavy communication with customers and other stakeholders, as well
as requirement gathering is done.
2. Planning:
In this activity, we discuss the technical related tasks, work schedule, risks, required
resources, etc.
3. Modeling:
Modeling is about building representations of things in the ‘real world’. In modeling
activity, a product’s model is created in order to better understand the requirements.
4. Construction:
In software engineering, construction is the application of set of procedures that are
needed to assemble the product. In this activity, we generate the code and test the
product in order to make better product.
5 .Deployment:
In this activity, a complete or non-complete product or software is represented to the
customers to evaluate and give feedback. On the basis of their feedback, we modify
the product for supply of better product.
Umbrella activities include:
Risk Management
Software Quality Assurance (SQA)
Software Configuration Management (SCM)
Measurement
Formal Technical Reviews (FTR)
The Waterfall Model was the first Process Model to be introduced. It is also referred
to as a linear-sequential life cycle model. It is very simple to understand and use. In a
waterfall model, each phase must be completed before the next phase can begin and there is
no overlapping in the phases.The Waterfall model is the earliest SDLC approach that was
used for software development.The waterfall Model illustrates the software development
process in a linear sequential flow. This means that any phase in the development process
begins only if the previous phase is complete. In this waterfall model, the phases do not
overlap.
Waterfall approach was first SDLC Model to be used widely in Software Engineering to
ensure success of the project. In "The Waterfall" approach, the whole process of software
development is divided into separate phases. In this Waterfall model, typically, the outcome
of one phase acts as the input for the next phase sequentially.The following illustration is a
representation of the different phases of the Waterfall Model.
All these phases are cascaded to each other in which progress is seen as flowing
steadily downwards (like a waterfall) through the phases. The next phase is started
only after the defined set of goals are achieved for previous phase and it is signed off,
so the name "Waterfall Model". In this model, phases do not overlap.
Every software developed is different and requires a suitable SDLC approach to be followed
based on the internal and external factors. Some situations where the use of Waterfall model
is most appropriate are −
The disadvantage of waterfall development is that it does not allow much reflection or
revision. Once an application is in the testing stage, it is very difficult to go back and
change something that was not well-documented or thought upon in the concept stage.
The major disadvantages of the Waterfall Model are as follows −
No working software is produced until late during the life cycle.
High amounts of risk and uncertainty.
Not a good model for complex and object-oriented projects.
Poor model for long and ongoing projects.
Not suitable for the projects where requirements are at a moderate to high risk of
changing. So, risk and uncertainty is high with this process model.
It is difficult to measure progress within stages.
Cannot accommodate changing requirements.
Adjusting scope during the life cycle can end a project.
V-model
The V-model is a type of SDLC model where process executes in a sequential manner
in V-shape. It is also known as Verification and Validation model. It is based on the
association of a testing phase for each corresponding development stage. Development of
each step directly associated with the testing phase. The next phase starts only after
completion of the previous phase i.e. for each development activity, there is a testing activity
corresponding to it.
Verification: It involves static analysis technique (review) done without executing code. It is
the process of evaluation of the product development phase to find whether specified
requirements meet.
So V-Model contains Verification phases on one side of the Validation phases on the other
side. Verification and Validation phases are joined by coding phase in V-shape. Thus it is
called V-Model.
Design Phase:
Unit Testing:
Unit Test Plans are developed during module design phase. These Unit Test Plans are
executed to eliminate bugs at code or unit level.
Integration testing: After completion of unit testing Integration testing is performed.
In integration testing, the modules are integrated and the system is tested. Integration
testing is performed on the Architecture design phase. This test verifies the
communication of modules among themselves.
System Testing: System testing test the complete application with its functionality,
inter dependency, and communication.It tests the functional and non-functional
requirements of the developed application.
User Acceptance Testing (UAT): UAT is performed in a user environment that
resembles the production environment. UAT verifies that the delivered system meets
user’s requirement and system is ready for use in real world.
Industrial Challenge: As the industry has evolved, the technologies have become more
complex, increasingly faster, and forever changing, however, there remains a set of basic
principles and concepts that are as applicable today as when IT was in its infancy.
Principles of V-Model:
Advantages:
This is a highly disciplined model and Phases are completed one at a time.
V-Model is used for small projects where project requirements are clear.
Simple and easy to understand and use.
This model focuses on verification and validation activities early in the life cycle
thereby enhancing the probability of building an error-free and good quality product.
It enables project management to track progress accurately.
Disadvantages:
High risk and uncertainty.
It is not a good for complex and object-oriented projects.
It is not suitable for projects where requirements are not clear and contains high risk
of changing.
This model does not support iteration of phases.
It does not easily handle concurrent events.
Why Agile?
Technology in this current era is progressing faster than ever, enforcing the global
software companies to work in a fast-paced changing environment. Because these businesses
are operating in an ever-changing environment, it is impossible to gather a complete and
exhaustive set of software requirements. Without these requirements, it becomes practically
hard for any conventional software model to work.
This is where agile software development comes to the rescue. It was specially
designed to curate the needs of the rapidly changing environment by embracing the idea of
incremental development and developing the actual final product.
Let’s now read about the on which the Agile has laid its foundation:
Principles:
1. Highest priority is to satisfy the customer through early and continuous delivery of
valuable software.
2. It welcomes changing requirements, even late in development.
3. Deliver working software frequently, from a couple of weeks to a couple of months,
with a preference to the shortest timescale.
4. Build projects around motivated individuals. Give them the environment and the
support they need, and trust them to get the job done.
5. Working software is the primary measure of progress.
6. Simplicity the art of maximizing the amount of work not done is essential.
7. The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation.
Advantages:
Deployment of software is quicker and thus helps in increasing the trust of the
customer.
Can better adapt to rapidly changing requirements and respond faster.
Helps in getting immediate feedback which can be used to improve the software in the
next increment.
People – Not Process. People and interactions are given a higher priority rather than
process and tools.
Continuous attention to technical excellence and good design.
Disadvantages:
In case of large software projects, it is difficult to assess the effort required at the
initial stages of the software development life cycle.
The Agile Development is more code focused and produces less documentation.
Agile development is heavily depended on the inputs of the customer. If the customer
has ambiguity in his vision of the final outcome, it is highly likely for the project to
get off track.
Face to Face communication is harder in large-scale organizations.
Only senior programmers are capable of taking the kind of decisions required during
the development process. Hence it’s a difficult situation for new programmers to
adapt to the environment.
Conclusion
Reference
https://www.geeksforgeeks.org/software-engineering-sdlc-v-model/
https://www.javatpoint.com/software-engineering-v-model
https://www.javatpoint.com/software-engineering-v-model