Professional Documents
Culture Documents
Software is a set of instructions made in the form of written programs, procedures or rules and
associated documentation pertaining to the operation of a computer system and that are stored in
read/ write memory.
The IEEE Computer Society defines software engineering as The application of a systematic,
disciplined, quantifiable approach to the development, operation, and maintenance of software; that
is, the application of engineering to software.
Software Categories
• System software: serves as a base for application software. System software includes device
drivers, operating systems (OSs), compilers, disk formatters, text editors and utilities helping the
computer to operate more efficiently. It is also responsible for managing hardware components
and providing basic non-task-specific functions.
• Programming software: Is a set of tools to aid developers in writing programs. The various tools
available are compilers, linkers, debuggers, interpreters and text editors.
• Application software: is intended to perform certain tasks. Examples of application software
include office suites, gaming applications, database systems and educational software. Application
software can be a single program or a collection of small programs. This type of software is what
consumers most typically think of as "software."
What is a system?
• A system may include software, mechanical component, electrical and electronic hardware and be
operated by people.
An information system is software that helps you organize and analyze data. This makes it possible to
answer questions and solve problems relevant to the mission of an organization.
• Software engineering involves wider responsibilities than simply the application of technical skills.
• Software engineers must behave in an honest and ethically responsible way if they are to be
respected as professionals.
• Ethical behaviour is more than simply upholding the law.
• Confidentiality
Engineers should normally respect the confidentiality of their employers or clients
irrespective of whether or not a formal confidentiality agreement has been signed.
▪ Competence
Engineers should not misrepresent their level of competence. They should not knowingly
accept work which is out with their competence.
• Intellectual property rights
Engineers should be aware of local laws governing the use of intellectual property such as
patents, copyright, etc. They should be careful to ensure that the intellectual property of
employers and clients is protected.
• Computer misuse
Software engineers should not use their technical skills to misuse otherpeople’s computers.
Computer misuse ranges from relatively trivial (game playing on an employer’s machine,
say) to extremely serious (dissemination of viruses).
The Code contains Eight Principles related to the behaviour of and decisions made by professional
software engineers, including practitioners, educators, managers, supervisors and policy makers, as
well as trainees and students of the profession.
RUP has enabled great strides in development community standards and the acceptance of use cases and
unified modeling language (UML). RUP is comprised of three characteristics and a recurring four-phase
cycle.
RUP has the following key characteristics:
• Inception
– Establish the business case for the system.
• Elaboration
– Develop an understanding of the problem domain and the system architecture.
• Construction
– System design, programming and testing.
• Transition
– Deploy the system in its operating environment.
RUP iteration
• In-phase iteration
– Each phase is iterative with results developed incrementally.
• Cross-phase iteration
– As shown by the loop in the RUP model, the whole set of phases may be enacted
incrementally.
Requirements Actors who interact with the system are identified and use cases are
developed to model the system requirements.
Analysis and design A design model is created and documented using architectural models,
component models, object models and sequence models.
Implementation The components in the system are implemented and structured into
implementation sub-systems. Automatic code generation from design
models helps accelerate this process.
The following illustration is a representation of the Spiral Model, listing the activities in each phase.
Based on the customer evaluation, the software development process enters the next iteration and
subsequently follows the linear approach to implement the feedback suggested by the customer.
The process of iterations along the spiral continues throughout the life of the software.
The Spiral Model is widely used in the software industry as it is in sync with the natural
development process of any product, i.e. learning with maturity which involves minimum risk for
the customer as well as the development firms.
The following pointers explain the typical uses of a Spiral Model −
• When there is a budget constraint and risk evaluation is important.
• For medium to high-risk projects.
• Long-term project commitment because of potential changes to economic priorities as the
requirements change with time.
• Customer is not sure of their requirement which is usually the case.
• Requirements are complex and need evaluation to get clarity.
• New product line which should be released in phases to get enough customer feedback.
• Significant changes are expected in the product during the development cycle.
The advantage of spiral lifecycle model is that it allows elements of the product to be added in,
when they become available or known. This assures that there is no conflict with previous
requirements and design.
This method is consistent with approaches that have multiple software builds and releases which
allows making an orderly transition to a maintenance activity. Another positive aspect of this
method is that the spiral model forces an early user involvement in the system development effort.
On the other side, it takes a very strict management to complete such products and there is a risk of
running the spiral in an indefinite loop. So, the discipline of change and the extent of taking change
requests is very important to develop and deploy the product successfully.
The Waterfall
Model was first
Process Model to be
introduced. 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. Waterfall
model is the earliest
SDLC approach that
was used for software
development.
Prototype process
Types of Prototype
Throw-away prototypes
• Prototypes should be discarded after development as they are not a good basis for a production
system:
– It may be impossible to tune the system to meet non-functional requirements;
– Prototypes are normally undocumented;
– The prototype structure is usually degraded through rapid change;
– The prototype probably will not meet normal organizational quality standards.
Incremental delivery
• Rather than deliver the system as a single delivery, the development and delivery is broken down
into increments with each increment delivering part of the required functionality.
• User requirements are prioritised and the highest priority requirements are included in early
increments.
• Once the development of an increment is started, the requirements are frozen though
requirements for later increments can continue to evolve.
Activity Outcome
Prototype purpose Prototyping plan
Prototype functionality Outline definition
Prototype development Executable prototype
Prototype evaluation Evaluation report
Some examples of software prototype tools:
Sno Tool Runs on Prototype for
1 InVision Web ▪ Web
▪ ios
▪ Android
2 WebFlow Web All
3 JustInMind ▪ Windows ▪ Android
▪ OS X ▪ IOS
▪ Web
4 POP ▪ Web ▪ Web
▪ ios ▪ ios
▪ Android ▪ Android
5 Axure RP All ▪ OS x
▪ Windows
10. What are agile methods? Discuss the principles of agile methods.
The Agile Method is a particular approach to project management that is utilized in software
development. This method assists teams in responding to the unpredictability of constructing
software. It uses incremental, iterative work sequences that are commonly known as sprints.
just as easily have an end-user as a daily part of the team and attending all meetings, ensuring the
product meets the business needs of the customer.
4. Responding to Change Over Following a Plan
Traditional software development regarded change as an expense, so it was to be avoided. The
intention was to develop detailed, elaborate plans, with a defined set of features and with everything,
generally, having as high a priority as everything else, and with a large number of many dependencies on
delivering in a certain order so that the team can work on the next piece of the puzzle.
With Agile, the shortness of an iteration means priorities can be shifted from iteration to iteration and
new features can be added into the next iteration. Agile’s view is that changes always improve a project;
changes provide additional value.
The Twelve Principles are the guiding principles for the methodologies that are included under the title “The
Agile Movement.” They describe a culture in which change is welcome, and the customer is the focus of the
work. They also demonstrate the movement’s intent as described by Alistair Cockburn, one of the
signatories to the Agile Manifesto, which is to bring development into alignment with business needs.
The twelve principles of agile development include:
1. Customer satisfaction through early and continuous software delivery – Customers are happier when
they receive working software at regular intervals, rather than waiting extended periods of time
between releases.
2. Accommodate changing requirements throughout the development process – The ability to avoid
delays when a requirement or feature request changes.
3. Frequent delivery of working software – Scrum accommodates this principle since the team operates
in software sprints or iterations that ensure regular delivery of working software.
4. Collaboration between the business stakeholders and developers throughout the project – Better
decisions are made when the business and technical team are aligned.
5. Support, trust, and motivate the people involved – Motivated teams are more likely to deliver their
best work than unhappy teams.
6. Enable face-to-face interactions – Communication is more successful when development teams are
co-located.
7. Working software is the primary measure of progress – Delivering functional software to the
customer is the ultimate factor that measures progress.
8. Agile processes to support a consistent development pace – Teams establish a repeatable and
maintainable speed at which they can deliver working software, and they repeat it with each release.
9. Attention to technical detail and design enhances agility – The right skills and good design ensures the
team can maintain the pace, constantly improve the product, and sustain change.
10. Simplicity – Develop just enough to get the job done for right now.
11. Self-organizing teams encourage great architectures, requirements, and designs – Skilled and
motivated team members who have decision-making power, take ownership, communicate regularly
with other team members, and share ideas that deliver quality products.
12. Regular reflections on how to become more effective – Self-improvement, process improvement,
advancing skills, and techniques help team members work more efficiently.
The intention of Agile is to align development with business needs, and the success of Agile is apparent. Agile
projects are customer focused and encourage customer guidance and participation. As a result, Agile has
grown to be an overarching view of software development throughout the software industry and an industry
all by itself.
The various agile Scrum methodologies share much of the same philosophy, as well as many of the
same characteristics and practices. But from an implementation standpoint, each has its own recipe
of practices, terminology, and tactics. Here we have summarized a few of the main agile software
development methodology contenders:
XP is a lightweight, efficient, low-risk, flexible, predictable, scientific, and fun way to develop a software.
eXtreme Programming (XP) was conceived and developed to address the specific needs of software
development by small teams in the face of vague and changing requirements.
Extreme Programming is one of the Agile software development methodologies. It provides values and
principles to guide the team behavior. The team is expected to self-organize. Extreme Programming provides
specific core practices where −
• Each practice is simple and self-complete.
• Combination of practices produces more complex and emergent behavior.
Embrace Change
A key assumption of Extreme Programming is that the cost of changing a program can be held mostly
constant over time.
This can be achieved with −
• Emphasis on continuous feedback from the customer
• Short iterations
• Design and redesign
• Coding and testing frequently
• Eliminating defects early, thus reducing costs
• Keeping the customer involved throughout the development
• Delivering working product to the customer
Extreme Programming in a Nutshell
Extreme Programming involves −
• Writing unit tests before programming and keeping all of the tests running at all times. The unit
tests are automated and eliminate defects early, thus reducing the costs.
• Starting with a simple design just enough to code the features at hand and redesigning when
required.
• Programming in pairs (called pair programming), with two programmers at one screen, taking
turns to use the keyboard. While one of them is at the keyboard, the other constantly reviews
and provides inputs.
• Integrating and testing the whole system several times a day.
• Putting a minimal working system into the production quickly and upgrading it whenever
required.
• Keeping the customer involved all the time and obtaining constant feedback.
• The principal responsibility of software project managers is to manage the project so that the
software is delivered on time and within the planned budget for the project.
• The standard approach to project management is plan-driven. Managers draw up a plan for
the project showing what should be delivered, when it should be delivered and who will work
on the development of the project deliverables.
• Agile project management requires a different approach, which is adapted to incremental
development and the particular strengths of agile methods.
What is Scrum?
Scrum is a simple empirical process that enables teams to build products incrementally in iterations, to keep
abreast of the changing market needs and align themselves to the organization's business goals.
▪ Scrum advocates self-organizing teams working towards a common goal through continuous
inspection and adaptation.
▪ A minimum viable product at the end of each iteration provides an option for the teams to quickly
get feedback from end users and respond much faster.
"Scrum is an agile process that allows us to focus on delivering the highest business
value in the shortest time.“
- Mike Cohn, Mountain Goat Software
•
•
• There are three phases in Scrum.
– The initial phase is an outline planning phase where you establish the general objectives for
the project and design the software architecture.
– This is followed by a series of sprint cycles, where each cycle develops an increment of the
system.
– The project closure phase wraps up the project, completes required documentation such as
system help frames and user manuals and assesses the lessons learned from the project.
Scrum Methodology
Scrum forms the base for many of the other frameworks and hence it is important for an agile practitioner to
understand this methodology.
The Scrum Methodology is defined by:
• Scrum Roles -> A Product Owner, a Scrum Master and the Development Team
• Scrum Events -> Sprint planning , Daily scrum , Sprint review, Sprint retrospective
• Scrum Artifacts-> Product backlog, Sprint backlog, Increment
• Scrum Values -> Commitment, Courage, Focus, Openness, and Respect
Product Owner:
• A Product Owner in a scrum team decides what needs to be built. This person has complete
knowledge about the market and business needs, has a vision, and owns the return on investment
(ROI) or the value delivered by the product.
• Unlike traditional delivery, this person is a part of the team that delivers the product.
• Following are the key responsibilities of the Product Owner:
• Creates the vision
• Represents business, and is responsible for the ROI
• Cascades the vision to the teams
• Owns the backlog of features
• Prioritizes features by market value
• Is empowered to take decisions
• Negotiates with the team and business to deliver the right product at the right time
•
Roles:
• Scrum Master:
• The Scrum Master is not a management title and cannot make decisions on behalf of the
team. The Scrum Master's major responsibility is to ensure that scrum is understood and practiced by
every team member in the true spirit.
• The Scrum Master should understand the different skill sets of his or her team and group
them by having the right sheep in the right flock. A Scrum Master should guide the team such that
the team does not go astray and fall prey to excess time and energy.
A Scrum Master:
• Is a servant leader - mentors and coaches the teams on scrum theory and practices, guides
them on how they need to adapt to those, thereby realizing the benefits of scrum both at
team level and organization level.
• Facilitates collaboration - enables interactions within the team as well as between the team
and the Product Owner.
• Protects the teams - from external disruptions such as changes to stories in the current
sprint.
• Is a change agent - in growing the organization to deliver early and often, and removing
waste.
• Small-sized - the Development team should ideally have 5 to 9 team members with skills
sufficient to deliver the committed work. Smaller teams will not have the bandwidth to
complete a considerable work and larger teams will increase the complexity.
• Co-located - the agile team is typically co-located to ensure effective collaboration.
• Committed - since the team is empowered to take decisions on the scope of work in a sprint,
they are committed to delivery, should be transparent on the progress, and highlight the
impediments early on.
• Dedicated - this team is focused and is 100% dedicated to product delivery.
Artifcats:
• Scrum focuses more on a working software at the end of every sprint rather than comprehensive
documentation.
• The documentation is to facilitate collaboration and interactions, rather than tracking.
• The progress is always measured through a working software.
Documentation in scrum is only through three main artifacts namely:
▪ Product backlog,
▪ Sprint backlog,
▪ Increment.
Scrum Values
Scrum also states five core values to which teams have to adhere.
The core values are:
▪ Commitment,
▪ Courage,
▪ Focus,
▪ Openness, and
▪ Respect.
These values should be imbibed and lived by the scrum team to ensure the fulfilment of scrum pillars of
transparency, inspection, and adaptation. It builds trust among everyone
Important Questions
1. Describe important attribute which all software product should have.
2. Explain FAQ’s of software engineering.
3. Discuss the various issues in software engineering professional ethics/ responsibility.
4. Explain ACM/IEEE code of ethics and suggest an appropriate example that illustrates that clause.
5. Explain in detail the Incremental Development Process with a neat block diagram.
6. Explain the Rational Unified Process in detail.
7. Explain Spiral model of Software Process with neat diagram.
8. Explain how the universal use of the Web has changed software systems.
9. Explain why change is Inevitable in complex systems and explain how
10. Explain Prototyping of software process help to more resilient to change?
11. What are agile methods? Discuss the principles of agile methods.
12. What are the practices followed in extreme programming
13. What is software Process Model? Explain with a diagram the Waterfall model and discuss its
advantages and disadvantages.