Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Software is (1) instructions (computer programs) that when executed provide desired
function and performance, (2) data structures that enable the programs to adequately
manipulate information, and (3) documents that describe the operation and use of the
programs.
Web-based software. The Web pages retrieved by a browser are software that
incorporates executable instructions (e.g., CGI, HTML, Perl, or Java), and data (e.g
hypertext and a variety of visual and audio formats). In essence, the network becomes a
massive computer providing an almost unlimited software resource that can be accessed
by anyone with a modem.
Artificial intelligence software. Artificial intelligence (AI) software makes use
of non numerical algorithms to solve complex problems that are not amenable to
computation or straightforward analysis. Expert systems, also called knowledge based
systems, pattern recognition (image and voice), artificial neural networks,
theorem proving, and game playing are representative of applications within this
category.
Software Myths
• Software myths propagate false beliefs and confusion in the minds of
management, users and developers.
• Managers, who own software development responsibility, are often under strain
and pressure to maintain a software budget, time constraints, improved quality,
and many other considerations.
• Common management myths are listed in Table.
• User Myths
• Developer Myths
• Software development is considered • 50% to 70% of all the efforts are
complete when the code is delivered. expended after the software is delivered
to the user.
• The success of a software project • The quality of programs is not the only
depends on the quality of the product factor that makes the project successful
produced. instead the documentation and software
configuration also plays crucial role.
• Software quality can be assessed only • The quality of software can be measured
after the program is executed. during any phase of development process
by applying some quality assurance
mechanism. One such mechanism is
formal technical review that can be
effectively used during each phase of
development to uncover certain errors.
Quality focus
The characteristics of good quality software are:
• The bedrock that supports software engineering is a quality focus
• Every organization commited to quality.
• Correctness of the functions required to be performed by the software.
• Maintainability of the software
• Integrity i.e. providing security so that the unauthorized user cannot access
information or data.
• Usability i.e. the efforts required to use or operate the software.
2. Process
• It is the base layer or foundation layer for the software engineering.
• SE process is the GLUE that holds all the technology layers together and enables the
timely development of computer software.
• It defines a framework that includes different activities and tasks.
• In short, it covers all activities, actions and tasks required to be carried out for software
development.
3. Methods
• The method provides the answers of all 'how-to' that are asked during the process.
• It provides the technical way to implement the software.
• It includes collection of tasks starting from communication, requirement analysis,
analysis and design modelling, program construction, testing and support.
4. Tools
• The software engineering tool is an automated support for the software development.
• 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.
: Figma is an interface design tool that enables multiple designers to
collaborate in real-time
Process Framework
• The process of framework defines a small set of activities that are applicable to all types
of projects.
• The software process framework is a collection of task sets.
• Task sets consist of a collection of small work tasks, project milestones, work
productivity and software quality assurance points.
The following generic process framework is applicable to the vast majority of software
projects :
1. Communication: This framework activity involves heavy communication and
collaboration with the customer (and other stakeholders) and encompasses
requirements gathering and other related activities.
Action –Requirement gathering
Tasks- 1. Make list of stakeholder
2. Invite all stake holder to an informal meeting
3. Ask for features and function required
4. Discuss requirement and build final list
5. Prioritize requirement
2. 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.
3. Modeling: This activity encompasses the creation of models that allow the developer
and the customer to better understand software requirements and the design that will
achieve those requirements.
Action 1- Analysis
Tasks 1. Requirement Gathering
2. Elaboration
3. Negotiation
4. Specification
5. Validation
Action 2-Design
Tasks 1.Data design
2.interface design
3.Component level design
• The overall flow of activities and tasks and their interdependencies among
activities and tasks
• The degree to which work tasks are defined wthin each framework
• The Capability Maturity Model (CMM) is a methodology used to develop and refine
an organization's software process. The model describes a five-level evolutionary
path of increasingly organized and systematically more mature processes.
• To determine an organization’s current state of process maturity’s the SEI uses an
assessment that results in a five point grading scheme
• Capability Maturity Model is a bench-mark for measuring the maturity of an
organization’s software process. To determine an organization’s current state of
process maturity, the SEI uses an assessment that results in a five point grading
scheme.
• Each level ranks the organization according to its standardization of processes in the
subject area being assessed.
• CMMI represent process meta model in two ways, Continuous Model, staged
model
• Continuous Model-it describes a process in two dimensional process area capability
profile
Each process area is formally assessed against specific goal and rated according
following capability levels
• Level 0 Incomplete—the process area e.g.(requirement management) is not
performed or does not achieve all goals defined by CMMI level 1.
• Level 1 Performed: All specific goals of this process area have been achieved Work
task require to produce work product are being conducted.
• Level 2 – Managed: All work associated with process area are being conformed to
an organizationally defined policy. All people doing work have access to resources to
get job done. Stakeholders are actively involved in process area as required. All work
tasks and work products are monitored, controlled and reviewed.
• Level 3: At the defined level, an organization has developed its own standard
software process through greater attention to documentation, standardization, and
integration. All projects use an approved version of the organizations standard
software process for developing and maintaining software.
• System Design: The requirement specifications from first phase are studied in
this phase and system design is prepared. System Design helps in specifying
hardware and system requirements and also helps in defining overall system
architecture. The software code to be written in the next stage is created now.
• Implementation: With inputs from system design, the system is first developed
in small programs called units, which are integrated in the next phase. Each unit
is developed and tested for its functionality which is referred to as Unit Testing.
• Integration and Testing: All the units developed in the implementation phase
are integrated into a system after testing of each unit. The software designed,
needs to go through constant software testing to find out if there are any flaw or
errors. Testing is done so that the client does not face any problem during the
installation of the software.
• It is often difficult for the customer to state all requirements explicitly. The linear
sequential model requires this and has difficulty accommodating the natural uncertainty
that exists at the beginning of many 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.
• The incremental model combines the elements of waterfall model and they are applied
in an iterative fashion.
• The incremental model delivers software in small but usable pieces, called “increments.”
In general, each increment builds on those that have already been delivered.
• 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.
• The next increment implements on the customer's suggestions and add additional
requirements in the previous increment.
This process is repeated until the product is finished.
For example, For example, word-processing software developed using the
incremental Model it might deliver basic file management, editing, and document
production functions in the first increment; more sophisticated editing and document
production capabilities in the second increment; spelling and grammar checking in the
third increment; and advanced page layout capability in the fourth increment.
• For example, a major system might require the availability of new hardware that is
underdevelopment and whose delivery date is uncertain. It might be possible to plan
early increments in a way that avoids the use of this hardware, thereby enabling partial
functionality to be delivered to end-users without inordinate delay.
RAD model
1. Business Modeling
• Business modeling consist of the flow of information between various functions in the
project.
• For example what type of information is produced by every function and which are the
functions to handle that information.
• A complete business analysis should be performed to get the essential business
information.
2. Data modeling
• The information in the business modeling phase is refined into the set of objects and it is
essential for the business.
• The attributes of each object are identified and define the relationship between objects.
3. Process modeling
• The data objects defined in the data modeling phase are changed to fulfil the information
flow to implement the business model.
• The process description is created for adding, modifying, deleting or retrieving a data
object.
4. Application generation
• In the application generation phase, the actual system is built.
• To construct the software the automated tools are used.
5. Testing and turnover
• The prototypes are independently tested after each iteration so that the overall testing time
is reduced.
• The data flow and the interfaces between all the components are are fully tested. Hence,
most of the programming components are already tested.
Like all process models, the RAD approach has drawbacks :
• For large but scalable projects, RAD requires sufficient human resources to
create the right number of RAD teams.
• RAD requires developers and customers who are committed to the rapid-fire
activities necessary to get a system complete in a much abbreviated time
frame. If commitment is lacking from either constituency, RAD projects will fail.
• Not all types of applications are appropriate for RAD. If a system cannot be
properly modularized, building the components necessary for RAD will be
problematic.
• RAD is not appropriate when technical risks are high. This occurs when a new
application makes heavy use of new technology
Evolutionary Process Models
Often, a customer defines a set of general objectives for software but does not identify
detailed input, processing, or output requirements. In other cases, the developer may be
unsure of the efficiency of an algorithm, the adaptability of an operating system, or the
form that human/machine interaction should take. In these, and many other situations,
a Prototyping paradigm may offer the best approach.
• Prototype is defined as first or preliminary form using which other forms are
copied or derived.
• Prototype model is a set of general objectives for software.
• It does not identify the requirements like detailed input, output.
• It is software working model of limited functionality.
• In this model, working programs are quickly produced.
(i) Communication :
Firstly, developer and customer meet and define the overall objectives, requirements,
and outline areas where further definition is mandatory.
(ii) Quick Plan : Based on the requirements and others of the communication part a
quick plane is made to design the software.
(iii) Modeling Quick Design : Based on the quick plane, ‘A Quick Design’ occurs. The
quick design focuses on a representation of those aspects of the software that will be
visible to the customer/user, such as input approaches and output formats.
(iv) Construction of Prototype : The quick design leads to the construction of a
prototype.
(i) In the rush to get the software working the overall software quality or long-term
maintainability will not get consideration. So software, in that way, gets the need of
excessive modification to ensure quality.
(ii) The developer may choose inappropriate operating system, algorithms, language in
the rush to make the prototype working.
Spiral model
• The spiral model is an evolutionary software process model that combines the iterative
nature of prototyping with the controlled and systematic aspects of the linear sequential
model.
• Using the spiral model, software is developed in a series of incremental releases.
• During early iterations, the incremental release might be a paper model or prototype.
• During later iterations, increasingly more complete versions of the engineered system
are produced.
• 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.
• The development team adds functionality for the additional requirement in every-
increasing spirals until the application is ready for the production phase.
• The spiral model is similar to the incremental model, with more emphasis placed on risk
analysis.
• A software project repeatedly passes through these phases in iterations (called Spirals
in this model).