Documente Academic
Documente Profesional
Documente Cultură
Software:
Software is set of instraction or program which provide the features and function when it is
executed.
Engineering:
Engineering is the process of using knowledge and principle to design and along the object.
Software Engineering:
The application of a systematic,disciplined,quantifiable approach to the development ,operation
and maintenance of software; that is, the application of engineering to software.
Correctness –
A software product is correct, if the different requirements as specified in the SRS document
have been correctly implemented.
Reusability –
A software product has good reusability, if the different modules of the product can easily be
reused to develop new products.
Testability –
Here software facilitates both the establishment of test criteria and the evaluation of the
software with respect to those criteria.
Reliability –
It is an attribute of software quality. The extent to which a program can be expected to perform
its desired function, over an arbitrary time period.
Portability –
In this case, software can be transferred from one computer system or environment to another.
Well engineering software:
1) Operational
2) Transitional
3) Maintainances
Operational:
a) Correctness: The software which we are making should meet all the specifications stated by
the customer.
b) Usability/Learnability: The amount of efforts or time required to learn how to use the
software should be less. This makes the software user-friendly even for IT-illiterate people.
c) Integrity : Just like medicines have side-effects, in the same way a software may have a side-
effect i.e. it may affect the working of another application. But a quality software should not
have side effects.
d) Reliability : The software product should not have any defects. Not only this, it shouldn't fail
while execution.
e) Efficiency : This characteristic relates to the way software uses the available resources. The
software should make effective use of the storage space and execute command as per desired
timing requirements.
f) Security : With the increase in security threats nowadays, this factor is gaining importance.
The software shouldn't have ill effects on data / hardware. Proper measures should be taken to
keep data secure from external threats.
Maintenance:
a) Maintainability : Maintenance of the software should be easy for any kind of user.
d) Scalability : It should be very easy to upgrade it for more work(or for more number of users).
f) Modularity : Any software is said to made of units and modules which are independent of
each other. These modules are then integrated to make the final software. If the software is
divided into separate independent parts that can be modified, tested separately, it has high
modularity.
Transitionality:
a) Interoperability : Interoperability is the ability of software to exchange information with other
applications and make use of information transparently.
b) Reusability : If we are able to use the software code with some modifications for different
purpose then we call software to be reusable.
c)Portability : The ability of software to perform same functions across all environments and
platforms, demonstrate its portability.
Software Enginerring development:
Construction activities:
Some of the major construction activities are listed below.
• Requirement Gathering
• Design Development
• Coding
• Testing
Management activities:
Some of the major management activities are listed below.
·3 All these layers are related to each other and each layer demands the fulfillment of the
previous layer.
1.Quality focus
4. Integrity i.e. providing security so that the unauthorized user cannot access information
or data.
9. In short, it covers all activities, actions and tasks required to be carried out for software
development.
3. Methods
10. The method provides the answers of all 'how-to' that are asked during the process.
4. Tools
13. The software engineering tool is an automated support for the software development.
14. The tools are integrated i.e the information created by one tool can be used by the other
tool.
For example: The Microsoft publisher can be used as a web designing tool.
In this stage we determine what is the problem against which we are going to develop software.
Here we try to completely comprehend the issues and requirements of the software system to
build.
Technical Development:
In this stage we try to find the solution of the problem on technical grounds and base our actual
implementation on it. This is the stage where a new system is actually developed that solves the
problem defined in the first stage.ss
Solution Integration:
If there are already developed system(s) available with which our new system has to interact
then those systems should also be the part of our new system. All those existing system(s)
integrate with our new system at this stage.
Status Quo:
After going through the previous three stages successfully, when we actually
deployed the new system at the user site then that situation is called status
quo. But once we get new requirements then we need to change the status
quo.
Vision:
Here we determine why are we doing this thing and what are our business
objectives that we want to achieve.
Definition:
Here we actually realize or automate the vision developed in first phase.
Here we determine what are the activities and things involved.
Development:
Here we determine, what should be the design of the system, how will it be
implemented and how to test it.
Maintenance:
Here we control the change in system, whether that change is in the form of
enhancements or defect removal.
Correction, adaptation, enhancement For most large,
long lifetime software systems, maintenance costs
normally exceeds development cost by factors ranging
from 2 to 3.
Week No. 2,3:
1): Linear Sequential Model/Waterfall Model/Classic Life Cycle:
The linear sequential model, sometimes called the classic life cycle or the waterfall model,
suggests a systematic, sequential approach to software development that begins at the system
level and progresses through communication, planning, modeling, construction and deployment.
The following given figure illustrates the linear sequential model for software engineering. This is
the oldest paradigm of software engineering.
1. Communication :
This activity involves heavy communication with customers and other stakeholders in order to
gather requirements and other related activities.
2. Planning :
Here a plan to be followed will be created which will describe the technical tasks to be
conducted, risks, required resources, work schedule etc.
3. Modeling :
A model will be created to better understand the requirements and design to achieve these
requirements.
4. Construction :
Here the code will be generated and tested.
5. Deployment :
Here, a complete or partially complete version of the software is represented to the customers
to evaluate and they give feedbacks based on the evaluation.
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.
Incremental Model:
1. Requirement analysis:
In the first phase of the incremental model, the product analysis expertise identifies the
requirements. And the system functional requirements are understood by the requirement
analysis team. To develop the software under the incremental model, this phase performs a
crucial role.
In this phase of the Incremental model of SDLC, the design of the system functionality and the
development method are finished with success. When software develops new practicality, the
incremental model uses style and development phase.
3. Testing:
In the incremental model, the testing phase checks the performance of each existing function as
well as additional functionality. In the testing phase, the various methods are used to test the
behavior of each task.
4. Implementation:
Implementation phase enables the coding phase of the development system. It involves the
final coding that design in the designing and development phase and tests the functionality in
the testing phase. After completion of this phase, the number of the product working is
enhanced and upgraded up to the final system product.
More flexible.
In RAD model the components or functions are developed in parallel as if they were mini
projects.
The developments are time boxed, delivered and then assembled into a working prototype.
This can quickly give the customer something to see and use and to provide feedback
regarding the delivery and their requirements.
Business modeling:
Data modeling:
Information gathered from business modeling is used to define data objects that are needed for
the business.
Process modeling:
Data objects defined in data modeling are converted to achieve the business information flow to
achieve some specific business objective. Description are identified and created for CRUD of data
objects.
Application generation:
Automated tools are used to convert process models into code and the actual system.
Inapplicable to cheaper projects as cost of modeling and automated code generation is very
high.
RAD should be used when there is a need to create a system that can be modularized in 2-3
months of time.
It should be used if there’s high availability of designers for modeling and the budget is high
enough to afford their cost along with the cost of automated code generating tools.
RAD SDLC model should be chosen only if resources with high business knowledge are available
and there is a need to produce the system in a short span of time (2-3 months).
Software prototyping model works best in scenarios where the project's requirement are not
known. It is an iterative, trial, and error method which take place between the developer and
the client.
A prototyping model starts with requirement analysis. In this phase, the requirements of the
system are defined in detail. During the process, the users of the system are interviewed to know
what is their expectation from the system.
The second phase is a preliminary design or a quick design. In this stage, a simple design of the
system is created. However, it is not a complete design. It gives a brief idea of the system to the
user. The quick design helps in developing the prototype.
In this phase, an actual prototype is designed based on the information gathered from quick
design. It is a small working model of the required system.
In this stage, the proposed system is presented to the client for an initial evaluation. It helps to
find out the strength and weakness of the working model. Comment and suggestion are
collected from the customer and provided to the developer.
If the user is not happy with the current prototype, you need to refine the prototype according
to the user's feedback and suggestions.
This phase will not over until all the requirements specified by the user are met. Once the user is
satisfied with the developed prototype, a final system is developed based on the approved final
prototype.
Once the final system is developed based on the final prototype, it is thoroughly tested and
deployed to production. The system undergoes routine maintenance for minimizing downtime
and prevent large-scale failures.
Rapid throwaway is based on the preliminary requirement. It is quickly developed to show how
the requirement will look visually. The customer's feedback helps drives changes to the
requirement, and the prototype is again created until the requirement is baselined.
In this method, a developed prototype will be discarded and will not be a part of the ultimately
accepted prototype. This technique is useful for exploring ideas and getting instant feedback for
customer requirements.
Evolutionary Prototyping
Here, the prototype developed is incrementally refined based on customer's feedback until it is
finally accepted. It helps you to save time as well as effort. That's because developing a
prototype from scratch for every interaction of the process can sometimes be very frustrating.
This model is helpful for a project which uses a new technology that is not well understood. It is
also used for a complex project where every functionality must be checked once. It is helpful
when the requirement is not stable or not understood clearly at the initial stage.
Incremental Prototyping
In incremental Prototyping, the final product is decimated into different small prototypes and
developed individually. Eventually, the different prototypes are merged into a single product.
This method is helpful to reduce the feedback time between the user and the application
development team.
Extreme Prototyping:
19. Basic prototype with all the existing page is present in the HTML format.
20. You can simulate data process using a prototype services layer.
21. The services are implemented and integrated into the final prototype.
22. Users are actively involved in development. Therefore, errors can be detected in the
initial stage of the software development process.
23. Missing functionality can be identified, which helps to reduce the risk of failure as
Prototyping is also considered as a risk reduction activity.
25. Customer satisfaction exists because the customer can feel the product at a very early
stage.
26. There will be hardly any chance of software rejection.
27. Quicker user feedback helps you to achieve better software development solutions.
28. Allows the client to compare if the software code matches the software specification.
29. It helps you to find out the missing functionality in the system.
35. The prototype helps to gain a better understanding of the customer's needs.
38. Prototypes may offer early training for future users of the software system.
40. The cost of developing a prototype is a total waste as the prototype is ultimately thrown
away.
42. Some times customers may not be willing to participate in the iteration cycle for the
longer time duration.
43. There may be far too many variations in software requirements when each time the
prototype is evaluated by the customer.
44. Poor documentation because the requirements of the customers are changing.
45. It is very difficult for software developers to accommodate all the changes demanded by
the clients.
46. After seeing an early prototype model, the customers may think that the actual product
will be delivered to him soon.
47. The client may lose interest in the final product when he or she is not happy with the
initial prototype.
48. Developers who want to build prototypes quickly may end up building sub-standard
development solutions.
A software project repeatedly passes through these phases in iterations (called Spirals in this
model). The baseline spiral, starting in the planning phase, requirements are gathered and risk is
assessed. Each subsequent spirals builds on the baseline spiral. Its one of the software
development models like Waterfall, Agile, V-Model.
Planning Phase:
Requirements are gathered during the planning phase. Requirements like ‘BRS’ that is ‘Bussiness
Requirement Specifications’ and ‘SRS’ that is ‘System Requirement specifications’.
In the risk analysis phase, a process is undertaken to identify risk and alternate solutions. A
prototype is produced at the end of the risk analysis phase. If any risk is found during the risk
analysis then alternate solutions are suggested and implemented.
Engineering Phase:
In this phase software is developed, along with testing at the end of the phase. Hence in this
phase the development and testing is done.
Evaluation phase:
This phase allows the customer to evaluate the output of the project to date before the project
continues to the next spiral.
What is Agile?
Agile model believes that every project needs to be handled differently and the existing methods
need to be tailored to best suit the project requirements. In Agile, the tasks are divided to time
boxes (small time frames) to deliver specific features for a release.
Iterative approach is taken and working software build is delivered after each iteration. Each
build is incremental in terms of features; the final build holds all the features required by the
customer.
In Agile development, self-organization and motivation are important, as are interactions like co-
location and pair programming.
Working software
Demo working software is considered the best means of communication with the customers to
understand their requirements, instead of just depending on documentation.
Customer collaboration
As the requirements cannot be gathered completely in the beginning of the project due to
various factors, continuous customer interaction is very important to get proper product
requirements.
Responding to change
Easy to manage.
68. Strict delivery management dictates the scope, functionality to be delivered, and
adjustments to meet the deadlines.
69. Depends heavily on customer interaction, so if customer is not clear, team can be driven
in the wrong direction.
70. There is a very high individual dependency, since there is minimum documentation
generated.
71. Transfer of technology to new team members may be quite challenging due to lack of
documentation.