Software Requirement Engineering
COMSATS University,
Park Road, Chak Shahzad, Islamabad Pakistan
Assignment 1 & 2
By
Babar Khan CIIT/FA18-RSE-007/ISB
Submitted to
Dr. Javaid Iqbal
1
FA18-RSE-007
Software Requirement Engineering
Assignment # 1
Summary of “A Systematic Study on Agile Software Development
Methodologies and Practices”
1. Introduction
Agile development methodologies have been the point of focus in research community in last
decade. Researchers aimed to tighten the connection between software engineering lifecycle
activities e.g. planning, requirement management, design, development, testing and maintenance.
This paper explains the values and principles of ten agile practices that are becoming more and
more dominant in the software development industry. Agile processes are not always beneficial,
they have some limitations as well, and this paper also discusses the advantages and
disadvantages of agile processes.
Agile Development Methodologies
In XP, the "Customer" works very closely with the development team to define and prioritize
granular units of functionality referred to as "User Stories". The development team estimates,
plans, and delivers the highest priority user stories in the form of working, tested software on an
iteration-by-iteration basis.
Scrum is a lightweight agile project management framework with broad applicability for
managing and controlling iterative and incremental projects of all types. Scrum has garnered
increasing popularity in the agile software development community due to its simplicity, proven
productivity, and ability to act as a wrapper for various engineering practices promoted by other
agile methodologies.
The main principles of Lean methodology include:
Eliminating Waste
Amplifying Learning
Deciding as Late as Possible
Delivering as Fast as Possible
Empowering the Team
Building Integrity In
Seeing the Whole
Lean methodology eliminates waste through such practices as selecting only the truly valuable
features for a system, prioritizing those selected, and delivering them in small batches. It
emphasizes the speed and efficiency of development workflow, and relies on rapid and reliable
feedback between programmers and customers.
2
FA18-RSE-007
Software Requirement Engineering
Kanban is based on 3 basic principles:
Visualize what you do today (workflow): seeing all the items in context of each other can be
very informative
Limit the amount of work in progress (WIP): this helps balance the flow-based approach so
teams don’t start and commit to too much work at once
Enhance flow: when something is finished, the next highest thing from the backlog is pulled
into play. Kanban promotes continuous collaboration and encourages active, ongoing learning
and improving by defining the best possible team workflow.
The Crystal methodology is one of the most lightweight, adaptable approaches to software
development. Crystal is actually comprised of a family of agile methodologies such as Crystal
Clear, Crystal Yellow, Crystal Orange and others, whose unique characteristics are driven by
several factors such as team size, system criticality, and project priorities.
Agile Unified Process describes a simple, easy to understand approach to developing business
application software using agile techniques and concepts yet still remaining true to the RUP. In
2012, the AUP was superseded by Disciplined Agile Delivery. Since then work has ceased on
evolving AUP.
Adaptive Software Development is a method for creating and developing software systems. It
offers solutions for the development of large and complex systems by incremental and iterative
development, with constant prototyping. It involves product initiation, adaptive cycle planning,
concurrent feature development, quality review, and final quality assurance and release. It relies
on team members’ work at peer level. Usually customer doesn’t have all the requirements in the
beginning and act as a member with the concept of progressive elaboration.
DSDM, dating back to 1994, grew out of the need to provide an industry standard project
delivery framework for what was referred to as Rapid Application Development (RAD) at the
time. Feature Driven Development is a model-driven, short-iteration process. It begins with
establishing an overall model shape. Then it continues with a series of two-week "design by
feature, build by feature" iterations. The features are small, "useful in the eyes of the client"
results.
Advantages of Agile models:
Customer satisfaction by rapid, continuous delivery of useful software.
People and interactions are emphasized
Working software is delivered frequently
Face-to-face conversation
Close daily cooperation between business people and developers.
3
FA18-RSE-007
Software Requirement Engineering
Regular adaptation to changing circumstances.
Even late changes in requirements are welcomed.
Disadvantages of Agile models:
In case of some software deliverables, especially the large ones, it is difficult to assess the
effort required at the beginning of the software development life cycle.
Lack of emphasis on necessary designing and documentation.
The project can easily get taken off track if the customer representative is not clear what
final outcome that they want.
No place for newbie programmers, unless combined with experienced resources.
4
FA18-RSE-007
Software Requirement Engineering
Assignment # 2
Summary of “Requirements Elicitation Techniques Applied in
Software Startups”
Introduction
Requirement elicitation has well established importance among researchers and practitioners. It
represents an early but continuous and critical stage in development of software system. The
requirement elicitation techniques introduced in literature mainly focuses on development of
large systems in large organization. But software startups are different from large organizations
in terms of adopted process, talent pool, maturity and much more. In such context, requirement
elicitation process for startups is different from the generic process which is used to elicit
requirements for large systems. Therefore, there is need to understand the good elicitation
process that can be beneficial for such startups.
Purpose of Study
The purpose of this research study is to find the current practices of startups related to
requirements elicitation process. The main research question that helps in carry research is:
Q1: How do software startups conduct requirements elicitation?
Only few studies have addressed requirement elicitation process in software startups and this
research attempts to address this knowledge gap by answering the research question Q1.
Research Methodology
This empirical study uses case study method to investigate how software startups use
requirements elicitation techniques by keeping in mind the contextual information about the
startups. The three cases were carefully selected according to data needed to address research
question. The profiles of startups are given below in table:
Profiles Startup 1 Startup 2 Startup 3
Location Canada Italy Brazil
Launched 2014 2014 2012
Founders 2 2 5
Employees 4 6 25
Developers 1 1 5
Product Stage Conceptual Functional Mature
Domain Health, Fitness E-commerce E-commerce
Product Type Mobile App Web and Mobile App Web App
Profiles of Startups
5
FA18-RSE-007
Software Requirement Engineering
Data Collection and Analysis
The researchers first identified the key informant from each startup who either was Chief
Technical Officer (CTO) or senior developer. Semi structured interviews with open-ended
questions were conducted to collect data from them. The duration of each interview was 60 to 90
minutes. Each interview was transcribed verbatim for further analysis. Further, the website of
each startup was thoroughly inspected to extract more information.
Then within-case analysis and cross-case comparison was conducted. At last, NVivo data
analysis tool was used to analyze qualitative data by using open coding and axial coding
strategies.
Findings
Requirements elicitation process involves number of activities in all three startups, however,
frequency and intensity of these activities depends on startups. Startup 1 and 3 make use user
research technique to elicit requirements. User research is conducted by applying several
requirements elicitation techniques. Startup 2 derived initial requirements by the team and user
was not involved in first phase. The list of techniques used by different startups is given below in
table. Here “1” means technique used and “0” means not used by startup.
Profiles Startup 1 Startup 2 Startup 3
Existing Techniques
Interview 1 1 1
Prototyping 1 1 1
Brainstorming 1 1 0
Questionnaires 1 0 0
Social Networks 1 0 0
Feedback 1 0 0
New Techniques
Similar products 1 1 1
Collaborative team 1 1 1
Model Users 1 1 0
List of Techniques
Interviews and prototyping is used in all startups. However, they use these techniques according
to their own need. Brain storming is used by startup 1 and 2 only. Questionnaires, use of social
network and feedback techniques are only used by startup. Analysis of similar products or
competitors, collaborative team discussion and involvement of model users - were considered
new techniques since they are not covered by the list of existing techniques in Figure 1. Startups
1 and 2 have model users to validate raw requirements and improve them by their feedback.
6
FA18-RSE-007
Software Requirement Engineering
Conclusion
The conclusion we can made from this study is that the requirements elicitation process in
startups is primordial and mainly informal, and it is an ongoing process alongside with product
evolution. They do not identify stakeholders and most requirements are centered on a pre-
conceived idea, which results in the set of requirements based on owner’s knowledge of market
and assumptions. Further, at the early stage of development, startups implement all elicitation
techniques as we see in the case of startup 1. This study can be used as stepping stone and
research can be enhanced by increasing the number of startups from which different type of
projects can be tested.
7
FA18-RSE-007