1、 1 中文 2780 字 外文资料原文 Software Development Concepts and Design Methodologies During the 1960s, mainframes and higher level programming languages were applied to many problems including human resource systems, reservation systems, and manufacturing systems. Comp uters and software were seen as the cure
2、 all for many business issues were sometimes applied blindly. Systems sometimes failed to solve the problem for which they were designed for many reasons including: Inability to sufficiently understand complex probl ems Not sufficiently taking into account end -user needs, the organizational environ
3、ment, and performance tradeoffs Inability to accurately estimate development time and operational costs Lack of framework for consistent and regular customer communicatio ns At this time, the concept of structured programming, top -down design, stepwise refinement, and modularity emerged. Structured
4、 programming is still the most dominant approach to software engineering and is still evolving. These failures led to the concept of software engineering based upon the idea that an engineering-like discipline could be applied to software design and development. Software design is a process where th
5、e software designer applies techniques and principles to produce a conceptual model that describes and defines a solution to a problem. In the beginning, this design process has not been well structured and the model does not always accurately represent the problem of software development. However,
6、design methodologies have been evolving to accommodate changes in technology coupled with our increased understanding of development processes. Whereas early design methods addressed specific aspects of the development process, current methods attempt to address the entire scope of 2 software develo
7、pment. Software design methods are often classified in reference to the period in which they were introduced and the problems at that time. Driven by coding and testing problems, tools and methods were developed. Early methods focused on modularity and top-down development, and information hiding th
8、rough abstraction. This led to the development of structured languages, structured analysis, and data flow analysis. In the last decade or so, the expense involved in automation has shifted from hardware to pe ople. Therefore, the software engineering community has been focused on object oriented (O
9、 -O) design and the concept of re -usable code in order to reduce the human cost component. Inefficient designs and development methodologies have been addressed with C omputer Aided Software Engineering (CASE) tools, and fourth generation design languages. This has been done in an attempt replace t
10、he traditional waterfall life cycle process model under which most existing software has been developed. 一、 Software Design Fundamentals Software design methods all aim to provide the software designer with a system blueprint. This blueprint usually has three aspects: data, architectural, and proced
11、ural. Data design refers to the datas organization, relatio nships, access and processing methods. Architectural design defines the components of the system and their relationships. Procedural design builds on the data and architectural design phases to describe the processing details of the system.
12、 Even though there are numerous design methodologies, their basic concepts are very similar-All software design methods partition the problem and software into smaller pieces in order to reduce complexity. They all strive to identify data structures and functions, and p rovide measurements for softw
13、are quality. Some of the common principles in software design include: stepwise refinement, software architecture, program structure, data structure, 3 software procedures, mod u la r i t y, ab s tr ac t io n, and in fo r ma t io n h i di ng. 二、 M o d e r n D e s i g n M e t h o d o l o g i e s C on
14、 ve n t ion a l so f t wa r e d e ve l op me nt p ra c t ic es ca n gen e ra l l y be map pe d o n to t he tr ad i t io na l l i f e -c yc l e p h a s e s o f a n a l ys i s , f u n c t i o na l s p e c i f i c a t i o n , d e s i g n, i mp l e me n t a t i o n , t e s t i n g , an d m a i n t e n a
15、 n c e . T h i s t h o u g h t p r o c e s s i s i n a d e q u a t e f o r t o d a y s c o m p l e x i n f o r m a t i o n s y s t e m s . As the demand for software is growing much faster than the number of developers, adhering to conventional techniques such as the waterfall method requires too mu
16、ch time, too many people, and is difficult to manage. H ence, many new software development technologies have arisen. N ewl y de veloped p ractice s and mode ls do not a tte mp t to separa te phases of softwa re development, such as specification and implementation, but instead focus on the concept
17、of program transformation through stepwise refinement and iteration. 1 、 O b j e c t - O r i e n t e d Te c h n o l o g y Object-Oriented (O-O) software design technology is fundamentally different from the traditional methods described above. With traditional methods, each module is recognized a ma
18、jor step in the overall process and the process goes from one step to the next. On the other hand, O-O design is structured around a model of objects and the functions they perform. O-O programming can be traced to the simulation language SIMULA, a high level language developed in the late 60s that
19、intro duced object classes as a method to encapsulate data. Later, in the 1970s, Smalltalk was introduced as a complete grapgh design and coding as detail is added to the design. This provides a common language throughout each stage in development. O -O is best applied with specifically designed O-O
20、 development tools, but it is important to remember that as a methodology is it not specific to any programming language. Many different programming languages can be used to implement 0-0 technology and design methodolo gies. Instead of procedures and functions passing data back and forth, in object oriented design, the system is viewed as a collection of objects with messages