Unit 1
Unit 1
Unit 1
AD
AD
Good communication skills. These skills comprise of oral, written, and interpersonal
skills.
High motivation.
Intelligence.
Discipline, etc.
AD
Software Processes
The term software specifies to the set of computer programs, procedures and
associated documents (Flowcharts, manuals, etc.) that describe the program and how
they are to be used.
A software process is the set of activities and associated outcome that produce a
software product. Software engineers mostly carry out these activities. These are four
key process activities, which are common to all software processes. These activities
are:
1. A workflow model: This shows the series of activities in the process along
with their inputs, outputs and dependencies. The activities in this model
perform human actions.
2. 2. A dataflow or activity model: This represents the process as a set of
activities, each of which carries out some data transformations. It shows how
the input to the process, such as a specification is converted to an output such
as a design. The activities here may be at a lower level than activities in a
workflow model. They may perform transformations carried out by people or
by computers.
3. 3. A role/action model: This means the roles of the people involved in the
software process and the activities for which they are responsible.
1. The waterfall approach: This takes the above activities and produces them as
separate process phases such as requirements specification, software design,
implementation, testing, and so on. After each stage is defined, it is "signed
off" and development goes onto the following stage.
2. Evolutionary development: This method interleaves the activities of
specification, development, and validation. An initial system is rapidly
developed from a very abstract specification.
3. Formal transformation: This method is based on producing a formal
mathematical system specification and transforming this specification, using
mathematical methods to a program. These transformations are 'correctness
preserving.' This means that you can be sure that the developed programs
meet its specification.
4. System assembly from reusable components: This method assumes the
parts of the system already exist. The system development process target on
integrating these parts rather than developing them from scratch.
Software Crisis
1. Size: Software is becoming more expensive and more complex with the
growing complexity and expectation out of software. For example, the code in
the consumer product is doubling every couple of years.
2. Quality: Many software products have poor quality, i.e., the software products
defects after putting into use due to ineffective testing technique. For
example, Software testing typically finds 25 errors per 1000 lines of code.
3. Cost: Software development is costly i.e. in terms of time taken to develop
and the money involved. For example, Development of the FAA's Advanced
Automation System cost over $700 per lines of code.
4. Delayed Delivery: Serious schedule overruns are common. Very often the
software takes longer than the estimated time to develop, which in turn leads
to cost shooting up. For example, one in four large-scale development
projects is never completed.
Level-1: Initial
No KPIs defined.
Processes followed are Adhoc and immature and are not well defined.
Unstable environment for software development.
No basis for predicting product quality, time for completion, etc.
Limited project management capabilities, such as no systematic tracking
of schedules, budgets, or progress.
We have limited communication and coordination among team members
and stakeholders.
No formal training or orientation for new team members.
Little or no use of software development tools or automation.
Highly dependent on individual skills and knowledge rather than
standardized processes.
High risk of project failure or delays due to a lack of process control and
stability.
Level-2: Repeatable
Focuses on establishing basic project management policies.
Experience with earlier projects is used for managing new similar-
natured projects.
Project Planning- It includes defining resources required, goals,
constraints, etc. for the project. It presents a detailed plan to be followed
systematically for the successful completion of good-quality software.
Configuration Management- The focus is on maintaining the
performance of the software product, including all its components, for
the entire lifecycle.
Requirements Management- It includes the management of customer
reviews and feedback which result in some changes in the requirement
set. It also consists of accommodation of those modified requirements.
Subcontract Management- It focuses on the effective management of
qualified software contractors i.e. it manages the parts of the software
developed by third parties.
Software Quality Assurance- It guarantees a good quality software
product by following certain rules and quality standard guidelines while
developing.
Level-3: Defined
At this level, documentation of the standard guidelines and procedures
takes place.
It is a well-defined integrated set of project-specific software engineering
and management processes.
Peer Reviews: In this method, defects are removed by using several
review methods like walkthroughs, inspections, buddy checks, etc.
Intergroup Coordination: It consists of planned interactions between
different development teams to ensure efficient and proper fulfillment of
customer needs.
Organization Process Definition: Its key focus is on the development
and maintenance of standard development processes.
Organization Process Focus: It includes activities and practices that
should be followed to improve the process capabilities of an
organization.
Training Programs: It focuses on the enhancement of knowledge and
skills of the team members including the developers and ensuring an
increase in work efficiency.
Level-4: Managed
At this stage, quantitative quality goals are set for the organization for
software products as well as software processes.
The measurements made help the organization to predict the product and
process quality within some limits defined quantitatively.
Software Quality Management: It includes the establishment of plans
and strategies to develop quantitative analysis and understanding of the
product’s quality.
Quantitative Management: It focuses on controlling the project
performance quantitatively.
Level-5: Optimizing
This is the highest level of process maturity in CMM and focuses on
continuous process improvement in the organization using quantitative
feedback.
The use of new tools, techniques, and evaluation of software processes is
done to prevent the recurrence of known defects.
Process Change Management: Its focus is on the continuous
improvement of the organization’s software processes to improve
productivity, quality, and cycle time for the software product.
Technology Change Management: It consists of the identification and
use of new technologies to improve product quality and decrease product
development time.
Defect Prevention It focuses on the identification of causes of defects
and prevents them from recurring in future projects by improving
project-defined processes.
Spiral Model
The spiral model, initially proposed by Boehm, is an evolutionary software process
model that couples the iterative feature of prototyping with the controlled and
systematic aspects of the linear sequential model. It implements the potential for
rapid development of new versions of the software. Using the spiral model, the
software is developed in a series of incremental releases. During the early iterations,
the additional release may be a paper model or prototype. During later iterations,
more and more complete versions of the engineered system are produced.
Objective setting: Each cycle in the spiral starts with the identification of purpose for
that cycle, the various alternatives that are possible for achieving the targets, and the
constraints that exists.
Risk Assessment and reduction: The next phase in the cycle is to calculate these
various alternatives based on the goals and constraints. The focus of evaluation in
this stage is located on the risk perception for the project.
Development and validation: The next phase is to develop strategies that resolve
uncertainties and risks. This process may include activities such as benchmarking,
simulation, and prototyping.
Planning: Finally, the next step is planned. The project is reviewed, and a choice
made whether to continue with a further period of the spiral. If it is determined to
keep, plans are drawn up for the next step of the project.
The development phase depends on the remaining risks. For example, if performance
or user-interface risks are treated more essential than the program development
risks, the next phase may be an evolutionary development that includes developing a
more detailed prototype for solving the risks.
The risk-driven feature of the spiral model allows it to accommodate any mixture of
a specification-oriented, prototype-oriented, simulation-oriented, or another type of
approach. An essential element of the model is that each period of the spiral is
completed by a review that includes all the products developed during that cycle,
including plans for the next cycle. The spiral model works for development as well as
enhancement projects.
Advantages
Disadvantages
Agile Model
The meaning of Agile is swift or versatile. “Agile process model" refers to a software
development approach based on iterative development. Agile methods break tasks
into smaller iterations, or parts do not directly involve long term planning. The
project scope and requirements are laid down at the beginning of the development
process. Plans regarding the number of iterations, the duration and the scope of
each iteration are clearly defined in advance.
Each iteration is considered as a short time "frame" in the Agile process model, which
typically lasts from one to four weeks. The division of the entire project into smaller
parts helps to minimize the project risk and to reduce the overall project delivery
time requirements. Each iteration involves a team working through a full software
development life cycle including planning, requirements analysis, design, coding, and
testing before a working product is demonstrated to the client.
1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback
1. Requirements gathering: In this phase, you must define the requirements. You
should explain business opportunities and plan the time and effort needed to build
the project. Based on this information, you can evaluate technical and economic
feasibility.
2. Design the requirements: When you have identified the project, work with
stakeholders to define requirements. You can use the user flow diagram or the high-
level UML diagram to show the work of new features and show how it will apply to
your existing system.
3. Construction/ iteration: When the team defines the requirements, the work
begins. Designers and developers start working on their project, which aims to
deploy a working product. The product will undergo various stages of improvement,
so it includes simple, minimal functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's
performance and looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work
environment.
6. Feedback: After releasing the product, the last step is feedback. In this, the team
receives feedback about the product and works through the feedback.
Scrum
SCRUM is an agile development process focused primarily on ways to manage tasks
in team-based development conditions.
AD
eXtreme Programming(XP)
This type of methodology is used when customers are constantly changing demands
or requirements, or when they are not sure about the system's performance.
Crystal:
There are three concepts of this method-
1. Time Boxing
2. MoSCoW Rules
3. Prototyping
The DSDM project contains seven stages:
1. Pre-project
2. Feasibility Study
3. Business Study
4. Functional Model Iteration
5. Design and build Iteration
6. Implementation
7. Post-project
AD
1. Eliminating Waste
2. Amplifying learning
3. Defer commitment (deciding as late as possible)
4. Early delivery
5. Empowering the team
6. Building Integrity
7. Optimize the whole
AD
Requirement Engineering
Requirements engineering (RE) refers to the process of defining, documenting, and
maintaining requirements in the engineering design process. Requirement
engineering provides the appropriate mechanism to understand what the customer
desires, analyzing the need, and assessing feasibility, negotiating a reasonable
solution, specifying the solution clearly, validating the specifications and managing
the requirements as they are transformed into a working system. Thus, requirement
engineering is the disciplined application of proven principles, methods, tools, and
notation to describe a proposed system's intended behavior and its associated
constraints.
1. Feasibility Study:
The objective behind the feasibility study is to create the reasons for developing the
software that is acceptable to users, flexible to change and conformable to
established standards.
Types of Feasibility:
1. Technical Feasibility: This looks at whether the technology needed to
create a software solution is available, reliable, and within the project's
budget and timeline.
2. Operational Feasibility: This assesses whether the software, once
developed, can effectively address the business needs and problems it
was designed for. It looks at how well the software integrates into
existing operations and processes.
3. Economic Feasibility: This evaluates whether developing and
implementing the software will bring financial benefits to the
organization. It considers factors like cost of development, potential
savings or revenue generation, and return on investment (ROI).
The models used at this stage include ER diagrams, data flow diagrams (DFDs),
function decomposition diagrams (FDDs), data dictionaries, etc.
o Data Flow Diagrams: Data Flow Diagrams (DFDs) are used widely for
modeling the requirements. DFD shows the flow of data through a system.
The system may be a company, an organization, a set of procedures, a
computer hardware system, a software system, or any combination of the
preceding. The DFD is also known as a data flow graph or bubble chart.
o Data Dictionaries: Data Dictionaries are simply repositories to store
information about all data items defined in DFDs. At the requirements stage,
the data dictionary should at least define customer data items, to ensure that
the customer and developers use the same definition and terminologies.
o Entity-Relationship Diagrams: Another tool for requirement specification is
the entity-relationship diagram, often called an "E-R diagram." It is a detailed
logical representation of the data for the organization and uses three main
constructs i.e. data entities, relationships, and their associated attributes.
AD
The business and technical environment of the system changes during the
development.
AD
o Clear
o Correct
o Consistent
o Coherent
o Comprehensible
o Modifiable
o Verifiable
o Prioritized
o Unambiguous
o Traceable
o Credible source
1. Functional Requirements:
2. Non-functional Requirements:
Categories:
1. Data Dictionary:
It is a repository that consists of a description of all data objects used or
produced by the software. It stores the collection of data present in the
software. It is a very crucial element of the analysis model. It acts as a
centralized repository and also helps in modeling data objects defined
during software requirements.
5. Process Specification:
It stores the description of each function present in the data flow
diagram. It describes the input to a function, the algorithm that is applied
for the transformation of input, and the output that is produced. It also
shows regulations and barriers imposed on the performance
characteristics that apply to the process and layout constraints that could
influence how the process will be implemented.
6. Control Specification:
It stores additional information about the control aspects of the software.
It is used to indicate how the software behaves when an event occurs and
which processes are invoked due to the occurrence of the event. It also
provides the details of the processes which are executed to manage
events.