Analysis And Design Of Software Development Information Technology Essay

Published: November 30, 2015 Words: 2325

The software technology is evolving at a very rapid pace. Large number of software's are developing and being developed with the new technologies (Larman, 2005).

Firstly we must define computer software and techniques used.

Computer Software: Computer Software is the product that software professionals build and the support over the long term (Hally, Mike, 2005). It encompasses

a) Programs that execute within a computer of any size and architecture.

b) Content that it presented as the computer programs execute.

c) Documents in both hardcopy and virtual forms that encompass all forms of electronic media.

In other words we can say that the Software's are the computer programs or instructions that are engineered and when executed provide desired features, functions and performance (Engelhardt, Sebastian, 2008).

Techniques: Technique is a mythological plan or procedure. Large number of new and old techniques is applied in order to achieve the desired and proper functioning of the software product (Stiegler, Bernard , 1998).

Software's and Techniques are used in various fields. Some of them are HR,finance,marketing,accounts,banking,CRM,ERP,multimedia,toys for kids,medical,hotels,colleges and universities and various other fields. Various techniques such as robotics, artificial intelligence, neural networks, cascading etc are provided and used in various fields of our day to day life.

ANALYSIS AND DESIGN

For developing any software, analysis and design are the very important phases. For the development of the software the requirements are gathered by having communication with the costumer and also from the various other sources (Meyer, 1997). Analysis phase is the first technical representation of a system. (Larman, 2005). We need to make a following addition to our set analysis phase goals.

The products of analysis are highly maintainable. This applies particularly to the target document(software requirements specification)

Problems of size must be dealt with using an effective method of partitioning.

Graphics have to be used whenever possible.

We have to differentiate between logical(essential) and physical (implementation) considerations

At the very least, we need

Something to help us partition are requirements and documents that partitioning before specification

Some means of keeping track of and evaluating interfaces

New tools to describe logic and policy.

Analysis modeling is actually is a way of communication but is not necessarily the best way to represent the requirements for computer software (Fowler, 1997). It uses the combination of text and diagrammatic forms to depict requirements of data, function and behavior in a way that is relatively easy to understand and more important straight forward to review for correctness, completeness and consistency (Coad, Yourdon, 1991).

Analysis modeling is an important phase and helps in finding an errors, consistency and the omissions can also be uncovered.

Requirement Analysis

Requirement analysis results in the specification of software's operational characteristics, indicates software's interface with other system elements, and establishes constraints that software must meet (Wiegers, Karl, 2003). It allows the software engineer to elaborate on basic requirements established during earlier requirement engineering tasks and build models that depict user scenario, functional activities, problem classes and their relationships, system and class behavior and flow of data as it is transformed (Laplante, Phil, 2009). With the requirement analysis the primary focus is on what not on how.

There are various thumb rules for the analysis, which includes

The model should focus on the requirements that are visible within the problem or business domain.

Each element of the analysis model should add to an overall understanding of software requirements and provide insight into the information domain, function, and behavior of the system.

Delay considerations of infrastructure and other non-functional models until design.

Minimize coupling throughout the system i.e. it is important to represent relationship between classes and functions.

Be certain that the analysis model provides value to all stakeholders.

Keep the models as simple as it can be.

With the analysis modeling structure analysis is also undertaken which includes data and the processes that transform the data into separate entities. Data objects are model in the way that defines their attributes and relationships.

A second approach to analysis modeling called object oriented analysis, focuses on the definition of classes and the manner in which they collaborate with one another to effect customer requirements.

Analysis modeling includes various other modeling concepts in it, which includes data modeling, object oriented analysis, scenario based modeling, and flow oriented modeling.

Life Cycle Models

Life cycle models actually describe about the process that is carried out in order o develop any software. The process models define a distinct set of activities, actions, tasks, milestones, and work products that are required to engineer high quality software (Brock, Wilkerson, Wiener, 1991). These process models are not perfect, but they do provide a useful map for software engineering product.

A life cycle model actually provides stability, control, and organization to an activity that can, if left uncontrolled, become quite chaotic (Shlaer, Mellor, 1998). Some have referred to perspective process models as rigorous process models.

The life cycle models actually contain the set of framework activities that are organized into a process flow that may be linear, incremental or evolutionary etc. for any software project to take place following activities are carried out (Ash, 2003).

Communication

Planning

Modeling

Construction

Deployment

Prescriptive model

For any software project to take place large number of activities are carried out. The model is prescriptive because they prescribe a set of process elements- framework activities, software engineering actions, tasks , work products, quality assurance, and change control mechanisms for each project.

Each process model prescribes a workflow- that is, the manner in which the process elements are interrelated to one another.

The waterfall model

The waterfall model is mainly used when the requirements are well understood.

The waterfall model is also called classic life cycle, suggests a systematic approach to software development that begins with customer specification of requirements and progresses through planning, modeling, construction, and deployment, cumulating in going support of the complete software (Boehm et.all, 2000)

Waterfall model is the oldest paradigm for software engineering.

Some [problems are also encountered in the waterfall model, which includes

Real projects rarely follow the sequential flow that tha model proposes.

It is often difficult for the customer to state all the requirements explicitly.

The customer must have patience.

Incremental process model

The incremental model actually consists of the two subparts, which includes

The incremental model

The incremental model combines elements of the waterfall model applied in an iterative fashion. Each linear sequence produces deliverables of the software

When increment model is used the first increment is often a core product. The core product is usually customer.

The increment process model is iterative in nature.

Incremental development is particularly useful when staffing is unavailable for the complete implementation

.

The RAD model

The rapid application and development model is an incremental software process model that emphasizes a short development cycle.

RAD model is a high speed adaptation of the waterfall model, in which rapid development is achieved by using a component based construction approach.

If requirements are well understood and project scope is constrained, the RAD process provides a fully functional system within a very short time period.

RAD approach has few drawbacks, which includes

For large, but scalable projects, RAD requires sufficient human resources to create the right number of RAD teams.

If the system cannot be properly modularized, building the components, the components necessary for RAD will be problematic.

3) Evolutionary process model

The evolutionary models are iterative in nature. The evolutionary model includes two types of model

Prototyping

In some cases the engineers are unsure of the efficiency of the software, the adaptability of an operating system or the form that human-machine interaction should take.

In such cases the prototype approach will comes into play.

The communication is the first stage of the prototyping.

A prototyping is planned quickly and modeling occurs. The quick design focuses on a representation of the software that will be visible to the end user.

It actually serves as a mechanism for identifying software requirements.

Some problems are also encountered in the prototype approach, which includes

The customer obtains the working version of the software, unaware that the prototype is held together but the software quality and term maintainability cannot be obtained.

The developer often makes compromises in order to get a prototype working quickly.

The Spiral model

The spiral model is iterative model is iterative model and is actually the controlled and systematic aspects of the waterfall model (Boehm, 1986).

Spiral model is divided into set of framework activities which are by the software engineering team.

In the spiral model the risks are handled very effectively and efficiently.

Unlike the other process models that end when software is delivered, the spiral model can be adapted to apply throughout the life cycle of the project.

The spiral approach is the development of the large scale systems and software's.

The spiral model also has some problem as it is not easy to convince the customer that the evolutionary approach is controllable. It demands risk assessment expertise.

IMPLEMENTATION

The evaluation phase of the software development includes the code generation and testing of the software being developed (Fischer, 2001). Coding is considered to be one of the very important phase in the software development. Separate development teams are provided in order to develop the software. There is a large responsibility on the development team for the development of the software. For the coding and testing phase architectural design is needed.

Architecture design represents the structure of the data and program component that are required to build a computer based system.

It considers the architectural style the system will take, the structure and properties of the components that constitute the system and the interrelationship that occur all architectural components of the system. (Hoc, Xuan, 1990). The architectural design actually provides us with the base of the software.

Code Generation

The coding of the software is done by the developer team. Large number of languages is present through which the coding can be done. Initially languages such as FORTRAN, COBOL, Pl. but these were not that efficient and they provide less functionality. So a basic programming language C comes into play. C is reliable, simple, and easy to use. C is considered to be the basic programming language. After C many other object oriented languages comes into play (Muchnick, Steven, 1997). These include C, C++, java, asp.net etc.

All the coding part is done by using these languages and the language is decided based upon the functionality of the software.

Testing

Software is tested in order to uncover errors that were made as the software was designed and constructed. Testing often accounts for more project effort than any other software engineering activity. (Kaner , 2006). If it conducted haphazardly, time is wasted, unnecessary effort is expanded, and time is wasted. The errors that encountered must be removed as soon as possible from the software for the proper functionality of the software.

Testing is often considered to be the combination of the two terms which are verification and validation.

Verification: are we building the product right?

Validation : are we building the right product?

Various types of testing are available, which includes unit testing, integration testing, recovery testing, regression testing, security testing, stress testing, and performance testing.

Mainly testing is of two main types which include black box testing and white box testing.

Black box Testing: the black box testing is done in order to test the functionality of the software.

White box Testing: the black box testing is performed in order to check the coding done by the developers.

Testing is mainly done in order to assure the quality of the software product.

EVALUATION

The evaluation of the system includes the documentation that is prepared for the client in order of the easy understanding of the system. The documentation is prepared by the software development company either by the manager or the development members of the software.

CONCLUSION

Software development is the process of engineering the software products by gathering the requirements from the client and then planning for the development of the software product, followed by modeling and construction of the software including the coding and testing part, and finally the product reaches the deployment stage, where the software is delivered to the client.

Refrences.

Barry Boehm, "A Spiral Model of Software Development and Enhancement",ACM SIGSOFT Software Engineering Notes, August 1986.

Boehm, B., et al., 2000: Software Cost Estimation with COCOMO II, Prentice-Hall..

Bertrand Meyer. Object-oriented software construction. Prentice Hall, 1997.

Cem Kaner, Florida Institute of Technology, Quality Assurance Institute Worldwide Annual Software Testing Conference, Orlando, FL, November 2006

Craig Larman. Applying UML and Patterns - Introduction to OOA/D & Iterative Development. Prentice Hall PTR, 3rd ed. 2005.

Engelhardt, Sebastian (2008): "The Economic Properties of Software", Jena Economic Research Papers, Volume 2 (2008), Number 2008-045.

Gerhard Fischer, "The Software Technology of the 21st Century: From Software Reuse to Collaborative Software Design", 2001

Hally, Mike (2005:79). Electronic brains/Stories from the dawn of the computer age. British Broadcasting Corporation and Granta Books, London. ISBN 1-86207-663-4.

Hoc, J.-M. and Nguyen-Xuan, A. Language semantics, mental models and analogy. J.-M. Hoc et al., Eds. Psychology of Programming. Academic Press. London, 1990, 139-156

Laplante, Phil (2009). Requirements Engineering for Software and Systems (1st ed.). Redmond, WA: CRC Press. ISBN 1-42006-467-3.

Lydia Ash: The Web Testing Companion: The Insider's Guide to Efficient and Effective Tests, Wiley, May 2, 2003. ISBN 0-471-43021-8

Martin Fowler. Analysis Patterns: Reusable Object Models. Addison-Wesley, 1997

Muchnick, Steven, Advanced Compiler Design and Implementation, Morgan Kaufmann Publishers, 1997. ISBN 1-55860-320-4

Peter Coad and Edward Yourdon, Object-Oriented Analysis--Second Edition,Englewood Cliffs: Prentice Hall, 1991.

Rebecca Wirfs-Brock, Brian Wilkerson, and Lauren Wiener, Designing Object-OrientedSoftware, Englewood Cliffs: Prentice Hall, 1991

Sally Shlaer and Steven J. Mellor, Object-Oriented Systems Analysis--Modelingthe World in Data, Englewood Cliffs: Prentice Hall, 1988.

Stiegler, Bernard (1998). Technics and Time, 1: The Fault of Epimetheus. Stanford University Press. pp. 17, 82. ISBN 0-8047-3041-3.

Wiegers, Karl E. (2003). Software Requirements (2nd ed.). Redmond, WA: Microsoft Press. ISBN 0-7356-1879-8. http://www.processimpact.com.