Sen Unit01
Sen Unit01
• A Software is a collection of instructions that enable the user to interact with a computer, its hardware,
or perform tasks.
• Computer software, or simply software, is a collection of data or computer instructions that tell the
computer how to work.
• Software is a set of instructions, data or programs used to operate computers and execute specific tasks.
• Opposite of hardware, which describes the physical aspects of a computer, the software is a generic term
used to refer to applications, scripts and programs that run on a device.
• Without software, most computers would be useless. For example, without your Internet browser
software, you could not surf the Internet or read this page.
• Without an operating system, the browser could not run on your computer. The picture shows a
Microsoft Excel box, an example of a spreadsheet. software program.
– Before the curve can return to the original steady-state failure rate, another change is requested, causing
the curve to spike again. Slowly, the minimum failure rate level begins to rise
—the software is deteriorating due to change.
3. Although the industry is moving toward component-based construction,
most software continues to be custom built.
– The reusable components have been created so that the engineer can concentrate on the truly innovative
elements of a design, that is, the parts of the design that represent something new.
– In the software world, it is something that has only begun to be achieved on a broad scale. A software
component should be designed and implemented so that it can be reused in many different programs
– A software component should be designed and implemented so that it can be reused in many different
programs. Modern reusable components encapsulate both data and the processing that is applied to the
data, enabling the software engineer to create new applications from reusable parts.
– For example, today’s interactive user interfaces are built with reusable components that enable the
creation of graphics windows, pull-down menus, and a wide variety of interaction mechanisms.
1.0.3 SW Engineering layers: A Layered Technology/Approach:-
Software engineering is a layered technology. The layers of software engineering as shown in the above
diagram are:-
(a) A Quality Focus:-
– Any engineering approach (including software engineering) must rest on an organizational
commitment to quality.
– A quality layer As a Bedrocks or backbones. Which is mainly focus on quality.
– Mainly focus on two types of Quality.
i. Functional.(degree of correctness).
ii. Non-functional.(maintainability and robustness).
– Total quality management, six sigma and similar philosophies foster a continuous
process improvement culture, and it is this culture that ultimately leads to the
development of increasingly more effective approaches to software engineering.
(b)Process Layer:-
– The foundation for software engineering is the process layer.
– Software Engineering process is the glue that holds the technology layers together and enables
rational and timely development of computer software.
– Process defines a framework that must be established for effective delivery of software
engineering technology.
– The software process forms the basis for management control of software projects and
establishes the context in which technical methods are applied, works products (models,
documents, data, reports, forms etc.) are produced, milestones are established, quantity is ensured
and change is properly managed.
– The Process layer Like Road maps or city maps which helps for
i. Timely delivery of software product.
ii. Predefined plan.
(d)Tools:-
– Software Engineering tools provide automated or semi-automated support for the process and
the methods.
– When tools are integrated so that information created by one tool can be used by another, a
system for the support of software development, called computer–aided software engineering is
established.
– The Automated and semi-automated tools are Computer added sw working together for
developments.
– Example of tools required for software development as code Editor, modeling, DB, Testing, etc.
2 Software Developments Generic Process Framework:-
1. A process framework establishes the foundation for a complete software process by identifying a
small number of framework activities that are applicable to all software projects, regardless of their
size or complexity.
2. Process defines a framework that must be established for effective delivery of software engineering
technology.
3. The software process forms the basis for management control of software projects and establishes
the context in which technical methods are applied, works products (models, documents, data,
reports, forms etc.) are produced, milestones are established, quantity is ensured and change is
properly managed.
4. In addition, the process framework encompasses a set of umbrella activities that are applicable
across the entire software process.
5. From the below figure, each framework activity is populated by a set of software engineering
actions- a collection of related tasks that produces a major software engineering work product (e.g.
design is a SE action).
6. Each action is populated with individual work tasks that accomplish some part of the work implied
by the action.
7. The Software Development Generic Process Framework can be divide into following main parts.
(a) Software Process.
• A process framework establishes the foundation for a complete software process by identifying
a small number of framework activities that are applicable to all software projects, regardless of
their size or complexity.
• SW engineering process is the glue that holds the technology layers together and enables
rational and timely development of software.
Figure 1: SW Development Generic Process Framework
• This framework activity involves heavy communication collaboration with the customer(and the
stakeholders) and encompasses requirements gathering and other related activities.
• Involves communication among the customer and other stake holders; encompasses requirements,
gathering.
ii. Planning :-
• This activity establishes a plan for the software engineering work that follows.
• It describes the technical tasks to be conducted, the risks that are likely, the resources that will be
required, the work products to be produced and a work schedule.
iii. Modeling :-
This activity encompasses the creation of models that allow the developer the customer to
better understand software requirements the design that will achieve those requirements.
iv. Construction:-
This activity combines code generation and the testing that is required to uncover errors
in the code.
v. Deployment:-
The software is delivered to the customer who evaluates the delivered product and
provides feedback based on the evaluation.
i. The waterfall model, sometimes called the classic life cycle, suggests a systematic, sequential
approach to software development that begins with customer specification of requirements and
progresses through planning, modeling, construction, and deployment, culminating in ongoing
support of the completed software.
ii. 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.
iii. In a waterfall model, each phase must be completed before the next phase can begin and there is
no overlapping in the phases.
iv. Situation in which waterfall model is applicable.
• There are times when the requirements for a problem are well understood—when work flows
from communication through deployment in a reasonably linear fashion
• This situation is sometimes encountered when well-defined adaptations or enhancements to an
existing system must be made.
v. Framework activities involved:
A. Communication:- It involves heavy communication with the customer (or stakeholder) and
encompasses requirement gathering and related activities.
B. Planning:- In this activity, effort required, cost/budget, risk analysis ,time duration re estimated (project
plan is made)
C. Modeling:- This activity creates analysis and design models that both developers and customer to better
understand the requirements. Data structure, software architecture and other details are made.
D. Construction:- This activity performs code generation and testing to ensure whether requirements are
fulfilled. Code generation is done first and then testing is done after that.
E. Deployment:- Once the product is fully developed, it is delivered to the customer. Customer evaluates
the product and provides feedback.
vi. Advantages:-
• Simple and easy to understand and use.
viii. Disadvantages.
• Not a good model for complex and object-oriented 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.
• Real projects rarely follow the sequential flow that the model proposes. Although the linear model
can accommodate iteration, it does so indirectly. As a result, changes can cause confusion as the
project team proceeds.
• It is often difficult for the customer to state all requirements explicitly. The waterfall model requires
this and has difficulty accommodating the natural uncertainty that exists at the beginning of many
projects.
i. The incremental model combines the elements of waterfall model and they are applied in
an iterative fashion.
ii. The first increment in this model is generally a core product. Each increment builds the
product and submits it to the customer for any suggested modifications.
iii. The next increment implements on the customer’s suggestions and add additional
requirements in the previous increment.
• There are many situations in which initial software requirements are reasonably well defined, but
the overall scope of the development effort precludes a purely linear process.
• In addition, there may be a compelling need to provide a limited set of software functionality to
users quickly and then refine and expand on that functionality in later software releases.
• When an incremental model is used, the first increment is often a core product. That is, basic
requirements are addressed but many supplementary features (some known, others unknown)
remain undelivered.
• The plan addresses the modification of the core product to better meet the needs of the customer
and the delivery of additional features and functionality. This process is repeated following the
delivery of each increment, until the complete product is produced. vi. Advantages.
• This model is flexible because the cost of development is low and initial product delivery is faster.
• It is easier to test and debug during the smaller iteration.
• The working software generates quickly and early during the software life cycle.
vii. Disadvantages.
• The cost of the final product may cross the cost estimated initially.
• The planning of design is required before the whole system is broken into small increments.
• The demands of customer for the additional functionalities after every increment causes problem
during the system architecture.
iii. Software prototyping is becoming very popular as a software development model, as it enables
to understand customer requirements at an early stage of development.
iv. It helps get valuable feedback from the customer and helps software designers and
developers understand about what exactly is expected from the product under
development.
v. Advantages.
• Quicker user feedback is available leading to better solutions.
• Since a working model of the system is displayed, the users get a better understanding of
the system being developed.
• Increased user involvement in the product even before its implementation.
• Users are actively involved in development. Therefore, errors can be detected in the initial
stage of the software development process.
vi. Disadvantages.
• Poor documentation because the requirements of the customers are changing.
• Prototyping is a slow and time taking process.
• Inefficient algorithm and operating system.
• The Quality and maintainability is not build in system
(d) Spiral Model.
i. Spiral Model is a combination of a waterfall model and iterative model. Each phase in spiral
model begins with a design goal and ends with the client reviewing the progress.
ii. The development team in Spiral-SDLC model starts with a small set of requirement and goes
through each development phase for those set of requirements.
iii. The software engineering team adds functionality for the additional requirement in every-
increasing spirals until the application is ready for the production phase.
iv. Situation in which Spiral model is applicable.
• The prototyping paradigm assists you and other stakeholders to better understand what is
to be built when requirements are fuzzy.
• The prototyping paradigm begins with communication. You meet with other stakeholders
to define the overall objectives for the software, identify whatever requirements are known,
and outline areas where further definition is mandatory.
• Prototyping iteration is planned quickly, and modeling (in the form of a “quick design”)
occurs. A quick design focuses on a representation of those aspects of the software that will
be visible to end users (e.g., human interface layout or output display formats). The quick
design leads to the construction of a prototype.
• [U+F0B7] The prototype is deployed and evaluated by stakeholders, who provide feedback
that is used to further refine requirements. Iteration occurs as the prototype is tuned to
satisfy the needs of various stakeholders, while at the same time enabling you to better
understand what needs to be done.
• When long term project commitment is not feasible due to changes in economic priorities
Advantages.
• Users are actively involved in the development.
• Users get better understanding of the system being developed.
• Errors can be detected much earlier.
• Quick user feedback is available.
• There is always a space for customer feedback.
Disadvantages.
• Risk of not meeting the schedule or budget.
• Overall software quality or maintainability may not get considered when the prototype is
being developed.
• For its smooth operation spiral model protocol needs to be followed strictly.
• An inefficient algorithm may be implemented.
• Inappropriate OS or programming language maybe used simply because it is available.
2. Extreme Programming aims to provide iterative and frequent small releases throughout the project,
allowing both team members and customers to examine and review the project’s progress throughout
the entire SDLC.
3. Extreme Programming emphasizes teamwork. Managers, customers, and developers are all equal
partners in a collaborative team.
5. Extreme Programming improves a software project in five essential ways; communication, simplicity,
feedback, respect, and courage.
6. Extreme Programmers constantly communicate with their customers and fellow programmers. They
keep their design simple and clean.
7. They get feedback by testing their software starting on day one. They deliver the system to the
customers as early as possible and implement changes as suggested.
8. Every small success deepens their respect for the unique contributions of each and every team
member. With this foundation Extreme Programmers are able to courageously respond to changing
requirements and technology.
9. There are many small pieces. Individually the pieces make no sense, but when combined together a
complete picture can be seen.
3. Flexibility to developer.
4. Easy to manage.
2. Transfer of technology to new team member may be quite challenging due to lack of
documentation.
3. The characteristics of an ASD life cycle are that it is mission focused, feature based, iterative,
timeboxed, risk driven, and change tolerant.
4. ASD‘s overall emphasis on the dynamics of self-organizing teams, interpersonal collaboration, and
individual and team learning yield software project teams.
5. The method follows a dynamic lifecycle instead of the traditional, static lifecycle, Plan-Design-Build.
6. It is characterized by constant change, re-evaluation, peering into an uncertain future and intense
collaboration among developers, testers and customers.
• Adaptive cycle planning uses project initiation information, the customer’s mission statement, project
constraints (e.g. delivery date), and basic requirements to define the set of release cycles (increments)
that will be required for the project.
• Based on the information obtained at the completion of the first cycle, the plan is reviewed and
adjusted so that planned work better fits the reality.
(b) Collaboration.
• This phase consists of Concurrent component engineering. Effective collaboration with customer is
very important.
• Collaborate would require the ability to work jointly to produce results, share knowledge or make
decisions.
• More concern about collaboration and dealing with concurrency than about the details of designing,
testing, and coding.
(c) Learning.
• During the learning phase, the newest version of the software is released to users.
• This generates the bug and user reports used during the first phase of the project, and the cycle
repeats itself. During this phase components implemented and tested.
8. Advantages of ASD.
• Focused on the end users, which can lead to better and more intuitive products.
9. Disadvantages of ASD.
• Demands extensive user involvement, which can be difficult to facilitate.
• Integrates testing into every stage, which can add to a project’s costs.
• Emphasis on rapid iterating and continuous feedback can lead to scope creep.